C $Header: /u/gcmpack/MITgcm/pkg/cost/cost.h,v 1.18 2013/11/06 18:50:56 jmc Exp $ C $Name: $ #include "PACKAGES_CONFIG.h" c ================================================================== c HEADER COST c ================================================================== c c o Header for model-data comparison. c c The individual cost function contributions are multiplied by c factors mult_"var" which allow to switch off these contributions c without removing them in the adjoint code. This is useful for c doing tests with the adjoint and perhaps useful in assimilation c experiments where individual contributions are successively c switched on. For future applications it would be better to place c the initialisation of the multipliers somewhere else, for example c in a namelist, which is read in at the start of the model. c c started: Christian Eckert eckert@mit.edu 24-Feb-1999 c changed: Christian Eckert eckert@mit.edu c heimbach@mit.edu 05-Nov-2003 Modularize cost package c c ================================================================== c HEADER COST c ================================================================== c The cost function, its contributions, and multipliers: c ====================================================== c c fc - Final cost function. c glofc - contributions from global mean constraints c mult_"var" - multipliers for the individual cost c function contributions. common /cost_r/ & fc, glofc _RL fc _RL glofc C tile_fc :: Final cost function contribution from this tile COMMON /COST_FINAL_R/ tile_fc _RL tile_fc (nSx,nSy) common /cost_objf/ & objf_atl, & objf_test, & objf_tracer, & objf_entropy, & objf_t_misfit, #ifdef ALLOW_COST_TRANSPORT & objf_transport, #endif #ifdef ALLOW_COST_DEPTH & objf_depth, #endif & objf_eflux cHFLUXM_CONTROL & ,objf_hflux_tut & ,objf_temp_tut cHFLUXM_CONTROL _RL objf_atl (nsx,nsy) _RL objf_test (nsx,nsy) _RL objf_tracer (nsx,nsy) _RL objf_entropy (nsx,nsy) _RL objf_t_misfit (nsx,nsy) _RL objf_eflux (nsx,nsy) #ifdef ALLOW_COST_TRANSPORT _RL objf_transport (nsx,nsy) #endif #ifdef ALLOW_COST_DEPTH _RL objf_depth (nsx,nsy) #endif cHFLUXM_CONTROL _RL objf_hflux_tut (nsx,nsy) _RL objf_temp_tut (nsx,nsy) cHFLUXM_CONTROL common /cost_param_r/ & lastinterval _RL lastinterval #ifdef ALLOW_COST_STATE_FINAL common /cost_state_final_r/ & objf_state_final cph _RL objf_state_final (snx,sny,nsx,nsy) _RL objf_state_final (snx,sny,nsx,nsy,4*Nr+1) #endif #ifdef ALLOW_COST_VECTOR common /cost_vector_r/ & objf_vector _RL objf_vector (snx,nsx,nsy) #endif common /cost_aux_r/ & mult_atl, & mult_test, & mult_tracer, & mult_entropy, & mult_t_misfit, & mult_eflux, & multTheta, & multSalt, & multUvel, & multVvel, #ifdef ALLOW_COST_TRANSPORT & mult_transport, #endif #ifdef ALLOW_COST_DEPTH & mult_depth, #endif & multEtan cHFLUXM_CONTROL & ,mult_hflux_tut & ,mult_temp_tut cHFLUXM_CONTROL _RL mult_atl _RL mult_test _RL mult_tracer _RL mult_entropy _RL mult_t_misfit _RL mult_eflux _RL multTheta _RL multSalt _RL multUvel _RL multVvel _RL multEtan #ifdef ALLOW_COST_TRANSPORT _RL mult_transport #endif #ifdef ALLOW_COST_DEPTH _RL mult_depth #endif cHFLUXM_CONTROL _RL mult_hflux_tut _RL mult_temp_tut cHFLUXM_CONTROL #ifdef ALLOW_COST_TEST common /cost_test_i/ & iLocOut & , jLocOut & , kLocOut integer iLocOut integer jLocOut integer kLocOut #endif #ifdef ALLOW_COST COMMON /COST_MEAN_R/ & cMeanTheta, cMeanUVel, cMeanVVel, & cMeanThetaUVel, cMeanThetaVVel _RL cMeanTheta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) _RL cMeanUVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) _RL cMeanVVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) _RL cMeanThetaUVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) _RL cMeanThetaVVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) #endif c ================================================================== c END OF HEADER COST c ==================================================================