I have experienced that the Nonlinear cost function is not being calculated in a 4D-PSAS application when the VERIFICATION cpp is activated.
Hence the variables NL_iDataPenalty and NL_fDataPenalty are zero in the resulting ocean_mod.nc file.
I learned that VERIFICATION is only to be used for runs without assimilation, logically. Using this option in PSAS (and possible also IS4DVAR R4DVAR) will not throw an error or warning, unfortunately.
nonlinear cost function not calculated in PSAS
- arango
- Site Admin
- Posts: 1361
- Joined: Wed Feb 26, 2003 4:41 pm
- Location: DMCS, Rutgers University
- Contact:
Re: nonlinear cost function not calculated in PSAS
What are you reporting does not make sense to me. The NL_iDataPenalty and NL_fDataPenalty is computed and any of the 4D-Var drivers; w4dpsas_ocean.h in your case. In none of those drivers the VERIFICATION option is used. You just need to use the grep command to confirn this.
The definition of these variables in the MODNAME file also are not affected by the VERIFICATION option. The VERIFICATION option is to be only used whe running the nonlinear model. It does not make sense using in any of the 4D-Var drivers.
The definition of these variables in the MODNAME file also are not affected by the VERIFICATION option. The VERIFICATION option is to be only used whe running the nonlinear model. It does not make sense using in any of the 4D-Var drivers.
-
- Posts: 12
- Joined: Wed Jun 04, 2014 1:45 pm
- Location: UFBA and REMO
Re: nonlinear cost function not calculated in PSAS
In which field of NL_fDataPenalty should I get the final NL model data penalty?
> ncdump -v NL_fDataPenalty ocean_mod_0006.nc
NL_fDataPenalty =
785.246249424019, 591.14144905359, 0, 0, 0, 0, 188.059436356603,
6.0453640138258, 0, 0, 0, 0 ;
Whereas, the total cost function shows:
> ncdump -v Jact ocean_mod_0006.nc
Jact =
0, 672.469260934038, 613.998803852174, 604.988548167226, 590.774949710353,
563.943315009747, 489.588604093972, 460.885433579541, 439.743064675436,
420.512748363934, 408.354655206435, 397.827690317814, 391.077983160773,
387.48347030612, 383.848856101337, 381.53222662233, 380.757526075799,
379.998204711863, 379.610329691987, 379.349887290787, 379.172516345825 ;
Jact has dimensions (Nouter, Minner) = (1,21). We're running 20 inner loops.
NL_fDataPenalty has dimensions (Nouter, cost_var) = (1,12). What doest cost_var mean?
Many thanks
Rafa
> ncdump -v NL_fDataPenalty ocean_mod_0006.nc
NL_fDataPenalty =
785.246249424019, 591.14144905359, 0, 0, 0, 0, 188.059436356603,
6.0453640138258, 0, 0, 0, 0 ;
Whereas, the total cost function shows:
> ncdump -v Jact ocean_mod_0006.nc
Jact =
0, 672.469260934038, 613.998803852174, 604.988548167226, 590.774949710353,
563.943315009747, 489.588604093972, 460.885433579541, 439.743064675436,
420.512748363934, 408.354655206435, 397.827690317814, 391.077983160773,
387.48347030612, 383.848856101337, 381.53222662233, 380.757526075799,
379.998204711863, 379.610329691987, 379.349887290787, 379.172516345825 ;
Jact has dimensions (Nouter, Minner) = (1,21). We're running 20 inner loops.
NL_fDataPenalty has dimensions (Nouter, cost_var) = (1,12). What doest cost_var mean?
Many thanks
Rafa