--- MITgcm/pkg/autodiff/adcommon.h 2003/03/06 23:47:46 1.4 +++ MITgcm/pkg/autodiff/adcommon.h 2010/08/09 16:05:22 1.24 @@ -1,66 +1,195 @@ +C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/pkg/autodiff/adcommon.h,v 1.24 2010/08/09 16:05:22 gforget Exp $ +C $Name: $ + +C-- These common blocks are extracted from the +C-- automatically created tangent linear code. +C-- You need to make sure that they are up-to-date +C-- (i.e. in right order), and customize them +C-- accordingly. +C-- +C-- heimbach@mit.edu 11-Jan-2001 #ifdef ALLOW_AUTODIFF_MONITOR - These lines are uncommented on purpose to provoke - a model crash. You need to customize this header file - to your problem. - These common blocks are extracted from the - automatically created tangent linear code. - You need to make sure that they are up-to-date - (i.e. in right order), and customize them - accordingly. +#include "PACKAGES_CONFIG.h" + +#ifdef ALLOW_EXF +# include "EXF_OPTIONS.h" +#endif +#ifdef ALLOW_SEAICE +# include "SEAICE_OPTIONS.h" +#endif - heimbach@mit.edu 11-Jan-2001 - common /addynvars_r/ + common /addynvars_r/ & adetan, - & aduvel, advvel, adwvel, - & adtheta, adsalt, - & adgu, adgv, adgt, adgs, + & aduvel, advvel, adwvel, + & adtheta, adsalt, + & adgu, adgv, adgt, adgs, +#ifdef ALLOW_ADAMSBASHFORTH_3 + & adgunm, adgvnm, adgtnm, adgsnm +#else & adgunm1, adgvnm1, adgtnm1, adgsnm1 +#endif _RL adetan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy) _RL adgs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy) - _RL adgsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy) _RL adgt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy) - _RL adgtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy) _RL adgu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy) - _RL adgunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy) _RL adgv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy) - _RL adgvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy) _RL adsalt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy) _RL adtheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy) _RL aduvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy) _RL advvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy) _RL adwvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy) +#ifdef ALLOW_ADAMSBASHFORTH_3 + _RL adgtnm(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy,2) + _RL adgsnm(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy,2) + _RL adgunm(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy,2) + _RL adgvnm(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy,2) +#else + _RL adgtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy) + _RL adgsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy) + _RL adgunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy) + _RL adgvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy) +#endif + + common /addynvars_r_2/ + & adetah + _RL adetah(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy) - common /addynvars_cd/ +#ifdef ALLOW_CD_CODE + common /addynvars_cd/ & aduveld, advveld, - & adetanm1, - & adunm1, advnm1, - & adgucd, adgvcd + & adetanm1, + & adunm1, advnm1 _RL aduveld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy) _RL advveld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy) _RL adetanm1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy) _RL adunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy) _RL advnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy) - _RL adgucd(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy) - _RL adgvcd(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy) +#endif -cph common /adtr1_r/ -cph & adtr1, adgtr1, adgtr1nm1 -cph _RL adgtr1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy) -cph _RL adgtr1nm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy) -cph _RL adtr1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy) - - common /adffields/ - & adfu, adfv - & , adqnet, adempmr -cph & , adsst, adsss - _RL adfu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy) - _RL adfv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy) - _RL adqnet(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy) - _RL adempmr(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy) -cph _RL adsst(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy) -cph _RL adsss(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy) + COMMON /adffields_fu/ adfu + COMMON /adffields_fv/ adfv + COMMON /adffields_Qnet/ adQnet + COMMON /adffields_Qsw/ adQsw + COMMON /adffields_dQdT/ addQdT + COMMON /adffields_EmPmR/ adEmPmR + COMMON /adffields_saltFlux/ adsaltFlux + COMMON /adffields_SST/ adSST + COMMON /adffields_SSS/ adSSS + COMMON /adffields_lambdaThetaClimRelax/ adlambdaThetaClimRelax + COMMON /adffields_lambdaSaltClimRelax/ adlambdaSaltClimRelax +#ifdef ATMOSPHERIC_LOADING + COMMON /adffields_pload/ adpload + COMMON /adffields_sIceLoad/ adsIceLoad +#endif + + _RS adfu (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) + _RS adfv (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) + _RS adQnet (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) + _RS adQsw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) + _RS addQdT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) + _RS adEmPmR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) + _RS adsaltFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) + _RS adSST (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) + _RS adSSS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) + _RS adlambdaThetaClimRelax + & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) + _RS adlambdaSaltClimRelax + & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) +#ifdef ATMOSPHERIC_LOADING + _RS adpload (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) + _RS adsIceLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) +#endif + +#ifdef ALLOW_DIFFKR_CONTROL + COMMON /ADDYNVARS_DIFFKR/ + & addiffKr + _RL addiffKr (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) +#endif +#ifdef ALLOW_KAPGM_CONTROL + COMMON /ADDYNVARS_KAPGM/ + & adkapgm + _RL adkapgm (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) +#endif +#ifdef ALLOW_KAPREDI_CONTROL + COMMON /ADDYNVARS_KAPREDI/ + & adkapredi + _RL adkapredi (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) +#endif +#ifdef ALLOW_BOTTOMDRAG_CONTROL + COMMON /ADDYNVARS_BOTTOMDRAG/ + & adbottomdragfld + _RL adbottomdragfld (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) +#endif +#ifdef ALLOW_EDDYPSI_CONTROL + double precision adeddypsix(1-olx:snx+olx,1-oly:sny+oly,nr,nsx, + $nsy) + double precision adeddypsiy(1-olx:snx+olx,1-oly:sny+oly,nr,nsx, + $nsy) + common /adeddypsiffields/ adeddypsix, adeddypsiy + +#endif + +#ifdef ALLOW_EXF + _RL adhflux(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy) + _RL adsflux(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy) + common /adexf_hsflux_r/ adhflux, adsflux + _RL adustress(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy) + _RL advstress(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy) + common /adexf_stress_r/ adustress, advstress +# ifdef ALLOW_ATM_TEMP + _RL adatemp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy) + _RL adaqh (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy) + _RL adlwflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy) + _RL adprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy) + common /adexf_atm_temp_r/ adatemp, adaqh, adlwflux, adprecip +# endif +# ifdef ALLOW_ATM_WIND + _RL aduwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy) + _RL advwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy) + common /adexf_atm_wind_r/ aduwind, advwind +# endif +# ifdef ALLOW_DOWNWARD_RADIATION + _RL adswdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy) + _RL adlwdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy) + common /adexf_rad_down_r/ + & adswdown, adlwdown +# endif +# ifdef ALLOW_CLIMSST_RELAXATION + _RL adclimsst(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy) + common /adexf_clim_sst_r/ adclimsst +# endif +# ifdef ALLOW_CLIMSSS_RELAXATION + _RL adclimsss(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy) + common /adexf_clim_sss_r/ adclimsss +# endif +#endif + +#ifdef ALLOW_SEAICE + _RL adarea (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy) + _RL adheff (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy) + _RL adhsnow (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy) + _RL aduice (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy) + _RL advice (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy) + common /adseaice_dynvars_1/ + & adarea, adheff, adhsnow, aduice, advice +#endif + +#ifdef ALLOW_DEPTH_CONTROL + _RL adr_low_control(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy) + _RL adhfacc(1-olx:snx+olx,1-oly:sny+oly,1:nr,nsx,nsy) + _RL adhfacs(1-olx:snx+olx,1-oly:sny+oly,1:nr,nsx,nsy) + _RL adhfacw(1-olx:snx+olx,1-oly:sny+oly,1:nr,nsx,nsy) + _RL adrecip_hfacc(1-olx:snx+olx,1-oly:sny+oly,1:nr,nsx,nsy) + _RL adrecip_hfacs(1-olx:snx+olx,1-oly:sny+oly,1:nr,nsx,nsy) + _RL adrecip_hfacw(1-olx:snx+olx,1-oly:sny+oly,1:nr,nsx,nsy) + common /adgrid_r/ adr_low_control, + & adrecip_hfacc, adrecip_hfacw, adrecip_hfacs + common /adgrid_r_c/ adhfacc + common /adgrid_r_s/ adhfacs + common /adgrid_r_w/ adhfacw +#endif /* ALLOW_DEPTH_CONTROL */ #endif /* ALLOW_AUTODIFF_MONITOR */