From d3172737dcf7ebb5da3722dedce2b959cdc6f11a Mon Sep 17 00:00:00 2001 From: averdy <44445771+averdy@users.noreply.github.com> Date: Wed, 6 Nov 2024 09:45:12 -0800 Subject: [PATCH 1/2] Profiles post-processing: make single netcdf file (#836) * Add routine for post-processing, which combines tiled model-equivalent files into a single netcdf file * add flow directives * Add runtime parameter for online post-processing * undo accidental commit of bling_readparms instead of profiles_readparms * Update prof_readparms.F in code folder for the verification experiment * Update profiles_readparms.F in verification expt code_ad folder * Remove unnecessary TAF flow directives * Change FillValue from 0 to -9999 * Change netDF variable name suffix from 'equi' to 'model' * Some formatting changes * Revert using 0 as the fill value * Add flow directives for profiles_make_nc.F * Merge two *.flow files * Merge the two *.flow files * white spaces * remove local source code and replace by annotated namelist - namelist file data.profile contains some bling defaults copied from the deleted local version of profiles_readparms.F and some explanation * remove unnecessary fields in sample_prof.nc * minor edit * document pkg/profiles improvement --------- Co-authored-by: Ou Wang Co-authored-by: mjlosch Co-authored-by: Jean-Michel Campin --- doc/tag-index | 3 + pkg/profiles/active_file_profiles.flow | 44 --- pkg/profiles/cost_profiles.F | 4 +- pkg/profiles/profiles.flow | 32 ++- pkg/profiles/profiles.h | 3 +- pkg/profiles/profiles_make_ncfile.F | 261 ++++++++++++++++++ pkg/profiles/profiles_readparms.F | 4 +- .../input_ad/data.profiles | 89 +++++- .../input_ad/sample_prof.nc | Bin 157860 -> 78388 bytes 9 files changed, 383 insertions(+), 57 deletions(-) delete mode 100644 pkg/profiles/active_file_profiles.flow create mode 100644 pkg/profiles/profiles_make_ncfile.F diff --git a/doc/tag-index b/doc/tag-index index 0bc0283a59..b00b90df97 100644 --- a/doc/tag-index +++ b/doc/tag-index @@ -1,6 +1,9 @@ Notes on tags used in MITgcmUV ============================== +o pkg/profiles: + - add option to write model-equivalent profiles in a netcdf file, thus + removing the need for post-processing tiled output files. o pkg/grdchk: - write either "grd_ratio_ad" or "grd_ratio_ftl" depending on type of run and remove limitation to "useSingleCpuIO=F" when writing 2D files ; diff --git a/pkg/profiles/active_file_profiles.flow b/pkg/profiles/active_file_profiles.flow deleted file mode 100644 index d09e8429bc..0000000000 --- a/pkg/profiles/active_file_profiles.flow +++ /dev/null @@ -1,44 +0,0 @@ -CBOP -C !ROUTINE: flow directives for active_file.F -C !INTERFACE: -C !DESCRIPTION: \bv -c ================================================================== -c active_file.flow -c ================================================================== -c provides flow directives for routines in active_file.F -c required by TAMC/TAF -c * active_read_xy -c * active_read_xyz -c * active_read_xz -c * active_read_yz -c * active_write_xy -c * active_write_xyz -c * active_write_xz -c * active_write_yz -c _tile_ routines are not used nd my not be up-to-date. PH -c ================================================================== -c active_file.flow -c ================================================================== -C \ev -CEOP - -c---------------------------------------- -c subroutine active_read_profile -c---------------------------------------- -cadj SUBROUTINE active_read_profile FTLNAME = g_active_read_profile -cadj SUBROUTINE active_read_profile ADNAME = adactive_read_profile -cadj SUBROUTINE active_read_profile INPUT = 1, 2, 4,5,6,7,8,9,10,11 -cadj SUBROUTINE active_read_profile OUTPUT = 3 -cadj SUBROUTINE active_read_profile ACTIVE = 3 -cadj SUBROUTINE active_read_profile DEPEND = 1, 2, 4,5,6,7,8,9,10 - -c---------------------------------------- -c subroutine active_write_profile -c---------------------------------------- -cadj SUBROUTINE active_write_profile FTLNAME = g_active_write_profile -cadj SUBROUTINE active_write_profile ADNAME = adactive_write_profile -cadj SUBROUTINE active_write_profile INPUT = 1, 2, 3, 4,5,6,7,8,9,10 -cadj SUBROUTINE active_write_profile OUTPUT = 10 -cadj SUBROUTINE active_write_profile ACTIVE = 3 ,10 -cadj SUBROUTINE active_write_profile DEPEND = 1, 2, 4,5,6,7,8,9 - diff --git a/pkg/profiles/cost_profiles.F b/pkg/profiles/cost_profiles.F index 8b966f375d..de032e955b 100644 --- a/pkg/profiles/cost_profiles.F +++ b/pkg/profiles/cost_profiles.F @@ -675,7 +675,9 @@ SUBROUTINE cost_profiles( myIter, myTime, myThid ) call print_message( msgbuf, & standardMessageUnit,SQUEEZE_RIGHT , myThid) -c call profiles_make_ncfile(myThid) + IF ( prof_make_nc ) THEN + call profiles_make_ncfile(myThid) + ENDIF C=========================================================== diff --git a/pkg/profiles/profiles.flow b/pkg/profiles/profiles.flow index 6579cf53bc..574f545d01 100644 --- a/pkg/profiles/profiles.flow +++ b/pkg/profiles/profiles.flow @@ -1,9 +1,31 @@ C---------------------------------------- C subroutine profiles_readvector C---------------------------------------- -CADJ SUBROUTINE profiles_readvector INPUT = 1,2,3,4,6,7,8 -CADJ SUBROUTINE profiles_readvector DEPEND = 1,2,3,4,6,7 -CADJ SUBROUTINE profiles_readvector OUTPUT = 5 - -CADJ SUBROUTINE NF_OPEN INPUT = +CADJ SUBROUTINE profiles_readvector INPUT = 1,2,3,4, 6,7,8 +CADJ SUBROUTINE profiles_readvector DEPEND = 1,2,3,4, 6,7 +CADJ SUBROUTINE profiles_readvector OUTPUT = 5 +CADJ SUBROUTINE profiles_make_ncfile INPUT = 1 +CADJ SUBROUTINE profiles_make_ncfile DEPEND = 1 +CADJ SUBROUTINE profiles_make_ncfile OUTPUT = +CADJ SUBROUTINE NF_OPEN INPUT = CADJ SUBROUTINE NF_CLOSE INPUT = + +C---------------------------------------- +C subroutine active_read_profile +C---------------------------------------- +CADJ SUBROUTINE active_read_profile FTLNAME = g_active_read_profile +CADJ SUBROUTINE active_read_profile ADNAME = adactive_read_profile +CADJ SUBROUTINE active_read_profile INPUT = 1,2, 4,5,6,7,8,9,10,11 +CADJ SUBROUTINE active_read_profile OUTPUT = 3 +CADJ SUBROUTINE active_read_profile ACTIVE = 3 +CADJ SUBROUTINE active_read_profile DEPEND = 1,2, 4,5,6,7,8,9,10 + +C---------------------------------------- +C subroutine active_write_profile +C---------------------------------------- +CADJ SUBROUTINE active_write_profile FTLNAME = g_active_write_profile +CADJ SUBROUTINE active_write_profile ADNAME = adactive_write_profile +CADJ SUBROUTINE active_write_profile INPUT = 1,2,3,4,5,6,7,8,9,10 +CADJ SUBROUTINE active_write_profile OUTPUT = 10 +CADJ SUBROUTINE active_write_profile ACTIVE = 3, 10 +CADJ SUBROUTINE active_write_profile DEPEND = 1,2, 4,5,6,7,8,9 diff --git a/pkg/profiles/profiles.h b/pkg/profiles/profiles.h index 243976a119..c94639001b 100644 --- a/pkg/profiles/profiles.h +++ b/pkg/profiles/profiles.h @@ -51,6 +51,7 @@ C=========================================================== integer profiles_curfile_buff(nsx,nsy) logical profilesDoNcOutput, profilesDoGenGrid + logical prof_make_nc integer prof_num_var_tot(NFILESPROFMAX,nsx,nsy) integer prof_num_var_cur(NFILESPROFMAX,NVARMAX,nsx,nsy) @@ -102,7 +103,7 @@ C=========================================================== #endif COMMON /profiles_l/ vec_quantities, profilesDoNcOutput, - & profilesDoGenGrid + & profilesDoGenGrid, prof_make_nc COMMON /profiles_c/ prof_names, prof_namesmask, #ifdef ALLOW_PROFILES_CLIMMASK & prof_namesclim, diff --git a/pkg/profiles/profiles_make_ncfile.F b/pkg/profiles/profiles_make_ncfile.F new file mode 100644 index 0000000000..02c78f5fa5 --- /dev/null +++ b/pkg/profiles/profiles_make_ncfile.F @@ -0,0 +1,261 @@ +C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| + +#include "PROFILES_OPTIONS.h" + +CBOP +C !ROUTINE: PROFILES_MAKE_NCFILE +C !INTERFACE: + SUBROUTINE PROFILES_MAKE_NCFILE( myThid ) + +C !DESCRIPTION: \bv +C *================================================================== +C | S/R PROFILES_MAKE_NCFILE +C | o combine tiled files into one global netcdf file of +C | model-equivalent profiles +C *================================================================== +C \ev + + IMPLICIT NONE +#include "SIZE.h" +#include "EEPARAMS.h" +#include "EESUPPORT.h" +#include "PARAMS.h" +#include "PROFILES_SIZE.h" +#include "profiles.h" +#include "netcdf.inc" + +C !INPUT/OUTPUT PARAMETERS: +C myThid :: my Thread Id number + INTEGER myThid + +C !FUNCTIONS: + INTEGER ILNBLNK + EXTERNAL ILNBLNK + +C ========= Local variables ======================= + INTEGER num_file,num_var,prof_num,k + INTEGER bi,bj,iG,jG + INTEGER err,dimid,irec,fid1,fid2 + INTEGER dimid1,dimid2,vecid(2) + INTEGER varid0,varid1(NVARMAX*2),varid2(NVARMAX*2) + INTEGER length,Zlength,optimcycle + INTEGER IL,JL,KL + INTEGER vec_start(2),vec_count(2) + _RL tmpgs + _RL prof_mask1D(NLEVELMAX) + _RL prof_traj1D(NLEVELMAX) + _RL prof_buff(NVARMAX,NLEVELMAX,NOBSGLOB) + _RL prof_mask_buff(NVARMAX,NLEVELMAX,NOBSGLOB) + _RL prof_modval_glo(NVARMAX,NLEVELMAX,NOBSGLOB) + _RL prof_mask_glo(NVARMAX,NLEVELMAX,NOBSGLOB) + CHARACTER*(MAX_LEN_FNAM) prof_namesequi(NFILESPROFMAX,NVARMAX) + CHARACTER*(MAX_LEN_FNAM) profFile + CHARACTER*(MAX_LEN_FNAM) fnameequinc + CHARACTER*(MAX_LEN_FNAM) fnamedata + LOGICAL exst + + _BEGIN_MASTER( myThid ) + +C Set new netcdf variables names + DO num_file=1,NFILESPROFMAX + DO num_var=1,NVARMAX + IL = ILNBLNK( prof_names(num_file,num_var) ) + WRITE(prof_namesequi(num_file,num_var),'(2A)') + & prof_names(num_file,num_var)(1:IL),'model' + ENDDO + ENDDO + +C Initialize buffers + DO num_var=1,NVARMAX + DO prof_num=1,NOBSGLOB + DO k=1,NLEVELMAX + prof_buff(num_var,k,prof_num) = 0. + prof_mask_buff(num_var,k,prof_num) = 0. + ENDDO + ENDDO + ENDDO + +C Loop over files + DO num_file=1,NFILESPROFMAX + +C File maintenance + DO bj=1,nSy + DO bi=1,nSx + + IF ( (ProfNo(num_file,bi,bj).GT.0).AND. + & (profilesDoNcOutput) ) THEN +C Need to close the file so that the data is not lost when run finishes + err = NF_CLOSE(fidforward(num_file,bi,bj)) + iG = bi+(myXGlobalLo-1)/sNx ! Kludge until unstructered tiles + jG = bj+(myYGlobalLo-1)/sNy ! Kludge until unstructered tiles + IL = ILNBLNK( profilesFiles(num_file) ) + WRITE(profFile,'(1a)') + & profilesFiles(num_file)(1:IL) + IL = ILNBLNK( profFile ) + JL = ILNBLNK( profilesDir ) + WRITE(fnameequinc,'(3a,i3.3,a,i3.3,a)') + & profilesDir(1:JL),profFile(1:IL),'.',iG,'.',jG,'.equi.nc' + err = NF_OPEN(fnameequinc,NF_NOWRITE, + & fidforward(num_file,bi,bj)) + ENDIF + +C Loop over variables + DO num_var=1,NVARMAX + IF (vec_quantities(num_file,num_var,bi,bj).EQV..TRUE.) THEN + +C Loop over profiles + DO prof_num=1,NOBSGLOB + IF (prof_num.LE.ProfNo(num_file,bi,bj)) THEN + +C Initialize + DO k=1,NLEVELMAX + prof_traj1D(k)=0. + prof_mask1D(k)=0. + prof_buff(num_var,k,prof_num)=0. + prof_mask_buff(num_var,k,prof_num)=0. + ENDDO + +C Read tiled files + CALL active_read_profile(num_file, + & ProfDepthNo(num_file,bi,bj),prof_traj1D,num_var, + & prof_num,.false.,optimcycle,bi,bj,myThid, + & profiles_dummy(num_file,num_var,bi,bj)) + +C Save model equi and masks in buffer +C Combine all threads + irec = prof_ind_glob(num_file,prof_num,bi,bj) + + DO k=1,ProfDepthNo(num_file,bi,bj) + prof_buff(num_var,k,irec) = prof_buff(num_var,k,irec) + & +prof_traj1D(k) + prof_mask_buff(num_var,k,irec) = + & prof_mask_buff(num_var,k,irec) + & +prof_mask1D_cur(k,bi,bj) + ENDDO + + ENDIF !if (prof_num.LE.ProfNo(num_file,bi,bj)) then + ENDDO !do prof_num=.. + ENDIF + ENDDO !do num_var... + + ENDDO !bj + ENDDO !bi + +C Combine all processes + DO num_var=1,NVARMAX + DO prof_num=1,NOBSGLOB + DO k=1,NLEVELMAX + + tmpgs = prof_buff(num_var,k,prof_num) + _GLOBAL_SUM_RL(tmpgs, myThid) + prof_modval_glo(num_var,k,prof_num) = tmpgs + tmpgs = prof_mask_buff(num_var,k,prof_num) + _GLOBAL_SUM_RL(tmpgs, myThid) + prof_mask_glo(num_var,k,prof_num) = tmpgs + + ENDDO + ENDDO !do prof_num=.. + ENDDO !do num_var=.. + + IF ( myProcId .EQ. 0 ) THEN + +C Get dimensions of input file + profFile=' ' + IL = ILNBLNK( profilesfiles(num_file) ) + IF (IL.NE.0) THEN + WRITE(profFile,'(1a)') + & profilesfiles(num_file)(1:IL) + ENDIF + + IL = ILNBLNK( profFile ) + IF (IL.NE.0) THEN + WRITE(fnamedata,'(2a)') profFile(1:IL),'.nc' + err = NF_OPEN(fnamedata, 0, fid1) + err = NF_INQ_DIMID(fid1,'iPROF', dimid ) + err = NF_INQ_DIMLEN(fid1, dimid, length ) + err = NF_INQ_DIMID(fid1,'iDEPTH', dimid ) + IF (err.NE.NF_NOERR) THEN + err = NF_INQ_DIMID(fid1,'Z', dimid ) + ENDIF + err = NF_INQ_DIMLEN(fid1, dimid, Zlength ) + +C Create new netcdf global file for model-equivalent + JL = ILNBLNK( profilesDir ) + WRITE(fnameequinc,'(3a)') + & profilesDir(1:JL),profFile(1:IL),'.equi.nc' + + inquire( file=fnameequinc, exist=exst ) + IF (.NOT.exst) THEN + + err = NF_CREATE(fnameequinc,NF_CLOBBER,fid2) + err = NF_DEF_DIM(fid2,'iDEPTH',Zlength,dimid1) + err = NF_DEF_DIM(fid2,'iPROF',length,dimid2) + vecid(1)=dimid1 + vecid(2)=dimid2 + +C Define variables and attributes + DO num_var=1,NVARMAX + + err = NF_INQ_VARID(fid1,prof_names(num_file,num_var),varid0) + + IF (err.EQ.NF_NOERR) THEN + + err = NF_DEF_VAR(fid2,prof_namesequi(num_file,num_var), + & NF_DOUBLE,2,vecid,varid1(2+(num_var-1)*2)) + err = NF_PUT_ATT_DOUBLE(fid2,varid1(2+(num_var-1)*2), + & '_FillValue',NF_DOUBLE,1, 0. _d 0) + err = NF_DEF_VAR(fid2,prof_namesmask(num_file,num_var), + & NF_DOUBLE, 2,vecid,varid1(3+(num_var-1)*2)) + err = NF_PUT_ATT_DOUBLE(fid2,varid1(3+(num_var-1)*2), + & '_FillValue',NF_DOUBLE,1, 0. _d 0) + + ENDIF + ENDDO + + err = NF_ENDDEF(fid2) + + ELSE + err = NF_OPEN(fnameequinc, NF_WRITE, fid2) + ENDIF + +C Write profiles + DO num_var=1,NVARMAX + IF (vec_quantities(num_file,num_var,1,1).EQV..TRUE.) THEN + DO prof_num=1,NOBSGLOB + IF (prof_num.LE.length) THEN + + DO k=1,Zlength + prof_traj1D(k)=prof_modval_glo(num_var,k,prof_num) + prof_mask1D(k)=prof_mask_glo(num_var,k,prof_num) + ENDDO + + vec_start(1)=1 + vec_start(2)=prof_num + vec_count(1)=Zlength + vec_count(2)=1 + + err = NF_INQ_VARID(fid2,prof_namesequi(num_file,num_var), + & varid2(2+(num_var-1)*2) ) + err = NF_PUT_VARA_DOUBLE(fid2, varid2(2+(num_var-1)*2), + & vec_start, vec_count, prof_traj1D) + err = NF_INQ_VARID(fid2,prof_namesmask(num_file, + & num_var), varid2(3+(num_var-1)*2) ) + err = NF_PUT_VARA_DOUBLE(fid2, varid2(3+(num_var-1)*2), + & vec_start, vec_count, prof_mask1D) + + ENDIF !if (vec_quantities(num_file,num_var,1,1).EQV..TRUE.) + ENDDO !do prof_num=.. + ENDIF !if (prof_num.LE.length) + ENDDO !do num_var=.. + + err = NF_CLOSE(fid2) + ENDIF + ENDIF + ENDDO + + _END_MASTER( myThid ) + +C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| + + RETURN + END diff --git a/pkg/profiles/profiles_readparms.F b/pkg/profiles/profiles_readparms.F index 57dc9d4406..20663690e6 100644 --- a/pkg/profiles/profiles_readparms.F +++ b/pkg/profiles/profiles_readparms.F @@ -57,7 +57,8 @@ subroutine profiles_readparms( myThid ) #endif & prof_itracer, & profilesDoNcOutput, - & profilesDoGenGrid + & profilesDoGenGrid, + & prof_make_nc IF ( .NOT.usePROFILES ) THEN C- pkg PROFILES is not used @@ -98,6 +99,7 @@ subroutine profiles_readparms( myThid ) enddo profilesDoNcOutput=.false. + prof_make_nc=.false. IF ( (.NOT.usingSphericalPolarGrid .OR. rotateGrid) ) THEN profilesDoGenGrid=.true. diff --git a/verification/global_oce_biogeo_bling/input_ad/data.profiles b/verification/global_oce_biogeo_bling/input_ad/data.profiles index c1950bbb8a..85680e348f 100644 --- a/verification/global_oce_biogeo_bling/input_ad/data.profiles +++ b/verification/global_oce_biogeo_bling/input_ad/data.profiles @@ -1,11 +1,90 @@ -# ****************** -# PROFILES cost f',tion -# ****************** +# ********************** +# PROFILES cost function +# ********************** +# +# NetCDF-file 'sample_prof.nc' only contains data for variables T, S, PH, +# but if available bling allows many more variables, which are +# left as example namelist entries without effect, because they are +# not in 'sample_prof.nc'. +# +# >> ncdump -h sample_prof.nc +# netcdf sample_prof { +# dimensions: +# iPROF = 63 ; +# iDEPTH = 25 ; +# variables: +# double prof_depth(iDEPTH) ; +# double prof_YYYYMMDD(iPROF) ; +# double prof_HHMMSS(iPROF) ; +# double prof_lon(iPROF) ; +# double prof_lat(iPROF) ; +# double prof_T(iPROF, iDEPTH) ; +# double prof_Tweight(iPROF, iDEPTH) ; +# double prof_S(iPROF, iDEPTH) ; +# double prof_Sweight(iPROF, iDEPTH) ; +# double prof_PH(iPROF, iDEPTH) ; +# double prof_PHweight(iPROF, iDEPTH) ; +# } + &PROFILES_NML # profilesDir = 'PROF', profilesfiles(1) = 'sample_prof', -# has T, S, and pH constraints. + prof_make_nc = .true., +# has T, S, and pH constraints. +# The default mult_profiles = 1, +# here we turn off the cost contribution of T and S. mult_profiles(1,1) = 0.0, mult_profiles(1,2) = 0.0, - mult_profiles(1,14) = 1.0, + mult_profiles(1,14) = 1.0, +# + prof_names(:,1)='prof_T', + prof_names(:,2)='prof_S', + prof_names(:,3)='prof_U', + prof_names(:,4)='prof_V', + prof_names(:,5)='prof_ptr', + prof_names(:,6)='prof_ssh', + prof_names(:,7)='prof_DIC', + prof_names(:,8)='prof_ALK', + prof_names(:,9)='prof_O2', + prof_names(:,10)='prof_NO3', + prof_names(:,11)='prof_PO4', + prof_names(:,12)='prof_FE', + prof_names(:,13)='prof_PCO', + prof_names(:,14)='prof_PH', + prof_names(:,15)='prof_CHL', + prof_names(:,16)='prof_POC', +# + prof_itracer(:,1)=1, + prof_itracer(:,2)=1, + prof_itracer(:,3)=1, + prof_itracer(:,4)=1, + prof_itracer(:,5)=1, + prof_itracer(:,6)=1, + prof_itracer(:,7)=1, + prof_itracer(:,8)=2, + prof_itracer(:,9)=3, + prof_itracer(:,10)=4, + prof_itracer(:,11)=5, + prof_itracer(:,12)=6, + prof_itracer(:,13)=1, + prof_itracer(:,14)=1, + prof_itracer(:,15)=1, + prof_itracer(:,16)=1, +# + prof_namesmod(:,1)='theta', + prof_namesmod(:,2)='salt', + prof_namesmod(:,3)='uVel', + prof_namesmod(:,4)='vVel', + prof_namesmod(:,5)='pTracer', + prof_namesmod(:,6)='etaN', + prof_namesmod(:,7)='pTracer', + prof_namesmod(:,8)='pTracer', + prof_namesmod(:,9)='pTracer', + prof_namesmod(:,10)='pTracer', + prof_namesmod(:,11)='pTracer', + prof_namesmod(:,12)='pTracer', + prof_namesmod(:,13)='PCO', + prof_namesmod(:,14)='PH', + prof_namesmod(:,15)='CHL', + prof_namesmod(:,16)='POC', & diff --git a/verification/global_oce_biogeo_bling/input_ad/sample_prof.nc b/verification/global_oce_biogeo_bling/input_ad/sample_prof.nc index 9f2a156de14a956ad40790f0fbb301e304707d8b..bf825684da6c0231b058e8656330c16f81ade661 100644 GIT binary patch delta 431 zcmZ2-k#oxv76WG&H%0~s-~v+2K+Klu;u;X*0Tz@5lB}5lLH=%FE`$9<1L=BhAe*KU0fiNAcJ6rfkfDV+#d`KOg2C^H(0%ghp%sNFh~xES{4(a90yo!PJSMC zbv7VF*>n&J6HBlw1gYat0m^ZK4NOTbD9M=I$0#AjZ~`bM1C(F`ON0PfKxa;#z$hkV zXaSUZ0_5^Qq{>q>(=$NkgQdkl(l!X4V6Q-=*g#UbA(KBaiBF!)C=6CPuLr1+9c)kl zI6T3IfK{G9GWia(G)N_g%gFF&vkBir_Q|E($2YS`6(nt!5nwDx0x~TOx96BMSr`HU D+}}R7{AR=;o4_EQnApiHsE{lh?HAgl7UG2v5MVmD_!mo3>Fz zFK3&!(Wx5nDgrfbtprSm=KelPDgzd|zkZrsl~pL4$F zobS2!d*AnR#^(D~S3umlv~*FR5eV=U{5@TmwP|BIaVY?Pg=y=vv>8Y&tci3zh^Fu`)ub;iEP>M4tQT311wml)!yH;5$e0RhJ8#mpKW=*)(JY#|;}NH+a5@ z=3hU#k;8|~h4Ep<nf}`~V;aOKr~iT=v7;UgiTz+RTnk6HxWF@V>M~th;E59_0WZyi0oXEk zX!j>}d`lPc9dE(_zWz1xZwM6{UI4vw&VwKKG5^yvul{@TZ(Nq2pAUSOhV=8@pUqzb zdc)?xHG2UYZw~F2S)%4Y$g%mA2-^>!Ux?UuCz3g&y?SmCu=CyUT$Z@)^J{M%VEnUv zeb*UA!%6@o+R6{m8wQxnOSzYRS+8cE(ZxO>-a0i>iQV`kNdt zvNJey+)II){-l+5)&y6bWqdQ~?Z+rV!{Fh=AFzOLguT-bSYJXNXi*AmdO(HNN7mK- z#O6a9?4Z)&j%Vc6t5<`e{p9T}=K#%LQ>Es#pcotD*WSE&3$XQ`(z?A=NasHCYdc6C zYTH~{SqXk^@5RK#05)%@g4*v;{0kpZVI8%!z{X!Sr>~}#KR;xWeER(5S-`@OrWz@Y zAUR-+6S%ap{~_}HQWcC09c5ZRKS_CG!S1azyQoev>F%) zl68{>vFCeZ8gbw*>DFJ&s9U#5h_)pRU|vcz;V}#0rCdbo00ZdYhq;KonP$Wr=?28^ zbqoZld!2#h7o@8Ph`7>fW`fkKGZ5Ah_PuXL{dc8x-Cq!Y?UICiZw~1_r%3M?EXZ5t ztW&i~*vJh4p5Tm}yGz|t8?=b3%G8Q7mXk{2U8g)g(0rpyigBB$kz@yZW^B!#l zkEWy$Jn1a55&R*XFFdi|Kjo?!28Uz3!P|}P(FKWHC6B&zhf@#Pzbg=XdYCn%8(jliV-367}JEZ z`kI)Y0^n6W)rkdVxXr_UD%=|W1s+1+FnB;l8;gt5e9euA*gjb-q681eWln7!Wm9WWsO&sDt2cug7GEa<~#I$q37;ExZWL6HsA+nFvwA4YuwABQfD z`#4L7+N1V+>amSsf4raEil!z~^~lE+Ja5ViY24kmudUkU(}Qnvb%*nvJ~j9Re0q55 zBsO#^KRvuAhV0Bf2mT!1<_Y|y92UgBNSK)oV_Z@g9C?>>D}9{6Q>dP-lex*uM0f*g z)h~yc2_D)z)209Sqrtu%qxo*x<|2H`8P8q#??!O_nx61-rZiNQF+M2-?n5GPw#!?~ qeUDv>!btdU0aIL(*28}bOnLAb;q=+_xTqS@WD88xoV_n5YW@LOa7Tpz From 9edc0e3a857b43485e78a68afe1fead7138321b8 Mon Sep 17 00:00:00 2001 From: averdy <44445771+averdy@users.noreply.github.com> Date: Fri, 8 Nov 2024 07:50:10 -0800 Subject: [PATCH 2/2] Improve size-dependent phytoplankton growth code in BLING (#840) * Merge options SIZE_DEP_LIM and SIZE_NUT_LIM; make size-dependent limitation coefficients run-time parameters * removing option SIZ_NUT_LIM * Edit default options * Syntac in if defined statement Co-authored-by: Martin Losch <30285667+mjlosch@users.noreply.github.com> * namelist parameters defined independent of the CPP-flag Co-authored-by: Martin Losch <30285667+mjlosch@users.noreply.github.com> * namelist parameters defined independent of the CPP-flag Co-authored-by: Martin Losch <30285667+mjlosch@users.noreply.github.com> * namelist parameters defined independent of the CPP-flag Co-authored-by: Martin Losch <30285667+mjlosch@users.noreply.github.com> * namelist parameters defined independent of the CPP-flag Co-authored-by: Martin Losch <30285667+mjlosch@users.noreply.github.com> * clean up unused options * Move MULT_NUY_LIM option * Tidy up bling options * remove trailing blank * keep BLING_OPTIONS.h This is safer since the size of some common blocks in BLING_VARS.h depend on which option is defined in BLING_OPTIONS.h * reduce differences vs pkg/bling version * update ref. output (USE_QSW now #undef) * minor update (surfQFile -> surfQnetFile) * document pkg/bling improvement --------- Co-authored-by: Martin Losch <30285667+mjlosch@users.noreply.github.com> Co-authored-by: Jean-Michel Campin Co-authored-by: Jean-Michel Campin --- doc/tag-index | 7 + pkg/bling/BLING_OPTIONS.h | 17 +- pkg/bling/BLING_VARS.h | 12 + pkg/bling/CHANGES_TO_BLING.txt | 230 ------- pkg/bling/bling_bio.F | 6 +- pkg/bling/bling_bio_nitrogen.F | 67 +- pkg/bling/bling_main.F | 2 +- pkg/bling/bling_readparms.F | 12 + pkg/bling/bling_write_pickup.F | 5 - pkg/exf/exf_monitor.F | 4 +- .../code_ad/BLING_OPTIONS.h | 15 +- .../code_tap/BLING_OPTIONS.h | 15 +- .../global_oce_biogeo_bling/input/data | 6 +- .../global_oce_biogeo_bling/input_ad/data | 2 +- .../results/output.txt | 640 ++++++++++-------- 15 files changed, 403 insertions(+), 637 deletions(-) delete mode 100644 pkg/bling/CHANGES_TO_BLING.txt diff --git a/doc/tag-index b/doc/tag-index index b00b90df97..373cd16e26 100644 --- a/doc/tag-index +++ b/doc/tag-index @@ -1,6 +1,13 @@ Notes on tags used in MITgcmUV ============================== +o pkg/bling: + - size-dependent phytoplankton growth code cleaned up and related parameters + can now be specified in data.bling; + - clean up OPTIONS in pkg/bling code ( SIZE_NUT_LIM merged with SIZE_DEP_LIM, + MULT_NUT_LIM merged with MIN_NUT_LIM ) and switch USE_QSW to #undef ; this + fixes FWD exp. global_oce_biogeo_bling which a) use default BLING_OPTIONS.h + and b) since no short-wave is provided, light was zero with USE_QSW defined. o pkg/profiles: - add option to write model-equivalent profiles in a netcdf file, thus removing the need for post-processing tiled output files. diff --git a/pkg/bling/BLING_OPTIONS.h b/pkg/bling/BLING_OPTIONS.h index 0fd83ab254..203a0b6957 100644 --- a/pkg/bling/BLING_OPTIONS.h +++ b/pkg/bling/BLING_OPTIONS.h @@ -30,8 +30,8 @@ C nutrient limitations to calculate maximum phyto growth rate #define MIN_NUT_LIM C Allow different phytoplankton groups to have different growth rates and -C nutrient/light limitations. Parameters implemented have yet to be tuned. -#undef SIZE_NUT_LIM +C nutrient/light limitations. Parameters implemented have yet to be tuned +#undef SIZE_DEP_LIM C Assume that phytoplankton in the mixed layer experience C the average light over the mixed layer (as in original BLING model) @@ -46,7 +46,8 @@ C MLD is calculated using the second derivative of rho(z) C Determine PAR from shortwave radiation Qsw; C otherwise determined from date and latitude -#define USE_QSW +C (Do not define if not using pkg/exf) +#undef USE_QSW C Light absorption scheme from Manizza et al. (2005), C with self shading from phytoplankton @@ -75,7 +76,7 @@ C For adjoint safe, do not call bling_dvm C ABIOTIC OPTIONS C Compile "Solvesaphe" package (Munhoven 2013) for pH/pCO2 C can still select Follows et al (2006) solver in data.bling, -C but will use solvesaphe dissociation coefficient options. +C but will use solvesaphe dissociation coefficient options #undef CARBONCHEM_SOLVESAPHE C In S/R CARBON_CHEM convert ak1 and ak2 to the total pH scale @@ -87,13 +88,5 @@ C coeffs are used). C When calculating the fraction of sinking organic matter, use model biomass diagnostics. #define NEW_FRAC_EXP -C Assume different nutrient limitations for small and large phytoplankton. -#define SIZE_DEP_LIM - -C-- Undocumented Options: -#undef MULT_NUT_LIM -#undef USE_ATMOSCO2 -#undef USE_EXFCO2 - #endif /* ALLOW_BLING */ #endif /* BLING_OPTIONS_H */ diff --git a/pkg/bling/BLING_VARS.h b/pkg/bling/BLING_VARS.h index 831b4f2c5d..b9f38d8ff2 100644 --- a/pkg/bling/BLING_VARS.h +++ b/pkg/bling/BLING_VARS.h @@ -277,6 +277,12 @@ C satellite-equivalent chlorophyll diagnostic (and cost) & gamma_DON, & k_Fe_diaz, & k_NO3, + & k_NO3_sm, + & k_NO3_lg, + & k_PO4_sm, + & k_PO4_lg, + & k_Fe_sm, + & k_Fe_lg, & k_PtoN, & k_FetoN, & PtoN_min, @@ -379,6 +385,12 @@ C satellite-equivalent chlorophyll diagnostic (and cost) _RL gamma_DON _RL k_Fe_diaz _RL k_NO3 + _RL k_NO3_sm + _RL k_NO3_lg + _RL k_PO4_sm + _RL k_PO4_lg + _RL k_Fe_sm + _RL k_Fe_lg _RL k_PtoN _RL k_FetoN _RL PtoN_min diff --git a/pkg/bling/CHANGES_TO_BLING.txt b/pkg/bling/CHANGES_TO_BLING.txt deleted file mode 100644 index 976bf58d5b..0000000000 --- a/pkg/bling/CHANGES_TO_BLING.txt +++ /dev/null @@ -1,230 +0,0 @@ -changes: - -code_merged: - -1) cost_gencost_customize - -*** added log chl and poc cost - -2) cost_profiles - -*** added log poc cost - -c from profiles_readparms.F, num_var=15 is chlorophyll, 16 is POC -c for those variables, use log cost function - if (num_var.eq.15 || num_var.eq.16) then - -*** is || correct syntax? - -pkg/bling: - -1) bling_carbon_chem - -*** added MM 2 changes: -< CMM( -< IF ( cag .LT. (0.1 _d 0*ta) ) THEN -< print *,'CMMcag1', cag,i,j,k,xC(i,j,1,1),yC(i,j,1,1) -< C myXGlobalLo-1+(bi-1)*sNx+i, myYGlobalLo-1+(bj-1)*sNy+j -< print *,'CMMcag2',ta,bohg,(kwlocal/hguess),hguess,hpo4g, -< & 2.0 _d 0*po4g,h3po4g, siooh3g -< cag = 0.1 _d 0*ta -< ENDIF -< CMM) ---- -> -464,474d448 -< CMM( -< IF ( hnew .GT. (0.00001 _d 0) ) THEN -< cmm print *,'CMMhnew reset:',hnew,i,j,k,xC(i,j,1,1),yC(i,j,1,1) -< hnew = 0.00000001 _d 0 -< ENDIF -< IF ( hnew .LT. (0.0000000001 _d 0) ) THEN -< cmm print *,'CMMhnew reset:',hnew,i,j,k,xC(i,j,1,1),yC(i,j,1,1) -< hnew = 0.00000001 _d 0 -< ENDIF -< CMM) - -*** replaced apressure with AtmosP, which is default=1 and set to apressure in bling_fields_load if using EXF - -*** removed since we're not using apressure -< #ifdef ALLOW_EXF -< # include "EXF_OPTIONS.h" -< #endif -< #ifdef ALLOW_EXF -< # include "EXF_PARAM.h" -< # include "EXF_FIELDS.h" -< #endif - -*** to do: check if this is ok? -< C Ariane adding this - copied from non-pressure-dep case -< C added by Val Bennington Nov 2010 -< C Fugacity Factor needed for non-ideality in ocean -< C ff used for atmospheric correction for water vapor and pressure -< C Weiss (1974) Marine Chemistry -< P1atm = 1.01325 _d 0 ! bars -< Rgas = 83.1451 _d 0 ! bar*cm3/(mol*K) -< RT = Rgas*tk -< delta = (57.7 _d 0 - 0.118 _d 0*tk) -< B1 = -1636.75 _d 0 + 12.0408 _d 0*tk - 0.0327957 _d 0*tk*tk -< B = B1 + 3.16528 _d 0*tk*tk*tk*(0.00001 _d 0) -< fugf(i,j,bi,bj) = exp( (B+2. _d 0*delta) * -< & AtmosP(i,j,bi,bj) * P1atm / RT) - -*** to do: add comment that we're using atmosp in fugf calculation (dic pkg doesn't) - -*** to do: add comment that we're calculating omega_arag - -2) bling_diagnostic_init - -*** added MM diagnostic for mld - -*** added #ifdef USE_SIBLING, #ifndef USE_BLING_v0 for specific diagnostics - -3) bling_init_varia - -*** I did not add init biomass memory (we likely won't use it) - -4) bling_light - -*** added comments *** check that it's ok -C | o instantaneous light is calculated either from -C | - date and latitude, then exponentially attenuated down the -C | water column, or -C | - short-wave radiation read from external forcing file, -C | attenuated down the water column according to bling default, or -C | - short-wave radiation read from external forcing file, -C | attenuated (in a conservative way) down the water column -C | according to SWFRAC routine - -*** added MM new variables - -*** deal with ice here instead of in bling_readparms -c Remove light under ice -c If using Qsw and seaice/thsice, then ice fraction is already -c taken into account - QSW_underice = .FALSE. -#ifdef USE_QSW - IF ( useSEAICE ) QSW_underice = .TRUE. - IF ( useThSIce ) QSW_underice = .TRUE. -#endif - IF ( .NOT. QSW_underice ) THEN - irr_surf(i,j) = irr_surf(i,j)*(1. _d 0 - FIce(i,j,bi,bj)) - ENDIF - -*** added MM changes under #ifdef USE_QSW_Z -*** to do: find a more meaningful flag name? - -*** to do: make max mixing depth a variable in data.bling -(for now changed from 200 to 100) - -5) bling_min_val - -*** added a record of corrections to tracer fields - -6) bling_mixed_layer - -*** added MM new code, which is now default option -for threshold criterion need #define BLING_USE_THRESHOLD_MLD - -7) BLING_OPTIONS - -*** added: - -c Calculate MLD using a threshold criterion. If undefined, -c MLD is calculated using the second derivative of rho(z) -#undef BLING_USE_THRESHOLD_MLD - -c use penetrating fraction instead of exponential attenuation -#define USE_QSW_Z - -*** removed exf options that are always used if available - -c Use local atmospheric pressure from EXF package for fugacity factor -#define USE_EXF_ATMPRES - -c Read atmospheric pCO2 values from EXF package -#define USE_EXFCO2 - -*** added options for new chemistry - -8) bling_bio_nitrogen - -*** combines bling_production and bling_remineralization - -*** I did not add the delayed mortality term - -9) BLING_VARS - -*** added variable MLmix_max (max depth over which light and biomass can be mixed; -default = 200m -> to do: change to 100 in data.bling - -*** I did not add init biomass memory (we likely won't use it) - -10) bling_main - -*** there is nutrients in runoff - -*** different order of tracers is define USE_BLING_v0 - -11) bling_fields_load - -*** atmosp is apressure/Pa2atm instead of apressure*0.00001 (more correct) - -12) cost_gencost_customize - -add log cost for chl and poc - -13) bling_fields_load - -*** this is where wind, fice, atmosp, atm_pco2 are read either from file or exf - -new chem: - -0) bling_solvesaphe - -*** added file from https://github.com/MITgcm/MITgcm/blob/740f6a7c0161d71852eaa84d5cd6c240788d0ffb/pkg/dic/dic_solvesaphe.F - -*** I'd like to keep the original file dic_solvesaphe but need to change -#include DIC_OPTIONS to #include BLING_OPTIONS -and DIC_VARS to BLING_VARS - -1) bling_carbonate_sys: - -*** added option CARBONCHEM_SOLVESAPHE - -Jonathan calls it surftemp, surfsalt, but it’s for k=1:Nr - -2) bling_carbonate_init: - -*** added option CARBONCHEM_SOLVESAPHE - -cav changing surftheta to thetatmp - -*** to do: do we need -C$TAF STORE pH(i,j,k,bi,bj) = dic_surf -C$TAF STORE surfalk(i,j), surfphos(i,j), surfsi(i,j) = dic_surf - -3) bling_airseaflux: - -*** added option CARBONCHEM_SOLVESAPHE - -4) bling_readparms: - -*** added option CARBONCHEM_SOLVESAPHE - -5) BLING_VARS: - -*** added option CARBONCHEM_SOLVESAPHE - -6) BLING_OPTIONS: - -*** added option CARBONCHEM_SOLVESAPHE - -7) bling_ad_diff_list - -*** added bling_solvesaphe.f - -8) bling_carbon_chem: - -*** added option CARBONCHEM_TOTALPHSCALE - diff --git a/pkg/bling/bling_bio.F b/pkg/bling/bling_bio.F index c8e2ddb193..81155ab2b3 100644 --- a/pkg/bling/bling_bio.F +++ b/pkg/bling/bling_bio.F @@ -433,12 +433,12 @@ SUBROUTINE BLING_BIO( c the default Liebig limitation (the minimum of Michaelis-Menton c PO4-limitation, or iron-limitation) by the product (safer for adjoint) -#ifdef MULT_NUT_LIM +#ifdef MIN_NUT_LIM Pc_m = Pc_0*expkT(i,j,k) - & *PO4_lim(i,j,k)*Fe_lim(i,j,k)*maskC(i,j,k,bi,bj) + & *min(PO4_lim(i,j,k), Fe_lim(i,j,k))*maskC(i,j,k,bi,bj) #else Pc_m = Pc_0*expkT(i,j,k) - & *min(PO4_lim(i,j,k), Fe_lim(i,j,k))*maskC(i,j,k,bi,bj) + & *PO4_lim(i,j,k)*Fe_lim(i,j,k)*maskC(i,j,k,bi,bj) #endif c --------------------------------------------------------------------- diff --git a/pkg/bling/bling_bio_nitrogen.F b/pkg/bling/bling_bio_nitrogen.F index 57b7e7c85c..268133b532 100644 --- a/pkg/bling/bling_bio_nitrogen.F +++ b/pkg/bling/bling_bio_nitrogen.F @@ -313,12 +313,6 @@ SUBROUTINE BLING_BIO_NITROGEN( _RL phy_adj(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) #endif #ifdef SIZE_DEP_LIM - _RL k_NO3_sm - _RL k_NO3_lg - _RL k_PO4_sm - _RL k_PO4_lg - _RL k_Fe_sm - _RL k_Fe_lg _RL light_lim_sm(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) _RL light_lim_lg(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) _RL NO3_lim_sm(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) @@ -603,29 +597,6 @@ SUBROUTINE BLING_BIO_NITROGEN( ENDDO ENDDO -C some constants (should be runtime parameters) -CAV Darwin (uM) -C kPO4: sm/lg 2.4e-2 4.5e-2 -C kNO3: 0.4, 0.73 -C kSi: 0, 2 -C kFe: 3e-5, 5.6e-5 - -CAV Topaz (mol/kg) -C kPO4: 2e-7, 6e-7 -C kNO3: 2e-6, 6e-6 -C kFe: 3e-9, 9e-9 - -CAV BLING (mol/kg) -C kPO4: 1e-8 -C kNO3: 2e-6 -C kFe: 1.6e-10 - k_NO3_sm = 2.0 _d -6 / permil - k_NO3_lg = 6.0 _d -6 / permil - k_PO4_sm = 1.0 _d -8 / permil - k_PO4_lg = 3.0 _d -8 / permil - k_Fe_sm = 1.6 _d -10 / permil - k_Fe_lg = 4.8 _d -10 / permil - C Nutrient uptake and partitioning between organic pools DO k=1,Nr @@ -662,6 +633,7 @@ SUBROUTINE BLING_BIO_NITROGEN( Si_lim(i,j,k) = PTR_Si(i,j,k)/(PTR_Si(i,j,k)+k_Si) #endif +#ifdef SIZE_DEP_LIM NO3_lim_sm(i,j,k) = PTR_NO3(i,j,k)/(PTR_NO3(i,j,k)+k_NO3_sm) PO4_lim_sm(i,j,k) = PTR_PO4(i,j,k)/(PTR_PO4(i,j,k)+k_PO4_sm) @@ -673,6 +645,7 @@ SUBROUTINE BLING_BIO_NITROGEN( PO4_lim_lg(i,j,k) = PTR_PO4(i,j,k)/(PTR_PO4(i,j,k)+k_PO4_lg) Fe_lim_lg(i,j,k) = PTR_FE(i,j,k)/(PTR_FE(i,j,k)+k_Fe_lg) +#endif C NB The temperature function of Eppley (1972) is used to represent the C effects of temperature on uptake, synthesis and ecosystem function. C The reference value is 0 C. Note that this differs slightly from the @@ -827,25 +800,7 @@ SUBROUTINE BLING_BIO_NITROGEN( N_uptake(i,j,k) = mu(i,j,k) * (Phy_sm_local(i,j,k) & + Phy_lg_local(i,j,k)) -CAV( #ifdef SIZE_DEP_LIM - -CAV Darwin (uM) -C kPO4: sm/lg 2.4e-2 4.5e-2 -C kNO3: 0.4, 0.73 -C kSi: 0, 2 -C kFe: 3e-5, 5.6e-5 - -CAV Topaz (mol/kg) -C kPO4: 2e-7, 6e-7 -C kNO3: 2e-6, 6e-6 -C kFe: 3e-9, 9e-9 - -CAV BLING (mol/kg) -C kPO4: 1e-8 -C kNO3: 2e-6 -C kFe: 1.6e-10 - Pc_m_sm = Pc_0_2d(i,j,bi,bj) * expkT(i,j,k) & * min(NO3_lim_sm(i,j,k), PO4_lim_sm(i,j,k), & Fe_lim_sm(i,j,k)) * maskC(i,j,k,bi,bj) @@ -863,9 +818,7 @@ SUBROUTINE BLING_BIO_NITROGEN( N_uptake(i,j,k) = mu_sm(i,j,k) * Phy_sm_local(i,j,k) & + mu_lg(i,j,k) * Phy_lg_local(i,j,k) - #endif /* SIZE_DEP_LIM */ -CAV) N_fix(i,j,k) = mu_diaz(i,j,k) * Phy_diaz_local(i,j,k) @@ -888,15 +841,13 @@ SUBROUTINE BLING_BIO_NITROGEN( C observational synthesis of Dunne (2009). This is consistent C with the findings of Jin et al. (GBC,2006). -CAV( -#ifdef SIZE_NUT_LIM +#ifdef SIZE_DEP_LIM CaCO3_uptake(i,j,k) = mu_sm(i,j,k) * Phy_sm_local(i,j,k) & * phi_sm_2d(i,j,bi,bj) * CatoN #else CaCO3_uptake(i,j,k) = mu(i,j,k) * Phy_sm_local(i,j,k) & * phi_sm_2d(i,j,bi,bj) * CatoN #endif -CAV) ENDIF ENDDO @@ -980,7 +931,6 @@ SUBROUTINE BLING_BIO_NITROGEN( DO j=jmin,jmax DO i=imin,imax IF ( maskC(i,j,k,bi,bj).EQ.oneRS ) THEN -CAV( # ifdef SIZE_DEP_LIM Phy_lg_local(i,j,k) = Phy_lg_local(i,j,k) + @@ -995,7 +945,6 @@ SUBROUTINE BLING_BIO_NITROGEN( & * PTRACERS_dTLev(k) # endif -CAV) # ifdef USE_SIBLING C For now: assuming that all large phyto are diatoms @@ -1093,9 +1042,9 @@ SUBROUTINE BLING_BIO_NITROGEN( C sinking fraction: particulate organic matter #ifdef NEW_FRAC_EXP -CAV fraction that does into POM is -CAV (assume diaz has same export frac as small phyto) -CAV e^kT * [phi_lg * B_lg/Btot + phi_sm * B_sm/Btot + phi_sm * Bdiaz/Bto] +C Fraction that does into POM is +C (assume diaz has same export frac as small phyto) +C e^kT * [phi_lg * B_lg/Btot + phi_sm * B_sm/Btot + phi_sm * Bdiaz/Bto] frac_exp = (phi_sm_2d(i,j,bi,bj) * (phyto_sm(i,j,k,bi,bj) + & phyto_diaz(i,j,k,bi,bj)) + phi_lg_2d(i,j,bi,bj) * @@ -1106,8 +1055,8 @@ SUBROUTINE BLING_BIO_NITROGEN( #else -CAV this is from blingv1, where B_sm and B_lg are diagnosed from -CAV the value of mu... +C This is from blingv1, where B_sm and B_lg are diagnosed from +C the value of mu... frac_exp = (phi_sm_2d(i,j,bi,bj) + phi_lg_2d(i,j,bi,bj) * & (mu(i,j,k)/(epsln + lambda_0*expkT(i,j,k)))**2)/ & (1. + (mu(i,j,k)/ diff --git a/pkg/bling/bling_main.F b/pkg/bling/bling_main.F index bb62bde97d..b104d6ebc2 100644 --- a/pkg/bling/bling_main.F +++ b/pkg/bling/bling_main.F @@ -216,7 +216,7 @@ SUBROUTINE BLING_MAIN( PTR_DIC, PTR_ALK, PTR_O2, C This accounts for tracer concentration in river runoff C no input south of 60S (it is ice melt) -#ifdef ALLOW_EXF +#if (defined ALLOW_EXF && defined ALLOW_RUNOFF) DO j=jmin,jmax IF (YC(i,j,bi,bj).gt.-60.0) THEN DO i=imin,imax diff --git a/pkg/bling/bling_readparms.F b/pkg/bling/bling_readparms.F index c782c29e28..b2dace5db0 100644 --- a/pkg/bling/bling_readparms.F +++ b/pkg/bling/bling_readparms.F @@ -107,6 +107,12 @@ SUBROUTINE BLING_READPARMS( myThid ) & k_NO3, & k_PtoN, & k_FetoN, + & k_NO3_sm, + & k_NO3_lg, + & k_PO4_sm, + & k_PO4_lg, + & k_Fe_sm, + & k_Fe_lg, & PtoN_min, & PtoN_max, & FetoN_min, @@ -341,6 +347,12 @@ SUBROUTINE BLING_READPARMS( myThid ) k_Fe_diaz = 7. _d -10 / permil k_NO3 = 2. _d -6 / permil k_PO4 = 1. _d -8 / permil + k_NO3_sm = 2.0 _d -6 / permil + k_NO3_lg = 6.0 _d -6 / permil + k_PO4_sm = 1.0 _d -8 / permil + k_PO4_lg = 3.0 _d -8 / permil + k_Fe_sm = 1.6 _d -10 / permil + k_Fe_lg = 4.8 _d -10 / permil k_PtoN = 1.5 _d -6 / permil k_FetoN = 8. _d -10 / permil remin_min = 0.15 _d 0 diff --git a/pkg/bling/bling_write_pickup.F b/pkg/bling/bling_write_pickup.F index 6a1c533f4f..4173828588 100644 --- a/pkg/bling/bling_write_pickup.F +++ b/pkg/bling/bling_write_pickup.F @@ -35,11 +35,6 @@ subroutine BLING_WRITE_PICKUP( permPickup, C == Local variables == CHARACTER*(MAX_LEN_FNAM) fn INTEGER prec -#ifndef USE_ATMOSCO2 -c INTEGER ioUnit -c _RL tmpFld(2) -c _RS dummyRS(1) -#endif LOGICAL glf _RL timList(1) INTEGER j diff --git a/pkg/exf/exf_monitor.F b/pkg/exf/exf_monitor.F index 44f2f4f9d9..acb037fdbe 100644 --- a/pkg/exf/exf_monitor.F +++ b/pkg/exf/exf_monitor.F @@ -210,9 +210,9 @@ SUBROUTINE EXF_MONITOR( & maskInC, maskInC, rA , drF, dummyRL, myThid ) ENDIF #endif -#ifdef USE_EXFCO2 +#ifdef ALLOW_BLING IF ( apco2file .NE. ' ' ) THEN - CALL MON_WRITESTATS_RL( 1, apco2, '_apco2', + CALL MON_WRITESTATS_RL( 1, apCO2, '_apco2', & maskInC, maskInC, rA , drF, dummyRL, myThid ) ENDIF #endif diff --git a/verification/global_oce_biogeo_bling/code_ad/BLING_OPTIONS.h b/verification/global_oce_biogeo_bling/code_ad/BLING_OPTIONS.h index 42e2f42740..b626c95e75 100644 --- a/verification/global_oce_biogeo_bling/code_ad/BLING_OPTIONS.h +++ b/verification/global_oce_biogeo_bling/code_ad/BLING_OPTIONS.h @@ -30,8 +30,8 @@ C nutrient limitations to calculate maximum phyto growth rate #define MIN_NUT_LIM C Allow different phytoplankton groups to have different growth rates and -C nutrient/light limitations. Parameters implemented have yet to be tuned. -#undef SIZE_NUT_LIM +C nutrient/light limitations. Parameters implemented have yet to be tuned +#define SIZE_DEP_LIM C Assume that phytoplankton in the mixed layer experience C the average light over the mixed layer (as in original BLING model) @@ -46,6 +46,7 @@ C MLD is calculated using the second derivative of rho(z) C Determine PAR from shortwave radiation Qsw; C otherwise determined from date and latitude +C (Do not define if not using pkg/exf) #undef USE_QSW C Light absorption scheme from Manizza et al. (2005), @@ -75,7 +76,7 @@ C For adjoint safe, do not call bling_dvm C ABIOTIC OPTIONS C Compile "Solvesaphe" package (Munhoven 2013) for pH/pCO2 C can still select Follows et al (2006) solver in data.bling, -C but will use solvesaphe dissociation coefficient options. +C but will use solvesaphe dissociation coefficient options #undef CARBONCHEM_SOLVESAPHE C In S/R CARBON_CHEM convert ak1 and ak2 to the total pH scale @@ -87,13 +88,5 @@ C coeffs are used). C When calculating the fraction of sinking organic matter, use model biomass diagnostics. #define NEW_FRAC_EXP -C Assume different nutrient limitations for small and large phytoplankton. -#define SIZE_DEP_LIM - -C-- Undocumented Options: -#undef MULT_NUT_LIM -#undef USE_ATMOSCO2 -#undef USE_EXFCO2 - #endif /* ALLOW_BLING */ #endif /* BLING_OPTIONS_H */ diff --git a/verification/global_oce_biogeo_bling/code_tap/BLING_OPTIONS.h b/verification/global_oce_biogeo_bling/code_tap/BLING_OPTIONS.h index 42e2f42740..b626c95e75 100644 --- a/verification/global_oce_biogeo_bling/code_tap/BLING_OPTIONS.h +++ b/verification/global_oce_biogeo_bling/code_tap/BLING_OPTIONS.h @@ -30,8 +30,8 @@ C nutrient limitations to calculate maximum phyto growth rate #define MIN_NUT_LIM C Allow different phytoplankton groups to have different growth rates and -C nutrient/light limitations. Parameters implemented have yet to be tuned. -#undef SIZE_NUT_LIM +C nutrient/light limitations. Parameters implemented have yet to be tuned +#define SIZE_DEP_LIM C Assume that phytoplankton in the mixed layer experience C the average light over the mixed layer (as in original BLING model) @@ -46,6 +46,7 @@ C MLD is calculated using the second derivative of rho(z) C Determine PAR from shortwave radiation Qsw; C otherwise determined from date and latitude +C (Do not define if not using pkg/exf) #undef USE_QSW C Light absorption scheme from Manizza et al. (2005), @@ -75,7 +76,7 @@ C For adjoint safe, do not call bling_dvm C ABIOTIC OPTIONS C Compile "Solvesaphe" package (Munhoven 2013) for pH/pCO2 C can still select Follows et al (2006) solver in data.bling, -C but will use solvesaphe dissociation coefficient options. +C but will use solvesaphe dissociation coefficient options #undef CARBONCHEM_SOLVESAPHE C In S/R CARBON_CHEM convert ak1 and ak2 to the total pH scale @@ -87,13 +88,5 @@ C coeffs are used). C When calculating the fraction of sinking organic matter, use model biomass diagnostics. #define NEW_FRAC_EXP -C Assume different nutrient limitations for small and large phytoplankton. -#define SIZE_DEP_LIM - -C-- Undocumented Options: -#undef MULT_NUT_LIM -#undef USE_ATMOSCO2 -#undef USE_EXFCO2 - #endif /* ALLOW_BLING */ #endif /* BLING_OPTIONS_H */ diff --git a/verification/global_oce_biogeo_bling/input/data b/verification/global_oce_biogeo_bling/input/data index 9d1c1e50ab..06fbdbdb22 100644 --- a/verification/global_oce_biogeo_bling/input/data +++ b/verification/global_oce_biogeo_bling/input/data @@ -65,8 +65,8 @@ # Gridding parameters &PARM04 usingSphericalPolarGrid=.TRUE., - delZ= 50., 70., 100., 140., 190., - 240., 290., 340., 390., 440., + delZ= 50., 70., 100., 140., 190., + 240., 290., 340., 390., 440., 490., 540., 590., 640., 690., ygOrigin=-90., delX=128*2.8125, @@ -82,7 +82,7 @@ meridWindFile= 'tren_tauy.bin', thetaClimFile= 'lev_monthly_temp.bin', saltClimFile= 'lev_monthly_salt.bin', - surfQFile= 'shi_qnet.bin', + surfQnetFile= 'shi_qnet.bin', EmPmRFile= 'shi_empmr_year.bin', the_run_name= 'Tutorial Biogeo', & diff --git a/verification/global_oce_biogeo_bling/input_ad/data b/verification/global_oce_biogeo_bling/input_ad/data index 1c816e396d..6b8c8a5e80 100644 --- a/verification/global_oce_biogeo_bling/input_ad/data +++ b/verification/global_oce_biogeo_bling/input_ad/data @@ -82,7 +82,7 @@ meridWindFile= 'tren_tauy.bin', thetaClimFile= 'lev_monthly_temp.bin', saltClimFile= 'lev_monthly_salt.bin', - surfQFile= 'shi_qnet.bin', + surfQnetFile= 'shi_qnet.bin', EmPmRFile= 'shi_empmr_year.bin', the_run_name= 'Tutorial Biogeo', & diff --git a/verification/global_oce_biogeo_bling/results/output.txt b/verification/global_oce_biogeo_bling/results/output.txt index 598962a91a..2ea10df054 100644 --- a/verification/global_oce_biogeo_bling/results/output.txt +++ b/verification/global_oce_biogeo_bling/results/output.txt @@ -5,10 +5,10 @@ (PID.TID 0000.0001) // ====================================================== (PID.TID 0000.0001) // execution environment starting up... (PID.TID 0000.0001) -(PID.TID 0000.0001) // MITgcmUV version: checkpoint67i -(PID.TID 0000.0001) // Build user: jmc -(PID.TID 0000.0001) // Build host: baudelaire -(PID.TID 0000.0001) // Build date: Mon Jun 17 11:42:31 EDT 2019 +(PID.TID 0000.0001) // MITgcmUV version: checkpoint69b +(PID.TID 0000.0001) // Build user: jm_c +(PID.TID 0000.0001) // Build host: villon +(PID.TID 0000.0001) // Build date: Wed Nov 6 18:40:23 EST 2024 (PID.TID 0000.0001) (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // Execution Environment parameter file "eedata" @@ -49,7 +49,7 @@ (PID.TID 0000.0001) /* note: To execute a program with MPI calls */ (PID.TID 0000.0001) /* it must be launched appropriately e.g */ (PID.TID 0000.0001) /* "mpirun -np 64 ......" */ -(PID.TID 0000.0001) useCoupler= F ;/* Flag used to control communications with */ +(PID.TID 0000.0001) useCoupler= F ; /* Flag used to control communications with */ (PID.TID 0000.0001) /* other model components, through a coupler */ (PID.TID 0000.0001) useNest2W_parent = F ;/* Control 2-W Nesting comm */ (PID.TID 0000.0001) useNest2W_child = F ;/* Control 2-W Nesting comm */ @@ -237,7 +237,6 @@ pkg/mom_fluxform compiled and used ( & not vectorInvariantMom = T ) pkg/cd_code compiled and used ( useCDscheme = T ) pkg/monitor compiled and used ( monitorFreq > 0. = T ) - pkg/timeave compiled but not used ( taveFreq > 0. = F ) pkg/debug compiled but not used ( debugMode = F ) pkg/rw compiled and used pkg/mdsio compiled and used @@ -443,6 +442,10 @@ (PID.TID 0000.0001) > 'TRAC04 ','TRAC05 ','TRAC06 ', (PID.TID 0000.0001) > 'TRAC07 ','TRAC08 ', (PID.TID 0000.0001) > frequency(1) = 432000., +(PID.TID 0000.0001) > +(PID.TID 0000.0001) > fileName(2) = 'soundSpeedDiag', +(PID.TID 0000.0001) > fields(1:1,2) = 'CSound ', +(PID.TID 0000.0001) > frequency(2) = 86400., (PID.TID 0000.0001) > / (PID.TID 0000.0001) > (PID.TID 0000.0001) >#-------------------- @@ -475,7 +478,11 @@ (PID.TID 0000.0001) S/R DIAGNOSTICS_READPARMS, read namelist "diagnostics_list": OK (PID.TID 0000.0001) S/R DIAGNOSTICS_READPARMS, read namelist "DIAG_STATIS_PARMS": start (PID.TID 0000.0001) S/R DIAGNOSTICS_READPARMS, read namelist "DIAG_STATIS_PARMS": OK +(PID.TID 0000.0001) ----------------------------------------------------- (PID.TID 0000.0001) DIAGNOSTICS_READPARMS: global parameter summary: +(PID.TID 0000.0001) diag_dBugLevel = /* level of printed debug messages */ +(PID.TID 0000.0001) 2 +(PID.TID 0000.0001) ; (PID.TID 0000.0001) dumpAtLast = /* always write time-ave diags at the end */ (PID.TID 0000.0001) F (PID.TID 0000.0001) ; @@ -503,6 +510,12 @@ (PID.TID 0000.0001) missing value: -9.990000000000E+02 (PID.TID 0000.0001) Levels: will be set later (PID.TID 0000.0001) Fields: TRAC01 TRAC02 TRAC03 TRAC04 TRAC05 TRAC06 TRAC07 TRAC08 +(PID.TID 0000.0001) Creating Output Stream: soundSpeedDiag +(PID.TID 0000.0001) Output Frequency: 86400.000000 ; Phase: 0.000000 +(PID.TID 0000.0001) Averaging Freq.: 86400.000000 , Phase: 0.000000 , Cycle: 1 +(PID.TID 0000.0001) missing value: -9.990000000000E+02 +(PID.TID 0000.0001) Levels: will be set later +(PID.TID 0000.0001) Fields: CSound (PID.TID 0000.0001) ----------------------------------------------------- (PID.TID 0000.0001) DIAGNOSTICS_READPARMS: statistics diags. summary: (PID.TID 0000.0001) ----------------------------------------------------- @@ -785,25 +798,28 @@ (PID.TID 0000.0001) PTRACERS_INIT_FIXED: updated GAD_OlMinSize= 2 0 1 (PID.TID 0000.0001) ------------------------------------------------------------ (PID.TID 0000.0001) DIAGNOSTICS_SET_LEVELS: done -(PID.TID 0000.0001) Total Nb of available Diagnostics: ndiagt= 410 +(PID.TID 0000.0001) Total Nb of available Diagnostics: ndiagt= 424 (PID.TID 0000.0001) write list of available Diagnostics to file: available_diagnostics.log -(PID.TID 0000.0001) SETDIAG: Allocate 15 x 1 Levels for Diagnostic # 213 TRAC01 -(PID.TID 0000.0001) SETDIAG: Allocate 15 x 1 Levels for Diagnostic # 226 TRAC02 -(PID.TID 0000.0001) SETDIAG: Allocate 15 x 1 Levels for Diagnostic # 239 TRAC03 -(PID.TID 0000.0001) SETDIAG: Allocate 15 x 1 Levels for Diagnostic # 252 TRAC04 -(PID.TID 0000.0001) SETDIAG: Allocate 15 x 1 Levels for Diagnostic # 265 TRAC05 -(PID.TID 0000.0001) SETDIAG: Allocate 15 x 1 Levels for Diagnostic # 278 TRAC06 -(PID.TID 0000.0001) SETDIAG: Allocate 15 x 1 Levels for Diagnostic # 291 TRAC07 -(PID.TID 0000.0001) SETDIAG: Allocate 15 x 1 Levels for Diagnostic # 304 TRAC08 -(PID.TID 0000.0001) space allocated for all diagnostics: 120 levels +(PID.TID 0000.0001) SETDIAG: Allocate 15 x 1 Levels for Diagnostic # 217 TRAC01 +(PID.TID 0000.0001) SETDIAG: Allocate 15 x 1 Levels for Diagnostic # 231 TRAC02 +(PID.TID 0000.0001) SETDIAG: Allocate 15 x 1 Levels for Diagnostic # 245 TRAC03 +(PID.TID 0000.0001) SETDIAG: Allocate 15 x 1 Levels for Diagnostic # 259 TRAC04 +(PID.TID 0000.0001) SETDIAG: Allocate 15 x 1 Levels for Diagnostic # 273 TRAC05 +(PID.TID 0000.0001) SETDIAG: Allocate 15 x 1 Levels for Diagnostic # 287 TRAC06 +(PID.TID 0000.0001) SETDIAG: Allocate 15 x 1 Levels for Diagnostic # 301 TRAC07 +(PID.TID 0000.0001) SETDIAG: Allocate 15 x 1 Levels for Diagnostic # 315 TRAC08 +(PID.TID 0000.0001) SETDIAG: Allocate 15 x 1 Levels for Diagnostic # 109 CSound +(PID.TID 0000.0001) space allocated for all diagnostics: 135 levels (PID.TID 0000.0001) DIAGNOSTICS_SET_POINTERS: Set levels for Outp.Stream: blingTracDiag (PID.TID 0000.0001) Levels: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. -(PID.TID 0000.0001) DIAGNOSTICS_SET_POINTERS: done +(PID.TID 0000.0001) DIAGNOSTICS_SET_POINTERS: Set levels for Outp.Stream: soundSpeedDiag +(PID.TID 0000.0001) Levels: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. +(PID.TID 0000.0001) DIAGNOSTICS_SET_POINTERS: done, use 135 levels (numDiags = 555 ) (PID.TID 0000.0001) ------------------------------------------------------------ (PID.TID 0000.0001) DIAGSTATS_SET_REGIONS: define no region (PID.TID 0000.0001) ------------------------------------------------------------ (PID.TID 0000.0001) space allocated for all stats-diags: 0 levels -(PID.TID 0000.0001) DIAGSTATS_SET_POINTERS: done +(PID.TID 0000.0001) DIAGSTATS_SET_POINTERS: done, use 0 levels (diagSt_size= 75 ) (PID.TID 0000.0001) ------------------------------------------------------------ (PID.TID 0000.0001) %MON fCori_max = 1.4579854531444E-04 (PID.TID 0000.0001) %MON fCori_min = -1.4579854531444E-04 @@ -843,9 +859,29 @@ (PID.TID 0000.0001) tRef = /* Reference temperature profile ( oC or K ) */ (PID.TID 0000.0001) 15 @ 2.000000000000000E+01 /* K = 1: 15 */ (PID.TID 0000.0001) ; -(PID.TID 0000.0001) sRef = /* Reference salinity profile ( psu ) */ +(PID.TID 0000.0001) sRef = /* Reference salinity profile ( g/kg ) */ (PID.TID 0000.0001) 15 @ 3.500000000000000E+01 /* K = 1: 15 */ (PID.TID 0000.0001) ; +(PID.TID 0000.0001) rhoRef = /* Density vertical profile from (Ref,sRef)( kg/m^3 ) */ +(PID.TID 0000.0001) 1.024872626184147E+03, /* K = 1 */ +(PID.TID 0000.0001) 1.025135462285008E+03, /* K = 2 */ +(PID.TID 0000.0001) 1.025507198938228E+03, /* K = 3 */ +(PID.TID 0000.0001) 1.026030780760464E+03, /* K = 4 */ +(PID.TID 0000.0001) 1.026748377776259E+03, /* K = 5 */ +(PID.TID 0000.0001) 1.027679406285166E+03, /* K = 6 */ +(PID.TID 0000.0001) 1.028820735595355E+03, /* K = 7 */ +(PID.TID 0000.0001) 1.030168558073105E+03, /* K = 8 */ +(PID.TID 0000.0001) 1.031718419899614E+03, /* K = 9 */ +(PID.TID 0000.0001) 1.033465256541184E+03, /* K = 10 */ +(PID.TID 0000.0001) 1.035403432414885E+03, /* K = 11 */ +(PID.TID 0000.0001) 1.037526784183520E+03, /* K = 12 */ +(PID.TID 0000.0001) 1.039828667078104E+03, /* K = 13 */ +(PID.TID 0000.0001) 1.042302003623418E+03, /* K = 14 */ +(PID.TID 0000.0001) 1.044939334132512E+03 /* K = 15 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) dBdrRef = /* Vertical grad. of reference buoyancy [(m/s/r)^2] */ +(PID.TID 0000.0001) 15 @ 0.000000000000000E+00 /* K = 1: 15 */ +(PID.TID 0000.0001) ; (PID.TID 0000.0001) useStrainTensionVisc= /* Use StrainTension Form of Viscous Operator */ (PID.TID 0000.0001) F (PID.TID 0000.0001) ; @@ -936,10 +972,16 @@ (PID.TID 0000.0001) eosType = /* Type of Equation of State */ (PID.TID 0000.0001) 'JMD95Z' (PID.TID 0000.0001) ; +(PID.TID 0000.0001) eosRefP0 = /* Reference atmospheric pressure for EOS ( Pa ) */ +(PID.TID 0000.0001) 1.013250000000000E+05 +(PID.TID 0000.0001) ; (PID.TID 0000.0001) selectP_inEOS_Zc = /* select pressure to use in EOS (0,1,2,3) */ (PID.TID 0000.0001) 0 (PID.TID 0000.0001) 0= -g*rhoConst*z ; 1= pRef (from tRef,sRef); 2= Hyd P ; 3= Hyd+NH P (PID.TID 0000.0001) ; +(PID.TID 0000.0001) surf_pRef = /* Surface reference pressure ( Pa ) */ +(PID.TID 0000.0001) 1.013250000000000E+05 +(PID.TID 0000.0001) ; (PID.TID 0000.0001) HeatCapacity_Cp = /* Specific heat capacity ( J/kg/K ) */ (PID.TID 0000.0001) 3.994000000000000E+03 (PID.TID 0000.0001) ; @@ -994,28 +1036,31 @@ (PID.TID 0000.0001) freeSurfFac = /* Implicit free surface factor */ (PID.TID 0000.0001) 1.000000000000000E+00 (PID.TID 0000.0001) ; -(PID.TID 0000.0001) implicSurfPress = /* Surface Pressure implicit factor (0-1)*/ +(PID.TID 0000.0001) implicSurfPress = /* Surface Pressure implicit factor (0-1) */ (PID.TID 0000.0001) 1.000000000000000E+00 (PID.TID 0000.0001) ; -(PID.TID 0000.0001) implicDiv2DFlow = /* Barot. Flow Div. implicit factor (0-1)*/ +(PID.TID 0000.0001) implicDiv2DFlow = /* Barot. Flow Div. implicit factor (0-1) */ (PID.TID 0000.0001) 1.000000000000000E+00 (PID.TID 0000.0001) ; -(PID.TID 0000.0001) uniformLin_PhiSurf = /* use uniform Bo_surf on/off flag*/ +(PID.TID 0000.0001) uniformLin_PhiSurf = /* use uniform Bo_surf on/off flag */ (PID.TID 0000.0001) T (PID.TID 0000.0001) ; (PID.TID 0000.0001) uniformFreeSurfLev = /* free-surface level-index is uniform */ (PID.TID 0000.0001) T (PID.TID 0000.0001) ; +(PID.TID 0000.0001) sIceLoadFac = /* scale factor for sIceLoad (0-1) */ +(PID.TID 0000.0001) 1.000000000000000E+00 +(PID.TID 0000.0001) ; (PID.TID 0000.0001) hFacMin = /* minimum partial cell factor (hFac) */ (PID.TID 0000.0001) 1.000000000000000E-01 (PID.TID 0000.0001) ; (PID.TID 0000.0001) hFacMinDr = /* minimum partial cell thickness ( m) */ (PID.TID 0000.0001) 5.000000000000000E+01 (PID.TID 0000.0001) ; -(PID.TID 0000.0001) exactConserv = /* Exact Volume Conservation on/off flag*/ +(PID.TID 0000.0001) exactConserv = /* Exact Volume Conservation on/off flag */ (PID.TID 0000.0001) F (PID.TID 0000.0001) ; -(PID.TID 0000.0001) linFSConserveTr = /* Tracer correction for Lin Free Surface on/off flag*/ +(PID.TID 0000.0001) linFSConserveTr = /* Tracer correction for Lin Free Surface on/off flag */ (PID.TID 0000.0001) F (PID.TID 0000.0001) ; (PID.TID 0000.0001) nonlinFreeSurf = /* Non-linear Free Surf. options (-1,0,1,2,3)*/ @@ -1037,7 +1082,7 @@ (PID.TID 0000.0001) temp_EvPrRn = /* Temp. of Evap/Prec/R (UNSET=use local T)(oC)*/ (PID.TID 0000.0001) 1.234567000000000E+05 (PID.TID 0000.0001) ; -(PID.TID 0000.0001) salt_EvPrRn = /* Salin. of Evap/Prec/R (UNSET=use local S)(psu)*/ +(PID.TID 0000.0001) salt_EvPrRn = /* Salin. of Evap/Prec/R (UNSET=use local S)(g/kg)*/ (PID.TID 0000.0001) 0.000000000000000E+00 (PID.TID 0000.0001) ; (PID.TID 0000.0001) selectAddFluid = /* option for mass source/sink of fluid (=0: off) */ @@ -1046,10 +1091,10 @@ (PID.TID 0000.0001) temp_addMass = /* Temp. of addMass array (UNSET=use local T)(oC)*/ (PID.TID 0000.0001) 1.234567000000000E+05 (PID.TID 0000.0001) ; -(PID.TID 0000.0001) salt_addMass = /* Salin. of addMass array (UNSET=use local S)(psu)*/ +(PID.TID 0000.0001) salt_addMass = /* Salin. of addMass array (UNSET=use local S)(g/kg)*/ (PID.TID 0000.0001) 0.000000000000000E+00 (PID.TID 0000.0001) ; -(PID.TID 0000.0001) convertFW2Salt = /* convert F.W. Flux to Salt Flux (-1=use local S)(psu)*/ +(PID.TID 0000.0001) convertFW2Salt = /* convert F.W. Flux to Salt Flux (-1=use local S)(g/kg)*/ (PID.TID 0000.0001) 3.500000000000000E+01 (PID.TID 0000.0001) ; (PID.TID 0000.0001) use3Dsolver = /* use 3-D pressure solver on/off flag */ @@ -1095,8 +1140,8 @@ (PID.TID 0000.0001) 0 (PID.TID 0000.0001) 0= Expl. ; 1= Impl. on provis. Vel ; 2= Fully Impl (with surf.P) (PID.TID 0000.0001) ; -(PID.TID 0000.0001) metricTerms = /* metric-Terms on/off flag */ -(PID.TID 0000.0001) T +(PID.TID 0000.0001) selectMetricTerms= /* Metric-Terms on/off flag (=0/1) */ +(PID.TID 0000.0001) 1 (PID.TID 0000.0001) ; (PID.TID 0000.0001) useNHMTerms = /* Non-Hydrostatic Metric-Terms on/off */ (PID.TID 0000.0001) F @@ -1105,8 +1150,8 @@ (PID.TID 0000.0001) 2 (PID.TID 0000.0001) 0= f-Plane ; 1= Beta-Plane ; 2= Spherical ; 3= read from file (PID.TID 0000.0001) ; -(PID.TID 0000.0001) use3dCoriolis = /* 3-D Coriolis on/off flag */ -(PID.TID 0000.0001) F +(PID.TID 0000.0001) select3dCoriScheme= /* 3-D Coriolis on/off flag (=0/1) */ +(PID.TID 0000.0001) 0 (PID.TID 0000.0001) ; (PID.TID 0000.0001) useCoriolis = /* Coriolis on/off flag */ (PID.TID 0000.0001) T @@ -1224,8 +1269,8 @@ (PID.TID 0000.0001) cg2dMaxIters = /* Upper limit on 2d con. grad iterations */ (PID.TID 0000.0001) 1000 (PID.TID 0000.0001) ; -(PID.TID 0000.0001) cg2dChkResFreq = /* 2d con. grad convergence test frequency */ -(PID.TID 0000.0001) 1 +(PID.TID 0000.0001) cg2dMinItersNSA = /* Minimum number of iterations of 2d con. grad solver */ +(PID.TID 0000.0001) 0 (PID.TID 0000.0001) ; (PID.TID 0000.0001) cg2dUseMinResSol= /* use cg2d last-iter(=0) / min-resid.(=1) solution */ (PID.TID 0000.0001) 0 @@ -1242,6 +1287,9 @@ (PID.TID 0000.0001) useSRCGSolver = /* use single reduction CG solver(s) */ (PID.TID 0000.0001) F (PID.TID 0000.0001) ; +(PID.TID 0000.0001) useNSACGSolver = /* use not-self-adjoint CG solver */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; (PID.TID 0000.0001) printResidualFreq = /* Freq. for printing CG residual */ (PID.TID 0000.0001) 0 (PID.TID 0000.0001) ; @@ -1612,15 +1660,6 @@ (PID.TID 0000.0001) deepFacF = /* deep-model grid factor @ W-Interface (-) */ (PID.TID 0000.0001) 16 @ 1.000000000000000E+00 /* K = 1: 16 */ (PID.TID 0000.0001) ; -(PID.TID 0000.0001) rVel2wUnit = /* convert units: rVel -> wSpeed (=1 if z-coord)*/ -(PID.TID 0000.0001) 16 @ 1.000000000000000E+00 /* K = 1: 16 */ -(PID.TID 0000.0001) ; -(PID.TID 0000.0001) wUnit2rVel = /* convert units: wSpeed -> rVel (=1 if z-coord)*/ -(PID.TID 0000.0001) 16 @ 1.000000000000000E+00 /* K = 1: 16 */ -(PID.TID 0000.0001) ; -(PID.TID 0000.0001) dBdrRef = /* Vertical grad. of reference buoyancy [(m/s/r)^2] */ -(PID.TID 0000.0001) 15 @ 0.000000000000000E+00 /* K = 1: 15 */ -(PID.TID 0000.0001) ; (PID.TID 0000.0001) rotateGrid = /* use rotated grid ( True/False ) */ (PID.TID 0000.0001) F (PID.TID 0000.0001) ; @@ -2164,11 +2203,14 @@ (PID.TID 0000.0001) GM_isopycK = /* Background Isopyc. Diffusivity [m^2/s] */ (PID.TID 0000.0001) 1.000000000000000E+03 (PID.TID 0000.0001) ; +(PID.TID 0000.0001) GM_advec*K = /* Backg. GM-Advec(=Bolus) Diffusivity [m^2/s] */ +(PID.TID 0000.0001) 0.000000000000000E+00 +(PID.TID 0000.0001) ; (PID.TID 0000.0001) GM_skewflx*K = /* Background GM_SkewFlx Diffusivity [m^2/s] */ (PID.TID 0000.0001) 1.000000000000000E+03 (PID.TID 0000.0001) ; -(PID.TID 0000.0001) GM_advec*K = /* Backg. GM-Advec(=Bolus) Diffusivity [m^2/s]*/ -(PID.TID 0000.0001) 0.000000000000000E+00 +(PID.TID 0000.0001) GM_isoFac_calcK = /* Fraction of dynamic K added to Redi tensor */ +(PID.TID 0000.0001) 1.000000000000000E+00 (PID.TID 0000.0001) ; (PID.TID 0000.0001) GM_Kmin_horiz = /* Minimum Horizontal Diffusivity [m^2/s] */ (PID.TID 0000.0001) 1.000000000000000E+02 @@ -2224,6 +2266,9 @@ (PID.TID 0000.0001) GM_useLeithQG = /* if TRUE => add QG Leith viscosity to GMRedi tensor */ (PID.TID 0000.0001) F (PID.TID 0000.0001) ; +(PID.TID 0000.0001) GM_useGEOM = /* using GEOMETRIC */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; (PID.TID 0000.0001) PTRACERS_CHECK: #define ALLOW_PTRACERS (PID.TID 0000.0001) // =================================== (PID.TID 0000.0001) // PTRACERS parameters @@ -2718,21 +2763,28 @@ (PID.TID 0000.0001) write diagnostics summary to file ioUnit: 6 Iter.Nb: 0 ; Time(s): 0.0000000000000E+00 ------------------------------------------------------------------------ -2D/3D diagnostics: Number of lists: 1 +2D/3D diagnostics: Number of lists: 2 ------------------------------------------------------------------------ listId= 1 ; file name: blingTracDiag nFlds, nActive, freq & phase , nLev 8 | 8 | 432000.000000 0.000000 | 15 levels: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 diag# | name | ipt | iMate | kLev| count | mate.C| - 213 |TRAC01 | 1 | 0 | 15 | 0 | - 226 |TRAC02 | 16 | 0 | 15 | 0 | - 239 |TRAC03 | 31 | 0 | 15 | 0 | - 252 |TRAC04 | 46 | 0 | 15 | 0 | - 265 |TRAC05 | 61 | 0 | 15 | 0 | - 278 |TRAC06 | 76 | 0 | 15 | 0 | - 291 |TRAC07 | 91 | 0 | 15 | 0 | - 304 |TRAC08 | 106 | 0 | 15 | 0 | + 217 |TRAC01 | 1 | 0 | 15 | 0 | + 231 |TRAC02 | 16 | 0 | 15 | 0 | + 245 |TRAC03 | 31 | 0 | 15 | 0 | + 259 |TRAC04 | 46 | 0 | 15 | 0 | + 273 |TRAC05 | 61 | 0 | 15 | 0 | + 287 |TRAC06 | 76 | 0 | 15 | 0 | + 301 |TRAC07 | 91 | 0 | 15 | 0 | + 315 |TRAC08 | 106 | 0 | 15 | 0 | +------------------------------------------------------------------------ +listId= 2 ; file name: soundSpeedDiag + nFlds, nActive, freq & phase , nLev + 1 | 1 | 86400.000000 0.000000 | 15 + levels: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + diag# | name | ipt | iMate | kLev| count | mate.C| + 109 |CSound | 121 | 0 | 15 | 0 | ------------------------------------------------------------------------ Global & Regional Statistics diagnostics: Number of lists: 0 ------------------------------------------------------------------------ @@ -2993,46 +3045,46 @@ Global & Regional Statistics diagnostics: Number of lists: 0 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // Begin MONITOR ptracer field statistics (PID.TID 0000.0001) // ======================================================= -(PID.TID 0000.0001) %MON trcstat_ptracer01_max = 2.3452014045338E+00 -(PID.TID 0000.0001) %MON trcstat_ptracer01_min = 1.8066842494290E+00 -(PID.TID 0000.0001) %MON trcstat_ptracer01_mean = 2.2008895573915E+00 -(PID.TID 0000.0001) %MON trcstat_ptracer01_sd = 7.6944500800164E-02 -(PID.TID 0000.0001) %MON trcstat_ptracer01_del2 = 4.2674179096171E-05 -(PID.TID 0000.0001) %MON trcstat_ptracer02_max = 2.3977178906565E+00 -(PID.TID 0000.0001) %MON trcstat_ptracer02_min = 2.1285449722172E+00 -(PID.TID 0000.0001) %MON trcstat_ptracer02_mean = 2.3062094191107E+00 -(PID.TID 0000.0001) %MON trcstat_ptracer02_sd = 4.1743978829768E-02 -(PID.TID 0000.0001) %MON trcstat_ptracer02_del2 = 2.3428943266667E-05 -(PID.TID 0000.0001) %MON trcstat_ptracer03_max = 4.7859394736415E-01 -(PID.TID 0000.0001) %MON trcstat_ptracer03_min = 1.7195653637579E-03 -(PID.TID 0000.0001) %MON trcstat_ptracer03_mean = 1.7340789949607E-01 -(PID.TID 0000.0001) %MON trcstat_ptracer03_sd = 6.3436784851294E-02 -(PID.TID 0000.0001) %MON trcstat_ptracer03_del2 = 4.9265410618529E-05 -(PID.TID 0000.0001) %MON trcstat_ptracer04_max = 4.8769556414736E-02 -(PID.TID 0000.0001) %MON trcstat_ptracer04_min = 7.9234857004253E-07 -(PID.TID 0000.0001) %MON trcstat_ptracer04_mean = 3.1284137722449E-02 -(PID.TID 0000.0001) %MON trcstat_ptracer04_sd = 9.0965514336414E-03 -(PID.TID 0000.0001) %MON trcstat_ptracer04_del2 = 6.6067927803926E-06 -(PID.TID 0000.0001) %MON trcstat_ptracer05_max = 3.6433223832525E-03 -(PID.TID 0000.0001) %MON trcstat_ptracer05_min = 7.0418856463181E-07 -(PID.TID 0000.0001) %MON trcstat_ptracer05_mean = 2.1903193728825E-03 -(PID.TID 0000.0001) %MON trcstat_ptracer05_sd = 6.4711693776792E-04 -(PID.TID 0000.0001) %MON trcstat_ptracer05_del2 = 5.2155533331845E-07 -(PID.TID 0000.0001) %MON trcstat_ptracer06_max = 4.2479412861587E-06 -(PID.TID 0000.0001) %MON trcstat_ptracer06_min = 4.5744931530789E-08 -(PID.TID 0000.0001) %MON trcstat_ptracer06_mean = 4.3238812949057E-07 -(PID.TID 0000.0001) %MON trcstat_ptracer06_sd = 1.4348279131156E-07 -(PID.TID 0000.0001) %MON trcstat_ptracer06_del2 = 3.2467170684243E-10 -(PID.TID 0000.0001) %MON trcstat_ptracer07_max = 4.7981709405086E-03 -(PID.TID 0000.0001) %MON trcstat_ptracer07_min = 9.9965776865161E-12 -(PID.TID 0000.0001) %MON trcstat_ptracer07_mean = 9.5253721174079E-05 -(PID.TID 0000.0001) %MON trcstat_ptracer07_sd = 4.2118667356923E-04 -(PID.TID 0000.0001) %MON trcstat_ptracer07_del2 = 5.2759868287391E-07 -(PID.TID 0000.0001) %MON trcstat_ptracer08_max = 2.9978301836454E-04 -(PID.TID 0000.0001) %MON trcstat_ptracer08_min = 9.9931553730322E-12 -(PID.TID 0000.0001) %MON trcstat_ptracer08_mean = 5.9513255571791E-06 -(PID.TID 0000.0001) %MON trcstat_ptracer08_sd = 2.6315153677564E-05 -(PID.TID 0000.0001) %MON trcstat_ptracer08_del2 = 3.2963628763253E-08 +(PID.TID 0000.0001) %MON trcstat_ptracer01_max = 2.3452019435188E+00 +(PID.TID 0000.0001) %MON trcstat_ptracer01_min = 1.8059981243109E+00 +(PID.TID 0000.0001) %MON trcstat_ptracer01_mean = 2.2008868443654E+00 +(PID.TID 0000.0001) %MON trcstat_ptracer01_sd = 7.6961215660236E-02 +(PID.TID 0000.0001) %MON trcstat_ptracer01_del2 = 4.2676181195332E-05 +(PID.TID 0000.0001) %MON trcstat_ptracer02_max = 2.3977542344670E+00 +(PID.TID 0000.0001) %MON trcstat_ptracer02_min = 2.1285853512064E+00 +(PID.TID 0000.0001) %MON trcstat_ptracer02_mean = 2.3062095518702E+00 +(PID.TID 0000.0001) %MON trcstat_ptracer02_sd = 4.1743570617453E-02 +(PID.TID 0000.0001) %MON trcstat_ptracer02_del2 = 2.3428146758385E-05 +(PID.TID 0000.0001) %MON trcstat_ptracer03_max = 4.7859394822342E-01 +(PID.TID 0000.0001) %MON trcstat_ptracer03_min = 1.7116587973888E-03 +(PID.TID 0000.0001) %MON trcstat_ptracer03_mean = 1.7341138705396E-01 +(PID.TID 0000.0001) %MON trcstat_ptracer03_sd = 6.3447854823485E-02 +(PID.TID 0000.0001) %MON trcstat_ptracer03_del2 = 4.9260897110514E-05 +(PID.TID 0000.0001) %MON trcstat_ptracer04_max = 4.8769587259157E-02 +(PID.TID 0000.0001) %MON trcstat_ptracer04_min = 6.3967914031452E-06 +(PID.TID 0000.0001) %MON trcstat_ptracer04_mean = 3.1284004962963E-02 +(PID.TID 0000.0001) %MON trcstat_ptracer04_sd = 9.0980253531958E-03 +(PID.TID 0000.0001) %MON trcstat_ptracer04_del2 = 6.6072616662163E-06 +(PID.TID 0000.0001) %MON trcstat_ptracer05_max = 3.6438196433994E-03 +(PID.TID 0000.0001) %MON trcstat_ptracer05_min = -5.4818676591122E-07 +(PID.TID 0000.0001) %MON trcstat_ptracer05_mean = 2.1902982297821E-03 +(PID.TID 0000.0001) %MON trcstat_ptracer05_sd = 6.4722681077560E-04 +(PID.TID 0000.0001) %MON trcstat_ptracer05_del2 = 5.2143765220747E-07 +(PID.TID 0000.0001) %MON trcstat_ptracer06_max = 4.2484112711028E-06 +(PID.TID 0000.0001) %MON trcstat_ptracer06_min = 4.4381281865316E-08 +(PID.TID 0000.0001) %MON trcstat_ptracer06_mean = 4.3241642540448E-07 +(PID.TID 0000.0001) %MON trcstat_ptracer06_sd = 1.4357358922585E-07 +(PID.TID 0000.0001) %MON trcstat_ptracer06_del2 = 3.2572317831525E-10 +(PID.TID 0000.0001) %MON trcstat_ptracer07_max = 4.8270399459024E-03 +(PID.TID 0000.0001) %MON trcstat_ptracer07_min = 1.0056202578239E-11 +(PID.TID 0000.0001) %MON trcstat_ptracer07_mean = 9.5655650972791E-05 +(PID.TID 0000.0001) %MON trcstat_ptracer07_sd = 4.2309173864092E-04 +(PID.TID 0000.0001) %MON trcstat_ptracer07_del2 = 5.2793431669085E-07 +(PID.TID 0000.0001) %MON trcstat_ptracer08_max = 3.0124054090397E-04 +(PID.TID 0000.0001) %MON trcstat_ptracer08_min = 9.9971753815918E-12 +(PID.TID 0000.0001) %MON trcstat_ptracer08_mean = 5.9724686575593E-06 +(PID.TID 0000.0001) %MON trcstat_ptracer08_sd = 2.6414919674745E-05 +(PID.TID 0000.0001) %MON trcstat_ptracer08_del2 = 3.2980229240436E-08 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // End MONITOR ptracer field statistics (PID.TID 0000.0001) // ======================================================= @@ -3127,49 +3179,50 @@ Global & Regional Statistics diagnostics: Number of lists: 0 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // Begin MONITOR ptracer field statistics (PID.TID 0000.0001) // ======================================================= -(PID.TID 0000.0001) %MON trcstat_ptracer01_max = 2.3451671078743E+00 -(PID.TID 0000.0001) %MON trcstat_ptracer01_min = 1.8068607474355E+00 -(PID.TID 0000.0001) %MON trcstat_ptracer01_mean = 2.2008932657889E+00 -(PID.TID 0000.0001) %MON trcstat_ptracer01_sd = 7.6932268259935E-02 -(PID.TID 0000.0001) %MON trcstat_ptracer01_del2 = 4.2423472122285E-05 -(PID.TID 0000.0001) %MON trcstat_ptracer02_max = 2.3976546338017E+00 -(PID.TID 0000.0001) %MON trcstat_ptracer02_min = 2.1285690817731E+00 -(PID.TID 0000.0001) %MON trcstat_ptracer02_mean = 2.3062082611782E+00 -(PID.TID 0000.0001) %MON trcstat_ptracer02_sd = 4.1744662805283E-02 -(PID.TID 0000.0001) %MON trcstat_ptracer02_del2 = 2.3395013259914E-05 -(PID.TID 0000.0001) %MON trcstat_ptracer03_max = 4.7817461110430E-01 -(PID.TID 0000.0001) %MON trcstat_ptracer03_min = 1.7246172936341E-03 -(PID.TID 0000.0001) %MON trcstat_ptracer03_mean = 1.7340760204094E-01 -(PID.TID 0000.0001) %MON trcstat_ptracer03_sd = 6.3433729271573E-02 -(PID.TID 0000.0001) %MON trcstat_ptracer03_del2 = 4.8960614046920E-05 -(PID.TID 0000.0001) %MON trcstat_ptracer04_max = 4.8765111605462E-02 -(PID.TID 0000.0001) %MON trcstat_ptracer04_min = 4.2885925502477E-07 -(PID.TID 0000.0001) %MON trcstat_ptracer04_mean = 3.1284656427080E-02 -(PID.TID 0000.0001) %MON trcstat_ptracer04_sd = 9.0949434935452E-03 -(PID.TID 0000.0001) %MON trcstat_ptracer04_del2 = 6.5728274194476E-06 -(PID.TID 0000.0001) %MON trcstat_ptracer05_max = 3.6432367341030E-03 -(PID.TID 0000.0001) %MON trcstat_ptracer05_min = 1.0286166253813E-06 -(PID.TID 0000.0001) %MON trcstat_ptracer05_mean = 2.1903540876608E-03 -(PID.TID 0000.0001) %MON trcstat_ptracer05_sd = 6.4701296303486E-04 -(PID.TID 0000.0001) %MON trcstat_ptracer05_del2 = 5.1912817539427E-07 -(PID.TID 0000.0001) %MON trcstat_ptracer06_max = 4.1835581850670E-06 -(PID.TID 0000.0001) %MON trcstat_ptracer06_min = 4.5778613216530E-08 -(PID.TID 0000.0001) %MON trcstat_ptracer06_mean = 4.3237732869932E-07 -(PID.TID 0000.0001) %MON trcstat_ptracer06_sd = 1.4334875526609E-07 -(PID.TID 0000.0001) %MON trcstat_ptracer06_del2 = 3.2261795759821E-10 -(PID.TID 0000.0001) %MON trcstat_ptracer07_max = 4.7897054671735E-03 -(PID.TID 0000.0001) %MON trcstat_ptracer07_min = 9.9965776865161E-12 -(PID.TID 0000.0001) %MON trcstat_ptracer07_mean = 9.5239837372163E-05 -(PID.TID 0000.0001) %MON trcstat_ptracer07_sd = 4.2098797199673E-04 -(PID.TID 0000.0001) %MON trcstat_ptracer07_del2 = 5.2878828132365E-07 -(PID.TID 0000.0001) %MON trcstat_ptracer08_max = 2.9915165821696E-04 -(PID.TID 0000.0001) %MON trcstat_ptracer08_min = 9.9931553730322E-12 -(PID.TID 0000.0001) %MON trcstat_ptracer08_mean = 5.9484210474455E-06 -(PID.TID 0000.0001) %MON trcstat_ptracer08_sd = 2.6293734362987E-05 -(PID.TID 0000.0001) %MON trcstat_ptracer08_del2 = 3.3026642718673E-08 +(PID.TID 0000.0001) %MON trcstat_ptracer01_max = 2.3451681593768E+00 +(PID.TID 0000.0001) %MON trcstat_ptracer01_min = 1.8058670045904E+00 +(PID.TID 0000.0001) %MON trcstat_ptracer01_mean = 2.2008886600880E+00 +(PID.TID 0000.0001) %MON trcstat_ptracer01_sd = 7.6960282909183E-02 +(PID.TID 0000.0001) %MON trcstat_ptracer01_del2 = 4.2428903227863E-05 +(PID.TID 0000.0001) %MON trcstat_ptracer02_max = 2.3977321596290E+00 +(PID.TID 0000.0001) %MON trcstat_ptracer02_min = 2.1286454619499E+00 +(PID.TID 0000.0001) %MON trcstat_ptracer02_mean = 2.3062086790593E+00 +(PID.TID 0000.0001) %MON trcstat_ptracer02_sd = 4.1743736847008E-02 +(PID.TID 0000.0001) %MON trcstat_ptracer02_del2 = 2.3393304399967E-05 +(PID.TID 0000.0001) %MON trcstat_ptracer03_max = 4.7817461289283E-01 +(PID.TID 0000.0001) %MON trcstat_ptracer03_min = 1.7108251651298E-03 +(PID.TID 0000.0001) %MON trcstat_ptracer03_mean = 1.7341337572894E-01 +(PID.TID 0000.0001) %MON trcstat_ptracer03_sd = 6.3453126570635E-02 +(PID.TID 0000.0001) %MON trcstat_ptracer03_del2 = 4.8954450018845E-05 +(PID.TID 0000.0001) %MON trcstat_ptracer04_max = 4.8765169960109E-02 +(PID.TID 0000.0001) %MON trcstat_ptracer04_min = 9.3732319936927E-07 +(PID.TID 0000.0001) %MON trcstat_ptracer04_mean = 3.1284238052008E-02 +(PID.TID 0000.0001) %MON trcstat_ptracer04_sd = 9.0980523791504E-03 +(PID.TID 0000.0001) %MON trcstat_ptracer04_del2 = 6.5736813851836E-06 +(PID.TID 0000.0001) %MON trcstat_ptracer05_max = 3.6440691494260E-03 +(PID.TID 0000.0001) %MON trcstat_ptracer05_min = -1.0462132951599E-06 +(PID.TID 0000.0001) %MON trcstat_ptracer05_mean = 2.1903173262431E-03 +(PID.TID 0000.0001) %MON trcstat_ptracer05_sd = 6.4720064910665E-04 +(PID.TID 0000.0001) %MON trcstat_ptracer05_del2 = 5.1890610904022E-07 +(PID.TID 0000.0001) %MON trcstat_ptracer06_max = 4.1844605639742E-06 +(PID.TID 0000.0001) %MON trcstat_ptracer06_min = 4.3203559402584E-08 +(PID.TID 0000.0001) %MON trcstat_ptracer06_mean = 4.3242883301205E-07 +(PID.TID 0000.0001) %MON trcstat_ptracer06_sd = 1.4352485084208E-07 +(PID.TID 0000.0001) %MON trcstat_ptracer06_del2 = 3.2542865935457E-10 +(PID.TID 0000.0001) %MON trcstat_ptracer07_max = 4.8380749948401E-03 +(PID.TID 0000.0001) %MON trcstat_ptracer07_min = 1.0051298149187E-11 +(PID.TID 0000.0001) %MON trcstat_ptracer07_mean = 9.5925985510763E-05 +(PID.TID 0000.0001) %MON trcstat_ptracer07_sd = 4.2425207778487E-04 +(PID.TID 0000.0001) %MON trcstat_ptracer07_del2 = 5.2967624152058E-07 +(PID.TID 0000.0001) %MON trcstat_ptracer08_max = 3.0159532749752E-04 +(PID.TID 0000.0001) %MON trcstat_ptracer08_min = 9.9966364855586E-12 +(PID.TID 0000.0001) %MON trcstat_ptracer08_mean = 5.9851301312759E-06 +(PID.TID 0000.0001) %MON trcstat_ptracer08_sd = 2.6467160623095E-05 +(PID.TID 0000.0001) %MON trcstat_ptracer08_del2 = 3.3068618005757E-08 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // End MONITOR ptracer field statistics (PID.TID 0000.0001) // ======================================================= + Computing Diagnostic # 109 "CSound " (list# 2) Parms "SMR MR ", Count= 2 EXTERNAL_FIELDS_LOAD, 2 : iP,iLd,i0,i1= 12 1 12 1 ; Wght= 0.4666666667 0.5333333333 BLING_FIELDS_LOAD, 2 : iP,iLd,i0,i1= 12 1 12 1 ; Wght= 0.4666666667 0.5333333333 cg2d: Sum(rhs),rhsMax = -2.27373675443232E-13 3.24238547970697E+00 @@ -3261,46 +3314,46 @@ Global & Regional Statistics diagnostics: Number of lists: 0 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // Begin MONITOR ptracer field statistics (PID.TID 0000.0001) // ======================================================= -(PID.TID 0000.0001) %MON trcstat_ptracer01_max = 2.3451322637352E+00 -(PID.TID 0000.0001) %MON trcstat_ptracer01_min = 1.8069645448884E+00 -(PID.TID 0000.0001) %MON trcstat_ptracer01_mean = 2.2008988782919E+00 -(PID.TID 0000.0001) %MON trcstat_ptracer01_sd = 7.6915169052043E-02 -(PID.TID 0000.0001) %MON trcstat_ptracer01_del2 = 4.2100096146340E-05 -(PID.TID 0000.0001) %MON trcstat_ptracer02_max = 2.3975836057822E+00 -(PID.TID 0000.0001) %MON trcstat_ptracer02_min = 2.1283648660541E+00 -(PID.TID 0000.0001) %MON trcstat_ptracer02_mean = 2.3062060934194E+00 -(PID.TID 0000.0001) %MON trcstat_ptracer02_sd = 4.1746618005222E-02 -(PID.TID 0000.0001) %MON trcstat_ptracer02_del2 = 2.3338291744954E-05 -(PID.TID 0000.0001) %MON trcstat_ptracer03_max = 4.7777455017446E-01 -(PID.TID 0000.0001) %MON trcstat_ptracer03_min = 1.7299854521492E-03 -(PID.TID 0000.0001) %MON trcstat_ptracer03_mean = 1.7340954033881E-01 -(PID.TID 0000.0001) %MON trcstat_ptracer03_sd = 6.3433991223956E-02 -(PID.TID 0000.0001) %MON trcstat_ptracer03_del2 = 4.8498783751869E-05 -(PID.TID 0000.0001) %MON trcstat_ptracer04_max = 4.8760450119193E-02 -(PID.TID 0000.0001) %MON trcstat_ptracer04_min = 4.1936270644684E-07 -(PID.TID 0000.0001) %MON trcstat_ptracer04_mean = 3.1285604906634E-02 -(PID.TID 0000.0001) %MON trcstat_ptracer04_sd = 9.0923437206984E-03 -(PID.TID 0000.0001) %MON trcstat_ptracer04_del2 = 6.5253470719071E-06 -(PID.TID 0000.0001) %MON trcstat_ptracer05_max = 3.6431552935597E-03 -(PID.TID 0000.0001) %MON trcstat_ptracer05_min = 7.9592178346558E-07 -(PID.TID 0000.0001) %MON trcstat_ptracer05_mean = 2.1904160338066E-03 -(PID.TID 0000.0001) %MON trcstat_ptracer05_sd = 6.4685017025364E-04 -(PID.TID 0000.0001) %MON trcstat_ptracer05_del2 = 5.1564987218875E-07 -(PID.TID 0000.0001) %MON trcstat_ptracer06_max = 4.1211974422443E-06 -(PID.TID 0000.0001) %MON trcstat_ptracer06_min = 4.5780911276150E-08 -(PID.TID 0000.0001) %MON trcstat_ptracer06_mean = 4.3236502863230E-07 -(PID.TID 0000.0001) %MON trcstat_ptracer06_sd = 1.4321767577902E-07 -(PID.TID 0000.0001) %MON trcstat_ptracer06_del2 = 3.2035594768886E-10 -(PID.TID 0000.0001) %MON trcstat_ptracer07_max = 4.7753921721233E-03 -(PID.TID 0000.0001) %MON trcstat_ptracer07_min = 9.9965776865161E-12 -(PID.TID 0000.0001) %MON trcstat_ptracer07_mean = 9.5243794511864E-05 -(PID.TID 0000.0001) %MON trcstat_ptracer07_sd = 4.2088619582771E-04 -(PID.TID 0000.0001) %MON trcstat_ptracer07_del2 = 5.3003716526419E-07 -(PID.TID 0000.0001) %MON trcstat_ptracer08_max = 2.9815558161249E-04 -(PID.TID 0000.0001) %MON trcstat_ptracer08_min = 9.9931553730322E-12 -(PID.TID 0000.0001) %MON trcstat_ptracer08_mean = 5.9466317615014E-06 -(PID.TID 0000.0001) %MON trcstat_ptracer08_sd = 2.6278378243969E-05 -(PID.TID 0000.0001) %MON trcstat_ptracer08_del2 = 3.3093311203930E-08 +(PID.TID 0000.0001) %MON trcstat_ptracer01_max = 2.3451337852242E+00 +(PID.TID 0000.0001) %MON trcstat_ptracer01_min = 1.8058069249345E+00 +(PID.TID 0000.0001) %MON trcstat_ptracer01_mean = 2.2008926501541E+00 +(PID.TID 0000.0001) %MON trcstat_ptracer01_sd = 7.6952740592422E-02 +(PID.TID 0000.0001) %MON trcstat_ptracer01_del2 = 4.2112343093538E-05 +(PID.TID 0000.0001) %MON trcstat_ptracer02_max = 2.3976888037187E+00 +(PID.TID 0000.0001) %MON trcstat_ptracer02_min = 2.1284622379484E+00 +(PID.TID 0000.0001) %MON trcstat_ptracer02_mean = 2.3062067594252E+00 +(PID.TID 0000.0001) %MON trcstat_ptracer02_sd = 4.1745226324532E-02 +(PID.TID 0000.0001) %MON trcstat_ptracer02_del2 = 2.3335510724756E-05 +(PID.TID 0000.0001) %MON trcstat_ptracer03_max = 4.7777455295446E-01 +(PID.TID 0000.0001) %MON trcstat_ptracer03_min = 1.7112364008100E-03 +(PID.TID 0000.0001) %MON trcstat_ptracer03_mean = 1.7341693244005E-01 +(PID.TID 0000.0001) %MON trcstat_ptracer03_sd = 6.3460519510428E-02 +(PID.TID 0000.0001) %MON trcstat_ptracer03_del2 = 4.8495952458813E-05 +(PID.TID 0000.0001) %MON trcstat_ptracer04_max = 4.8760533346565E-02 +(PID.TID 0000.0001) %MON trcstat_ptracer04_min = 7.1027326497633E-07 +(PID.TID 0000.0001) %MON trcstat_ptracer04_mean = 3.1284938155579E-02 +(PID.TID 0000.0001) %MON trcstat_ptracer04_sd = 9.0968453479541E-03 +(PID.TID 0000.0001) %MON trcstat_ptracer04_del2 = 6.5267148512698E-06 +(PID.TID 0000.0001) %MON trcstat_ptracer05_max = 3.6442554952586E-03 +(PID.TID 0000.0001) %MON trcstat_ptracer05_min = 2.1260351567890E-08 +(PID.TID 0000.0001) %MON trcstat_ptracer05_mean = 2.1903654193053E-03 +(PID.TID 0000.0001) %MON trcstat_ptracer05_sd = 6.4710504745141E-04 +(PID.TID 0000.0001) %MON trcstat_ptracer05_del2 = 5.1533789759204E-07 +(PID.TID 0000.0001) %MON trcstat_ptracer06_max = 4.1225024186188E-06 +(PID.TID 0000.0001) %MON trcstat_ptracer06_min = 4.2126553633082E-08 +(PID.TID 0000.0001) %MON trcstat_ptracer06_mean = 4.3243862432474E-07 +(PID.TID 0000.0001) %MON trcstat_ptracer06_sd = 1.4348450387041E-07 +(PID.TID 0000.0001) %MON trcstat_ptracer06_del2 = 3.2587964445404E-10 +(PID.TID 0000.0001) %MON trcstat_ptracer07_max = 4.8404962686912E-03 +(PID.TID 0000.0001) %MON trcstat_ptracer07_min = 1.0044087070987E-11 +(PID.TID 0000.0001) %MON trcstat_ptracer07_mean = 9.6175202097792E-05 +(PID.TID 0000.0001) %MON trcstat_ptracer07_sd = 4.2533271912367E-04 +(PID.TID 0000.0001) %MON trcstat_ptracer07_del2 = 5.3167180785279E-07 +(PID.TID 0000.0001) %MON trcstat_ptracer08_max = 3.0145221991563E-04 +(PID.TID 0000.0001) %MON trcstat_ptracer08_min = 9.9961778065798E-12 +(PID.TID 0000.0001) %MON trcstat_ptracer08_mean = 5.9970058716843E-06 +(PID.TID 0000.0001) %MON trcstat_ptracer08_sd = 2.6516833480269E-05 +(PID.TID 0000.0001) %MON trcstat_ptracer08_del2 = 3.3168263213754E-08 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // End MONITOR ptracer field statistics (PID.TID 0000.0001) // ======================================================= @@ -3395,204 +3448,193 @@ Global & Regional Statistics diagnostics: Number of lists: 0 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // Begin MONITOR ptracer field statistics (PID.TID 0000.0001) // ======================================================= -(PID.TID 0000.0001) %MON trcstat_ptracer01_max = 2.3450930490289E+00 -(PID.TID 0000.0001) %MON trcstat_ptracer01_min = 1.8070064938158E+00 -(PID.TID 0000.0001) %MON trcstat_ptracer01_mean = 2.2009060786774E+00 -(PID.TID 0000.0001) %MON trcstat_ptracer01_sd = 7.6894375850540E-02 -(PID.TID 0000.0001) %MON trcstat_ptracer01_del2 = 4.1817618690472E-05 -(PID.TID 0000.0001) %MON trcstat_ptracer02_max = 2.3975249015062E+00 -(PID.TID 0000.0001) %MON trcstat_ptracer02_min = 2.1281217476890E+00 -(PID.TID 0000.0001) %MON trcstat_ptracer02_mean = 2.3062030851510E+00 -(PID.TID 0000.0001) %MON trcstat_ptracer02_sd = 4.1749611325704E-02 -(PID.TID 0000.0001) %MON trcstat_ptracer02_del2 = 2.3279114492393E-05 -(PID.TID 0000.0001) %MON trcstat_ptracer03_max = 4.7739129915233E-01 -(PID.TID 0000.0001) %MON trcstat_ptracer03_min = 1.7335951935736E-03 -(PID.TID 0000.0001) %MON trcstat_ptracer03_mean = 1.7341338999727E-01 -(PID.TID 0000.0001) %MON trcstat_ptracer03_sd = 6.3437282923704E-02 -(PID.TID 0000.0001) %MON trcstat_ptracer03_del2 = 4.8055678926291E-05 -(PID.TID 0000.0001) %MON trcstat_ptracer04_max = 4.8755752949019E-02 -(PID.TID 0000.0001) %MON trcstat_ptracer04_min = 3.7451261218352E-07 -(PID.TID 0000.0001) %MON trcstat_ptracer04_mean = 3.1286910050371E-02 -(PID.TID 0000.0001) %MON trcstat_ptracer04_sd = 9.0889690909528E-03 -(PID.TID 0000.0001) %MON trcstat_ptracer04_del2 = 6.4797126200897E-06 -(PID.TID 0000.0001) %MON trcstat_ptracer05_max = 3.6430798085863E-03 -(PID.TID 0000.0001) %MON trcstat_ptracer05_min = 9.0964486247643E-08 -(PID.TID 0000.0001) %MON trcstat_ptracer05_mean = 2.1905009868848E-03 -(PID.TID 0000.0001) %MON trcstat_ptracer05_sd = 6.4664074924911E-04 -(PID.TID 0000.0001) %MON trcstat_ptracer05_del2 = 5.1247193728150E-07 -(PID.TID 0000.0001) %MON trcstat_ptracer06_max = 4.0607519946744E-06 -(PID.TID 0000.0001) %MON trcstat_ptracer06_min = 4.1238915351385E-08 -(PID.TID 0000.0001) %MON trcstat_ptracer06_mean = 4.3235144064618E-07 -(PID.TID 0000.0001) %MON trcstat_ptracer06_sd = 1.4309144967573E-07 -(PID.TID 0000.0001) %MON trcstat_ptracer06_del2 = 3.1798940425530E-10 -(PID.TID 0000.0001) %MON trcstat_ptracer07_max = 4.7686899614650E-03 -(PID.TID 0000.0001) %MON trcstat_ptracer07_min = 9.9965776865161E-12 -(PID.TID 0000.0001) %MON trcstat_ptracer07_mean = 9.5263399284902E-05 -(PID.TID 0000.0001) %MON trcstat_ptracer07_sd = 4.2087811177691E-04 -(PID.TID 0000.0001) %MON trcstat_ptracer07_del2 = 5.3111106407597E-07 -(PID.TID 0000.0001) %MON trcstat_ptracer08_max = 2.9763519365546E-04 -(PID.TID 0000.0001) %MON trcstat_ptracer08_min = 9.9931553730322E-12 -(PID.TID 0000.0001) %MON trcstat_ptracer08_mean = 5.9458196243088E-06 -(PID.TID 0000.0001) %MON trcstat_ptracer08_sd = 2.6268877304302E-05 -(PID.TID 0000.0001) %MON trcstat_ptracer08_del2 = 3.3149008568886E-08 +(PID.TID 0000.0001) %MON trcstat_ptracer01_max = 2.3450950152470E+00 +(PID.TID 0000.0001) %MON trcstat_ptracer01_min = 1.8058275380499E+00 +(PID.TID 0000.0001) %MON trcstat_ptracer01_mean = 2.2008983856261E+00 +(PID.TID 0000.0001) %MON trcstat_ptracer01_sd = 7.6940455317271E-02 +(PID.TID 0000.0001) %MON trcstat_ptracer01_del2 = 4.1839992303961E-05 +(PID.TID 0000.0001) %MON trcstat_ptracer02_max = 2.3976496794389E+00 +(PID.TID 0000.0001) %MON trcstat_ptracer02_min = 2.1282479300592E+00 +(PID.TID 0000.0001) %MON trcstat_ptracer02_mean = 2.3062039786166E+00 +(PID.TID 0000.0001) %MON trcstat_ptracer02_sd = 4.1747782214815E-02 +(PID.TID 0000.0001) %MON trcstat_ptracer02_del2 = 2.3275219595436E-05 +(PID.TID 0000.0001) %MON trcstat_ptracer03_max = 4.7739130298064E-01 +(PID.TID 0000.0001) %MON trcstat_ptracer03_min = 1.7105372116531E-03 +(PID.TID 0000.0001) %MON trcstat_ptracer03_mean = 1.7342194072077E-01 +(PID.TID 0000.0001) %MON trcstat_ptracer03_sd = 6.3470155000782E-02 +(PID.TID 0000.0001) %MON trcstat_ptracer03_del2 = 4.8062427837104E-05 +(PID.TID 0000.0001) %MON trcstat_ptracer04_max = 4.8755858876475E-02 +(PID.TID 0000.0001) %MON trcstat_ptracer04_min = 5.0218076337435E-07 +(PID.TID 0000.0001) %MON trcstat_ptracer04_mean = 3.1286018641155E-02 +(PID.TID 0000.0001) %MON trcstat_ptracer04_sd = 9.0947077007407E-03 +(PID.TID 0000.0001) %MON trcstat_ptracer04_del2 = 6.4816784916300E-06 +(PID.TID 0000.0001) %MON trcstat_ptracer05_max = 3.6444057806857E-03 +(PID.TID 0000.0001) %MON trcstat_ptracer05_min = -6.0783400316671E-07 +(PID.TID 0000.0001) %MON trcstat_ptracer05_mean = 2.1904373908031E-03 +(PID.TID 0000.0001) %MON trcstat_ptracer05_sd = 6.4695661275228E-04 +(PID.TID 0000.0001) %MON trcstat_ptracer05_del2 = 5.1208771738783E-07 +(PID.TID 0000.0001) %MON trcstat_ptracer06_max = 4.0624349253908E-06 +(PID.TID 0000.0001) %MON trcstat_ptracer06_min = 3.6891506505634E-08 +(PID.TID 0000.0001) %MON trcstat_ptracer06_mean = 4.3244672572912E-07 +(PID.TID 0000.0001) %MON trcstat_ptracer06_sd = 1.4345853195466E-07 +(PID.TID 0000.0001) %MON trcstat_ptracer06_del2 = 3.2747960085070E-10 +(PID.TID 0000.0001) %MON trcstat_ptracer07_max = 4.8371155111235E-03 +(PID.TID 0000.0001) %MON trcstat_ptracer07_min = 1.0068216435248E-11 +(PID.TID 0000.0001) %MON trcstat_ptracer07_mean = 9.6416273813387E-05 +(PID.TID 0000.0001) %MON trcstat_ptracer07_sd = 4.2640063281416E-04 +(PID.TID 0000.0001) %MON trcstat_ptracer07_del2 = 5.3360969628319E-07 +(PID.TID 0000.0001) %MON trcstat_ptracer08_max = 3.0141344488736E-04 +(PID.TID 0000.0001) %MON trcstat_ptracer08_min = 9.9957807995892E-12 +(PID.TID 0000.0001) %MON trcstat_ptracer08_mean = 6.0086888413530E-06 +(PID.TID 0000.0001) %MON trcstat_ptracer08_sd = 2.6567159967119E-05 +(PID.TID 0000.0001) %MON trcstat_ptracer08_del2 = 3.3261066616357E-08 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // End MONITOR ptracer field statistics (PID.TID 0000.0001) // ======================================================= + Computing Diagnostic # 109 "CSound " (list# 2) Parms "SMR MR ", Count= 2 (PID.TID 0000.0001) %CHECKPOINT 4 ckptA (PID.TID 0000.0001) Seconds in section "ALL [THE_MODEL_MAIN]": -(PID.TID 0000.0001) User time: 24.716243645176291 -(PID.TID 0000.0001) System time: 0.20796800637617707 -(PID.TID 0000.0001) Wall clock time: 25.115392923355103 +(PID.TID 0000.0001) User time: 15.724800353869796 +(PID.TID 0000.0001) System time: 0.76682398468255997 +(PID.TID 0000.0001) Wall clock time: 16.785887956619263 (PID.TID 0000.0001) No. starts: 1 (PID.TID 0000.0001) No. stops: 1 (PID.TID 0000.0001) Seconds in section "INITIALISE_FIXED [THE_MODEL_MAIN]": -(PID.TID 0000.0001) User time: 0.26096098683774471 -(PID.TID 0000.0001) System time: 1.89969991333782673E-002 -(PID.TID 0000.0001) Wall clock time: 0.28732299804687500 +(PID.TID 0000.0001) User time: 0.22280899714678526 +(PID.TID 0000.0001) System time: 1.9404999446123838E-002 +(PID.TID 0000.0001) Wall clock time: 0.26756310462951660 (PID.TID 0000.0001) No. starts: 1 (PID.TID 0000.0001) No. stops: 1 (PID.TID 0000.0001) Seconds in section "THE_MAIN_LOOP [THE_MODEL_MAIN]": -(PID.TID 0000.0001) User time: 24.455282658338547 -(PID.TID 0000.0001) System time: 0.18897100724279881 -(PID.TID 0000.0001) Wall clock time: 24.828030109405518 +(PID.TID 0000.0001) User time: 15.501927718520164 +(PID.TID 0000.0001) System time: 0.74740297161042690 +(PID.TID 0000.0001) Wall clock time: 16.518265962600708 (PID.TID 0000.0001) No. starts: 1 (PID.TID 0000.0001) No. stops: 1 (PID.TID 0000.0001) Seconds in section "INITIALISE_VARIA [THE_MAIN_LOOP]": -(PID.TID 0000.0001) User time: 1.3877889811992645 -(PID.TID 0000.0001) System time: 0.12098200060427189 -(PID.TID 0000.0001) Wall clock time: 1.6246778964996338 +(PID.TID 0000.0001) User time: 0.95989803969860077 +(PID.TID 0000.0001) System time: 0.20406000688672066 +(PID.TID 0000.0001) Wall clock time: 1.3858199119567871 (PID.TID 0000.0001) No. starts: 1 (PID.TID 0000.0001) No. stops: 1 (PID.TID 0000.0001) Seconds in section "MAIN LOOP [THE_MAIN_LOOP]": -(PID.TID 0000.0001) User time: 23.067493677139282 -(PID.TID 0000.0001) System time: 6.79890066385269165E-002 -(PID.TID 0000.0001) Wall clock time: 23.203323125839233 +(PID.TID 0000.0001) User time: 14.542002081871033 +(PID.TID 0000.0001) System time: 0.54333996772766113 +(PID.TID 0000.0001) Wall clock time: 15.132416009902954 (PID.TID 0000.0001) No. starts: 1 (PID.TID 0000.0001) No. stops: 1 (PID.TID 0000.0001) Seconds in section "MAIN_DO_LOOP [THE_MAIN_LOOP]": -(PID.TID 0000.0001) User time: 23.067493677139282 -(PID.TID 0000.0001) System time: 6.79890066385269165E-002 -(PID.TID 0000.0001) Wall clock time: 23.203276157379150 +(PID.TID 0000.0001) User time: 14.541962146759033 +(PID.TID 0000.0001) System time: 0.54333797097206116 +(PID.TID 0000.0001) Wall clock time: 15.132371902465820 (PID.TID 0000.0001) No. starts: 4 (PID.TID 0000.0001) No. stops: 4 (PID.TID 0000.0001) Seconds in section "FORWARD_STEP [MAIN_DO_LOOP]": -(PID.TID 0000.0001) User time: 23.067493677139282 -(PID.TID 0000.0001) System time: 6.79890066385269165E-002 -(PID.TID 0000.0001) Wall clock time: 23.203201770782471 +(PID.TID 0000.0001) User time: 14.541891336441040 +(PID.TID 0000.0001) System time: 0.54333405196666718 +(PID.TID 0000.0001) Wall clock time: 15.132298946380615 (PID.TID 0000.0001) No. starts: 4 (PID.TID 0000.0001) No. stops: 4 (PID.TID 0000.0001) Seconds in section "DO_STATEVARS_DIAGS [FORWARD_STEP]": -(PID.TID 0000.0001) User time: 9.09838676452636719E-002 -(PID.TID 0000.0001) System time: 9.99003648757934570E-004 -(PID.TID 0000.0001) Wall clock time: 9.03329849243164063E-002 +(PID.TID 0000.0001) User time: 5.3872823715209961E-002 +(PID.TID 0000.0001) System time: 1.1790946125984192E-002 +(PID.TID 0000.0001) Wall clock time: 6.5691947937011719E-002 (PID.TID 0000.0001) No. starts: 8 (PID.TID 0000.0001) No. stops: 8 (PID.TID 0000.0001) Seconds in section "LOAD_FIELDS_DRIVER [FORWARD_STEP]": -(PID.TID 0000.0001) User time: 3.59952449798583984E-002 -(PID.TID 0000.0001) System time: 2.00000405311584473E-003 -(PID.TID 0000.0001) Wall clock time: 5.22673130035400391E-002 +(PID.TID 0000.0001) User time: 1.4948248863220215E-002 +(PID.TID 0000.0001) System time: 1.1006996035575867E-002 +(PID.TID 0000.0001) Wall clock time: 5.8367013931274414E-002 (PID.TID 0000.0001) No. starts: 4 (PID.TID 0000.0001) No. stops: 4 (PID.TID 0000.0001) Seconds in section "EXTERNAL_FLDS_LOAD [LOAD_FLDS_DRIVER]": -(PID.TID 0000.0001) User time: 1.89956426620483398E-002 -(PID.TID 0000.0001) System time: 1.00000202655792236E-003 -(PID.TID 0000.0001) Wall clock time: 2.19049453735351563E-002 +(PID.TID 0000.0001) User time: 1.0598063468933105E-002 +(PID.TID 0000.0001) System time: 3.7699788808822632E-003 +(PID.TID 0000.0001) Wall clock time: 3.1095504760742188E-002 (PID.TID 0000.0001) No. starts: 4 (PID.TID 0000.0001) No. stops: 4 (PID.TID 0000.0001) Seconds in section "DO_ATMOSPHERIC_PHYS [FORWARD_STEP]": -(PID.TID 0000.0001) User time: 0.0000000000000000 -(PID.TID 0000.0001) System time: 0.0000000000000000 -(PID.TID 0000.0001) Wall clock time: 4.81605529785156250E-005 +(PID.TID 0000.0001) User time: 3.4093856811523438E-005 +(PID.TID 0000.0001) System time: 2.0116567611694336E-006 +(PID.TID 0000.0001) Wall clock time: 3.8146972656250000E-005 (PID.TID 0000.0001) No. starts: 4 (PID.TID 0000.0001) No. stops: 4 (PID.TID 0000.0001) Seconds in section "DO_OCEANIC_PHYS [FORWARD_STEP]": -(PID.TID 0000.0001) User time: 0.95285463333129883 -(PID.TID 0000.0001) System time: 0.0000000000000000 -(PID.TID 0000.0001) Wall clock time: 0.95495891571044922 -(PID.TID 0000.0001) No. starts: 4 -(PID.TID 0000.0001) No. stops: 4 -(PID.TID 0000.0001) Seconds in section "GCHEM_CALC_TENDENCY [FORWARD_STEP]": -(PID.TID 0000.0001) User time: 0.0000000000000000 -(PID.TID 0000.0001) System time: 0.0000000000000000 -(PID.TID 0000.0001) Wall clock time: 4.00543212890625000E-005 +(PID.TID 0000.0001) User time: 0.60956907272338867 +(PID.TID 0000.0001) System time: 1.2374013662338257E-002 +(PID.TID 0000.0001) Wall clock time: 0.62272191047668457 (PID.TID 0000.0001) No. starts: 4 (PID.TID 0000.0001) No. stops: 4 (PID.TID 0000.0001) Seconds in section "THERMODYNAMICS [FORWARD_STEP]": -(PID.TID 0000.0001) User time: 13.957877635955811 -(PID.TID 0000.0001) System time: 5.99899888038635254E-003 -(PID.TID 0000.0001) Wall clock time: 13.993232011795044 +(PID.TID 0000.0001) User time: 8.3146992921829224 +(PID.TID 0000.0001) System time: 0.18791204690933228 +(PID.TID 0000.0001) Wall clock time: 8.5129053592681885 (PID.TID 0000.0001) No. starts: 4 (PID.TID 0000.0001) No. stops: 4 (PID.TID 0000.0001) Seconds in section "DYNAMICS [FORWARD_STEP]": -(PID.TID 0000.0001) User time: 3.1235256195068359 -(PID.TID 0000.0001) System time: 1.99998915195465088E-003 -(PID.TID 0000.0001) Wall clock time: 3.1337347030639648 +(PID.TID 0000.0001) User time: 1.9941539764404297 +(PID.TID 0000.0001) System time: 8.0086082220077515E-002 +(PID.TID 0000.0001) Wall clock time: 2.0762689113616943 (PID.TID 0000.0001) No. starts: 4 (PID.TID 0000.0001) No. stops: 4 (PID.TID 0000.0001) Seconds in section "SOLVE_FOR_PRESSURE [FORWARD_STEP]": -(PID.TID 0000.0001) User time: 0.45992612838745117 -(PID.TID 0000.0001) System time: 1.00000202655792236E-003 -(PID.TID 0000.0001) Wall clock time: 0.46202778816223145 +(PID.TID 0000.0001) User time: 0.28816032409667969 +(PID.TID 0000.0001) System time: 1.1003017425537109E-004 +(PID.TID 0000.0001) Wall clock time: 0.28833007812500000 (PID.TID 0000.0001) No. starts: 4 (PID.TID 0000.0001) No. stops: 4 (PID.TID 0000.0001) Seconds in section "MOM_CORRECTION_STEP [FORWARD_STEP]": -(PID.TID 0000.0001) User time: 8.89897346496582031E-002 -(PID.TID 0000.0001) System time: 0.0000000000000000 -(PID.TID 0000.0001) Wall clock time: 8.92689228057861328E-002 +(PID.TID 0000.0001) User time: 5.0355195999145508E-002 +(PID.TID 0000.0001) System time: 1.5300512313842773E-004 +(PID.TID 0000.0001) Wall clock time: 5.0515174865722656E-002 (PID.TID 0000.0001) No. starts: 4 (PID.TID 0000.0001) No. stops: 4 (PID.TID 0000.0001) Seconds in section "INTEGR_CONTINUITY [FORWARD_STEP]": -(PID.TID 0000.0001) User time: 9.19847488403320313E-002 -(PID.TID 0000.0001) System time: 0.0000000000000000 -(PID.TID 0000.0001) Wall clock time: 9.39071178436279297E-002 +(PID.TID 0000.0001) User time: 5.7181119918823242E-002 +(PID.TID 0000.0001) System time: 4.0269494056701660E-003 +(PID.TID 0000.0001) Wall clock time: 6.1214208602905273E-002 (PID.TID 0000.0001) No. starts: 4 (PID.TID 0000.0001) No. stops: 4 (PID.TID 0000.0001) Seconds in section "TRC_CORRECTION_STEP [FORWARD_STEP]": -(PID.TID 0000.0001) User time: 0.0000000000000000 -(PID.TID 0000.0001) System time: 0.0000000000000000 -(PID.TID 0000.0001) Wall clock time: 4.10079956054687500E-005 +(PID.TID 0000.0001) User time: 3.8146972656250000E-005 +(PID.TID 0000.0001) System time: 1.0132789611816406E-006 +(PID.TID 0000.0001) Wall clock time: 3.7193298339843750E-005 (PID.TID 0000.0001) No. starts: 4 (PID.TID 0000.0001) No. stops: 4 (PID.TID 0000.0001) Seconds in section "GCHEM_FORCING_SEP [FORWARD_STEP]": -(PID.TID 0000.0001) User time: 2.5186176300048828 -(PID.TID 0000.0001) System time: 1.19979977607727051E-002 -(PID.TID 0000.0001) Wall clock time: 2.5360753536224365 +(PID.TID 0000.0001) User time: 1.9271049499511719 +(PID.TID 0000.0001) System time: 9.5773071050643921E-002 +(PID.TID 0000.0001) Wall clock time: 2.0236961841583252 (PID.TID 0000.0001) No. starts: 4 (PID.TID 0000.0001) No. stops: 4 (PID.TID 0000.0001) Seconds in section "BLOCKING_EXCHANGES [FORWARD_STEP]": -(PID.TID 0000.0001) User time: 0.14897775650024414 -(PID.TID 0000.0001) System time: 0.0000000000000000 -(PID.TID 0000.0001) Wall clock time: 0.15007019042968750 -(PID.TID 0000.0001) No. starts: 4 -(PID.TID 0000.0001) No. stops: 4 -(PID.TID 0000.0001) Seconds in section "DO_STATEVARS_TAVE [FORWARD_STEP]": -(PID.TID 0000.0001) User time: 0.0000000000000000 -(PID.TID 0000.0001) System time: 0.0000000000000000 -(PID.TID 0000.0001) Wall clock time: 4.38690185546875000E-005 +(PID.TID 0000.0001) User time: 0.10857105255126953 +(PID.TID 0000.0001) System time: 4.2249858379364014E-003 +(PID.TID 0000.0001) Wall clock time: 0.11281061172485352 (PID.TID 0000.0001) No. starts: 4 (PID.TID 0000.0001) No. stops: 4 (PID.TID 0000.0001) Seconds in section "MONITOR [FORWARD_STEP]": -(PID.TID 0000.0001) User time: 0.72189235687255859 -(PID.TID 0000.0001) System time: 0.0000000000000000 -(PID.TID 0000.0001) Wall clock time: 0.72642874717712402 +(PID.TID 0000.0001) User time: 0.54029703140258789 +(PID.TID 0000.0001) System time: 7.7690482139587402E-003 +(PID.TID 0000.0001) Wall clock time: 0.54883217811584473 (PID.TID 0000.0001) No. starts: 4 (PID.TID 0000.0001) No. stops: 4 (PID.TID 0000.0001) Seconds in section "DO_THE_MODEL_IO [FORWARD_STEP]": -(PID.TID 0000.0001) User time: 0.67789697647094727 -(PID.TID 0000.0001) System time: 1.09980106353759766E-002 -(PID.TID 0000.0001) Wall clock time: 0.68964099884033203 +(PID.TID 0000.0001) User time: 0.46396970748901367 +(PID.TID 0000.0001) System time: 5.2009999752044678E-002 +(PID.TID 0000.0001) Wall clock time: 0.51599001884460449 (PID.TID 0000.0001) No. starts: 4 (PID.TID 0000.0001) No. stops: 4 (PID.TID 0000.0001) Seconds in section "PTRACERS_RESET [FORWARD_STEP]": -(PID.TID 0000.0001) User time: 0.0000000000000000 -(PID.TID 0000.0001) System time: 0.0000000000000000 -(PID.TID 0000.0001) Wall clock time: 5.29289245605468750E-005 +(PID.TID 0000.0001) User time: 4.7206878662109375E-005 +(PID.TID 0000.0001) System time: 2.0265579223632812E-006 +(PID.TID 0000.0001) Wall clock time: 5.0306320190429688E-005 (PID.TID 0000.0001) No. starts: 4 (PID.TID 0000.0001) No. stops: 4 (PID.TID 0000.0001) Seconds in section "DO_WRITE_PICKUP [FORWARD_STEP]": -(PID.TID 0000.0001) User time: 0.19597053527832031 -(PID.TID 0000.0001) System time: 3.29950004816055298E-002 -(PID.TID 0000.0001) Wall clock time: 0.23017406463623047 +(PID.TID 0000.0001) User time: 0.11787557601928711 +(PID.TID 0000.0001) System time: 7.6048016548156738E-002 +(PID.TID 0000.0001) Wall clock time: 0.19393420219421387 (PID.TID 0000.0001) No. starts: 4 (PID.TID 0000.0001) No. stops: 4 (PID.TID 0000.0001) // ====================================================== @@ -3643,9 +3685,9 @@ Global & Regional Statistics diagnostics: Number of lists: 0 (PID.TID 0000.0001) // Total. Y spins = 0 (PID.TID 0000.0001) // Avg. Y spins = 0.00E+00 (PID.TID 0000.0001) // o Thread number: 000001 -(PID.TID 0000.0001) // No. barriers = 2852 +(PID.TID 0000.0001) // No. barriers = 2864 (PID.TID 0000.0001) // Max. barrier spins = 1 (PID.TID 0000.0001) // Min. barrier spins = 1 -(PID.TID 0000.0001) // Total barrier spins = 2852 +(PID.TID 0000.0001) // Total barrier spins = 2864 (PID.TID 0000.0001) // Avg. barrier spins = 1.00E+00 PROGRAM MAIN: Execution ended Normally