_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ _/ _/ _/ T angent linear and _/ _/ A djoint Version 5.2.14 _/ _/ M odel _/ _/ C ompiler _/ _/ _/ _/ Copyright (c) 1995-2000 Ralf Giering _/ _/ _/ _/ only for use at MIT EAPS Phys. Ocean., Cambridge _/ _/ _/ _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ tamc_code_ecco.f: parsing subroutine ** grad_sigma ** parsing subroutine ** calc_buoyancy ** parsing subroutine ** calc_common_factors ** parsing subroutine ** calc_diffusivity ** parsing subroutine ** calc_div_ghat ** parsing subroutine ** calc_grad_phi_surf ** parsing subroutine ** calc_gs ** parsing subroutine ** calc_gt ** parsing subroutine ** calc_ivdc ** parsing subroutine ** calc_mom_rhs ** parsing subroutine ** calc_phi_hyd ** parsing subroutine ** comm_stats ** parsing subroutine ** convect ** parsing subroutine ** convective_adjustment ** parsing subroutine ** convective_adjustment_ini ** parsing subroutine ** correction_step ** parsing subroutine ** cycle_tracer ** parsing function ** different_multiple ** parsing subroutine ** do_fields_blocking_exchanges ** parsing subroutine ** do_the_model_io ** parsing subroutine ** dynamics ** parsing subroutine ** external_forcing_u ** parsing subroutine ** external_forcing_v ** parsing subroutine ** external_forcing_t ** parsing subroutine ** external_forcing_s ** parsing subroutine ** external_forcing_surf ** parsing subroutine ** find_alpha ** parsing subroutine ** find_beta ** parsing subroutine ** find_rho ** parsing subroutine ** freeze ** parsing subroutine ** get_offline_fields ** parsing subroutine ** impldiff ** parsing subroutine ** ini_cartesian_grid ** parsing subroutine ** ini_cg2d ** parsing subroutine ** ini_communication_patterns ** parsing subroutine ** ini_cori ** parsing subroutine ** ini_depths ** parsing subroutine ** ini_fields ** parsing subroutine ** ini_forcing ** parsing subroutine ** ini_grid ** parsing subroutine ** ini_masks_etc ** parsing subroutine ** ini_procs ** parsing subroutine ** ini_psurf ** parsing subroutine ** ini_salt ** parsing subroutine ** ini_spherical_polar_grid ** parsing subroutine ** ini_theta ** parsing subroutine ** ini_uvel ** parsing subroutine ** ini_vertical_grid ** parsing subroutine ** ini_vvel ** parsing subroutine ** ini_wvel ** parsing subroutine ** initialise_varia ** parsing subroutine ** integrate_for_w ** parsing subroutine ** modeldata_example ** parsing subroutine ** nml_filter ** parsing subroutine ** packages_init_variables ** parsing subroutine ** plot_field_xyrs ** parsing subroutine ** plot_field_xyrl ** parsing subroutine ** plot_field_xyzrs ** parsing subroutine ** plot_field_xyzrl ** parsing subroutine ** solve_for_pressure ** parsing subroutine ** state_summary ** parsing subroutine ** timestep ** parsing subroutine ** the_correction_step ** parsing subroutine ** the_main_loop ** parsing subroutine ** timestep_tracer ** parsing subroutine ** swfrac ** parsing subroutine ** kpp_calc ** parsing subroutine ** kpp_calc_dummy ** parsing subroutine ** kpp_calc_diff ** parsing subroutine ** kpp_do_diags ** parsing subroutine ** kpp_init ** parsing subroutine ** kpp_open_diags ** parsing subroutine ** kppmix ** parsing subroutine ** bldepth ** parsing subroutine ** wscale ** parsing subroutine ** ri_iwmix ** parsing subroutine ** z121 ** parsing subroutine ** kpp_smooth_horiz ** parsing subroutine ** smooth_horiz ** parsing subroutine ** blmix ** parsing subroutine ** enhance ** parsing subroutine ** statekpp ** parsing subroutine ** kpp_transport_s ** parsing subroutine ** kpp_transport_t ** parsing subroutine ** gmredi_calc_diff ** parsing subroutine ** gmredi_calc_tensor ** parsing subroutine ** gmredi_calc_tensor_dummy ** parsing subroutine ** gmredi_diags ** parsing subroutine ** gmredi_init ** parsing subroutine ** gmredi_rtransport ** parsing subroutine ** gmredi_slope_limit ** parsing subroutine ** gmredi_xtransport ** parsing subroutine ** gmredi_ytransport ** parsing subroutine ** ctrl_map_ini ** parsing subroutine ** ctrl_map_forcing ** parsing subroutine ** cost_final ** parsing subroutine ** cost_init ** parsing subroutine ** cost_test ** ========================================= semantic analysis ========================================= ========================================= normalization ========================================= ========================================= control flow analysis ========================================= control flow analysis of subroutine nml_filter ==> irreducible control flow graph ========================================= data dependence analysis ========================================= ========================================= global data flow analysis ========================================= determine required routines and statements for subroutine : the_main_loop dependent variable(s) = fc the cost function does not depend on the variable(s) : xx_sss_dummy xx_sst_dummy determine dependent routines and statements : independent variable(s) = xx_hflux_dummy xx_salt_dummy xx_sflux_dummy xx_tauu_dummy xx_tauv_dummy xx_theta_dummy the independent variable(s) are : xx_hflux_dummy xx_salt_dummy xx_sflux_dummy xx_tauu_dummy xx_tauv_dummy xx_theta_dummy the dependent variable(s) are : fc TAMC WARNING: toplevel routine overwrites the input variables: niter0 ========================================= generate adjoint common blocks ========================================= original common block ( 2): controlvars_r derivative common block ( 2): adcontrolvars_r original common block ( 14): cost_r derivative common block ( 2): adcost_r original common block ( 10): ctrl_dummy derivative common block ( 6): adctrl_dummy original common block ( 7): dynvars_cd derivative common block ( 7): addynvars_cd original common block ( 14): dynvars_r derivative common block ( 14): addynvars_r original common block ( 7): ffields derivative common block ( 4): adffields original common block ( 3): gm_wtensor derivative common block ( 3): adgm_wtensor original common block ( 5): kpp derivative common block ( 5): adkpp original common block ( 1): kpp_short derivative common block ( 1): adkpp_short original common block ( 5): tendency_forcing derivative common block ( 4): adtendency_forcing ========================================= generate adjoint routines ========================================= begin generate adjoint computations of : the_main_loop begin generate adjoint computations of : cost_final end generate adjoint computations of : cost_final begin generate adjoint computations of : cost_test end generate adjoint computations of : cost_test begin generate adjoint computations of : do_fields_blocking_exchanges end generate adjoint computations of : do_fields_blocking_exchanges begin generate adjoint computations of : the_correction_step begin generate adjoint computations of : convective_adjustment begin generate adjoint computations of : convect end generate adjoint computations of : convect begin generate adjoint computations of : find_rho end generate adjoint computations of : find_rho end generate adjoint computations of : convective_adjustment begin generate adjoint computations of : cycle_tracer end generate adjoint computations of : cycle_tracer begin generate adjoint computations of : correction_step end generate adjoint computations of : correction_step begin generate adjoint computations of : calc_grad_phi_surf end generate adjoint computations of : calc_grad_phi_surf end generate adjoint computations of : the_correction_step begin generate adjoint computations of : solve_for_pressure TAMC INFO tamc_code_ecco.f:126891 : subroutine cg2d is self adjoint TAMC WARNING tamc_code_ecco.f:126891 : self adjoint routine has more than one active input TAMC WARNING tamc_code_ecco.f:126891 : adjoint input variable adcg2d_x will be reset begin generate adjoint computations of : calc_div_ghat end generate adjoint computations of : calc_div_ghat end generate adjoint computations of : solve_for_pressure begin generate adjoint computations of : dynamics begin generate adjoint computations of : impldiff TAMC INFO DOLOOP_STMT tamc_code_ecco.f:71247 in impldiff handled as sequential loop, only flow dependencies for : gynm1 TAMC INFO DOLOOP_STMT tamc_code_ecco.f:71235 in impldiff handled as sequential loop, only flow dependencies for : gynm1 TAMC INFO DOLOOP_STMT tamc_code_ecco.f:71214 in impldiff handled as sequential loop, only flow dependencies for : bet end generate adjoint computations of : impldiff begin generate adjoint computations of : timestep end generate adjoint computations of : timestep begin generate adjoint computations of : calc_mom_rhs begin generate adjoint computations of : external_forcing_v end generate adjoint computations of : external_forcing_v begin generate adjoint computations of : external_forcing_u end generate adjoint computations of : external_forcing_u end generate adjoint computations of : calc_mom_rhs begin generate adjoint computations of : calc_phi_hyd end generate adjoint computations of : calc_phi_hyd begin generate adjoint computations of : freeze end generate adjoint computations of : freeze begin generate adjoint computations of : timestep_tracer end generate adjoint computations of : timestep_tracer begin generate adjoint computations of : calc_gs begin generate adjoint computations of : external_forcing_s end generate adjoint computations of : external_forcing_s begin generate adjoint computations of : kpp_transport_s end generate adjoint computations of : kpp_transport_s begin generate adjoint computations of : gmredi_rtransport end generate adjoint computations of : gmredi_rtransport begin generate adjoint computations of : gmredi_ytransport end generate adjoint computations of : gmredi_ytransport begin generate adjoint computations of : gmredi_xtransport end generate adjoint computations of : gmredi_xtransport end generate adjoint computations of : calc_gs begin generate adjoint computations of : calc_gt begin generate adjoint computations of : external_forcing_t end generate adjoint computations of : external_forcing_t begin generate adjoint computations of : kpp_transport_t end generate adjoint computations of : kpp_transport_t end generate adjoint computations of : calc_gt begin generate adjoint computations of : calc_diffusivity begin generate adjoint computations of : kpp_calc_diff end generate adjoint computations of : kpp_calc_diff begin generate adjoint computations of : gmredi_calc_diff end generate adjoint computations of : gmredi_calc_diff end generate adjoint computations of : calc_diffusivity begin generate adjoint computations of : calc_common_factors end generate adjoint computations of : calc_common_factors begin generate adjoint computations of : kpp_calc begin generate adjoint computations of : swfrac end generate adjoint computations of : swfrac begin generate adjoint computations of : kppmix begin generate adjoint computations of : enhance end generate adjoint computations of : enhance begin generate adjoint computations of : blmix begin generate adjoint computations of : wscale end generate adjoint computations of : wscale end generate adjoint computations of : blmix begin generate adjoint computations of : bldepth end generate adjoint computations of : bldepth begin generate adjoint computations of : ri_iwmix end generate adjoint computations of : ri_iwmix end generate adjoint computations of : kppmix begin generate adjoint computations of : kpp_smooth_horiz end generate adjoint computations of : kpp_smooth_horiz begin generate adjoint computations of : statekpp begin generate adjoint computations of : find_beta end generate adjoint computations of : find_beta begin generate adjoint computations of : find_alpha end generate adjoint computations of : find_alpha end generate adjoint computations of : statekpp end generate adjoint computations of : kpp_calc begin generate adjoint computations of : kpp_calc_dummy end generate adjoint computations of : kpp_calc_dummy begin generate adjoint computations of : gmredi_calc_tensor begin generate adjoint computations of : gmredi_slope_limit end generate adjoint computations of : gmredi_slope_limit end generate adjoint computations of : gmredi_calc_tensor begin generate adjoint computations of : gmredi_calc_tensor_dummy end generate adjoint computations of : gmredi_calc_tensor_dummy begin generate adjoint computations of : external_forcing_surf end generate adjoint computations of : external_forcing_surf begin generate adjoint computations of : calc_ivdc end generate adjoint computations of : calc_ivdc begin generate adjoint computations of : grad_sigma end generate adjoint computations of : grad_sigma TAMC INFO avoiding recomputation of : help_h begin generate adjoint computations of : integrate_for_w end generate adjoint computations of : integrate_for_w end generate adjoint computations of : dynamics TAMC INFO tamc_code_ecco.f:135776 : tape computations inserted TAMC INFO tamc_code_ecco.f:135776 : tape computations inserted TAMC INFO tamc_code_ecco.f:135752 : tape computations inserted begin generate adjoint computations of : ctrl_map_forcing end generate adjoint computations of : ctrl_map_forcing begin generate adjoint computations of : initialise_varia begin generate adjoint computations of : packages_init_variables begin generate adjoint computations of : ctrl_map_ini end generate adjoint computations of : ctrl_map_ini end generate adjoint computations of : packages_init_variables end generate adjoint computations of : initialise_varia TAMC INFO tamc_code_ecco.f:135776 : tape computations inserted TAMC INFO tamc_code_ecco.f:135776 : tape computations inserted TAMC INFO tamc_code_ecco.f:135752 : tape computations inserted TAMC INFO avoiding recomputation of : max_lev2 TAMC INFO avoiding recomputation of : max_lev3 TAMC INFO avoiding recomputation of : empmr,fu,fv,qnet TAMC INFO avoiding recomputation of : kmixcbm2,kmixcws1,kmixcws2,kmixcws3,kmixcws4,kpp_bldepth15,kpp_i1,kpp_r11,kpp_r12,kpp_r13,niter0,qsw,sss,sst TAMC INFO tamc_code_ecco.f:135680 : function and tape computations inserted TAMC WARNING tamc_code_ecco.f:135783 : tape comlev1_kpp_sm not used TAMC WARNING tamc_code_ecco.f:135680 : tape dummytape not used TAMC WARNING tamc_code_ecco.f:38527 : tape tapelev_ini_bibj_k not used TAMC WARNING tamc_code_ecco.f:157338 : tape z121tape not used end generate adjoint computations of : the_main_loop ========================================= generate auxiliary routines ========================================= generate initialization of global adjoint variables TAMC INFO adjoint of common block variable fc not initialized TAMC INFO adjoint of common block variable xx_theta_dummy not initialized TAMC INFO adjoint of common block variable xx_salt_dummy not initialized TAMC INFO adjoint of common block variable xx_hflux_dummy not initialized TAMC INFO adjoint of common block variable xx_sflux_dummy not initialized TAMC INFO adjoint of common block variable xx_tauu_dummy not initialized TAMC INFO adjoint of common block variable xx_tauv_dummy not initialized ========================================= Fortran dialect transformations ========================================= ========================================= write modified and adjoint code ========================================= tamc_code_ecco_ad.f: writing subroutine ** mdbldepth ** writing subroutine ** adbldepth ** writing subroutine ** mdblmix ** writing subroutine ** adblmix ** writing subroutine ** adcalc_common_factors ** writing subroutine ** adcalc_diffusivity ** writing subroutine ** adcalc_div_ghat ** writing subroutine ** adcalc_grad_phi_surf ** writing subroutine ** adcalc_gs ** writing subroutine ** adcalc_gt ** writing subroutine ** adcalc_ivdc ** writing subroutine ** adcalc_mom_rhs ** writing subroutine ** mdcalc_phi_hyd ** writing subroutine ** adcalc_phi_hyd ** writing subroutine ** adconvect ** writing subroutine ** mdconvective_adjustment ** writing subroutine ** adconvective_adjustment ** writing subroutine ** adcorrection_step ** writing subroutine ** adcost_final ** writing subroutine ** adcost_test ** writing subroutine ** adctrl_map_forcing ** writing subroutine ** adctrl_map_ini ** writing subroutine ** adcycle_tracer ** writing subroutine ** addo_fields_blocking_exchanges ** writing subroutine ** mddynamics ** writing subroutine ** addynamics ** writing subroutine ** adenhance ** writing subroutine ** adexternal_forcing_s ** writing subroutine ** adexternal_forcing_surf ** writing subroutine ** adexternal_forcing_t ** writing subroutine ** adexternal_forcing_u ** writing subroutine ** adexternal_forcing_v ** writing subroutine ** adfind_alpha ** writing subroutine ** adfind_beta ** writing subroutine ** adfind_rho ** writing subroutine ** adfreeze ** writing subroutine ** adgmredi_calc_diff ** writing subroutine ** adgmredi_calc_tensor ** writing subroutine ** adgmredi_calc_tensor_dummy ** writing subroutine ** adgmredi_rtransport ** writing subroutine ** adgmredi_slope_limit ** writing subroutine ** adgmredi_xtransport ** writing subroutine ** adgmredi_ytransport ** writing subroutine ** adgrad_sigma ** writing subroutine ** adimpldiff ** writing subroutine ** mdinitialise_varia ** writing subroutine ** adinitialise_varia ** writing subroutine ** adintegrate_for_w ** writing subroutine ** mdkpp_calc ** writing subroutine ** adkpp_calc ** writing subroutine ** adkpp_calc_diff ** writing subroutine ** adkpp_calc_dummy ** writing subroutine ** adkpp_smooth_horiz ** writing subroutine ** adkpp_transport_s ** writing subroutine ** adkpp_transport_t ** writing subroutine ** mdkppmix ** writing subroutine ** adkppmix ** writing subroutine ** adpackages_init_variables ** writing subroutine ** adri_iwmix ** writing subroutine ** adsolve_for_pressure ** writing subroutine ** adstatekpp ** writing subroutine ** adswfrac ** writing subroutine ** mdthe_correction_step ** writing subroutine ** adthe_correction_step ** writing subroutine ** adthe_main_loop ** writing subroutine ** adtimestep ** writing subroutine ** adtimestep_tracer ** writing subroutine ** adwscale ** writing subroutine ** adzero **