Changeset 6164 for branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM
- Timestamp:
- 2015-12-23T18:42:01+01:00 (9 years ago)
- Location:
- branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM
- Files:
-
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/CONFIG/SHARED/field_def_bgc.xml
r6057 r6164 226 226 <field id="qintC14b" long_name="Cumulative air-sea flux of Bomb C14" unit="mol/m2" /> 227 227 <field id="fdecay" long_name="Radiactive decay of Bomb C14" unit="mol/m3" grid_ref="grid_T_3D" /> 228 229 <!-- IDTRA : variables available with key_idtra --> 230 <field id="qtrIDTRA" long_name="Air-sea flux of Ideal Tracer" unit="mol/m2/s" /> 231 <field id="qintIDTRA" long_name="Cumulative air-sea flux of Ideal Tracer" unit="mol/m2" /> 232 <field id="invIDTRA" long_name="Vertical inventory" unit="mol/m2" /> 228 233 229 234 <!-- MEDUSA additional diagnostics on T grid --> … … 504 509 </field_group> 505 510 511 <field_group id="groupIDTRA_dia" > 512 <field field_ref="qtrIDTRA" name="qtrIDTRA" /> 513 <field field_ref="qintIDTRA" name="qintIDTRA" /> 514 <field field_ref="invIDTRA" name="invIDTRA" /> 515 </field_group> 516 517 <field_group id="groupCFC" > 518 <field field_ref="CFC11" name="CFC11" /> 519 </field_group> 520 521 <field_group id="groupCFC_dia" > 522 <field field_ref="qtrCFC11" name="qtrCFC11" /> 523 <field field_ref="qintCFC11" name="qintCFC11" /> 524 </field_group> 525 506 526 <field_group id="groupMEDUSA_dia" > 507 527 <field field_ref= "INVTN" name="INVTN" /> -
branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/CONFIG/SHARED/iodef_medusa_idtra.xml
r6057 r6164 37 37 <field_group group_ref="groupMEDUSA" /> 38 38 <field_group group_ref="groupIDTRA" /> 39 <field_group group_ref="groupCFC" /> 39 40 </file> 40 41 … … 44 45 <field_group group_ref="groupMEDUSA_dms" /> 45 46 <field_group group_ref="groupMEDUSA_bas" /> 47 <field_group group_ref="groupIDTRA_dia" /> 48 <field_group group_ref="groupCFC_dia" /> 46 49 </file> 47 50 -
branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/CONFIG/SHARED/namelist_top_medusa_idtra_cfg
r6057 r6164 30 30 sn_tracer(14) = 'ALK' , 'alkalinity ', 'meq/m3' , .false. , .true. 31 31 sn_tracer(15) = 'OXY' , 'dissolved oxygen ', 'mmolO2/m3' , .false. , .true. 32 sn_tracer(16) = 'IDTRA','Ideal traceur concentration ', 'mmol/m3' , .false. , .true. !! if key_idtra else coment this line 32 sn_tracer(16) = 'IDTRA','Ideal traceur concentration ', 'mmol/m3' , .false. , .true. 33 sn_tracer(17) = 'CFC11','CFC-11 Concentration ', 'umol/m3' , .false. , .true. 33 34 / 34 35 !----------------------------------------------------------------------- … … 74 75 &namtrc_dia ! parameters for passive tracer additional diagnostics 75 76 !---------------------------------------------------------------------- 76 ln_diatrc = .false. ! save additional diag. (T) or not (F)77 77 nn_writedia = 1460 ! time step frequency for diagnostics 78 78 / -
branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/C14b/par_c14b.F90
r5735 r6164 11 11 USE par_pisces , ONLY : jp_pisces_trd !: number of biological diag in PISCES 12 12 13 USE par_medusa , ONLY : jp_medusa !: number of tracers in MEDUSA 14 USE par_medusa , ONLY : jp_medusa_2d !: number of 2D diag in MEDUSA 15 USE par_medusa , ONLY : jp_medusa_3d !: number of 3D diag in MEDUSA 16 USE par_medusa , ONLY : jp_medusa_trd !: number of biological diag in MEDUSA 17 18 USE par_idtra , ONLY : jp_idtra !: number of tracers in MEDUSA 19 USE par_idtra , ONLY : jp_idtra_2d !: number of tracers in MEDUSA 20 USE par_idtra , ONLY : jp_idtra_3d !: number of tracers in MEDUSA 21 USE par_idtra , ONLY : jp_idtra_trd !: number of tracers in MEDUSA 22 13 23 USE par_cfc , ONLY : jp_cfc !: number of tracers in CFC 14 24 USE par_cfc , ONLY : jp_cfc_2d !: number of 2D diag in CFC … … 19 29 IMPLICIT NONE 20 30 21 INTEGER, PARAMETER :: jp_lb = jp_pisces + jp_cfc !: cum. number of pass. tracers 22 INTEGER, PARAMETER :: jp_lb_2d = jp_pisces_2d + jp_cfc_2d !: 23 INTEGER, PARAMETER :: jp_lb_3d = jp_pisces_3d + jp_cfc_3d !: 24 INTEGER, PARAMETER :: jp_lb_trd = jp_pisces_trd + jp_cfc_trd !: 31 INTEGER, PARAMETER :: jp_lb = jp_pisces + jp_medusa + & 32 jp_idtra + jp_cfc !: cum. number of pass. tracers 33 INTEGER, PARAMETER :: jp_lb_2d = jp_pisces_2d + jp_medusa_2d + & 34 jp_idtra_2d + jp_cfc_2d !: 35 INTEGER, PARAMETER :: jp_lb_3d = jp_pisces_3d + jp_medusa_3d + & 36 jp_idtra_3d + jp_cfc_3d !: 37 INTEGER, PARAMETER :: jp_lb_trd = jp_pisces_trd + jp_medusa_trd + & 38 jp_idtra_trd + jp_cfc_trd !: 25 39 26 40 #if defined key_c14b -
branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/CFC/par_cfc.F90
r5787 r6164 15 15 USE par_pisces , ONLY : jp_pisces_trd !: number of biological diag in PISCES 16 16 17 USE par_medusa , ONLY : jp_medusa !: number of tracers in PISCES 18 USE par_medusa , ONLY : jp_medusa_2d !: number of 2D diag in PISCES 19 USE par_medusa , ONLY : jp_medusa_3d !: number of 3D diag in PISCES 20 USE par_medusa , ONLY : jp_medusa_trd !: number of biological diag in PISCES 17 USE par_medusa , ONLY : jp_medusa !: number of tracers in MEDUSA 18 USE par_medusa , ONLY : jp_medusa_2d !: number of 2D diag in MEDUSA 19 USE par_medusa , ONLY : jp_medusa_3d !: number of 3D diag in MEDUSA 20 USE par_medusa , ONLY : jp_medusa_trd !: number of biological diag in MEDUSA 21 22 USE par_idtra , ONLY : jp_idtra !: number of tracers in MEDUSA 23 USE par_idtra , ONLY : jp_idtra_2d !: number of tracers in MEDUSA 24 USE par_idtra , ONLY : jp_idtra_3d !: number of tracers in MEDUSA 25 USE par_idtra , ONLY : jp_idtra_trd !: number of tracers in MEDUSA 21 26 22 27 IMPLICIT NONE 23 28 24 INTEGER, PARAMETER :: jp_lc = jp_pisces !: cumulative number of passive tracers 25 INTEGER, PARAMETER :: jp_lc_2d = jp_pisces_2d !: 26 INTEGER, PARAMETER :: jp_lc_3d = jp_pisces_3d !: 27 INTEGER, PARAMETER :: jp_lc_trd = jp_pisces_trd !: 29 INTEGER, PARAMETER :: jp_lc = jp_pisces + jp_medusa + & 30 jp_idtra !: cumulative number of passive tracers 31 INTEGER, PARAMETER :: jp_lc_2d = jp_pisces_2d + jp_medusa_2d + & 32 jp_idtra_2d !: 33 INTEGER, PARAMETER :: jp_lc_3d = jp_pisces_3d + jp_medusa_3d + & 34 jp_idtra_3d !: 35 INTEGER, PARAMETER :: jp_lc_trd = jp_pisces_trd + jp_medusa_trd + & 36 jp_idtra_trd !: 28 37 29 38 #if defined key_cfc -
branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/CFC/trcsms_cfc.F90
r5735 r6164 15 15 !! cfc_init : sets constants for CFC surface forcing computation 16 16 !!---------------------------------------------------------------------- 17 USE dom_oce ! ocean space and time domain 17 18 USE oce_trc ! Ocean variables 18 19 USE par_trc ! TOP parameters … … 176 177 ! !----------------! 177 178 END DO ! end CFC loop ! 178 ! 179 ! 180 IF( kt == nittrc000 ) THEN 181 DO jl = 1, jp_cfc 182 WRITE(NUMOUT,*) ' ' 183 WRITE(NUMOUT,*) 'CFC interpolation verification ' !! Jpalm 184 WRITE(NUMOUT,*) '################################## ' 185 WRITE(NUMOUT,*) ' ' 186 if (jl.EQ.1) then 187 WRITE(NUMOUT,*) 'Traceur = CFC11: ' 188 elseif (jl.EQ.2) then 189 WRITE(NUMOUT,*) 'Traceur = CFC12: ' 190 endif 191 WRITE(NUMOUT,*) 'nyear = ', nyear 192 WRITE(NUMOUT,*) 'nmonth = ', nmonth 193 WRITE(NUMOUT,*) 'iyear_beg= ', iyear_beg 194 WRITE(NUMOUT,*) 'iyear_end= ', iyear_end 195 WRITE(NUMOUT,*) 'p_cfc(iyear_beg)= ',p_cfc(iyear_beg, 1, jl) 196 WRITE(NUMOUT,*) 'p_cfc(iyear_end)= ',p_cfc(iyear_end, 1, jl) 197 WRITE(NUMOUT,*) 'Im1= ',im1 198 WRITE(NUMOUT,*) 'Im2= ',im2 199 WRITE(NUMOUT,*) 'zpp_cfc = ',zpp_cfc 200 WRITE(NUMOUT,*) ' ' 201 END DO 202 ENDIF 203 ! 179 204 IF( lrst_trc ) THEN 180 205 IF(lwp) WRITE(numout,*) -
branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/IDTRA/par_idtra.F90
r5726 r6164 21 21 USE par_medusa , ONLY : jp_medusa_trd !: number of biological diag in MEDUSA 22 22 23 IMPLICIT NONE 23 24 24 IMPLICIT NONE 25 PUBLIC 26 27 INTEGER, PUBLIC, PARAMETER :: jp_lp = jp_pisces + jp_medusa !: cumulative number of passive tracers 28 INTEGER, PUBLIC, PARAMETER :: jp_lp_2d = jp_pisces_2d + jp_medusa_2d !: 29 INTEGER, PUBLIC, PARAMETER :: jp_lp_3d = jp_pisces_3d + jp_medusa_3d !: 30 INTEGER, PUBLIC, PARAMETER :: jp_lp_trd = jp_pisces_trd + jp_medusa_trd !: 25 INTEGER, PARAMETER :: jp_lp = jp_pisces + jp_medusa !: cumulative number of passive tracers 26 INTEGER, PARAMETER :: jp_lp_2d = jp_pisces_2d + jp_medusa_2d !: 27 INTEGER, PARAMETER :: jp_lp_3d = jp_pisces_3d + jp_medusa_3d !: 28 INTEGER, PARAMETER :: jp_lp_trd = jp_pisces_trd + jp_medusa_trd !: 31 29 32 30 #if defined key_idtra … … 36 34 LOGICAL, PUBLIC, PARAMETER :: lk_idtra = .TRUE. !: IDEAL-TRACER flag 37 35 INTEGER, PUBLIC, PARAMETER :: jp_idtra = 1 !: number of passive tracers 38 INTEGER, PUBLIC, PARAMETER :: jp_idtra_2d = 0!: additional 2d output arrays ('key_trc_diaadd')36 INTEGER, PUBLIC, PARAMETER :: jp_idtra_2d = 3 !: additional 2d output arrays ('key_trc_diaadd') 39 37 INTEGER, PUBLIC, PARAMETER :: jp_idtra_3d = 0 !: additional 3d output arrays ('key_trc_diaadd') 40 38 INTEGER, PUBLIC, PARAMETER :: jp_idtra_trd = 0 !: number of sms trends for IDEAL-TRACER -
branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/IDTRA/trcini_idtra.F90
r6046 r6164 46 46 !!---------------------------------------------------------------------- 47 47 48 IF(lwp) WRITE(numout,*) 49 IF(lwp) WRITE(numout,*) ' trc_ini_idtra: initialisation of Ideal Tracers model' 50 IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~' 51 52 IF( trc_sms_idtra_alloc() /= 0 ) CALL ctl_stop( 'STOP', 'trc_ini_idtra:unable to allocate CFC arrays' ) 53 48 54 49 55 ! Initialization of trn in case of no restart 50 56 !---------------------------------------------- 57 qtr_idtra(:,:,:) = 0._wp 58 inv_idtra(:,:,:) = 0._wp 51 59 IF( .NOT. ln_rsttr ) THEN 52 60 IF(lwp) THEN 53 61 WRITE(numout,*) 54 WRITE(numout,*) 'Initialization deid-tracers ; No restart : '62 WRITE(numout,*) 'Initialization of id-tracers ; No restart : ' 55 63 WRITE(numout,*) ' ; Init field equal 1 at surface - zero elsewhere' 64 WRITE(numout,*) ' ; qint idtra equal 0 ' 56 65 ENDIF 66 qint_idtra(:,:,:) = 0._wp 57 67 DO jn = jp_idtra0, jp_idtra1 58 68 trn(:,:,:,jn) = 0.e0 -
branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/IDTRA/trcsms_idtra.F90
r6046 r6164 25 25 PRIVATE 26 26 27 PUBLIC trc_sms_idtra ! called in ??? 28 27 PUBLIC trc_sms_idtra ! called in ??? 28 PUBLIC trc_sms_idtra_alloc ! called in ??? 29 ! 29 30 INTEGER , PUBLIC :: nyear_res ! restoring time constant (year) 30 31 INTEGER , PUBLIC :: numnatm 31 32 REAL(wp), PUBLIC :: FDEC 33 ! 34 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qtr_idtra ! flux at surface 35 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qint_idtra ! cumulative flux 36 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: inv_idtra ! vertic. inventory 37 32 38 ! ! coefficients for conversion 33 39 REAL(wp) :: WTEMP … … 75 81 76 82 !!---------------------------------------------------------------------- 77 IF(lwp) WRITE(numout,*) ' - JPALM - verif :' 78 IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~' 79 IF(lwp) WRITE(numout,*) ' - idtra decay factor : ', FDEC 83 IF (kt == nittrc000) THEN 84 IF(lwp) WRITE(numout,*) ' - JPALM - verif :' 85 IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~' 86 IF(lwp) WRITE(numout,*) ' - idtra decay factor : ', FDEC 87 ENDIF 88 89 ! 90 inv_idtra(:,:,:) = 0.0 !! init the inventory 91 DO jl = 1, jp_idtra 92 jn = jp_idtra0 + jl - 1 93 94 DO jj = 1, jpj 95 DO ji = 1, jpi 96 !! First, a crude version. will be much inproved later. 97 qtr_idtra(ji,jj,jl) = (1. - trb(ji,jj,1,jn)) * tmask(ji,jj,1) * & 98 fse3t(ji,jj,1) / rdt !! Air-sea Flux 99 ENDDO 100 ENDDO 101 tra(:,:,1,jn) = tra(:,:,1,jn) + ( qtr_idtra(:,:,jl) * & 102 tmask(:,:,1) / fse3t(:,:,1) ) 103 qint_idtra(:,:,jl) = qint_idtra(:,:,jl) + & 104 qtr_idtra(:,:,jl) * rdt !! Cumulative Air-sea Flux 80 105 81 106 82 ! 83 DO jn = jp_idtra0, jp_idtra1 84 85 ! DO jj = 1, jpj 86 ! DO ji = 1, jpi 87 ! Surface concentrarion fixed to 1 (ideal tracer concentration unit) 88 trn(:,:,1,jn) = 1. 89 trb(:,:,1,jn) = 1. 90 ! 91 ! ENDDO 92 ! ENDDO 93 107 DO jk =1,jpk 108 inv_idtra(:,:,jl) = inv_idtra(:,:,jl) + & 109 (trn(:,:,jk,jn) * fse3t(:,:,jk) * tmask(:,:,jk)) !! vertical inventory 110 ENDDO 94 111 ! 95 112 !DECAY of OUR IDEALIZED TRACER … … 101 118 ! IF (trn(ji,jj,jk,jn) > 0.0) THEN 102 119 WTEMP = trn(ji,jj,jk,jn) * (1. - FDEC ) 103 tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) - WTEMP/rdt 120 tra(ji,jj,jk,jn) = (tra(ji,jj,jk,jn) - WTEMP/rdt ) * & 121 tmask(ji,jj,jk) 104 122 ! ENDIF 105 123 ENDDO … … 107 125 ENDDO 108 126 109 ENDDO127 ENDDO 110 128 !! jn loop 111 129 ! 112 130 113 !!!!!! No added diagnostics to save here for idealize tracers... 114 !!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 115 !! #if defined key_trc_diaadd 116 !! ! Save diagnostics , just for TRI111 117 !! # if ! defined key_iomput 118 !! trc2d(:,:,jp_idtra0_2d ) = zpp_idtra(:,:) 119 !! # else 120 !! ! WRITE(NUMOUT,*) 'Iomput idtrasurf ' 121 !! CALL iom_put( "TRISURF" , zpp_idtra(:,:) ) 122 !! ! CALL iom_put( "TRISURF" , xphem(:,:) ) 123 !! ! WRITE(NUMOUT,*) 'Iomputage ' 124 !! CALL iom_put( "AGE" , zage(:,:,:) ) 125 !! # endif 126 !! #endif 127 !! 131 ! 132 IF( lrst_trc ) THEN 133 IF(lwp) WRITE(numout,*) 134 IF(lwp) WRITE(numout,*) 'trc_sms_idtra : cumulated input function fields written in ocean restart file ', & 135 & 'at it= ', kt,' date= ', ndastp 136 IF(lwp) WRITE(numout,*) '~~~~' 137 DO jn = jp_idtra0, jp_idtra1 138 CALL iom_rstput( kt, nitrst, numrtw, 'qint_IDTRA', qint_idtra(:,:,jn) ) 139 END DO 140 ENDIF 141 ! 142 IF( lk_iomput ) THEN 143 CALL iom_put( "qtrIDTRA" , qtr_idtra (:,:,1) ) 144 CALL iom_put( "qintIDTRA" , qint_idtra(:,:,1) ) 145 CALL iom_put( "invIDTRA" , inv_idtra(:,:,1) ) 146 ELSE 147 IF( ln_diatrc ) THEN 148 trc2d(:,:,jp_idtra0_2d ) = qtr_idtra (:,:,1) 149 trc2d(:,:,jp_idtra0_2d + 1) = qint_idtra(:,:,1) 150 trc2d(:,:,jp_idtra0_2d + 2) = inv_idtra(:,:,1) 151 END IF 152 END IF 153 ! 154 IF( l_trdtrc ) THEN 155 DO jn = jp_idtra0, jp_idtra1 156 CALL trd_trc( tra(:,:,:,jn), jn, jptra_sms, kt ) ! save trends 157 END DO 158 END IF 159 ! 160 IF( nn_timing == 1 ) CALL timing_stop('trc_sms_idtra') 161 ! 162 END SUBROUTINE trc_sms_idtra 128 163 129 !! IF( l_trdtrc ) THEN 130 !! DO jn = jp_idtra0, jp_idtra1 131 !! zidtradtra(:,:,:) = tra(:,:,:,jn) 132 !! CALL trd_mod_trc( zidtradtra, jn, jptrc_trd_sms, kt ) ! save trends 133 !! END DO 134 !! END IF 164 INTEGER FUNCTION trc_sms_idtra_alloc() 165 !!---------------------------------------------------------------------- 166 !! *** ROUTINE trc_sms_idtra_alloc *** 167 !!---------------------------------------------------------------------- 168 ALLOCATE( qtr_idtra (jpi,jpj,jp_idtra) , & 169 & inv_idtra(jpi,jpj,jp_idtra) , & 170 & qint_idtra(jpi,jpj,jp_idtra) , STAT=trc_sms_idtra_alloc ) 171 ! 172 IF( trc_sms_idtra_alloc /= 0 ) CALL ctl_warn('trc_sms_idtra_alloc : failed to allocate arrays.') 173 ! 174 END FUNCTION trc_sms_idtra_alloc 135 175 136 END SUBROUTINE trc_sms_idtra137 176 #else 138 177 !!---------------------------------------------------------------------- -
branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/MEDUSA/par_medusa.F90
r5726 r6164 15 15 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 16 16 !!---------------------------------------------------------------------- 17 USE par_pisces , ONLY : jp_pisces !: number of tracers in PISCES 18 USE par_pisces , ONLY : jp_pisces_2d !: number of 2D diag in PISCES 19 USE par_pisces , ONLY : jp_pisces_3d !: number of 3D diag in PISCES 20 USE par_pisces , ONLY : jp_pisces_trd !: number of biological diag in PISCES 17 21 18 22 IMPLICIT NONE 23 24 INTEGER, PARAMETER :: jp_lm = jp_pisces !: 25 INTEGER, PARAMETER :: jp_lm_2d = jp_pisces_2d !: 26 INTEGER, PARAMETER :: jp_lm_3d = jp_pisces_3d !: 27 INTEGER, PARAMETER :: jp_lm_trd = jp_pisces_trd !: 19 28 20 29 #if defined key_medusa … … 36 45 37 46 ! assign an index in trc arrays for each PTS prognostic variables 38 INTEGER, PUBLIC, PARAMETER :: jpchn = 1!: non-diatom chlorophyll concentration39 INTEGER, PUBLIC, PARAMETER :: jpchd = 2!: diatom chlorophyll concentration40 INTEGER, PUBLIC, PARAMETER :: jpphn = 3!: non-diatom concentration41 INTEGER, PUBLIC, PARAMETER :: jpphd = 4!: diatom concentration42 INTEGER, PUBLIC, PARAMETER :: jpzmi = 5!: microzooplankton concentration43 INTEGER, PUBLIC, PARAMETER :: jpzme = 6!: mesozooplankton concentration44 INTEGER, PUBLIC, PARAMETER :: jpdin = 7!: dissolved inorganic nitrogen concentration45 INTEGER, PUBLIC, PARAMETER :: jpsil = 8!: silicic acid concentration46 INTEGER, PUBLIC, PARAMETER :: jpfer = 9!: total iron concentration47 INTEGER, PUBLIC, PARAMETER :: jpdet = 10!: slow-sinking detritus concentration48 INTEGER, PUBLIC, PARAMETER :: jppds = 11!: diatom silicon concentration47 INTEGER, PUBLIC, PARAMETER :: jpchn = jp_lm + 1 !: non-diatom chlorophyll concentration 48 INTEGER, PUBLIC, PARAMETER :: jpchd = jp_lm + 2 !: diatom chlorophyll concentration 49 INTEGER, PUBLIC, PARAMETER :: jpphn = jp_lm + 3 !: non-diatom concentration 50 INTEGER, PUBLIC, PARAMETER :: jpphd = jp_lm + 4 !: diatom concentration 51 INTEGER, PUBLIC, PARAMETER :: jpzmi = jp_lm + 5 !: microzooplankton concentration 52 INTEGER, PUBLIC, PARAMETER :: jpzme = jp_lm + 6 !: mesozooplankton concentration 53 INTEGER, PUBLIC, PARAMETER :: jpdin = jp_lm + 7 !: dissolved inorganic nitrogen concentration 54 INTEGER, PUBLIC, PARAMETER :: jpsil = jp_lm + 8 !: silicic acid concentration 55 INTEGER, PUBLIC, PARAMETER :: jpfer = jp_lm + 9 !: total iron concentration 56 INTEGER, PUBLIC, PARAMETER :: jpdet = jp_lm + 10 !: slow-sinking detritus concentration 57 INTEGER, PUBLIC, PARAMETER :: jppds = jp_lm + 11 !: diatom silicon concentration 49 58 # if defined key_roam 50 INTEGER, PUBLIC, PARAMETER :: jpdtc = 12!: slow-sinking detritus carbon concentration51 INTEGER, PUBLIC, PARAMETER :: jpdic = 13!: dissolved inorganic carbon concentration52 INTEGER, PUBLIC, PARAMETER :: jpalk = 14!: alkalinity53 INTEGER, PUBLIC, PARAMETER :: jpoxy = 15!: dissolved oxygen concentration59 INTEGER, PUBLIC, PARAMETER :: jpdtc = jp_lm + 12 !: slow-sinking detritus carbon concentration 60 INTEGER, PUBLIC, PARAMETER :: jpdic = jp_lm + 13 !: dissolved inorganic carbon concentration 61 INTEGER, PUBLIC, PARAMETER :: jpalk = jp_lm + 14 !: alkalinity 62 INTEGER, PUBLIC, PARAMETER :: jpoxy = jp_lm + 15 !: dissolved oxygen concentration 54 63 # endif 55 64 … … 66 75 67 76 ! Starting/ending PISCES do-loop indices (N.B. no PISCES : jpl_pcs < jpf_pcs the do-loop are never done) 68 INTEGER, PUBLIC, PARAMETER :: jp_msa0 = 1 !: First index of MEDUSA passive tracers69 INTEGER, PUBLIC, PARAMETER :: jp_msa1 = jp_ medusa !: Last index of MEDUSA passive tracers70 INTEGER, PUBLIC, PARAMETER :: jp_msa0_2d = 1 !: First index of MEDUSA passive tracers71 INTEGER, PUBLIC, PARAMETER :: jp_msa1_2d = jp_ medusa_2d !: Last index of MEDUSA passive tracers72 INTEGER, PUBLIC, PARAMETER :: jp_msa0_3d = 1 !: First index of MEDUSA passive tracers73 INTEGER, PUBLIC, PARAMETER :: jp_msa1_3d = jp_ medusa_3d !: Last index of MEDUSA passive tracers74 INTEGER, PUBLIC, PARAMETER :: jp_msa0_trd = 1 !: First index of MEDUSA passive tracers75 INTEGER, PUBLIC, PARAMETER :: jp_msa1_trd = jp_ medusa_trd !: Last index of MEDUSA passive tracers77 INTEGER, PUBLIC, PARAMETER :: jp_msa0 = jp_lm + 1 !: First index of MEDUSA passive tracers 78 INTEGER, PUBLIC, PARAMETER :: jp_msa1 = jp_lm + jp_medusa !: Last index of MEDUSA passive tracers 79 INTEGER, PUBLIC, PARAMETER :: jp_msa0_2d = jp_lm_2d + 1 !: First index of MEDUSA passive tracers 80 INTEGER, PUBLIC, PARAMETER :: jp_msa1_2d = jp_lm_2d + jp_medusa_2d !: Last index of MEDUSA passive tracers 81 INTEGER, PUBLIC, PARAMETER :: jp_msa0_3d = jp_lm_3d + 1 !: First index of MEDUSA passive tracers 82 INTEGER, PUBLIC, PARAMETER :: jp_msa1_3d = jp_lm_3d + jp_medusa_3d !: Last index of MEDUSA passive tracers 83 INTEGER, PUBLIC, PARAMETER :: jp_msa0_trd = jp_lm_trd + 1 !: First index of MEDUSA passive tracers 84 INTEGER, PUBLIC, PARAMETER :: jp_msa1_trd = jp_lm_trd + jp_medusa_trd !: Last index of MEDUSA passive tracers 76 85 77 86 !!====================================================================== -
branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcini_medusa.F90
r6026 r6164 38 38 !! JPALM (14/09/15) 39 39 LOGICAL, PUBLIC :: & 40 ln_ccd = . TRUE.40 ln_ccd = .FALSE. 41 41 42 42 INTEGER :: & -
branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcsed_medusa.F90
r6026 r6164 42 42 !! AXY (10/02/09) 43 43 LOGICAL, PUBLIC :: & 44 bdustfer = . TRUE.44 bdustfer = .FALSE. 45 45 REAL(wp), PUBLIC :: & 46 46 sedfeinput = 1.e-9_wp , & -
branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/trcini.F90
r5726 r6164 103 103 104 104 IF( lk_pisces ) CALL trc_ini_pisces ! PISCES bio-model 105 IF( lk_medusa ) CALL trc_ini_medusa ! MEDUSA tracers 106 IF( lk_idtra ) CALL trc_ini_idtra ! Idealize tracers 105 107 IF( lk_cfc ) CALL trc_ini_cfc ! CFC tracers 106 108 IF( lk_c14b ) CALL trc_ini_c14b ! C14 bomb tracer 107 109 IF( lk_my_trc ) CALL trc_ini_my_trc ! MY_TRC tracers 108 IF( lk_medusa ) CALL trc_ini_medusa ! MEDUSA tracers109 IF( lk_idtra ) CALL trc_ini_idtra ! Idealize tracers110 110 111 111 CALL trc_ice_ini ! Tracers in sea ice -
branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/trcnam.F90
r5978 r6164 232 232 ENDIF 233 233 ! 234 234 # if defined key_debug_medusa 235 CALL flush(numout) 236 IF (lwp) write (numout,*) '------------------------------' 237 IF (lwp) write (numout,*) 'Jpalm - debug' 238 IF (lwp) write (numout,*) 'CALL trc_nam_pisces -- OK' 239 IF (lwp) write (numout,*) 'in trc_nam - just before CALL trc_nam_medusa' 240 IF (lwp) write (numout,*) ' ' 241 # endif 242 ! 243 IF( lk_medusa ) THEN ; CALL trc_nam_medusa ! MEDUSA tracers 244 ELSE ; IF(lwp) WRITE(numout,*) ' MEDUSA not used' 245 ENDIF 246 ! 247 # if defined key_debug_medusa 248 CALL flush(numout) 249 IF (lwp) write (numout,*) '------------------------------' 250 IF (lwp) write (numout,*) 'Jpalm - debug' 251 IF (lwp) write (numout,*) 'CALL trc_nam_medusa -- OK' 252 IF (lwp) write (numout,*) 'in trc_nam - just before CALL trc_nam_idtra' 253 IF (lwp) write (numout,*) ' ' 254 # endif 255 ! 256 IF( lk_idtra ) THEN ; CALL trc_nam_idtra ! Idealize tracers 257 ELSE ; IF(lwp) WRITE(numout,*) ' Idealize tracers not used' 258 ENDIF 259 ! 260 # if defined key_debug_medusa 261 CALL flush(numout) 262 IF (lwp) write (numout,*) '------------------------------' 263 IF (lwp) write (numout,*) 'Jpalm - debug' 264 IF (lwp) write (numout,*) 'CALL trc_nam_idtra -- OK' 265 IF (lwp) write (numout,*) 'in trc_nam - just before CALL trc_nam_cfc' 266 IF (lwp) write (numout,*) ' ' 267 # endif 268 ! 235 269 IF( lk_cfc ) THEN ; CALL trc_nam_cfc ! CFC tracers 236 270 ELSE ; IF(lwp) WRITE(numout,*) ' CFC not used' … … 244 278 ELSE ; IF(lwp) WRITE(numout,*) ' MY_TRC not used' 245 279 ENDIF 246 ! 247 # if defined key_debug_medusa 248 CALL flush(numout) 249 IF (lwp) write (numout,*) '------------------------------' 250 IF (lwp) write (numout,*) 'Jpalm - debug' 251 IF (lwp) write (numout,*) 'CALL trc_nam_pisces - CFC - C14 - my_trc -- OK' 252 IF (lwp) write (numout,*) 'in trc_nam - just before CALL trc_nam_medusa' 253 IF (lwp) write (numout,*) ' ' 254 # endif 255 ! 256 IF( lk_medusa ) THEN ; CALL trc_nam_medusa ! MEDUSA tracers 257 ELSE ; IF(lwp) WRITE(numout,*) ' MEDUSA not used' 258 ENDIF 259 ! 260 # if defined key_debug_medusa 261 CALL flush(numout) 262 IF (lwp) write (numout,*) '------------------------------' 263 IF (lwp) write (numout,*) 'Jpalm - debug' 264 IF (lwp) write (numout,*) 'CALL trc_nam_medusa -- OK' 265 IF (lwp) write (numout,*) 'in trc_nam - just before CALL trc_nam_idtra' 266 IF (lwp) write (numout,*) ' ' 267 # endif 268 ! 269 IF( lk_idtra ) THEN ; CALL trc_nam_idtra ! Idealize tracers 270 ELSE ; IF(lwp) WRITE(numout,*) ' Idealize tracers not used' 271 ENDIF 272 ! 273 # if defined key_debug_medusa 274 CALL flush(numout) 275 IF (lwp) write (numout,*) '------------------------------' 276 IF (lwp) write (numout,*) 'Jpalm - debug' 277 IF (lwp) write (numout,*) 'CALL trc_nam_idtra -- OK' 278 IF (lwp) write (numout,*) 'in trc_nam - CALL trc_nam OK' 279 IF (lwp) write (numout,*) ' ' 280 # endif 281 ! 280 282 281 IF(lwp) CALL flush(numout) 283 282 END SUBROUTINE trc_nam -
branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/trcrst.F90
r6160 r6164 85 85 ! except if we write tracer restart files every tracer time step or if a tracer restart file was writen at nitend - 2*nn_dttrc + 1 86 86 IF( kt == nitrst - 2*nn_dttrc .OR. nstock == nn_dttrc .OR. ( kt == nitend - nn_dttrc .AND. .NOT. lrst_trc ) ) THEN 87 IF ( ln_rstdate ) THEN 88 !! JPALM -- 22-12-2015 -- modif to get the good date on restart trc file name 89 !! -- the condition to open the rst file is not the same than for the dynamic rst. 90 !! -- here it - for an obscure reason - is open 2 time-step before the restart writing process 91 !! instead of 1. 92 !! -- i am not sure if someone forgot +1 in the if loop condition as 93 !! it is writen in all comments nitrst - 2*nn_dttrc + 1 and the condition is nitrst - 2*nn_dttrc 94 !! -- nevertheless we didn't wanted to broke something already working 95 !! and just adapted the part we added. 96 !! -- So instead of calling ju2ymds( fjulday + (rdttra(1)) .... 97 !! we call ju2ymds( fjulday + (2*rdttra(1)) ..... 98 !!-------------------------------------------------------------------- 99 CALL ju2ymds( fjulday + (2*rdttra(1)) / rday, iyear, imonth, iday, zsec ) 100 WRITE(clkt, '(i4.4,2i2.2)') iyear, imonth, iday 101 ELSE 87 ! IF ( ln_rstdate ) THEN 88 ! CALL ju2ymds( fjulday + rdttra(1) / rday, iyear, imonth, iday, zsec ) 89 ! WRITE(clkt, '(i4.4,2i2.2)') iyear, imonth, iday 90 ! ELSE 102 91 ! beware of the format used to write kt (default is i8.8, that should be large enough) 103 92 IF( nitrst > 1.0e9 ) THEN ; WRITE(clkt,* ) nitrst 104 93 ELSE ; WRITE(clkt,'(i8.8)') nitrst 105 94 ENDIF 106 ENDIF95 ! ENDIF 107 96 ! create the file 108 97 IF(lwp) WRITE(numout,*) … … 211 200 if (lwp) write (numout,'(a,3f15.5)') 'Sediment Ca ', & 212 201 & fq0, fq1, fq2 213 !!214 !! AXY (07/07/15): read in temporally averaged fields for DMS215 !! calculations216 !!217 IF( iom_varid( numrtr, 'B_DMS_CHN', ldstop = .FALSE. ) > 0 ) THEN218 !! YES; in which case read them219 !!220 IF(lwp) WRITE(numout,*) ' MEDUSA averaged properties for DMS present - reading in ...'221 CALL iom_get( numrtr, jpdom_autoglo, 'B_DMS_CHN', zb_dms_chn(:,:) )222 CALL iom_get( numrtr, jpdom_autoglo, 'N_DMS_CHN', zn_dms_chn(:,:) )223 CALL iom_get( numrtr, jpdom_autoglo, 'B_DMS_CHD', zb_dms_chd(:,:) )224 CALL iom_get( numrtr, jpdom_autoglo, 'N_DMS_CHD', zn_dms_chd(:,:) )225 CALL iom_get( numrtr, jpdom_autoglo, 'B_DMS_MLD', zb_dms_mld(:,:) )226 CALL iom_get( numrtr, jpdom_autoglo, 'N_DMS_MLD', zn_dms_mld(:,:) )227 CALL iom_get( numrtr, jpdom_autoglo, 'B_DMS_QSR', zb_dms_qsr(:,:) )228 CALL iom_get( numrtr, jpdom_autoglo, 'N_DMS_QSR', zn_dms_qsr(:,:) )229 CALL iom_get( numrtr, jpdom_autoglo, 'B_DMS_DIN', zb_dms_din(:,:) )230 CALL iom_get( numrtr, jpdom_autoglo, 'N_DMS_DIN', zn_dms_din(:,:) )231 ELSE232 !! NO; in which case set them to zero233 !!234 IF(lwp) WRITE(numout,*) ' MEDUSA averaged properties for DMS absent - setting to zero ...'235 zb_dms_chn(:,:) = 0.0 !! CHN236 zn_dms_chn(:,:) = 0.0237 zb_dms_chd(:,:) = 0.0 !! CHD238 zn_dms_chd(:,:) = 0.0239 zb_dms_mld(:,:) = 0.0 !! MLD240 zn_dms_mld(:,:) = 0.0241 zb_dms_qsr(:,:) = 0.0 !! QSR242 zn_dms_qsr(:,:) = 0.0243 zb_dms_din(:,:) = 0.0 !! DIN244 zn_dms_din(:,:) = 0.0245 ENDIF246 !!247 !! calculate stats on these fields248 IF(lwp) WRITE(numout,*) ' MEDUSA averaged properties for DMS stats (min, max, sum) ...'249 fq0 = MINVAL(zn_dms_chn(:,:))250 fq1 = MAXVAL(zn_dms_chn(:,:))251 fq2 = SUM(zn_dms_chn(:,:))252 if (lwp) write (numout,'(a,3f15.5)') 'DMS, CHN ', fq0, fq1, fq2253 fq0 = MINVAL(zn_dms_chd(:,:))254 fq1 = MAXVAL(zn_dms_chd(:,:))255 fq2 = SUM(zn_dms_chd(:,:))256 if (lwp) write (numout,'(a,3f15.5)') 'DMS, CHD ', fq0, fq1, fq2257 fq0 = MINVAL(zn_dms_mld(:,:))258 fq1 = MAXVAL(zn_dms_mld(:,:))259 fq2 = SUM(zn_dms_mld(:,:))260 if (lwp) write (numout,'(a,3f15.5)') 'DMS, MLD ', fq0, fq1, fq2261 fq0 = MINVAL(zn_dms_qsr(:,:))262 fq1 = MAXVAL(zn_dms_qsr(:,:))263 fq2 = SUM(zn_dms_qsr(:,:))264 if (lwp) write (numout,'(a,3f15.5)') 'DMS, QSR ', fq0, fq1, fq2265 fq0 = MINVAL(zn_dms_din(:,:))266 fq1 = MAXVAL(zn_dms_din(:,:))267 fq2 = SUM(zn_dms_din(:,:))268 if (lwp) write (numout,'(a,3f15.5)') 'DMS, DIN ', fq0, fq1, fq2269 270 202 #endif 271 203 … … 349 281 if (lwp) write (numout,'(a,3f15.5)') 'Sediment Ca ', & 350 282 & fq0, fq1, fq2 351 !!352 !! AXY (07/07/15): write out temporally averaged fields for DMS353 !! calculations354 !!355 IF(lwp) WRITE(numout,*) ' MEDUSA averaged properties for DMS - writing out ...'356 CALL iom_rstput( kt, nitrst, numrtw, 'B_DMS_CHN', zb_dms_chn(:,:) )357 CALL iom_rstput( kt, nitrst, numrtw, 'N_DMS_CHN', zn_dms_chn(:,:) )358 CALL iom_rstput( kt, nitrst, numrtw, 'B_DMS_CHD', zb_dms_chd(:,:) )359 CALL iom_rstput( kt, nitrst, numrtw, 'N_DMS_CHD', zn_dms_chd(:,:) )360 CALL iom_rstput( kt, nitrst, numrtw, 'B_DMS_MLD', zb_dms_mld(:,:) )361 CALL iom_rstput( kt, nitrst, numrtw, 'N_DMS_MLD', zn_dms_mld(:,:) )362 CALL iom_rstput( kt, nitrst, numrtw, 'B_DMS_QSR', zb_dms_qsr(:,:) )363 CALL iom_rstput( kt, nitrst, numrtw, 'N_DMS_QSR', zn_dms_qsr(:,:) )364 CALL iom_rstput( kt, nitrst, numrtw, 'B_DMS_DIN', zb_dms_din(:,:) )365 CALL iom_rstput( kt, nitrst, numrtw, 'N_DMS_DIN', zn_dms_din(:,:) )366 !!367 !! calculate stats on these fields368 IF(lwp) WRITE(numout,*) ' MEDUSA averaged properties for DMS stats (min, max, sum) ...'369 fq0 = MINVAL(zn_dms_chn(:,:))370 fq1 = MAXVAL(zn_dms_chn(:,:))371 fq2 = SUM(zn_dms_chn(:,:))372 if (lwp) write (numout,'(a,3f15.5)') 'DMS, CHN ', fq0, fq1, fq2373 fq0 = MINVAL(zn_dms_chd(:,:))374 fq1 = MAXVAL(zn_dms_chd(:,:))375 fq2 = SUM(zn_dms_chd(:,:))376 if (lwp) write (numout,'(a,3f15.5)') 'DMS, CHD ', fq0, fq1, fq2377 fq0 = MINVAL(zn_dms_mld(:,:))378 fq1 = MAXVAL(zn_dms_mld(:,:))379 fq2 = SUM(zn_dms_mld(:,:))380 if (lwp) write (numout,'(a,3f15.5)') 'DMS, MLD ', fq0, fq1, fq2381 fq0 = MINVAL(zn_dms_qsr(:,:))382 fq1 = MAXVAL(zn_dms_qsr(:,:))383 fq2 = SUM(zn_dms_qsr(:,:))384 if (lwp) write (numout,'(a,3f15.5)') 'DMS, QSR ', fq0, fq1, fq2385 fq0 = MINVAL(zn_dms_din(:,:))386 fq1 = MAXVAL(zn_dms_din(:,:))387 fq2 = SUM(zn_dms_din(:,:))388 if (lwp) write (numout,'(a,3f15.5)') 'DMS, DIN ', fq0, fq1, fq2389 !!390 283 #endif 391 284 -
branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/trcsms.F90
r5841 r6164 51 51 ! 52 52 IF( lk_pisces ) CALL trc_sms_pisces ( kt ) ! main program of PISCES 53 IF( lk_medusa ) CALL trc_sms_medusa ( kt ) ! MEDUSA tracers 54 IF( lk_idtra ) CALL trc_sms_idtra ( kt ) ! radioactive decay of Id. tracer 53 55 IF( lk_cfc ) CALL trc_sms_cfc ( kt ) ! surface fluxes of CFC 54 56 IF( lk_c14b ) CALL trc_sms_c14b ( kt ) ! surface fluxes of C14 55 57 IF( lk_my_trc ) CALL trc_sms_my_trc ( kt ) ! MY_TRC tracers 56 IF( lk_medusa ) CALL trc_sms_medusa ( kt ) ! MEDUSA tracers57 IF( lk_idtra ) CALL trc_sms_idtra ( kt ) ! radioactive decay of Id. tracer58 58 59 59 IF(ln_ctl) THEN ! print mean trends (used for debugging)
Note: See TracChangeset
for help on using the changeset viewer.