C $Header: /u/gcmpack/MITgcm/pkg/ecco/ecco_cost_final.F,v 1.84 2016/03/01 23:05:15 gforget Exp $ C $Name: $ #include "ECCO_OPTIONS.h" #ifdef ALLOW_CTRL # include "CTRL_OPTIONS.h" #endif subroutine ecco_cost_final( mythid ) c ================================================================== c SUBROUTINE cost_final c ================================================================== c c o Sum of all cost function contributions. c c ================================================================== c SUBROUTINE cost_final c ================================================================== implicit none c == global variables == #include "EEPARAMS.h" #include "SIZE.h" #include "PARAMS.h" #ifdef ALLOW_COST # include "cost.h" #endif #ifdef ALLOW_ECCO # ifdef ECCO_CTRL_DEPRECATED # include "ecco_cost.h" # else # include "ecco.h" # endif #endif #ifdef ALLOW_CTRL # include "ctrl.h" # include "optim.h" # include "CTRL_SIZE.h" # include "CTRL_GENARR.h" # include "CTRL_OBCS.h" #endif #ifdef ALLOW_PROFILES # include "PROFILES_SIZE.h" # include "profiles.h" #endif c == routine arguments == integer mythid C === Functions ==== LOGICAL MASTER_CPU_THREAD EXTERNAL MASTER_CPU_THREAD c == local variables == integer bi,bj integer itlo,ithi integer jtlo,jthi integer ifc integer totnum integer num_file,num_var #ifndef ALLOW_PROFILES integer NFILESPROFMAX parameter (NFILESPROFMAX=1) integer NVARMAX parameter (NVARMAX=1) #endif #ifndef ALLOW_COST c This quick fix allows to compile and run fwd but, as far as c the adjoint, pkg/autodiff most likely require cost though. _RL fc, glofc #endif _RL locfc #ifdef ECCO_CTRL_DEPRECATED _RL f_temp0, f_salt0, f_temp0smoo, f_salt0smoo _RL f_etan0, f_uvel0, f_vvel0 _RL f_temp, f_salt _RL f_uwind, f_vwind _RL f_atemp, f_aqh, f_precip _RL f_swflux, f_swdown _RL f_lwflux, f_lwdown _RL f_uwindm, f_vwindm _RL f_atempm, f_aqhm, f_precipm _RL f_swfluxm, f_swdownm _RL f_lwfluxm, f_lwdownm _RL f_uwindsmoo, f_vwindsmoo _RL f_atempsmoo, f_aqhsmoo, f_precipsmoo _RL f_swfluxsmoo, f_swdownsmoo _RL f_lwfluxsmoo, f_lwdownsmoo _RL f_tauu, f_tauv, f_hflux, f_sflux _RL f_tauum, f_tauvm, f_hfluxm, f_sfluxm _RL f_tauusmoo, f_tauvsmoo, f_hfluxsmoo, f_sfluxsmoo _RL f_hfluxmm, f_sfluxmm, f_hfluxmm2, f_sfluxmm2 _RL f_sst, f_tmi, f_sss, f_bp, f_atl, f_ctdt, f_ctds _RL f_drifter, f_xbt, f_tdrift, f_sdrift, f_wdrift _RL f_ssh , f_tp, f_ers, f_gfo _RL f_argot, f_argos, f_ctdtclim, f_ctdsclim _RL f_scatx, f_scaty, f_scatxm, f_scatym _RL f_ageos, f_curmtr _RL f_ini_fin _RL f_kapgm, f_kapredi, f_diffkr _RL f_eddytau, f_bottomdrag _RL f_transp, f_ies #endif /* ECCO_CTRL_DEPRECATED */ _RL f_gencost(NGENCOST) _RL f_obcsn, f_obcss, f_obcsw, f_obcse #ifdef ALLOW_PROFILES _RL f_profiles(NFILESPROFMAX,NVARMAX) #endif #ifdef ALLOW_GENTIM2D_CONTROL _RL f_gentim2d(maxCtrlTim2D) #endif #ifdef ALLOW_GENARR2D_CONTROL _RL f_genarr2d(maxCtrlArr2D) #endif #ifdef ALLOW_GENARR3D_CONTROL _RL f_genarr3d(maxCtrlArr3D) #endif #ifdef ECCO_CTRL_DEPRECATED _RL no_temp0, no_salt0, no_temp, no_salt _RL no_etan0, no_uvel0, no_vvel0 _RL no_uwind, no_vwind _RL no_atemp, no_aqh, no_precip, no_swflux, no_swdown _RL no_lwflux, no_lwdown _RL no_uwindm, no_vwindm _RL no_atempm, no_aqhm, no_precipm, no_swfluxm, no_swdownm _RL no_lwfluxm, no_lwdownm _RL no_tauu, no_tauv, no_hflux, no_sflux _RL no_tauum, no_tauvm, no_hfluxm, no_sfluxm _RL no_hfluxmm, no_sfluxmm _RL no_sst, no_tmi, no_sss, no_bp, no_atl, no_ctdt, no_ctds _RL no_drifter, no_xbt, no_tdrift, no_sdrift, no_wdrift _RL no_ssh, no_tp, no_ers, no_gfo _RL no_argot, no_argos, no_ctdtclim, no_ctdsclim _RL no_scatx, no_scaty, no_scatxm, no_scatym _RL no_ageos, no_curmtr _RL no_ini_fin _RL no_kapgm, no_kapredi, no_diffkr _RL no_eddytau, no_bottomdrag _RL no_hmean _RL no_transp, no_ies #endif /* ECCO_CTRL_DEPRECATED */ _RL no_gencost(NGENCOST) _RL no_obcsn, no_obcss, no_obcsw, no_obcse #ifdef ALLOW_PROFILES _RL no_profiles(NFILESPROFMAX,NVARMAX) #endif #ifdef ALLOW_GENTIM2D_CONTROL _RL no_gentim2d(maxCtrlTim2D) #endif #ifdef ALLOW_GENARR2D_CONTROL _RL no_genarr2d(maxCtrlArr2D) #endif #ifdef ALLOW_GENARR3D_CONTROL _RL no_genarr3d(maxCtrlArr3D) #endif character*20 cfname #ifdef ECCO_VERBOSE character*(MAX_LEN_MBUF) msgbuf #endif INTEGER IL C Functions INTEGER ILNBLNK c == end of interface == jtlo = mybylo(mythid) jthi = mybyhi(mythid) itlo = mybxlo(mythid) ithi = mybxhi(mythid) ifc = 30 locfc = 0. _d 0 #ifdef ECCO_CTRL_DEPRECATED f_temp = 0. _d 0 f_salt = 0. _d 0 f_temp0 = 0. _d 0 f_salt0 = 0. _d 0 f_temp0smoo = 0. _d 0 f_salt0smoo = 0. _d 0 f_etan0 = 0. _d 0 f_uvel0 = 0. _d 0 f_vvel0 = 0. _d 0 f_tauu = 0. _d 0 f_tauum = 0. _d 0 f_tauusmoo = 0. _d 0 f_tauv = 0. _d 0 f_tauvm = 0. _d 0 f_tauvsmoo = 0. _d 0 f_hflux = 0. _d 0 f_hfluxm = 0. _d 0 f_hfluxsmoo = 0. _d 0 f_hfluxmm = 0. _d 0 f_hfluxmm2 = 0. _d 0 f_sflux = 0. _d 0 f_sfluxsmoo = 0. _d 0 f_sfluxm = 0. _d 0 f_sfluxmm = 0. _d 0 f_sfluxmm2 = 0. _d 0 f_uwind = 0. _d 0 f_vwind = 0. _d 0 f_atemp = 0. _d 0 f_aqh = 0. _d 0 f_precip = 0. _d 0 f_swflux = 0. _d 0 f_swdown = 0. _d 0 f_lwflux = 0. _d 0 f_lwdown = 0. _d 0 f_uwindm = 0. _d 0 f_vwindm = 0. _d 0 f_atempm = 0. _d 0 f_aqhm = 0. _d 0 f_precipm = 0. _d 0 f_swfluxm = 0. _d 0 f_swdownm = 0. _d 0 f_lwfluxm = 0. _d 0 f_lwdownm = 0. _d 0 f_uwindsmoo = 0. _d 0 f_vwindsmoo = 0. _d 0 f_atempsmoo = 0. _d 0 f_aqhsmoo = 0. _d 0 f_precipsmoo = 0. _d 0 f_swfluxsmoo = 0. _d 0 f_swdownsmoo = 0. _d 0 f_lwfluxsmoo = 0. _d 0 f_lwdownsmoo = 0. _d 0 f_ssh = 0. _d 0 f_tp = 0. _d 0 f_ers = 0. _d 0 f_gfo = 0. _d 0 f_sst = 0. _d 0 f_tmi = 0. _d 0 f_sss = 0. _d 0 f_bp = 0. _d 0 f_atl = 0. _d 0 f_ctdt = 0. _d 0 f_ctds = 0. _d 0 f_ctdtclim = 0. _d 0 f_ctdsclim = 0. _d 0 f_xbt = 0. _d 0 f_argot = 0. _d 0 f_argos = 0. _d 0 f_drifter = 0. _d 0 f_sdrift = 0. _d 0 f_tdrift = 0. _d 0 f_wdrift = 0. _d 0 f_scatx = 0. _d 0 f_scaty = 0. _d 0 f_scatxm = 0. _d 0 f_scatym = 0. _d 0 f_curmtr = 0. _d 0 f_ageos = 0. _d 0 f_ini_fin = 0. _d 0 f_kapgm = 0. _d 0 f_kapredi = 0. _d 0 f_diffkr = 0. _d 0 f_eddytau = 0. _d 0 f_bottomdrag = 0. _d 0 f_transp = 0. _d 0 f_ies = 0. _d 0 #endif /* ECCO_CTRL_DEPRECATED */ f_obcsn = 0. _d 0 f_obcss = 0. _d 0 f_obcsw = 0. _d 0 f_obcse = 0. _d 0 #ifdef ALLOW_PROFILES do num_file=1,NFILESPROFMAX do num_var=1,NVARMAX f_profiles(num_file,num_var)= 0. _d 0 enddo enddo #endif #ifdef ALLOW_GENCOST_CONTRIBUTION do num_var=1,NGENCOST f_gencost(num_var)= 0. _d 0 enddo #endif #ifdef ALLOW_GENTIM2D_CONTROL do num_var=1,maxCtrlTim2D f_gentim2d(num_var)= 0. _d 0 enddo #endif #ifdef ALLOW_GENARR2D_CONTROL do num_var=1,maxCtrlArr2D f_genarr2d(num_var)= 0. _d 0 enddo #endif #ifdef ALLOW_GENARR3D_CONTROL do num_var=1,maxCtrlArr3D f_genarr3d(num_var)= 0. _d 0 enddo #endif #ifdef ECCO_CTRL_DEPRECATED no_temp = 0. _d 0 no_salt = 0. _d 0 no_temp0 = 0. _d 0 no_salt0 = 0. _d 0 no_etan0 = 0. _d 0 no_uvel0 = 0. _d 0 no_vvel0 = 0. _d 0 no_tauu = 0. _d 0 no_tauum = 0. _d 0 no_tauv = 0. _d 0 no_tauvm = 0. _d 0 no_hflux = 0. _d 0 no_hfluxm = 0. _d 0 no_hfluxmm = 0. _d 0 no_sflux = 0. _d 0 no_sfluxm = 0. _d 0 no_sfluxmm = 0. _d 0 no_uwind = 0. _d 0 no_vwind = 0. _d 0 no_atemp = 0. _d 0 no_aqh = 0. _d 0 no_precip = 0. _d 0 no_swflux = 0. _d 0 no_swdown = 0. _d 0 no_lwflux = 0. _d 0 no_lwdown = 0. _d 0 no_uwindm = 0. _d 0 no_vwindm = 0. _d 0 no_atempm = 0. _d 0 no_aqhm = 0. _d 0 no_precipm = 0. _d 0 no_swfluxm = 0. _d 0 no_swdownm = 0. _d 0 no_lwfluxm = 0. _d 0 no_lwdownm = 0. _d 0 no_ssh = 0. _d 0 no_tp = 0. _d 0 no_ers = 0. _d 0 no_gfo = 0. _d 0 no_sst = 0. _d 0 no_tmi = 0. _d 0 no_sss = 0. _d 0 no_bp = 0. _d 0 no_atl = 0. _d 0 no_ctdt = 0. _d 0 no_ctds = 0. _d 0 no_ctdtclim = 0. _d 0 no_ctdsclim = 0. _d 0 no_xbt = 0. _d 0 no_argot = 0. _d 0 no_argos = 0. _d 0 no_drifter = 0. _d 0 no_sdrift = 0. _d 0 no_tdrift = 0. _d 0 no_wdrift = 0. _d 0 no_scatx = 0. _d 0 no_scaty = 0. _d 0 no_scatxm = 0. _d 0 no_scatym = 0. _d 0 no_obcsn = 0. _d 0 no_obcss = 0. _d 0 no_obcsw = 0. _d 0 no_obcse = 0. _d 0 no_curmtr = 0. _d 0 no_ageos = 0. _d 0 no_ini_fin = 0. _d 0 no_kapgm = 0. _d 0 no_kapredi = 0. _d 0 no_diffkr = 0. _d 0 no_eddytau = 0. _d 0 no_bottomdrag = 0. _d 0 no_transp = 0. _d 0 no_ies = 0. _d 0 #endif /* ECCO_CTRL_DEPRECATED */ #ifdef ALLOW_PROFILES do num_file=1,NFILESPROFMAX do num_var=1,NVARMAX no_profiles(num_file,num_var)= 0. _d 0 enddo enddo #endif #ifdef ALLOW_GENCOST_CONTRIBUTION do num_var=1,NGENCOST no_gencost(num_var)= 0. _d 0 enddo #endif #ifdef ALLOW_GENTIM2D_CONTROL do num_var=1,maxCtrlTim2D no_gentim2d(num_var)= 0. _d 0 enddo #endif #ifdef ALLOW_GENARR2D_CONTROL do num_var=1,maxCtrlArr2D no_genarr2d(num_var)= 0. _d 0 enddo #endif #ifdef ALLOW_GENARR3D_CONTROL do num_var=1,maxCtrlArr3D no_genarr3d(num_var)= 0. _d 0 enddo #endif c-- Sum up all contributions. do bj = jtlo,jthi do bi = itlo,ithi tile_fc(bi,bj) = tile_fc(bi,bj) #ifdef ECCO_CTRL_DEPRECATED & + mult_temp * objf_temp(bi,bj) & + mult_salt * objf_salt(bi,bj) & + mult_temp0 * ( objf_temp0(bi,bj) & +mult_smooth_ic*objf_temp0smoo(bi,bj) ) & + mult_salt0 * ( objf_salt0(bi,bj) & +mult_smooth_ic*objf_salt0smoo(bi,bj) ) & + mult_etan0 * objf_etan0(bi,bj) & + mult_uvel0 * objf_uvel0(bi,bj) & + mult_vvel0 * objf_vvel0(bi,bj) & + mult_sst * objf_sst(bi,bj) & + mult_tmi * objf_tmi(bi,bj) & + mult_sss * objf_sss(bi,bj) & + mult_bp * objf_bp(bi,bj) & + mult_ies * objf_ies(bi,bj) & + mult_tauu * ( objf_tauu(bi,bj)+objf_tauum(bi,bj) & +mult_smooth_bc*objf_tauusmoo(bi,bj) ) & + mult_tauv * ( objf_tauv(bi,bj)+objf_tauvm(bi,bj) & +mult_smooth_bc*objf_tauvsmoo(bi,bj) ) & + mult_hflux * ( objf_hflux(bi,bj) & +mult_smooth_bc*objf_hfluxsmoo(bi,bj) ) & + mult_sflux * ( objf_sflux(bi,bj) & +mult_smooth_bc*objf_sfluxsmoo(bi,bj) ) & + mult_h * ( mult_tp * objf_tp(bi,bj) & + mult_ers * objf_ers(bi,bj) & + mult_gfo * objf_gfo(bi,bj) ) #if ( defined (ALLOW_COST) && defined (ALLOW_COST_ATLANTIC) ) & + mult_atl * objf_atl(bi,bj) #endif & + mult_ctdt * objf_ctdt(bi,bj) & + mult_ctds * objf_ctds(bi,bj) & + mult_ctdtclim* objf_ctdtclim(bi,bj) & + mult_ctdsclim* objf_ctdsclim(bi,bj) & + mult_xbt * objf_xbt(bi,bj) & + mult_argot * objf_argot(bi,bj) & + mult_argos * objf_argos(bi,bj) & + mult_drift * objf_drift(bi,bj) & + mult_sdrift * objf_sdrift(bi,bj) & + mult_tdrift * objf_tdrift(bi,bj) & + mult_wdrift * objf_wdrift(bi,bj) & + mult_scatx * objf_scatx(bi,bj) & + mult_scaty * objf_scaty(bi,bj) & + mult_scatx * objf_scatxm(bi,bj) & + mult_scaty * objf_scatym(bi,bj) & + mult_uwind * ( objf_uwind(bi,bj)+objf_uwindm(bi,bj) & +mult_smooth_bc*objf_uwindsmoo(bi,bj) ) & + mult_vwind * ( objf_vwind(bi,bj)+objf_vwindm(bi,bj) & +mult_smooth_bc*objf_vwindsmoo(bi,bj) ) & + mult_atemp * ( objf_atemp(bi,bj)+objf_atempm(bi,bj) & +mult_smooth_bc*objf_atempsmoo(bi,bj) ) & + mult_aqh * ( objf_aqh(bi,bj)+objf_aqhm(bi,bj) & +mult_smooth_bc*objf_aqhsmoo(bi,bj) ) & + mult_precip * ( objf_precip(bi,bj)+objf_precipm(bi,bj) & +mult_smooth_bc*objf_precipsmoo(bi,bj) ) & + mult_swflux * ( objf_swflux(bi,bj)+objf_swfluxm(bi,bj) & +mult_smooth_bc*objf_swfluxsmoo(bi,bj) ) & + mult_swdown * ( objf_swdown(bi,bj)+objf_swdownm(bi,bj) & +mult_smooth_bc*objf_swdownsmoo(bi,bj) ) & + mult_lwflux * ( objf_lwflux(bi,bj)+objf_lwfluxm(bi,bj) & +mult_smooth_bc*objf_lwfluxsmoo(bi,bj) ) & + mult_lwdown * ( objf_lwdown(bi,bj)+objf_lwdownm(bi,bj) & +mult_smooth_bc*objf_lwdownsmoo(bi,bj) ) & + mult_curmtr * objf_curmtr(bi,bj) & + mult_kapgm * objf_kapgm(bi,bj) & + mult_kapredi * objf_kapredi(bi,bj) & + mult_diffkr * objf_diffkr(bi,bj) & + mult_ini_fin *(objf_theta_ini_fin(bi,bj) + & objf_salt_ini_fin(bi,bj)) & + mult_edtau * objf_eddytau(bi,bj) & + mult_bottomdrag * objf_bottomdrag(bi,bj) #endif /* ECCO_CTRL_DEPRECATED */ #if (defined (ALLOW_CTRL) && defined (ALLOW_OBCS)) tile_fc(bi,bj) = tile_fc(bi,bj) & + mult_obcsn * objf_obcsn(bi,bj) & + mult_obcss * objf_obcss(bi,bj) & + mult_obcsw * objf_obcsw(bi,bj) & + mult_obcse * objf_obcse(bi,bj) # ifdef ECCO_CTRL_DEPRECATED & + mult_ageos * objf_ageos(bi,bj) # endif #endif #ifdef ALLOW_PROFILES do num_file=1,NFILESPROFMAX do num_var=1,NVARMAX tile_fc(bi,bj) = tile_fc(bi,bj) & + mult_profiles(num_file,num_var) & *objf_profiles(num_file,num_var,bi,bj) enddo enddo #endif #ifdef ALLOW_GENCOST_CONTRIBUTION do num_var=1,NGENCOST tile_fc(bi,bj) = tile_fc(bi,bj) & + mult_gencost(num_var) & *objf_gencost(bi,bj,num_var) enddo #endif #ifdef ALLOW_GENTIM2D_CONTROL do num_var=1,maxCtrlTim2D tile_fc(bi,bj) = tile_fc(bi,bj) & + mult_gentim2d(num_var) & *objf_gentim2d(bi,bj,num_var) enddo #endif #ifdef ALLOW_GENARR2D_CONTROL do num_var=1,maxCtrlArr2D tile_fc(bi,bj) = tile_fc(bi,bj) & + mult_genarr2d(num_var) & *objf_genarr2d(bi,bj,num_var) enddo #endif #ifdef ALLOW_GENARR3D_CONTROL do num_var=1,maxCtrlArr3D tile_fc(bi,bj) = tile_fc(bi,bj) & + mult_genarr3d(num_var) & *objf_genarr3d(bi,bj,num_var) enddo #endif #ifdef ECCO_CTRL_DEPRECATED f_temp = f_temp + objf_temp(bi,bj) f_salt = f_salt + objf_salt(bi,bj) f_temp0 = f_temp0 + objf_temp0(bi,bj) f_salt0 = f_salt0 + objf_salt0(bi,bj) f_temp0smoo = f_temp0smoo + objf_temp0smoo(bi,bj) f_salt0smoo = f_salt0smoo + objf_salt0smoo(bi,bj) f_etan0 = f_etan0 + objf_etan0(bi,bj) f_uvel0 = f_uvel0 + objf_uvel0(bi,bj) f_vvel0 = f_vvel0 + objf_vvel0(bi,bj) f_tauu = f_tauu + objf_tauu(bi,bj) f_tauum = f_tauum + objf_tauum(bi,bj) f_tauusmoo = f_tauusmoo + objf_tauusmoo(bi,bj) f_tauv = f_tauv + objf_tauv(bi,bj) f_tauvm = f_tauvm + objf_tauvm(bi,bj) f_tauvsmoo = f_tauvsmoo + objf_tauvsmoo(bi,bj) f_hflux = f_hflux + objf_hflux(bi,bj) f_hfluxsmoo = f_hfluxsmoo + objf_hfluxsmoo(bi,bj) f_sflux = f_sflux + objf_sflux(bi,bj) f_sfluxsmoo = f_sfluxsmoo + objf_sfluxsmoo(bi,bj) f_uwind = f_uwind + objf_uwind(bi,bj) f_vwind = f_vwind + objf_vwind(bi,bj) f_atemp = f_atemp + objf_atemp(bi,bj) f_aqh = f_aqh + objf_aqh(bi,bj) f_precip = f_precip + objf_precip(bi,bj) f_swflux = f_swflux + objf_swflux(bi,bj) f_swdown = f_swdown + objf_swdown(bi,bj) f_lwflux = f_lwflux + objf_lwflux(bi,bj) f_lwdown = f_lwdown + objf_lwdown(bi,bj) f_uwindm = f_uwindm + objf_uwindm(bi,bj) f_vwindm = f_vwindm + objf_vwindm(bi,bj) f_atempm = f_atempm + objf_atempm(bi,bj) f_aqhm = f_aqhm + objf_aqhm(bi,bj) f_precipm = f_precipm + objf_precipm(bi,bj) f_swfluxm = f_swfluxm + objf_swfluxm(bi,bj) f_swdownm = f_swdownm + objf_swdownm(bi,bj) f_lwfluxm = f_lwfluxm + objf_lwfluxm(bi,bj) f_lwdownm = f_lwdownm + objf_lwdownm(bi,bj) f_uwindsmoo = f_uwindsmoo + objf_uwindsmoo(bi,bj) f_vwindsmoo = f_vwindsmoo + objf_vwindsmoo(bi,bj) f_atempsmoo = f_atempsmoo + objf_atempsmoo(bi,bj) f_aqhsmoo = f_aqhsmoo + objf_aqhsmoo(bi,bj) f_precipsmoo = f_precipsmoo + objf_precipsmoo(bi,bj) f_swfluxsmoo = f_swfluxsmoo + objf_swfluxsmoo(bi,bj) f_swdownsmoo = f_swdownsmoo + objf_swdownsmoo(bi,bj) f_lwfluxsmoo = f_lwfluxsmoo + objf_lwfluxsmoo(bi,bj) f_lwdownsmoo = f_lwdownsmoo + objf_lwdownsmoo(bi,bj) f_ssh = f_ssh + objf_h(bi,bj) f_tp = f_tp + objf_tp(bi,bj) f_ers = f_ers + objf_ers(bi,bj) f_gfo = f_gfo + objf_gfo(bi,bj) f_sst = f_sst + objf_sst(bi,bj) f_tmi = f_tmi + objf_tmi(bi,bj) f_sss = f_sss + objf_sss(bi,bj) f_bp = f_bp + objf_bp(bi,bj) f_ies = f_ies + objf_ies(bi,bj) #if ( defined (ALLOW_COST) && defined (ALLOW_COST_ATLANTIC) ) f_atl = f_atl + objf_atl(bi,bj) #endif f_ctdt = f_ctdt + objf_ctdt(bi,bj) f_ctds = f_ctds + objf_ctds(bi,bj) f_ctdtclim = f_ctdtclim + objf_ctdtclim(bi,bj) f_ctdsclim = f_ctdsclim + objf_ctdsclim(bi,bj) f_xbt = f_xbt + objf_xbt(bi,bj) f_argot = f_argot + objf_argot(bi,bj) f_argos = f_argos + objf_argos(bi,bj) f_drifter = f_drifter + objf_drift(bi,bj) f_sdrift = f_sdrift + objf_sdrift(bi,bj) f_tdrift = f_tdrift + objf_tdrift(bi,bj) f_wdrift = f_wdrift + objf_wdrift(bi,bj) f_scatx = f_scatx + objf_scatx(bi,bj) f_scaty = f_scaty + objf_scaty(bi,bj) f_scatxm = f_scatxm + objf_scatxm(bi,bj) f_scatym = f_scatym + objf_scatym(bi,bj) f_curmtr = f_curmtr + objf_curmtr(bi,bj) f_kapgm = f_kapgm + objf_kapgm(bi,bj) f_kapredi = f_kapredi + objf_kapredi(bi,bj) f_diffkr = f_diffkr + objf_diffkr(bi,bj) f_ini_fin = f_ini_fin + & objf_theta_ini_fin(bi,bj) + objf_salt_ini_fin(bi,bj) f_eddytau = f_eddytau + objf_eddytau(bi,bj) f_bottomdrag = f_bottomdrag + objf_bottomdrag(bi,bj) #endif /* ECCO_CTRL_DEPRECATED */ #if (defined (ALLOW_CTRL) && defined (ALLOW_OBCS)) f_obcsn = f_obcsn + objf_obcsn(bi,bj) f_obcss = f_obcss + objf_obcss(bi,bj) f_obcsw = f_obcsw + objf_obcsw(bi,bj) f_obcse = f_obcse + objf_obcse(bi,bj) # ifdef ECCO_CTRL_DEPRECATED f_ageos = f_ageos + objf_ageos(bi,bj) # endif #endif #ifdef ALLOW_PROFILES do num_file=1,NFILESPROFMAX do num_var=1,NVARMAX f_profiles(num_file,num_var)=f_profiles(num_file,num_var) & +objf_profiles(num_file,num_var,bi,bj) enddo enddo #endif #ifdef ALLOW_GENCOST_CONTRIBUTION do num_var=1,NGENCOST f_gencost(num_var)=f_gencost(num_var) & +objf_gencost(bi,bj,num_var) enddo #endif #ifdef ALLOW_GENTIM2D_CONTROL do num_var=1,maxCtrlTim2D f_gentim2d(num_var) = f_gentim2d(num_var) & +objf_gentim2d(bi,bj,num_var) enddo #endif #ifdef ALLOW_GENARR2D_CONTROL do num_var=1,maxCtrlArr2D f_genarr2d(num_var) = f_genarr2d(num_var) & +objf_genarr2d(bi,bj,num_var) enddo #endif #ifdef ALLOW_GENARR3D_CONTROL do num_var=1,maxCtrlArr3D f_genarr3d(num_var) = f_genarr3d(num_var) & +objf_genarr3d(bi,bj,num_var) enddo #endif #ifdef ECCO_CTRL_DEPRECATED no_temp = no_temp + num_temp(bi,bj) no_salt = no_salt + num_salt(bi,bj) no_temp0 = no_temp0 + num_temp0(bi,bj) no_salt0 = no_salt0 + num_salt0(bi,bj) no_etan0 = no_etan0 + num_etan0(bi,bj) no_uvel0 = no_uvel0 + num_uvel0(bi,bj) no_vvel0 = no_vvel0 + num_vvel0(bi,bj) no_tauu = no_tauu + num_tauu(bi,bj) no_tauum = no_tauum + num_tauum(bi,bj) no_tauv = no_tauv + num_tauv(bi,bj) no_tauvm = no_tauvm + num_tauvm(bi,bj) no_hflux= no_hflux + num_hflux(bi,bj) no_hfluxmm = no_hfluxmm + num_hfluxmm(bi,bj) no_sflux= no_sflux + num_sflux(bi,bj) no_sfluxmm = no_sfluxmm + num_sfluxmm(bi,bj) no_atemp = no_atemp + num_atemp(bi,bj) no_aqh = no_aqh + num_aqh(bi,bj) no_precip = no_precip + num_precip(bi,bj) no_swflux = no_swflux + num_swflux(bi,bj) no_swdown = no_swdown + num_swdown(bi,bj) no_lwflux = no_lwflux + num_lwflux(bi,bj) no_lwdown = no_lwdown + num_lwdown(bi,bj) no_uwind = no_uwind + num_uwind(bi,bj) no_vwind = no_vwind + num_vwind(bi,bj) no_atempm = no_atempm + num_atempm(bi,bj) no_aqhm = no_aqhm + num_aqhm(bi,bj) no_precipm = no_precipm + num_precipm(bi,bj) no_swfluxm = no_swfluxm + num_swfluxm(bi,bj) no_swdownm = no_swdownm + num_swdownm(bi,bj) no_lwfluxm = no_lwfluxm + num_lwfluxm(bi,bj) no_lwdownm = no_lwdownm + num_lwdownm(bi,bj) no_uwindm = no_uwindm + num_uwindm(bi,bj) no_vwindm = no_vwindm + num_vwindm(bi,bj) no_ssh = no_ssh + num_h(bi,bj) no_tp = no_tp + num_tp(bi,bj) no_ers = no_ers + num_ers(bi,bj) no_gfo = no_gfo + num_gfo(bi,bj) no_sst = no_sst + num_sst(bi,bj) no_tmi = no_tmi + num_tmi(bi,bj) no_sss = no_sss + num_sss(bi,bj) no_bp = no_bp + num_bp(bi,bj) no_ies = no_ies + num_ies(bi,bj) no_ctdt = no_ctdt + num_ctdt(bi,bj) no_ctds = no_ctds + num_ctds(bi,bj) no_ctdtclim = no_ctdtclim + num_ctdtclim(bi,bj) no_ctdsclim = no_ctdsclim + num_ctdsclim(bi,bj) no_xbt = no_xbt + num_xbt(bi,bj) no_argot = no_argot + num_argot(bi,bj) no_argos = no_argos + num_argos(bi,bj) no_drifter = no_drifter + num_drift(bi,bj) no_sdrift = no_sdrift + num_sdrift(bi,bj) no_tdrift = no_tdrift + num_tdrift(bi,bj) no_wdrift = no_wdrift + num_wdrift(bi,bj) no_scatx = no_scatx + num_scatx(bi,bj) no_scaty = no_scaty + num_scaty(bi,bj) no_scatxm = no_scatxm + num_scatxm(bi,bj) no_scatym = no_scatym + num_scatym(bi,bj) no_curmtr = no_curmtr + num_curmtr(bi,bj) no_ageos = no_ageos + num_ageos(bi,bj) no_kapgm = no_kapgm + num_kapgm(bi,bj) no_kapredi = no_kapredi + num_kapredi(bi,bj) no_diffkr = no_diffkr + num_diffkr(bi,bj) no_ini_fin = no_ini_fin + & num_theta_ini_fin(bi,bj) + num_salt_ini_fin(bi,bj) no_eddytau = no_eddytau + num_eddytau(bi,bj) no_bottomdrag = no_bottomdrag + num_bottomdrag(bi,bj) #endif /* ECCO_CTRL_DEPRECATED */ #if (defined (ALLOW_CTRL) && defined (ALLOW_OBCS)) no_obcsn = no_obcsn + num_obcsn(bi,bj) no_obcss = no_obcss + num_obcss(bi,bj) no_obcse = no_obcse + num_obcse(bi,bj) no_obcsw = no_obcsw + num_obcsw(bi,bj) #endif #ifdef ALLOW_PROFILES do num_file=1,NFILESPROFMAX do num_var=1,NVARMAX no_profiles(num_file,num_var)=no_profiles(num_file,num_var) & +num_profiles(num_file,num_var,bi,bj) enddo enddo #endif #ifdef ALLOW_GENCOST_CONTRIBUTION do num_var=1,NGENCOST no_gencost(num_var)=no_gencost(num_var) & +num_gencost(bi,bj,num_var) enddo #endif #ifdef ALLOW_GENTIM2D_CONTROL do num_var=1,maxCtrlTim2D no_gentim2d(num_var) = no_gentim2d(num_var) & +num_gentim2d(bi,bj,num_var) enddo #endif #ifdef ALLOW_GENARR2D_CONTROL do num_var=1,maxCtrlArr2D no_genarr2d(num_var) = no_genarr2d(num_var) & +num_genarr2d(bi,bj,num_var) enddo #endif #ifdef ALLOW_GENARR3D_CONTROL do num_var=1,maxCtrlArr3D no_genarr3d(num_var) = no_genarr3d(num_var) & +num_genarr3d(bi,bj,num_var) enddo #endif enddo enddo c local copy used in print statements, for c which we always want to do the global sum. CALL GLOBAL_SUM_TILE_RL( tile_fc, locfc, myThid ) #ifndef ALLOW_COST cgf global sum is now done in cost_final if allow_cost c-- Do global summation. _GLOBAL_SUM_RL( fc , myThid ) #endif c-- Do global summation for each part of the cost function #ifdef ECCO_CTRL_DEPRECATED _GLOBAL_SUM_RL( f_temp , myThid ) _GLOBAL_SUM_RL( f_salt , myThid ) _GLOBAL_SUM_RL( f_temp0, myThid ) _GLOBAL_SUM_RL( f_salt0, myThid ) _GLOBAL_SUM_RL( f_temp0smoo, myThid ) _GLOBAL_SUM_RL( f_salt0smoo, myThid ) _GLOBAL_SUM_RL( f_etan0, myThid ) _GLOBAL_SUM_RL( f_uvel0, myThid ) _GLOBAL_SUM_RL( f_vvel0, myThid ) _GLOBAL_SUM_RL( f_tauu , myThid ) _GLOBAL_SUM_RL( f_tauum , myThid ) _GLOBAL_SUM_RL( f_tauusmoo , myThid ) _GLOBAL_SUM_RL( f_tauv , myThid ) _GLOBAL_SUM_RL( f_tauvm , myThid ) _GLOBAL_SUM_RL( f_tauvsmoo , myThid ) _GLOBAL_SUM_RL( f_hflux , myThid ) _GLOBAL_SUM_RL( f_hfluxmm , myThid ) _GLOBAL_SUM_RL( f_hfluxsmoo , myThid ) _GLOBAL_SUM_RL( f_sflux , myThid ) _GLOBAL_SUM_RL( f_sfluxsmoo , myThid ) _GLOBAL_SUM_RL( f_uwind , myThid ) _GLOBAL_SUM_RL( f_vwind , myThid ) _GLOBAL_SUM_RL( f_atemp , myThid ) _GLOBAL_SUM_RL( f_aqh , myThid ) _GLOBAL_SUM_RL( f_precip , myThid ) _GLOBAL_SUM_RL( f_swflux , myThid ) _GLOBAL_SUM_RL( f_swdown , myThid ) _GLOBAL_SUM_RL( f_lwflux , myThid ) _GLOBAL_SUM_RL( f_lwdown , myThid ) _GLOBAL_SUM_RL( f_uwindm , myThid ) _GLOBAL_SUM_RL( f_vwindm , myThid ) _GLOBAL_SUM_RL( f_atempm , myThid ) _GLOBAL_SUM_RL( f_aqhm , myThid ) _GLOBAL_SUM_RL( f_precipm , myThid ) _GLOBAL_SUM_RL( f_swfluxm , myThid ) _GLOBAL_SUM_RL( f_swdownm , myThid ) _GLOBAL_SUM_RL( f_lwfluxm , myThid ) _GLOBAL_SUM_RL( f_lwdownm , myThid ) _GLOBAL_SUM_RL( f_uwindsmoo , myThid ) _GLOBAL_SUM_RL( f_vwindsmoo , myThid ) _GLOBAL_SUM_RL( f_atempsmoo , myThid ) _GLOBAL_SUM_RL( f_aqhsmoo , myThid ) _GLOBAL_SUM_RL( f_precipsmoo , myThid ) _GLOBAL_SUM_RL( f_swfluxsmoo , myThid ) _GLOBAL_SUM_RL( f_swdownsmoo , myThid ) _GLOBAL_SUM_RL( f_lwfluxsmoo , myThid ) _GLOBAL_SUM_RL( f_lwdownsmoo , myThid ) _GLOBAL_SUM_RL( f_ssh , myThid ) _GLOBAL_SUM_RL( f_tp , myThid ) _GLOBAL_SUM_RL( f_ers , myThid ) _GLOBAL_SUM_RL( f_gfo , myThid ) _GLOBAL_SUM_RL( f_sst , myThid ) _GLOBAL_SUM_RL( f_tmi , myThid ) _GLOBAL_SUM_RL( f_sss , myThid ) _GLOBAL_SUM_RL( f_bp , myThid ) _GLOBAL_SUM_RL( f_ies , myThid ) _GLOBAL_SUM_RL( f_atl , myThid ) _GLOBAL_SUM_RL( f_ctdt , myThid ) _GLOBAL_SUM_RL( f_ctds , myThid ) _GLOBAL_SUM_RL( f_ctdtclim , myThid ) _GLOBAL_SUM_RL( f_ctdsclim , myThid ) _GLOBAL_SUM_RL( f_xbt , myThid ) _GLOBAL_SUM_RL( f_argot , myThid ) _GLOBAL_SUM_RL( f_argos , myThid ) _GLOBAL_SUM_RL( f_drifter , myThid ) _GLOBAL_SUM_RL( f_sdrift , myThid ) _GLOBAL_SUM_RL( f_tdrift , myThid ) _GLOBAL_SUM_RL( f_wdrift , myThid ) _GLOBAL_SUM_RL( f_scatx , myThid ) _GLOBAL_SUM_RL( f_scaty , myThid ) _GLOBAL_SUM_RL( f_scatxm , myThid ) _GLOBAL_SUM_RL( f_scatym , myThid ) _GLOBAL_SUM_RL( f_curmtr , myThid ) _GLOBAL_SUM_RL( f_ageos , myThid ) _GLOBAL_SUM_RL( f_kapgm , myThid ) _GLOBAL_SUM_RL( f_kapredi, myThid ) _GLOBAL_SUM_RL( f_diffkr , myThid ) _GLOBAL_SUM_RL( f_ini_fin , myThid ) _GLOBAL_SUM_RL( f_eddytau , myThid ) _GLOBAL_SUM_RL( f_bottomdrag , myThid ) #endif /* ECCO_CTRL_DEPRECATED */ #if (defined (ALLOW_CTRL) && defined (ALLOW_OBCS)) _GLOBAL_SUM_RL( f_obcsn , myThid ) _GLOBAL_SUM_RL( f_obcss , myThid ) _GLOBAL_SUM_RL( f_obcsw , myThid ) _GLOBAL_SUM_RL( f_obcse , myThid ) #endif #ifdef ALLOW_PROFILES do num_file=1,NFILESPROFMAX do num_var=1,NVARMAX _GLOBAL_SUM_RL(f_profiles(num_file,num_var), myThid ) enddo enddo #endif #ifdef ALLOW_GENCOST_CONTRIBUTION do num_var=1,NGENCOST _GLOBAL_SUM_RL(f_gencost(num_var), myThid ) enddo #endif #ifdef ALLOW_GENTIM2D_CONTROL do num_var=1,maxCtrlTim2D _GLOBAL_SUM_RL(f_gentim2d(num_var), myThid ) enddo #endif #ifdef ALLOW_GENARR2D_CONTROL do num_var=1,maxCtrlArr2D _GLOBAL_SUM_RL(f_genarr2d(num_var), myThid ) enddo #endif #ifdef ALLOW_GENARR3D_CONTROL do num_var=1,maxCtrlArr3D _GLOBAL_SUM_RL(f_genarr3d(num_var), myThid ) enddo #endif #ifdef ECCO_CTRL_DEPRECATED _GLOBAL_SUM_RL( no_temp , myThid ) _GLOBAL_SUM_RL( no_salt , myThid ) _GLOBAL_SUM_RL( no_temp0, myThid ) _GLOBAL_SUM_RL( no_salt0, myThid ) _GLOBAL_SUM_RL( no_etan0, myThid ) _GLOBAL_SUM_RL( no_uvel0, myThid ) _GLOBAL_SUM_RL( no_vvel0, myThid ) _GLOBAL_SUM_RL( no_tauu , myThid ) _GLOBAL_SUM_RL( no_tauum , myThid ) _GLOBAL_SUM_RL( no_tauv , myThid ) _GLOBAL_SUM_RL( no_tauvm , myThid ) _GLOBAL_SUM_RL( no_hflux , myThid ) _GLOBAL_SUM_RL( no_hfluxmm , myThid ) _GLOBAL_SUM_RL( no_sflux , myThid ) _GLOBAL_SUM_RL( no_sfluxmm , myThid ) _GLOBAL_SUM_RL( no_uwind , myThid ) _GLOBAL_SUM_RL( no_vwind , myThid ) _GLOBAL_SUM_RL( no_atemp , myThid ) _GLOBAL_SUM_RL( no_aqh , myThid ) _GLOBAL_SUM_RL( no_precip , myThid ) _GLOBAL_SUM_RL( no_swflux , myThid ) _GLOBAL_SUM_RL( no_swdown , myThid ) _GLOBAL_SUM_RL( no_lwflux , myThid ) _GLOBAL_SUM_RL( no_lwdown , myThid ) _GLOBAL_SUM_RL( no_uwindm , myThid ) _GLOBAL_SUM_RL( no_vwindm , myThid ) _GLOBAL_SUM_RL( no_atempm , myThid ) _GLOBAL_SUM_RL( no_aqhm , myThid ) _GLOBAL_SUM_RL( no_precipm , myThid ) _GLOBAL_SUM_RL( no_swfluxm , myThid ) _GLOBAL_SUM_RL( no_swdownm , myThid ) _GLOBAL_SUM_RL( no_lwfluxm , myThid ) _GLOBAL_SUM_RL( no_lwdownm , myThid ) _GLOBAL_SUM_RL( no_ssh , myThid ) _GLOBAL_SUM_RL( no_tp , myThid ) _GLOBAL_SUM_RL( no_ers , myThid ) _GLOBAL_SUM_RL( no_gfo , myThid ) _GLOBAL_SUM_RL( no_sst , myThid ) _GLOBAL_SUM_RL( no_tmi , myThid ) _GLOBAL_SUM_RL( no_sss , myThid ) _GLOBAL_SUM_RL( no_bp , myThid ) _GLOBAL_SUM_RL( no_ies , myThid ) _GLOBAL_SUM_RL( no_atl , myThid ) _GLOBAL_SUM_RL( no_ctdt , myThid ) _GLOBAL_SUM_RL( no_ctds , myThid ) _GLOBAL_SUM_RL( no_ctdtclim , myThid ) _GLOBAL_SUM_RL( no_ctdsclim , myThid ) _GLOBAL_SUM_RL( no_xbt , myThid ) _GLOBAL_SUM_RL( no_argot , myThid ) _GLOBAL_SUM_RL( no_argos , myThid ) _GLOBAL_SUM_RL( no_drifter , myThid ) _GLOBAL_SUM_RL( no_sdrift , myThid ) _GLOBAL_SUM_RL( no_tdrift , myThid ) _GLOBAL_SUM_RL( no_wdrift , myThid ) _GLOBAL_SUM_RL( no_scatx , myThid ) _GLOBAL_SUM_RL( no_scaty , myThid ) _GLOBAL_SUM_RL( no_scatxm , myThid ) _GLOBAL_SUM_RL( no_scatym , myThid ) _GLOBAL_SUM_RL( no_curmtr , myThid ) _GLOBAL_SUM_RL( no_ageos , myThid ) _GLOBAL_SUM_RL( no_kapgm , myThid ) _GLOBAL_SUM_RL( no_kapredi , myThid ) _GLOBAL_SUM_RL( no_diffkr , myThid ) _GLOBAL_SUM_RL( no_ini_fin , myThid ) _GLOBAL_SUM_RL( no_eddytau , myThid ) _GLOBAL_SUM_RL( no_bottomdrag , myThid ) #endif /* ECCO_CTRL_DEPRECATED */ #if (defined (ALLOW_CTRL) && defined (ALLOW_OBCS)) _GLOBAL_SUM_RL( no_obcsn , myThid ) _GLOBAL_SUM_RL( no_obcss , myThid ) _GLOBAL_SUM_RL( no_obcsw , myThid ) _GLOBAL_SUM_RL( no_obcse , myThid ) #endif #ifdef ALLOW_PROFILES do num_file=1,NFILESPROFMAX do num_var=1,NVARMAX _GLOBAL_SUM_RL(no_profiles(num_file,num_var), myThid ) enddo enddo #endif #ifdef ALLOW_GENCOST_CONTRIBUTION do num_var=1,NGENCOST _GLOBAL_SUM_RL(no_gencost(num_var), myThid ) enddo #endif #ifdef ALLOW_GENTIM2D_CONTROL do num_var=1,maxCtrlTim2D _GLOBAL_SUM_RL(no_gentim2d(num_var), myThid ) enddo #endif #ifdef ALLOW_GENARR2D_CONTROL do num_var=1,maxCtrlArr2D _GLOBAL_SUM_RL(no_genarr2d(num_var), myThid ) enddo #endif #ifdef ALLOW_GENARR3D_CONTROL do num_var=1,maxCtrlArr3D _GLOBAL_SUM_RL(no_genarr3d(num_var), myThid ) enddo #endif #ifdef ECCO_CTRL_DEPRECATED write(standardmessageunit,'(A,D22.15)') & ' --> f_temp =',f_temp write(standardmessageunit,'(A,D22.15)') & ' --> f_salt =',f_salt write(standardmessageunit,'(A,D22.15)') & ' --> f_temp0 =',f_temp0 write(standardmessageunit,'(A,D22.15)') & ' --> f_salt0 =',f_salt0 write(standardmessageunit,'(A,D22.15)') & ' --> f_temp0smoo =',f_temp0smoo write(standardmessageunit,'(A,D22.15)') & ' --> f_salt0smoo =',f_salt0smoo write(standardmessageunit,'(A,D22.15)') & ' --> f_etan0 =',f_etan0 write(standardmessageunit,'(A,D22.15)') & ' --> f_uvel0 =',f_uvel0 write(standardmessageunit,'(A,D22.15)') & ' --> f_vvel0 =',f_vvel0 write(standardmessageunit,'(A,D22.15)') & ' --> f_sst =',f_sst write(standardmessageunit,'(A,D22.15)') & ' --> f_tmi =',f_tmi write(standardmessageunit,'(A,D22.15)') & ' --> f_sss =',f_sss write(standardmessageunit,'(A,D22.15)') & ' --> f_bp =',f_bp write(standardmessageunit,'(A,D22.15)') & ' --> f_ies =',f_ies write(standardmessageunit,'(A,D22.15)') & ' --> f_ssh =',f_ssh write(standardmessageunit,'(A,D22.15)') & ' --> f_tp =',f_tp write(standardmessageunit,'(A,D22.15)') & ' --> f_ers =',f_ers write(standardmessageunit,'(A,D22.15)') & ' --> f_gfo =',f_gfo write(standardmessageunit,'(A,D22.15)') & ' --> f_tauu =',f_tauu write(standardmessageunit,'(A,D22.15)') & ' --> f_tauum =',f_tauum write(standardmessageunit,'(A,D22.15)') & ' --> f_tauusmoo =',f_tauusmoo write(standardmessageunit,'(A,D22.15)') & ' --> f_tauv =',f_tauv write(standardmessageunit,'(A,D22.15)') & ' --> f_tauvm =',f_tauvm write(standardmessageunit,'(A,D22.15)') & ' --> f_tauvsmoo =',f_tauvsmoo write(standardmessageunit,'(A,D22.15)') & ' --> f_hflux =',f_hflux write(standardmessageunit,'(A,D22.15)') & ' --> f_hfluxmm =',f_hfluxmm write(standardmessageunit,'(A,D22.15)') & ' --> f_hfluxsmoo =',f_hfluxsmoo write(standardmessageunit,'(A,D22.15)') & ' --> f_sflux =',f_sflux write(standardmessageunit,'(A,D22.15)') & ' --> f_sfluxmm =',f_sfluxmm write(standardmessageunit,'(A,D22.15)') & ' --> f_sfluxsmoo =',f_sfluxsmoo write(standardmessageunit,'(A,D22.15)') & ' --> f_uwind =',f_uwind write(standardmessageunit,'(A,D22.15)') & ' --> f_vwind =',f_vwind write(standardmessageunit,'(A,D22.15)') & ' --> f_atemp =',f_atemp write(standardmessageunit,'(A,D22.15)') & ' --> f_aqh =',f_aqh write(standardmessageunit,'(A,D22.15)') & ' --> f_precip =',f_precip write(standardmessageunit,'(A,D22.15)') & ' --> f_swflux =',f_swflux write(standardmessageunit,'(A,D22.15)') & ' --> f_swdown =',f_swdown write(standardmessageunit,'(A,D22.15)') & ' --> f_lwflux =',f_lwflux write(standardmessageunit,'(A,D22.15)') & ' --> f_lwdown =',f_lwdown write(standardmessageunit,'(A,D22.15)') & ' --> f_uwindm =',f_uwindm write(standardmessageunit,'(A,D22.15)') & ' --> f_vwindm =',f_vwindm write(standardmessageunit,'(A,D22.15)') & ' --> f_atempm =',f_atempm write(standardmessageunit,'(A,D22.15)') & ' --> f_aqhm =',f_aqhm write(standardmessageunit,'(A,D22.15)') & ' --> f_precipm =',f_precipm write(standardmessageunit,'(A,D22.15)') & ' --> f_swfluxm =',f_swfluxm write(standardmessageunit,'(A,D22.15)') & ' --> f_lwfluxm =',f_lwfluxm write(standardmessageunit,'(A,D22.15)') & ' --> f_swdownm =',f_swdownm write(standardmessageunit,'(A,D22.15)') & ' --> f_lwdownm =',f_lwdownm write(standardmessageunit,'(A,D22.15)') & ' --> f_uwindsmoo =',f_uwindsmoo write(standardmessageunit,'(A,D22.15)') & ' --> f_vwindsmoo =',f_vwindsmoo write(standardmessageunit,'(A,D22.15)') & ' --> f_atempsmoo =',f_atempsmoo write(standardmessageunit,'(A,D22.15)') & ' --> f_aqhsmoo =',f_aqhsmoo write(standardmessageunit,'(A,D22.15)') & ' --> f_precipsmoo =',f_precipsmoo write(standardmessageunit,'(A,D22.15)') & ' --> f_swfluxsmoo =',f_swfluxsmoo write(standardmessageunit,'(A,D22.15)') & ' --> f_lwfluxsmoo =',f_lwfluxsmoo write(standardmessageunit,'(A,D22.15)') & ' --> f_swdownsmoo =',f_swdownsmoo write(standardmessageunit,'(A,D22.15)') & ' --> f_lwdownsmoo =',f_lwdownsmoo write(standardmessageunit,'(A,D22.15)') & ' --> f_atl =',f_atl write(standardmessageunit,'(A,D22.15)') & ' --> f_ctdt =',f_ctdt write(standardmessageunit,'(A,D22.15)') & ' --> f_ctds =',f_ctds write(standardmessageunit,'(A,D22.15)') & ' --> f_ctdtclim=',f_ctdtclim write(standardmessageunit,'(A,D22.15)') & ' --> f_ctdsclim=',f_ctdsclim write(standardmessageunit,'(A,D22.15)') & ' --> f_xbt =',f_xbt write(standardmessageunit,'(A,D22.15)') & ' --> f_argot =',f_argot write(standardmessageunit,'(A,D22.15)') & ' --> f_argos =',f_argos write(standardmessageunit,'(A,D22.15)') & ' --> f_drifter =',f_drifter write(standardmessageunit,'(A,D22.15)') & ' --> f_tdrift =',f_tdrift write(standardmessageunit,'(A,D22.15)') & ' --> f_sdrift =',f_sdrift write(standardmessageunit,'(A,D22.15)') & ' --> f_wdrift =',f_wdrift write(standardmessageunit,'(A,D22.15)') & ' --> f_scatx =',f_scatx write(standardmessageunit,'(A,D22.15)') & ' --> f_scaty =',f_scaty write(standardmessageunit,'(A,D22.15)') & ' --> f_scatxm =',f_scatxm write(standardmessageunit,'(A,D22.15)') & ' --> f_scatym =',f_scatym write(standardmessageunit,'(A,D22.15)') & ' --> f_curmtr =',f_curmtr write(standardmessageunit,'(A,D22.15)') & ' --> f_kapgm =',f_kapgm write(standardmessageunit,'(A,D22.15)') & ' --> f_kapredi =',f_kapredi write(standardmessageunit,'(A,D22.15)') & ' --> f_diffkr =',f_diffkr write(standardmessageunit,'(A,D22.15)') & ' --> f_eddytau =', f_eddytau write(standardmessageunit,'(A,D22.15)') & ' --> f_bottomdrag =', f_bottomdrag #endif /* ECCO_CTRL_DEPRECATED */ #if (defined (ALLOW_CTRL) && defined (ALLOW_OBCS)) write(standardmessageunit,'(A,D22.15)') & ' --> f_obcsn =',f_obcsn write(standardmessageunit,'(A,D22.15)') & ' --> f_obcss =',f_obcss write(standardmessageunit,'(A,D22.15)') & ' --> f_obcsw =',f_obcsw write(standardmessageunit,'(A,D22.15)') & ' --> f_obcse =',f_obcse # ifdef ECCO_CTRL_DEPRECATED write(standardmessageunit,'(A,D22.15)') & ' --> f_ageos =',f_ageos # endif #endif #ifdef ALLOW_PROFILES if (usePROFILES) then do num_file=1,NFILESPROFMAX do num_var=1,NVARMAX if ( no_profiles(num_file,num_var).GT.zeroRL ) then write(standardmessageunit,'(A,D22.15,i2.0,i2.0)') & ' --> f_profiles =',f_profiles(num_file,num_var), & num_file, num_var endif enddo enddo endif #endif #ifdef ALLOW_GENCOST_CONTRIBUTION do num_var=1,NGENCOST if (no_gencost(num_var).GT.0) then write(standardmessageunit,'(A,D22.15,i2.0)') & ' --> f_gencost =',f_gencost(num_var), & num_var endif enddo #endif #ifdef ALLOW_GENTIM2D_CONTROL do num_var=1,maxCtrlTim2D if (no_gentim2d(num_var).GT.0. _d 0) then write(standardmessageunit,'(A,D22.15,i2.0)') & ' --> f_gentim2d =',f_gentim2d(num_var), & num_var endif enddo #endif #ifdef ALLOW_GENARR2D_CONTROL do num_var=1,maxCtrlArr2D if (no_genarr2d(num_var).GT.0. _d 0) then write(standardmessageunit,'(A,D22.15,i2.0)') & ' --> f_genarr2d =',f_genarr2d(num_var), & num_var endif enddo #endif #ifdef ALLOW_GENARR3D_CONTROL do num_var=1,maxCtrlArr3D if (no_genarr3d(num_var).GT.0. _d 0) then write(standardmessageunit,'(A,D22.15,i2.0)') & ' --> f_genarr3d =',f_genarr3d(num_var), & num_var endif enddo #endif #ifdef ECCO_CTRL_DEPRECATED c-- Each process has calculated the global part for itself. glofc = glofc & + mult_hmean*objf_hmean no_hmean = num_hmean cph( cph this is from annual mean misfits; cph simple sums and squares needed to be taken at annual intervals f_hfluxmm = f_hfluxmm + objf_hfluxmm f_hfluxmm2 = mult_hfluxmm*f_hfluxmm c f_sfluxmm = f_sfluxmm + objf_sfluxmm f_sfluxmm2 = mult_sfluxmm*f_sfluxmm c f_transp = mult_transp*objf_transp no_transp = num_transp cph) glofc = glofc & + f_hfluxmm2 + f_sfluxmm2 & + f_transp #endif /* ECCO_CTRL_DEPRECATED */ #ifndef ALLOW_COST cgf this sum is now done in cost_final if allow_cost fc = fc + glofc #endif locfc=locfc+glofc C only master thread of master CPU open and write to file IF ( MASTER_CPU_THREAD(myThid) ) THEN #ifdef ECCO_CTRL_DEPRECATED write(standardmessageunit,'(A,D22.15)') & ' --> f_hfluxmm2 =',f_hfluxmm2 write(standardmessageunit,'(A,D22.15)') & ' --> f_sfluxmm2 =',f_sfluxmm2 write(standardmessageunit,'(A,D22.15)') & ' --> f_transp =',f_transp write(standardmessageunit,'(A,D22.15)') & ' --> objf_hmean =',objf_hmean #endif /* ECCO_CTRL_DEPRECATED */ write(standardmessageunit,'(A,D22.15)') & ' --> fc =', locfc write(cfname,'(A,i4.4)') 'costfunction',eccoiter open(unit=ifc,file=cfname) #ifdef ALLOW_ECCO_OLD_FC_PRINT write(ifc,*) #else write(ifc,'(A,2D22.15)') #endif & 'fc =', locfc, 0. #ifdef ECCO_CTRL_DEPRECATED write(ifc,'(A,2D22.15)') & 'f_temp =', f_temp, no_temp write(ifc,'(A,2D22.15)') & 'f_salt =', f_salt, no_salt write(ifc,'(A,2D22.15)') & 'f_temp0 =', f_temp0, no_temp0 write(ifc,'(A,2D22.15)') & 'f_salt0 =', f_salt0, no_salt0 write(ifc,'(A,2D22.15)') & 'f_temp0smoo =', f_temp0smoo, no_temp0 write(ifc,'(A,2D22.15)') & 'f_salt0smoo =', f_salt0smoo, no_salt0 write(ifc,'(A,2D22.15)') & 'f_etan0 =', f_etan0, no_etan0 write(ifc,'(A,2D22.15)') & 'f_uvel0 =', f_uvel0, no_uvel0 write(ifc,'(A,2D22.15)') & 'f_vvel0 =', f_vvel0, no_vvel0 write(ifc,'(A,2D22.15)') & 'f_tauu =', f_tauu, no_tauu write(ifc,'(A,2D22.15)') & 'f_tauum =', f_tauum, no_tauum write(ifc,'(A,2D22.15)') & 'f_tauusmoo =', f_tauusmoo, no_tauu write(ifc,'(A,2D22.15)') & 'f_tauv =', f_tauv, no_tauv write(ifc,'(A,2D22.15)') & 'f_tauvm =', f_tauvm, no_tauvm write(ifc,'(A,2D22.15)') & 'f_tauvsmoo =', f_tauvsmoo, no_tauv write(ifc,'(A,2D22.15)') & 'f_hflux =', f_hflux, no_hflux write(ifc,'(A,2D22.15)') & 'f_hfluxm =', f_hfluxm, no_hfluxm write(ifc,'(A,2D22.15)') & 'f_hfluxmm =', f_hfluxmm, no_hfluxmm write(ifc,'(A,2D22.15)') & 'f_hfluxmm2 =', f_hfluxmm2, mult_hfluxmm write(ifc,'(A,2D22.15)') & 'f_hfluxsmoo =', f_hfluxsmoo, no_hflux write(ifc,'(A,2D22.15)') & 'f_sflux =', f_sflux, no_sflux write(ifc,'(A,2D22.15)') & 'f_sfluxm =', f_sfluxm, no_sfluxm write(ifc,'(A,2D22.15)') & 'f_sfluxmm =', f_sfluxmm, no_sfluxmm write(ifc,'(A,2D22.15)') & 'f_sfluxmm2 =', f_sfluxmm2, mult_sfluxmm write(ifc,'(A,2D22.15)') & 'f_sfluxsmoo =', f_sfluxsmoo, no_sflux write(ifc,'(A,2D22.15)') & 'f_uwind =', f_uwind, no_uwind write(ifc,'(A,2D22.15)') & 'f_vwind =', f_vwind, no_vwind write(ifc,'(A,2D22.15)') & 'f_atemp =', f_atemp, no_atemp write(ifc,'(A,2D22.15)') & 'f_aqh =', f_aqh, no_aqh write(ifc,'(A,2D22.15)') & 'f_precip =', f_precip, no_precip write(ifc,'(A,2D22.15)') & 'f_swflux =', f_swflux, no_swflux write(ifc,'(A,2D22.15)') & 'f_lwflux =', f_lwflux, no_lwflux write(ifc,'(A,2D22.15)') & 'f_swdown =', f_swdown, no_swdown write(ifc,'(A,2D22.15)') & 'f_lwdown =', f_lwdown, no_lwdown write(ifc,'(A,2D22.15)') & 'f_uwindm =', f_uwindm, no_uwindm write(ifc,'(A,2D22.15)') & 'f_vwindm =', f_vwindm, no_vwindm write(ifc,'(A,2D22.15)') & 'f_atempm =', f_atempm, no_atempm write(ifc,'(A,2D22.15)') & 'f_aqhm =', f_aqhm, no_aqhm write(ifc,'(A,2D22.15)') & 'f_precipm =', f_precipm, no_precipm write(ifc,'(A,2D22.15)') & 'f_swfluxm =', f_swfluxm, no_swfluxm write(ifc,'(A,2D22.15)') & 'f_lwfluxm =', f_lwfluxm, no_lwfluxm write(ifc,'(A,2D22.15)') & 'f_swdownm =', f_swdownm, no_swdownm write(ifc,'(A,2D22.15)') & 'f_lwdownm =', f_lwdownm, no_lwdownm write(ifc,'(A,2D22.15)') & 'f_uwindsmoo =', f_uwindsmoo, no_uwind write(ifc,'(A,2D22.15)') & 'f_vwindsmoo =', f_vwindsmoo, no_vwind write(ifc,'(A,2D22.15)') & 'f_atempsmoo =', f_atempsmoo, no_atemp write(ifc,'(A,2D22.15)') & 'f_aqhsmoo =', f_aqhsmoo, no_aqh write(ifc,'(A,2D22.15)') & 'f_precipsmoo =', f_precipsmoo, no_precip write(ifc,'(A,2D22.15)') & 'f_swfluxsmoo =', f_swfluxsmoo, no_swflux write(ifc,'(A,2D22.15)') & 'f_lwfluxsmoo =', f_lwfluxsmoo, no_lwflux write(ifc,'(A,2D22.15)') & 'f_swdownsmoo =', f_swdownsmoo, no_swdown write(ifc,'(A,2D22.15)') & 'f_lwdownsmoo =', f_lwdownsmoo, no_lwdown write(ifc,'(A,2D22.15)') & 'f_ssh =', f_ssh, no_ssh write(ifc,'(A,2D22.15)') & 'f_tp =', f_tp, no_tp write(ifc,'(A,2D22.15)') & 'f_ers =', f_ers, no_ers write(ifc,'(A,2D22.15)') & 'f_gfo =', f_gfo, no_gfo write(ifc,'(A,2D22.15)') & 'f_sst =', f_sst, no_sst write(ifc,'(A,2D22.15)') & 'f_tmi =', f_tmi, no_tmi write(ifc,'(A,2D22.15)') & 'f_sss =', f_sss, no_sss write(ifc,'(A,2D22.15)') & 'f_bp =', f_bp, no_bp write(ifc,'(A,2D22.15)') & 'f_ies =', f_ies, no_ies write(ifc,'(A,2D22.15)') & 'f_atl =', f_atl, no_atl write(ifc,'(A,2D22.15)') & 'f_ctdt =', f_ctdt, no_ctdt write(ifc,'(A,2D22.15)') & 'f_ctds =', f_ctds, no_ctds write(ifc,'(A,2D22.15)') & 'f_ctdtclim =', f_ctdtclim, no_ctdtclim write(ifc,'(A,2D22.15)') & 'f_ctdsclim =', f_ctdsclim, no_ctdsclim write(ifc,'(A,2D22.15)') & 'f_xbt =', f_xbt, no_xbt write(ifc,'(A,2D22.15)') & 'f_argot =', f_argot, no_argot write(ifc,'(A,2D22.15)') & 'f_argos =', f_argos, no_argos write(ifc,'(A,2D22.15)') & 'objf_hmean =', objf_hmean, no_hmean write(ifc,'(A,2D22.15)') & 'f_drifter =', f_drifter, no_drifter write(ifc,'(A,2D22.15)') & 'f_sdrift =', f_sdrift, no_sdrift write(ifc,'(A,2D22.15)') & 'f_tdrift =', f_tdrift, no_tdrift write(ifc,'(A,2D22.15)') & 'f_wdrift =', f_wdrift, no_wdrift write(ifc,'(A,2D22.15)') & 'f_scatx =', f_scatx, no_scatx write(ifc,'(A,2D22.15)') & 'f_scaty =', f_scaty, no_scaty write(ifc,'(A,2D22.15)') & 'f_scatxm =', f_scatxm, no_scatxm write(ifc,'(A,2D22.15)') & 'f_scatym =', f_scatym, no_scatym write(ifc,'(A,2D22.15)') & 'f_kapgm =', f_kapgm, no_kapgm write(ifc,'(A,2D22.15)') & 'f_kapredi =', f_kapredi, no_kapredi write(ifc,'(A,2D22.15)') & 'f_diffkr =', f_diffkr, no_diffkr write(ifc,'(A,2D22.15)') & 'f_ini_fin =', f_ini_fin, no_ini_fin write(ifc,'(A,2D22.15)') & 'f_eddytau =', f_eddytau, no_eddytau write(ifc,'(A,2D22.15)') & 'f_bottomdrag =', f_bottomdrag, no_bottomdrag write(ifc,'(A,2D22.15)') & 'f_transp =', f_transp, no_transp #endif /* ECCO_CTRL_DEPRECATED */ #if (defined (ALLOW_CTRL) && defined (ALLOW_OBCS)) write(ifc,'(A,2D22.15)') & 'f_obcsn =', f_obcsn, no_obcsn write(ifc,'(A,2D22.15)') & 'f_obcss =', f_obcss, no_obcss write(ifc,'(A,2D22.15)') & 'f_obcsw =', f_obcsw, no_obcsw write(ifc,'(A,2D22.15)') & 'f_obcse =', f_obcse, no_obcse # ifdef ECCO_CTRL_DEPRECATED write(ifc,'(A,2D22.15)') & 'f_ageos =', f_ageos, no_ageos # endif #endif #ifdef ALLOW_PROFILES if (usePROFILES) then do num_file=1,NFILESPROFMAX do num_var=1,NVARMAX if ( no_profiles(num_file,num_var).GT.zeroRL ) then IL = ILNBLNK( profilesfiles(num_file) ) IL = max (IL,30) write(ifc,'(4A,2D22.15)') & profilesfiles(num_file)(1:IL),' ', & prof_names(num_file,num_var), ' = ', & f_profiles(num_file,num_var), & no_profiles(num_file,num_var) endif enddo enddo endif #endif #ifdef ALLOW_GENCOST_CONTRIBUTION do num_var=1,NGENCOST if (no_gencost(num_var).GT.0) then IL = ILNBLNK( gencost_name(num_var) ) IL = max (IL,15) write(ifc,'(2A,i2.0,A,2D22.15)') & gencost_name(num_var)(1:IL),' (gencost ', num_var, ') = ', & f_gencost(num_var), & no_gencost(num_var) endif enddo #endif #ifdef ALLOW_GENTIM2D_CONTROL do num_var=1,maxCtrlTim2D if (no_gentim2d(num_var).GT.0. _d 0) then IL = ILNBLNK( xx_gentim2d_file(num_var) ) IL = max (IL,15) write(ifc,'(2A,i2.0,A,2D22.15)') & xx_gentim2d_file(num_var)(1:IL), & ' (gentim2d ', num_var, ') = ', & f_gentim2d(num_var), & no_gentim2d(num_var) endif enddo #endif #ifdef ALLOW_GENARR2D_CONTROL do num_var=1,maxCtrlArr2D if (no_genarr2d(num_var).GT.0. _d 0) then IL = ILNBLNK( xx_genarr2d_file(num_var) ) IL = max (IL,15) write(ifc,'(2A,i2.0,A,2D22.15)') & xx_genarr2d_file(num_var)(1:IL), & ' (genarr2d ', num_var, ') = ', & f_genarr2d(num_var), & no_genarr2d(num_var) endif enddo #endif #ifdef ALLOW_GENARR3D_CONTROL do num_var=1,maxCtrlArr3D if (no_genarr3d(num_var).GT.0. _d 0) then IL = ILNBLNK( xx_genarr3d_file(num_var) ) IL = max (IL,15) write(ifc,'(2A,i2.0,A,2D22.15)') & xx_genarr3d_file(num_var)(1:IL), & ' (genarr3d ', num_var, ') = ', & f_genarr3d(num_var), & no_genarr3d(num_var) endif enddo #endif close(ifc) ENDIF c#ifdef ECCO_CTRL_DEPRECATED c call cost_trans_merid( mythid ) c call cost_trans_zonal( mythid ) c#endif /* ECCO_CTRL_DEPRECATED */ #ifdef ECCO_VERBOSE write(msgbuf,'(a,D22.15)') & ' cost_Final: final cost function = ',locfc call print_message( msgbuf, standardmessageunit, & SQUEEZE_RIGHT , mythid) write(msgbuf,'(a)') ' ' call print_message( msgbuf, standardmessageunit, & SQUEEZE_RIGHT , mythid) write(msgbuf,'(a)') & ' cost function evaluation finished.' call print_message( msgbuf, standardmessageunit, & SQUEEZE_RIGHT , mythid) write(msgbuf,'(a)') ' ' call print_message( msgbuf, standardmessageunit, & SQUEEZE_RIGHT , mythid) #endif return end