- Timestamp:
- 2018-09-12T15:59:13+02:00 (6 years ago)
- Location:
- NEMO/branches/2018/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC
- Files:
-
- 31 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2018/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/AGE/par_age.F90
r7491 r10115 25 25 USE par_c14b , ONLY : jp_c14b_trd !: number of tracers in C14 26 26 27 USE par_my_trc , ONLY : jp_my_trc !: number of tracers in MY_TRC 28 USE par_my_trc , ONLY : jp_my_trc_2d !: number of 2D diag in MY_TRC 29 USE par_my_trc , ONLY : jp_my_trc_3d !: number of 3D diag in MY_TRC 30 USE par_my_trc , ONLY : jp_my_trc_trd !: number of biological diag in MY_TRC 31 27 32 IMPLICIT NONE 28 33 29 INTEGER, PARAMETER :: jp_lm = jp_pisces + jp_ cfc + jp_c14b !:30 INTEGER, PARAMETER :: jp_lm_2d = jp_pisces_2d + jp_ cfc_2d + jp_c14b_2d !:31 INTEGER, PARAMETER :: jp_lm_3d = jp_pisces_3d + jp_ cfc_3d + jp_c14b_3d !:32 INTEGER, PARAMETER :: jp_lm_trd = jp_pisces_trd + jp_ cfc_trd + jp_c14b_trd !:34 INTEGER, PARAMETER :: jp_lm = jp_pisces + jp_my_trc + jp_cfc + jp_c14b !: 35 INTEGER, PARAMETER :: jp_lm_2d = jp_pisces_2d + jp_my_trc_2d + jp_cfc_2d + jp_c14b_2d !: 36 INTEGER, PARAMETER :: jp_lm_3d = jp_pisces_3d + jp_my_trc_3d + jp_cfc_3d + jp_c14b_3d !: 37 INTEGER, PARAMETER :: jp_lm_trd = jp_pisces_trd + jp_my_trc_trd + jp_cfc_trd + jp_c14b_trd !: 33 38 34 39 #if defined key_age -
NEMO/branches/2018/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/AGE/trcnam_age.F90
r7491 r10115 14 14 USE oce_trc ! Ocean variables 15 15 USE trcsms_age ! AGE specific variable 16 USE trc 16 17 17 18 IMPLICIT NONE … … 44 45 NAMELIST/namage/ rn_age_depth, rn_age_kill_rate 45 46 !!---------------------------------------------------------------------- 47 ! Variable setting 48 ctrcnm (jp_age0) = 'Age' 49 ctrcln (jp_age0) = 'Sea water age since surface contact' 50 ctrcun (jp_age0) = 'year' 51 ln_trc_ini(jp_age0) = .false. 46 52 ! ! Open namelist files 47 53 CALL ctl_opn( numnatg_ref, 'namelist_age_ref' , 'OLD', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. ) -
NEMO/branches/2018/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/AGE/trcwri_age.F90
r7491 r10115 33 33 INTEGER :: jn 34 34 !!--------------------------------------------------------------------- 35 35 IF( ln_crs_top ) CALL iom_swap( "nemo_crs" ) 36 36 37 37 ! write the tracer concentrations in the file … … 39 39 DO jn = jp_age0, jp_age1 40 40 cltra = TRIM( ctrcnm(jn) ) ! short title for tracer 41 IF(lwp)WRITE(numout,*)"WRITE ",TRIM(cltra) 41 42 CALL iom_put( TRIM(cltra), trn(:,:,:,jn) ) 42 43 END DO 43 44 ! 45 IF( ln_crs_top ) CALL iom_swap( "nemo" ) 44 46 ! 45 47 END SUBROUTINE trc_wri_age -
NEMO/branches/2018/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/C14b/par_c14b.F90
r3680 r10115 11 11 USE par_pisces , ONLY : jp_pisces_trd !: number of biological diag in PISCES 12 12 13 USE par_my_trc , ONLY : jp_my_trc !: number of tracers in MY_TRC 14 USE par_my_trc , ONLY : jp_my_trc_2d !: number of 2D diag in MY_TRC 15 USE par_my_trc , ONLY : jp_my_trc_3d !: number of 3D diag in MY_TRC 16 USE par_my_trc , ONLY : jp_my_trc_trd !: number of biological diag in MY_TRC 17 13 18 USE par_cfc , ONLY : jp_cfc !: number of tracers in CFC 14 19 USE par_cfc , ONLY : jp_cfc_2d !: number of 2D diag in CFC … … 19 24 IMPLICIT NONE 20 25 21 INTEGER, PARAMETER :: jp_lb = jp_pisces + jp_ cfc !: cum. number of pass. tracers22 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 !:26 INTEGER, PARAMETER :: jp_lb = jp_pisces + jp_my_trc + jp_cfc !: cum. number of pass. tracers 27 INTEGER, PARAMETER :: jp_lb_2d = jp_pisces_2d + jp_my_trc_2d + jp_cfc_2d !: 28 INTEGER, PARAMETER :: jp_lb_3d = jp_pisces_3d + jp_my_trc_3d + jp_cfc_3d !: 29 INTEGER, PARAMETER :: jp_lb_trd = jp_pisces_trd + jp_my_trc_trd + jp_cfc_trd !: 25 30 26 31 #if defined key_c14b -
NEMO/branches/2018/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/C14b/trcnam_c14b.F90
r4624 r10115 55 55 NAMELIST/namc14dia/ c14dia2d, c14dia3d ! additional diagnostics 56 56 !!------------------------------------------------------------------- 57 ctrcnm (jp_c14b0) = 'C14B' 58 ctrcln (jp_c14b0) = 'Bomb C14 Concentration' 59 ctrcun (jp_c14b0) = 'ration' 60 ln_trc_ini(jp_c14b0) = .false. 61 ln_trc_wri(jp_c14b0) = .true. 57 62 ! ! Open namelist file 58 63 CALL ctl_opn( numnatb_ref, 'namelist_c14b_ref' , 'OLD', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. ) -
NEMO/branches/2018/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/C14b/trcsms_c14b.F90
r5602 r10115 291 291 ! 292 292 IF( lk_iomput ) THEN 293 CALL iom_put( "qtr C14b" , qtr_c14 )294 CALL iom_put( "qint C14b" , qint_c14 )293 CALL iom_put( "qtr_C14b" , qtr_c14 ) 294 CALL iom_put( "qint_C14b" , qint_c14 ) 295 295 CALL iom_put( "fdecay" , zdecay ) 296 296 ELSE -
NEMO/branches/2018/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/CFC/par_cfc.F90
r3680 r10115 14 14 USE par_pisces , ONLY : jp_pisces_3d !: number of 3D diag in PISCES 15 15 USE par_pisces , ONLY : jp_pisces_trd !: number of biological diag in PISCES 16 17 USE par_my_trc , ONLY : jp_my_trc !: number of tracers in MY_TRC 18 USE par_my_trc , ONLY : jp_my_trc_2d !: number of 2D diag in MY_TRC 19 USE par_my_trc , ONLY : jp_my_trc_3d !: number of 3D diag in MY_TRC 20 USE par_my_trc , ONLY : jp_my_trc_trd !: number of biological diag in MY_TRC 16 21 17 22 IMPLICIT NONE 18 23 19 INTEGER, PARAMETER :: jp_lc = jp_pisces !: cumulative number of passive tracers20 INTEGER, PARAMETER :: jp_lc_2d = jp_pisces_2d !:21 INTEGER, PARAMETER :: jp_lc_3d = jp_pisces_3d !:22 INTEGER, PARAMETER :: jp_lc_trd = jp_pisces_trd !:24 INTEGER, PARAMETER :: jp_lc = jp_pisces + jp_my_trc !: cumulative number of passive tracers 25 INTEGER, PARAMETER :: jp_lc_2d = jp_pisces_2d + jp_my_trc_2d !: 26 INTEGER, PARAMETER :: jp_lc_3d = jp_pisces_3d + jp_my_trc_3d !: 27 INTEGER, PARAMETER :: jp_lc_trd = jp_pisces_trd + jp_my_trc_trd !: 23 28 24 29 #if defined key_cfc … … 27 32 !!--------------------------------------------------------------------- 28 33 LOGICAL, PUBLIC, PARAMETER :: lk_cfc = .TRUE. !: CFC flag 29 INTEGER, PUBLIC, PARAMETER :: jp_cfc = 1!: number of passive tracers30 INTEGER, PUBLIC, PARAMETER :: jp_cfc_2d = 2 34 INTEGER, PUBLIC, PARAMETER :: jp_cfc = 2 !: number of passive tracers 35 INTEGER, PUBLIC, PARAMETER :: jp_cfc_2d = 2 * jp_cfc !: additional 2d output arrays ('key_trc_diaadd') 31 36 INTEGER, PUBLIC, PARAMETER :: jp_cfc_3d = 0 !: additional 3d output arrays ('key_trc_diaadd') 32 37 INTEGER, PUBLIC, PARAMETER :: jp_cfc_trd = 0 !: number of sms trends for CFC 33 34 ! assign an index in trc arrays for each CFC prognostic variables35 INTEGER, PUBLIC, PARAMETER :: jpc11 = jp_lc + 1 !: CFC-1136 INTEGER, PUBLIC, PARAMETER :: jpc12 = jp_lc + 2 !: CFC-1238 ! Enable trace gases according to total number jp_cfc 39 LOGICAL, PUBLIC, PARAMETER :: lp_cfc11 = .false. !: use CFC11 40 LOGICAL, PUBLIC, PARAMETER :: lp_cfc12 = .true. !: use CFC12 41 LOGICAL, PUBLIC, PARAMETER :: lp_sf6 = .true. !: use SF6 37 42 #else 38 43 !!--------------------------------------------------------------------- … … 44 49 INTEGER, PUBLIC, PARAMETER :: jp_cfc_3d = 0 !: No CFC additional 3d output arrays 45 50 INTEGER, PUBLIC, PARAMETER :: jp_cfc_trd = 0 !: number of sms trends for CFC 51 LOGICAL, PUBLIC, PARAMETER :: lp_cfc11 = .false. !: use CFC11 52 LOGICAL, PUBLIC, PARAMETER :: lp_cfc12 = .false. !: use CFC12 53 LOGICAL, PUBLIC, PARAMETER :: lp_sf6 = .false. !: use SF6 46 54 #endif 47 55 -
NEMO/branches/2018/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/CFC/trcini_cfc.F90
r3294 r10115 22 22 PUBLIC trc_ini_cfc ! called by trcini.F90 module 23 23 24 CHARACTER (len=34) :: clname = 'cfc1112.atm' ! ???25 26 24 INTEGER :: inum ! unit number 27 25 REAL(wp) :: ylats = -10. ! 10 degrees south … … 46 44 INTEGER :: iskip = 6 ! number of 1st descriptor lines 47 45 REAL(wp) :: zyy, zyd 46 CHARACTER(len = 20) :: cltra 48 47 !!---------------------------------------------------------------------- 49 48 … … 51 50 IF(lwp) WRITE(numout,*) ' trc_ini_cfc: initialisation of CFC chemical model' 52 51 IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~' 53 54 55 IF(lwp) WRITE(numout,*) 'read of formatted file cfc1112atm' 52 ! 53 IF(lwp) WRITE(numout,*) 'Read annual atmospheric concentrations from formatted file : ' // TRIM(clnamecfc) 56 54 57 CALL ctl_opn( inum, clname , 'OLD', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. )55 CALL ctl_opn( inum, clnamecfc, 'OLD', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. ) 58 56 REWIND(inum) 59 57 … … 66 64 END DO 67 65 100 jpyear = jn - 1 - iskip 68 IF ( lwp) WRITE(numout,*) ' ', jpyear ,' years read'66 IF ( lwp) WRITE(numout,*) ' ---> ', jpyear ,' years read' 69 67 ! ! Allocate CFC arrays 70 68 71 ALLOCATE( p_cfc(jpyear,jphem, 2), STAT=ierr )69 ALLOCATE( p_cfc(jpyear,jphem,3), STAT=ierr ) 72 70 IF( ierr > 0 ) THEN 73 71 CALL ctl_stop( 'trc_ini_cfc: unable to allocate p_cfc array' ) ; RETURN … … 87 85 IF(lwp) THEN 88 86 WRITE(numout,*) 89 WRITE(numout,*) 'Initiali zation deqint ; No restart : qint equal zero '87 WRITE(numout,*) 'Initialisation of qint ; No restart : qint equal zero ' 90 88 ENDIF 91 89 qint_cfc(:,:,:) = 0._wp … … 105 103 jn = 31 106 104 DO 107 READ(inum,*, IOSTAT=io) zyy, p_cfc(jn,1 ,1), p_cfc(jn,1,2), p_cfc(jn,2,1), p_cfc(jn,2,2)105 READ(inum,*, IOSTAT=io) zyy, p_cfc(jn,1:2,1), p_cfc(jn,1:2,2), p_cfc(jn,1:2,3) 108 106 IF( io < 0 ) exit 109 107 jn = jn + 1 110 108 END DO 111 109 112 p_cfc(32,1:2,1) = 5.e-4 ! modify the values of the first years113 p_cfc(33,1:2,1) = 8.e-4114 p_cfc(34,1:2,1) = 1.e-6115 p_cfc(35,1:2,1) = 2.e-3116 p_cfc(36,1:2,1) = 4.e-3117 p_cfc(37,1:2,1) = 6.e-3118 p_cfc(38,1:2,1) = 8.e-3119 p_cfc(39,1:2,1) = 1.e-2120 121 110 IF(lwp) THEN ! Control print 122 111 WRITE(numout,*) 123 WRITE(numout,*) ' Year p11HN p11HS p12HN p12HS'112 WRITE(numout,*) ' Year c11NH c11SH c12NH c12SH SF6NH SF6SH' 124 113 DO jn = 30, jpyear 125 WRITE(numout, '( 1I4, 4F9.2)') jn, p_cfc(jn,1,1), p_cfc(jn,2,1), p_cfc(jn,1,2), p_cfc(jn,2,2)114 WRITE(numout, '( 1I4, 6F10.4)') jn, p_cfc(jn,1:2,1), p_cfc(jn,1:2,2), p_cfc(jn,1:2,3) 126 115 END DO 127 116 ENDIF -
NEMO/branches/2018/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/CFC/trcnam_cfc.F90
r4624 r10115 46 46 INTEGER :: numonc = -1 ! Logical unit for output namelist 47 47 INTEGER :: ios ! Local integer output status for namelist read 48 INTEGER :: jl, jn 48 INTEGER :: jl, jn, cnt 49 49 TYPE(DIAG), DIMENSION(jp_cfc_2d) :: cfcdia2d 50 50 !! 51 NAMELIST/namcfcdate/ ndate_beg, nyear_res 51 NAMELIST/namcfcdate/ ndate_beg, nyear_res, clnamecfc 52 52 NAMELIST/namcfcdia/ cfcdia2d ! additional diagnostics 53 53 !!---------------------------------------------------------------------- … … 66 66 IF(lwm) WRITE ( numonc, namcfcdate ) 67 67 68 jn = jp_cfc0 - 1 69 ! Variables setting 70 IF( lp_cfc11 ) THEN 71 jn = jn + 1 72 ctrcnm (jn) = 'CFC11' 73 ctrcln (jn) = 'Chlorofluoro carbon 11 Concentration' 74 ctrcun (jn) = 'umolC/L' 75 ln_trc_ini(jn) = .false. 76 ln_trc_wri(jn) = .true. 77 ENDIF 78 ! 79 IF( lp_cfc12 ) THEN 80 jn = jn + 1 81 ctrcnm (jn) = 'CFC12' 82 ctrcln (jn) = 'Chlorofluoro carbon 12 Concentration' 83 ctrcun (jn) = 'umolC/L' 84 ln_trc_ini(jn) = .false. 85 ln_trc_wri(jn) = .true. 86 ENDIF 87 ! 88 IF( lp_sf6 ) THEN 89 jn = jn + 1 90 ctrcnm (jn) = 'SF6' 91 ctrcln (jn) = 'Sulfur hexafluoride Concentration' 92 ctrcun (jn) = 'umol/L' 93 ln_trc_ini(jn) = .false. 94 ln_trc_wri(jn) = .true. 95 ENDIF 96 68 97 IF(lwp) THEN ! control print 69 WRITE(numout,*) 98 WRITE(numout,*) ' ' 99 WRITE(numout,*) ' CFCs' 100 WRITE(numout,*) ' ' 70 101 WRITE(numout,*) ' trc_nam: Read namdates, namelist for CFC chemical model' 71 102 WRITE(numout,*) ' ~~~~~~~' 72 103 WRITE(numout,*) ' initial calendar date (aammjj) for CFC ndate_beg = ', ndate_beg 73 104 WRITE(numout,*) ' restoring time constant (year) nyear_res = ', nyear_res 105 WRITE(numout,*) ' Atmospheric CFC concentrations file clnamecfc = ', TRIM(clnamecfc) 106 WRITE(numout,*) ' Compute dynamics for CFC-11 lp_cfc11 = ', lp_cfc11 107 WRITE(numout,*) ' Compute dynamics for CFC-12 lp_cfc12 = ', lp_cfc12 108 WRITE(numout,*) ' Compute dynamics for SF6 lp_sf6 = ', lp_sf6 74 109 ENDIF 75 110 nyear_beg = ndate_beg / 10000 76 111 IF(lwp) WRITE(numout,*) ' initial year (aa) nyear_beg = ', nyear_beg 112 ! 113 ! check consistency between CFC namelist and par_cfc setting 114 if ( jn - jp_cfc0 + 1 .ne. jp_cfc ) & 115 CALL ctl_stop( 'trc_nam_cfc: Number of selected CFCs is different from total CFC number (jp_cfc) specified in par_cfc.F90' ) 77 116 ! 78 117 -
NEMO/branches/2018/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/CFC/trcsms_cfc.F90
r4996 r10115 29 29 30 30 INTEGER , PUBLIC, PARAMETER :: jphem = 2 ! parameter for the 2 hemispheres 31 INTEGER , PUBLIC :: jpyear ! Number of years read in CFC1112 file31 INTEGER , PUBLIC :: jpyear ! Number of years read in input data file (in trcini_cfc) 32 32 INTEGER , PUBLIC :: ndate_beg ! initial calendar date (aammjj) for CFC 33 33 INTEGER , PUBLIC :: nyear_res ! restoring time constant (year) 34 34 INTEGER , PUBLIC :: nyear_beg ! initial year (aa) 35 CHARACTER(len=200), PUBLIC :: clnamecfc ! Input filename of CFCs atm. concentrations 35 36 36 37 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: p_cfc ! partial hemispheric pressure for CFC … … 38 39 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qtr_cfc ! flux at surface 39 40 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qint_cfc ! cumulative flux 41 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: atm_cfc ! partial hemispheric pressure for used CFC 40 42 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: patm ! atmospheric function 41 43 42 REAL(wp), DIMENSION(4,2) :: soa ! coefficient for solubility of CFC [mol/l/atm] 43 REAL(wp), DIMENSION(3,2) :: sob ! " " 44 REAL(wp), DIMENSION(4,2) :: sca ! coefficients for schmidt number in degre Celcius 45 44 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: soa ! coefficient for solubility of CFC [mol/l/atm] 45 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: sob ! " " 46 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: sca ! coefficients for schmidt number in degrees Celsius 46 47 ! ! coefficients for conversion 47 48 REAL(wp) :: xconv1 = 1.0 ! conversion from to … … 82 83 INTEGER :: im1, im2, ierr 83 84 REAL(wp) :: ztap, zdtap 84 REAL(wp) :: zt1, zt2, zt3, z v285 REAL(wp) :: zt1, zt2, zt3, zt4, zv2 85 86 REAL(wp) :: zsol ! solubility 86 87 REAL(wp) :: zsch ! schmidt number … … 93 94 ! 94 95 IF( nn_timing == 1 ) CALL timing_start('trc_sms_cfc') 96 97 IF(lwp) WRITE(numout,*) 98 IF(lwp) WRITE(numout,*) ' trc_sms_cfc: CFC model' 99 IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~' 95 100 ! 96 101 ALLOCATE( zpatm(jphem,jp_cfc), STAT=ierr ) … … 112 117 im2 = nmonth - 7 113 118 ENDIF 119 ! Avoid bad interpolation if starting date is =< 1900 120 if( iyear_beg .LE. 0 ) iyear_beg = 1 121 ! 114 122 iyear_end = iyear_beg + 1 115 116 123 ! !------------! 117 124 DO jl = 1, jp_cfc ! CFC loop ! … … 120 127 ! time interpolation at time kt 121 128 DO jm = 1, jphem 122 zpatm(jm,jl) = ( p_cfc(iyear_beg, jm, jl) * FLOAT (im1) &123 & + p_cfc(iyear_end, jm, jl) * FLOAT (im2) ) / 12.129 zpatm(jm,jl) = ( atm_cfc(iyear_beg, jm, jl) * REAL(im1, wp) & 130 & + atm_cfc(iyear_end, jm, jl) * REAL(im2, wp) ) / 12. 124 131 END DO 125 132 … … 148 155 149 156 ! Computation of speed transfert 150 ! Schmidt number 157 ! Schmidt number revised in Wanninkhof (2014) 151 158 zt1 = tsn(ji,jj,1,jp_tem) 152 159 zt2 = zt1 * zt1 153 160 zt3 = zt1 * zt2 154 zsch = sca(1,jl) + sca(2,jl) * zt1 + sca(3,jl) * zt2 + sca(4,jl) * zt3 155 156 ! speed transfert : formulae of wanninkhof 1992 161 zt4 = zt2 * zt2 162 zsch = sca(1,jl) + sca(2,jl) * zt1 + sca(3,jl) * zt2 + sca(4,jl) * zt3 + sca(5,jl) * zt4 163 164 ! speed transfert : formulae revised in Wanninkhof (2014) 157 165 zv2 = wndm(ji,jj) * wndm(ji,jj) 158 166 zsch = zsch / 660. 159 zak_cfc = ( 0.3 9* xconv2 * zv2 / SQRT(zsch) ) * tmask(ji,jj,1)167 zak_cfc = ( 0.31 * xconv2 * zv2 / SQRT(zsch) ) * tmask(ji,jj,1) 160 168 161 169 ! Input function : speed *( conc. at equil - concen at surface ) … … 188 196 ! 189 197 IF( lk_iomput ) THEN 190 CALL iom_put( "qtrCFC11" , qtr_cfc (:,:,1) ) 191 CALL iom_put( "qintCFC11" , qint_cfc(:,:,1) ) 198 jl = 0 199 DO jn = jp_cfc0, jp_cfc1 200 jl = jl + 1 201 CALL iom_put( 'qtr_'//TRIM(ctrcnm(jn)) , qtr_cfc (:,:,jl) ) 202 CALL iom_put( 'qint_'//TRIM(ctrcnm(jn)), qint_cfc(:,:,jl) ) 203 ENDDO 192 204 ELSE 193 205 IF( ln_diatrc ) THEN 194 trc2d(:,:,jp_cfc0_2d ) = qtr_cfc (:,:,1) 195 trc2d(:,:,jp_cfc0_2d + 1) = qint_cfc(:,:,1) 206 jl = 0 207 DO jn = jp_cfc0_2d, jp_cfc1_2d, 2 208 jl = jl + 1 209 trc2d(:,:,jn ) = qtr_cfc (:,:,jl) 210 trc2d(:,:,jn + 1) = qint_cfc(:,:,jl) 211 ENDDO 196 212 END IF 197 213 END IF … … 215 231 !!--------------------------------------------------------------------- 216 232 INTEGER :: jn 217 233 !!---------------------------------------------------------------------- 234 ! 235 jn = 0 218 236 ! coefficient for CFC11 219 237 !---------------------- 220 221 ! Solubility 222 soa(1,1) = -229.9261 223 soa(2,1) = 319.6552 224 soa(3,1) = 119.4471 225 soa(4,1) = -1.39165 226 227 sob(1,1) = -0.142382 228 sob(2,1) = 0.091459 229 sob(3,1) = -0.0157274 230 231 ! Schmidt number 232 sca(1,1) = 3501.8 233 sca(2,1) = -210.31 234 sca(3,1) = 6.1851 235 sca(4,1) = -0.07513 238 if ( lp_cfc11 ) then 239 jn = jn + 1 240 ! Solubility 241 soa(1,jn) = -229.9261 242 soa(2,jn) = 319.6552 243 soa(3,jn) = 119.4471 244 soa(4,jn) = -1.39165 245 246 sob(1,jn) = -0.142382 247 sob(2,jn) = 0.091459 248 sob(3,jn) = -0.0157274 249 250 ! Schmidt number 251 sca(1,jn) = 3579.2 252 sca(2,jn) = -222.63 253 sca(3,jn) = 7.5749 254 sca(4,jn) = -0.14595 255 sca(5,jn) = 0.0011874 256 257 ! atm. concentration 258 atm_cfc(:,:,jn) = p_cfc(:,:,1) 259 endif 236 260 237 261 ! coefficient for CFC12 238 262 !---------------------- 239 240 ! Solubility 241 soa(1,2) = -218.0971 242 soa(2,2) = 298.9702 243 soa(3,2) = 113.8049 244 soa(4,2) = -1.39165 245 246 sob(1,2) = -0.143566 247 sob(2,2) = 0.091015 248 sob(3,2) = -0.0153924 249 250 ! schmidt number 251 sca(1,2) = 3845.4 252 sca(2,2) = -228.95 253 sca(3,2) = 6.1908 254 sca(4,2) = -0.067430 263 if ( lp_cfc12 ) then 264 jn = jn + 1 265 ! Solubility 266 soa(1,jn) = -218.0971 267 soa(2,jn) = 298.9702 268 soa(3,jn) = 113.8049 269 soa(4,jn) = -1.39165 270 271 sob(1,jn) = -0.143566 272 sob(2,jn) = 0.091015 273 sob(3,jn) = -0.0153924 274 275 ! schmidt number 276 sca(1,jn) = 3828.1 277 sca(2,jn) = -249.86 278 sca(3,jn) = 8.7603 279 sca(4,jn) = -0.1716 280 sca(5,jn) = 0.001408 281 282 ! atm. concentration 283 atm_cfc(:,:,jn) = p_cfc(:,:,2) 284 endif 285 286 ! coefficient for SF6 287 !---------------------- 288 if ( lp_sf6 ) then 289 jn = jn + 1 290 ! Solubility 291 soa(1,jn) = -80.0343 292 soa(2,jn) = 117.232 293 soa(3,jn) = 29.5817 294 soa(4,jn) = 0.0 295 296 sob(1,jn) = 0.0335183 297 sob(2,jn) = -0.0373942 298 sob(3,jn) = 0.00774862 299 300 ! schmidt number 301 sca(1,jn) = 3177.5 302 sca(2,jn) = -200.57 303 sca(3,jn) = 6.8865 304 sca(4,jn) = -0.13335 305 sca(5,jn) = 0.0010877 306 307 ! atm. concentration 308 atm_cfc(:,:,jn) = p_cfc(:,:,3) 309 endif 255 310 256 311 IF( ln_rsttr ) THEN … … 272 327 !! *** ROUTINE trc_sms_cfc_alloc *** 273 328 !!---------------------------------------------------------------------- 274 ALLOCATE( xphem (jpi,jpj) , & 275 & qtr_cfc (jpi,jpj,jp_cfc) , & 276 & qint_cfc(jpi,jpj,jp_cfc) , STAT=trc_sms_cfc_alloc ) 329 ALLOCATE( xphem (jpi,jpj) , atm_cfc(jpyear,jphem,jp_cfc) , & 330 & qtr_cfc (jpi,jpj,jp_cfc) , qint_cfc(jpi,jpj,jp_cfc) , & 331 & soa(4,jp_cfc) , sob(3,jp_cfc) , sca(5,jp_cfc) , & 332 & STAT=trc_sms_cfc_alloc ) 277 333 ! 278 334 IF( trc_sms_cfc_alloc /= 0 ) CALL ctl_warn('trc_sms_cfc_alloc : failed to allocate arrays.') -
NEMO/branches/2018/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/MY_TRC/par_my_trc.F90
r7806 r10115 15 15 USE par_pisces , ONLY : jp_pisces_trd !: number of biological diag in PISCES 16 16 17 USE par_cfc , ONLY : jp_cfc !: number of tracers in CFC18 USE par_cfc , ONLY : jp_cfc_2d !: number of tracers in CFC19 USE par_cfc , ONLY : jp_cfc_3d !: number of tracers in CFC20 USE par_cfc , ONLY : jp_cfc_trd !: number of tracers in CFC21 22 USE par_c14b , ONLY : jp_c14b !: number of tracers in C1423 USE par_c14b , ONLY : jp_c14b_2d !: number of tracers in C1424 USE par_c14b , ONLY : jp_c14b_3d !: number of tracers in C1425 USE par_c14b , ONLY : jp_c14b_trd !: number of tracers in C1426 27 USE par_age , ONLY : jp_age !: number of tracers in AGE28 USE par_age , ONLY : jp_age_2d !: number of tracers in AGE29 USE par_age , ONLY : jp_age_3d !: number of tracers in AGE30 USE par_age , ONLY : jp_age_trd !: number of tracers in AGE31 32 17 IMPLICIT NONE 33 18 34 INTEGER, PARAMETER :: jp_lm = jp_pisces + jp_cfc + jp_c14b + jp_age!:35 INTEGER, PARAMETER :: jp_lm_2d = jp_pisces_2d + jp_cfc_2d + jp_c14b_2d + jp_age_2d!:36 INTEGER, PARAMETER :: jp_lm_3d = jp_pisces_3d + jp_cfc_3d + jp_c14b_3d + jp_age_3d!:37 INTEGER, PARAMETER :: jp_lm_trd = jp_pisces_trd + jp_cfc_trd + jp_c14b_trd + jp_age_trd!:19 INTEGER, PARAMETER :: jp_lm = jp_pisces !: 20 INTEGER, PARAMETER :: jp_lm_2d = jp_pisces_2d !: 21 INTEGER, PARAMETER :: jp_lm_3d = jp_pisces_3d !: 22 INTEGER, PARAMETER :: jp_lm_trd = jp_pisces_trd !: 38 23 39 24 #if defined key_my_trc -
NEMO/branches/2018/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/MY_TRC/trcnam_my_trc.F90
r3680 r10115 36 36 !! 37 37 !!---------------------------------------------------------------------- 38 INTEGER :: jn 38 39 ! 39 40 IF(lwp) WRITE(numout,*) 40 41 IF(lwp) WRITE(numout,*) ' trc_nam_my_trc : read MY_TRC namelists' 41 42 IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~~' 43 ! 44 do jn = jp_myt0 , jp_myt1 45 ctrcnm (jn) = 'NONAME' 46 ctrcln (jn) = 'NO Long Name' 47 ctrcun (jn) = 'NOUNIT' 48 ln_trc_ini(jn) = .false. 49 ln_trc_wri(jn) = .true. 50 enddo 42 51 ! 43 END SUBROUTINE trc_nam_my_trc52 END SUBROUTINE trc_nam_my_trc 44 53 45 54 #else -
NEMO/branches/2018/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zlim.F90
r7398 r10115 190 190 DO ji = 1, jpi 191 191 ! denitrification factor computed from O2 levels 192 nitrfac(ji,jj,jk) = MAX( 0.e0, 0.4 * ( 6.e-6 - trb(ji,jj,jk,jpoxy) ) &192 nitrfac(ji,jj,jk) = MAX( 0.e0, 0.4 * ( 6.e-6 - trb(ji,jj,jk,jpoxy) ) & 193 193 & / ( oxymin + trb(ji,jj,jk,jpoxy) ) ) 194 nitrfac(ji,jj,jk) = MIN( 1., nitrfac(ji,jj,jk) ) 194 nitrfac(ji,jj,jk) = MIN( 1., nitrfac(ji,jj,jk) ) 195 ! 196 ! denitrification factor computed from NO3 levels 197 nitrfac2(ji,jj,jk) = MAX( 0.e0, ( 1.E-6 - trb(ji,jj,jk,jpno3) ) & 198 & / ( 1.E-6 + trb(ji,jj,jk,jpno3) ) ) 199 nitrfac2(ji,jj,jk) = MIN( 1., nitrfac2(ji,jj,jk) ) 195 200 END DO 196 201 END DO … … 264 269 ! 265 270 nitrfac (:,:,:) = 0._wp 271 nitrfac2(:,:,:) = 0._wp 266 272 ! 267 273 END SUBROUTINE p4z_lim_init -
NEMO/branches/2018/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zlys.F90
r7806 r10115 131 131 132 132 IF( lk_iomput .AND. knt == nrdttrc ) THEN 133 IF( iom_use( "PH" ) ) CALL iom_put( "PH" , -1. * LOG10( hi(:,:,:) )* tmask(:,:,:) )133 IF( iom_use( "PH" ) ) CALL iom_put( "PH" , -1. * LOG10( MAX( rtrn, hi(:,:,:) ) ) * tmask(:,:,:) ) 134 134 IF( iom_use( "CO3" ) ) CALL iom_put( "CO3" , zco3(:,:,:) * 1.e+3 * tmask(:,:,:) ) 135 135 IF( iom_use( "CO3sat" ) ) CALL iom_put( "CO3sat", zco3sat(:,:,:) * 1.e+3 * tmask(:,:,:) ) -
NEMO/branches/2018/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmeso.F90
r7398 r10115 111 111 ! no real reason except that it seems to be more stable and may mimic predation 112 112 ! --------------------------------------------------------------- 113 ztortz2 = mzrat2 * 1.e6 * zfact * trb(ji,jj,jk,jpmes) 113 ztortz2 = mzrat2 * 1.e6 * zfact * trb(ji,jj,jk,jpmes) * (1. - nitrfac(ji,jj,jk) ) 114 114 ! 115 115 zcompadi = MAX( ( trb(ji,jj,jk,jpdia) - xthresh2dia ), 0.e0 ) … … 126 126 zdenom = zfoodlim / ( xkgraz2 + zfoodlim ) 127 127 zdenom2 = zdenom / ( zfood + rtrn ) 128 zgraze2 = grazrat2 * zstep * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpmes) 128 zgraze2 = grazrat2 * zstep * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpmes) * (1. - nitrfac(ji,jj,jk) ) 129 129 130 130 131 zgrazd = zgraze2 * xprefc * zcompadi * zdenom2 … … 142 143 # if ! defined key_kriest 143 144 zgrazffeg = grazflux * zstep * wsbio4(ji,jj,jk) & 144 & * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpgoc) * trb(ji,jj,jk,jpmes) 145 & * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpgoc) * trb(ji,jj,jk,jpmes) & 146 & * (1. - nitrfac(ji,jj,jk)) 145 147 zgrazfffg = zgrazffeg * trb(ji,jj,jk,jpbfe) / (trb(ji,jj,jk,jpgoc) + rtrn) 146 148 # endif 147 149 zgrazffep = grazflux * zstep * wsbio3(ji,jj,jk) & 148 & * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jpmes) 150 & * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jpmes) & 151 & * (1. - nitrfac(ji,jj,jk)) 149 152 zgrazfffp = zgrazffep * trb(ji,jj,jk,jpsfe) / (trb(ji,jj,jk,jppoc) + rtrn) 150 153 ! -
NEMO/branches/2018/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmicro.F90
r7398 r10115 103 103 ! no real reason except that it seems to be more stable and may mimic predation. 104 104 ! --------------------------------------------------------------- 105 ztortz = mzrat * 1.e6 * zfact * trb(ji,jj,jk,jpzoo) 105 ztortz = mzrat * 1.e6 * zfact * trb(ji,jj,jk,jpzoo) * (1. - nitrfac(ji,jj,jk)) 106 106 107 107 zcompadi = MIN( MAX( ( trb(ji,jj,jk,jpdia) - xthreshdia ), 0.e0 ), xsizedia ) … … 115 115 zdenom = zfoodlim / ( xkgraz + zfoodlim ) 116 116 zdenom2 = zdenom / ( zfood + rtrn ) 117 zgraze = grazrat * zstep * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpzoo) 117 zgraze = grazrat * zstep * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpzoo) * (1. - nitrfac(ji,jj,jk)) 118 118 119 119 zgrazp = zgraze * xpref2p * zcompaph * zdenom2 -
NEMO/branches/2018/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zopt.F90
r7520 r10115 36 36 37 37 TYPE(FLD), ALLOCATABLE, DIMENSION(:) :: sf_par ! structure of input par 38 INTEGER , PARAMETER :: nbtimes = 36 5!: maximum number of times record in a file38 INTEGER , PARAMETER :: nbtimes = 366 !: maximum number of times record in a file 39 39 INTEGER :: ntimes_par ! number of time steps in a file 40 40 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: par_varsw !: PAR fraction of shortwave -
NEMO/branches/2018/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zrem.F90
r7398 r10115 67 67 ! 68 68 INTEGER :: ji, jj, jk 69 REAL(wp) :: zremip, zremik, zsiremin 69 REAL(wp) :: zremip, zremik, zsiremin, zammonic 70 70 REAL(wp) :: zsatur, zsatur2, znusil, znusil2, zdep, zdepmin, zfactdep 71 71 REAL(wp) :: zbactfer, zorem, zorem2, zofer, zolimit … … 78 78 REAL(wp), POINTER, DIMENSION(:,: ) :: ztempbac 79 79 REAL(wp), POINTER, DIMENSION(:,:,:) :: zdepbac, zolimi, zdepprod, zw3d 80 REAL(wp), POINTER, DIMENSION(:,:,:) :: zoxyrem 80 81 !!--------------------------------------------------------------------- 81 82 ! … … 84 85 ! Allocate temporary workspace 85 86 CALL wrk_alloc( jpi, jpj, ztempbac ) 86 CALL wrk_alloc( jpi, jpj, jpk, zdepbac, zdepprod, zolimi )87 CALL wrk_alloc( jpi, jpj, jpk, zdepbac, zdepprod, zolimi, zoxyrem ) 87 88 88 89 ! Initialisation of temprary arrys … … 129 130 ! Ammonification in suboxic waters with denitrification 130 131 ! ------------------------------------------------------- 131 denitr(ji,jj,jk) = MIN( ( trb(ji,jj,jk,jpno3) - rtrn ) / rdenit, & 132 & zremik * nitrfac(ji,jj,jk) * trb(ji,jj,jk,jpdoc) ) 132 zammonic = zremik * nitrfac(ji,jj,jk) * trb(ji,jj,jk,jpdoc) 133 denitr(ji,jj,jk) = zammonic * ( 1. - nitrfac2(ji,jj,jk) ) 134 zoxyrem(ji,jj,jk) = zammonic * nitrfac2(ji,jj,jk) 133 135 ! 134 136 zolimi (ji,jj,jk) = MAX( 0.e0, zolimi (ji,jj,jk) ) 135 137 denitr (ji,jj,jk) = MAX( 0.e0, denitr (ji,jj,jk) ) 138 zoxyrem(ji,jj,jk) = MAX( 0.e0, zoxyrem(ji,jj,jk) ) 136 139 ! 137 140 END DO … … 157 160 tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + zonitr - rdenita * denitnh4(ji,jj,jk) 158 161 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2nit * zonitr 159 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2 * rno3 * zonitr + rno3 * ( rdenita - 1. ) * denitnh4(ji,jj,jk) 162 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2 * rno3 * zonitr & 163 & + rno3 * ( rdenita - 1. ) * denitnh4(ji,jj,jk) 160 164 END DO 161 165 END DO … … 291 295 292 296 DO jk = 1, jpkm1 293 tra(:,:,jk,jppo4) = tra(:,:,jk,jppo4) + zolimi (:,:,jk) + denitr(:,:,jk) 294 tra(:,:,jk,jpnh4) = tra(:,:,jk,jpnh4) + zolimi (:,:,jk) + denitr(:,:,jk) 297 tra(:,:,jk,jppo4) = tra(:,:,jk,jppo4) + zolimi (:,:,jk) + denitr(:,:,jk) + zoxyrem(:,:,jk) 298 tra(:,:,jk,jpnh4) = tra(:,:,jk,jpnh4) + zolimi (:,:,jk) + denitr(:,:,jk) + zoxyrem(:,:,jk) 295 299 tra(:,:,jk,jpno3) = tra(:,:,jk,jpno3) - denitr (:,:,jk) * rdenit 296 tra(:,:,jk,jpdoc) = tra(:,:,jk,jpdoc) - zolimi (:,:,jk) - denitr(:,:,jk) 300 tra(:,:,jk,jpdoc) = tra(:,:,jk,jpdoc) - zolimi (:,:,jk) - denitr(:,:,jk) - zoxyrem(:,:,jk) 297 301 tra(:,:,jk,jpoxy) = tra(:,:,jk,jpoxy) - zolimi (:,:,jk) * o2ut 298 tra(:,:,jk,jpdic) = tra(:,:,jk,jpdic) + zolimi (:,:,jk) + denitr(:,:,jk) 299 tra(:,:,jk,jptal) = tra(:,:,jk,jptal) + rno3 * ( zolimi(:,:,jk) + ( rdenit + 1.) * denitr(:,:,jk) ) 302 tra(:,:,jk,jpdic) = tra(:,:,jk,jpdic) + zolimi (:,:,jk) + denitr(:,:,jk) + zoxyrem(:,:,jk) 303 tra(:,:,jk,jptal) = tra(:,:,jk,jptal) + rno3 * ( zolimi(:,:,jk) + zoxyrem(:,:,jk) & 304 & + ( rdenit + 1.) * denitr(:,:,jk) ) 300 305 END DO 301 306 … … 323 328 ! 324 329 CALL wrk_dealloc( jpi, jpj, ztempbac ) 325 CALL wrk_dealloc( jpi, jpj, jpk, zdepbac, zdepprod, zolimi )330 CALL wrk_dealloc( jpi, jpj, jpk, zdepbac, zdepprod, zolimi, zoxyrem ) 326 331 ! 327 332 IF( nn_timing == 1 ) CALL timing_stop('p4z_rem') -
NEMO/branches/2018/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsed.F90
r7520 r10115 64 64 REAL(wp) :: zwflux, zfminus, zfplus 65 65 REAL(wp) :: zlim, zfact, zfactcal 66 REAL(wp) :: zo2, zno3, zflx, zpdenit, z1pdenit, z denitt, zolimit66 REAL(wp) :: zo2, zno3, zflx, zpdenit, z1pdenit, zolimit 67 67 REAL(wp) :: zsiloss, zcaloss, zws3, zws4, zwsc, zdep, zwstpoc 68 68 REAL(wp) :: ztrfer, ztrpo4, zwdust, zlight … … 323 323 tra(ji,jj,ikt,jptal) = tra(ji,jj,ikt,jptal) + zcaloss * zrivalk * 2.0 324 324 tra(ji,jj,ikt,jpdic) = tra(ji,jj,ikt,jpdic) + zcaloss * zrivalk 325 zsedcal(ji,jj) = (1.0 - zrivalk) * zcaloss / zdep326 zsedsi (ji,jj) = (1.0 - zrivsil) * zsiloss / zdep325 zsedcal(ji,jj) = (1.0 - zrivalk) * zcaloss * fse3t(ji,jj,ikt) 326 zsedsi (ji,jj) = (1.0 - zrivsil) * zsiloss * fse3t(ji,jj,ikt) 327 327 #endif 328 328 END DO … … 354 354 355 355 #if ! defined key_sed 356 ! The 0.5 factor in zpdenit and zdenitt is to avoid negative NO3 concentration after both denitrification 357 ! in the sediments and just above the sediments. Not very clever, but simpliest option. 358 zpdenit = MIN( 0.5 * ( trb(ji,jj,ikt,jpno3) - rtrn ) / rdenit, zdenit2d(ji,jj) * zwstpoc * zrivno3 ) 356 ! The 0.5 factor in zpdenit is to avoid negative NO3 concentration after 357 ! denitrification in the sediments. Not very clever, but simpliest option. 358 zpdenit = MIN( 0.5 * ( trb(ji,jj,ikt,jpno3) - rtrn ) / rdenit, & 359 zdenit2d(ji,jj) * zwstpoc * zrivno3 * (1. - nitrfac2(ji,jj,ikt) ) ) 359 360 z1pdenit = zwstpoc * zrivno3 - zpdenit 360 361 zolimit = MIN( ( trb(ji,jj,ikt,jpoxy) - rtrn ) / o2ut, z1pdenit * ( 1.- nitrfac(ji,jj,ikt) ) ) 361 zdenitt = MIN( 0.5 * ( trb(ji,jj,ikt,jpno3) - rtrn ) / rdenit, z1pdenit * nitrfac(ji,jj,ikt) ) 362 tra(ji,jj,ikt,jpdoc) = tra(ji,jj,ikt,jpdoc) + z1pdenit - zolimit - zdenitt 363 tra(ji,jj,ikt,jppo4) = tra(ji,jj,ikt,jppo4) + zpdenit + zolimit + zdenitt 364 tra(ji,jj,ikt,jpnh4) = tra(ji,jj,ikt,jpnh4) + zpdenit + zolimit + zdenitt 365 tra(ji,jj,ikt,jpno3) = tra(ji,jj,ikt,jpno3) - rdenit * (zpdenit + zdenitt) 362 tra(ji,jj,ikt,jpdoc) = tra(ji,jj,ikt,jpdoc) + z1pdenit - zolimit 363 tra(ji,jj,ikt,jppo4) = tra(ji,jj,ikt,jppo4) + zpdenit + zolimit 364 tra(ji,jj,ikt,jpnh4) = tra(ji,jj,ikt,jpnh4) + zpdenit + zolimit 365 tra(ji,jj,ikt,jpno3) = tra(ji,jj,ikt,jpno3) - rdenit * zpdenit 366 366 tra(ji,jj,ikt,jpoxy) = tra(ji,jj,ikt,jpoxy) - zolimit * o2ut 367 tra(ji,jj,ikt,jptal) = tra(ji,jj,ikt,jptal) + rno3 * (zolimit + (1.+rdenit) * (zpdenit + zdenitt))368 tra(ji,jj,ikt,jpdic) = tra(ji,jj,ikt,jpdic) + zpdenit + zolimit + zdenitt369 sdenit(ji,jj) = rdenit * zpdenit / zdep370 zsedc(ji,jj) = (1. - zrivno3) * zwstpoc / zdep367 tra(ji,jj,ikt,jptal) = tra(ji,jj,ikt,jptal) + rno3 * (zolimit + (1.+rdenit) * zpdenit ) 368 tra(ji,jj,ikt,jpdic) = tra(ji,jj,ikt,jpdic) + zpdenit + zolimit 369 sdenit(ji,jj) = rdenit * zpdenit * fse3t(ji,jj,ikt) 370 zsedc(ji,jj) = (1. - zrivno3) * zwstpoc * fse3t(ji,jj,ikt) 371 371 #endif 372 372 END DO … … 415 415 IF( lk_iomput ) THEN 416 416 IF( knt == nrdttrc ) THEN 417 zfact = 1.e+3 * rfact2r * rno3 ! conversion from molC/l/kt to molN/m3/s418 IF( iom_use("Nfix" ) ) CALL iom_put( "Nfix", nitrpot(:,:,:) * nitrfix * zfact * tmask(:,:,:) ) ! nitrogen fixation417 zfact = 1.e+3 * rfact2r ! conversion from molC/l/kt to molC/m3/s 418 IF( iom_use("Nfix" ) ) CALL iom_put( "Nfix", nitrpot(:,:,:) * nitrfix * rno3 * zfact * tmask(:,:,:) ) ! nitrogen fixation 419 419 IF( iom_use("INTNFIX") ) THEN ! nitrogen fixation rate in ocean ( vertically integrated ) 420 420 zwork1(:,:) = 0. 421 421 DO jk = 1, jpkm1 422 zwork1(:,:) = zwork1(:,:) + nitrpot(:,:,jk) * nitrfix * zfact * fse3t(:,:,jk) * tmask(:,:,jk)422 zwork1(:,:) = zwork1(:,:) + nitrpot(:,:,jk) * nitrfix * rno3 * zfact * fse3t(:,:,jk) * tmask(:,:,jk) 423 423 ENDDO 424 424 CALL iom_put( "INTNFIX" , zwork1 ) 425 425 ENDIF 426 IF( iom_use("SedCal" ) ) CALL iom_put( "SedCal", zsedcal(:,:) * 1.e+3)427 IF( iom_use("SedSi" ) ) CALL iom_put( "SedSi", zsedsi (:,:) * 1.e+3)428 IF( iom_use("SedC" ) ) CALL iom_put( "SedC", zsedc (:,:) * 1.e+3)429 IF( iom_use("Sdenit" ) ) CALL iom_put( "Sdenit", sdenit (:,:) * 1.e+3 * rno3)426 IF( iom_use("SedCal" ) ) CALL iom_put( "SedCal", zsedcal(:,:) * zfact ) 427 IF( iom_use("SedSi" ) ) CALL iom_put( "SedSi", zsedsi (:,:) * zfact ) 428 IF( iom_use("SedC" ) ) CALL iom_put( "SedC", zsedc (:,:) * zfact ) 429 IF( iom_use("Sdenit" ) ) CALL iom_put( "Sdenit", sdenit (:,:) * rno3 * zfact ) 430 430 ENDIF 431 431 ELSE 432 IF( ln_diatrc ) & 433 & trc2d(:,:,jp_pcs0_2d + 12) = nitrpot(:,:,1) * nitrfix * rno3 * 1.e+3 * rfact2r * fse3t(:,:,1) * tmask(:,:,1) 432 IF( ln_diatrc ) THEN 433 zfact = 1.e+3 * rfact2r ! conversion from molC/l/kt to molC/m3/s 434 trc2d(:,:,jp_pcs0_2d + 12) = nitrpot(:,:,1) * nitrfix * rno3 * zfact * fse3t(:,:,1) * tmask(:,:,1) 435 ENDIF 434 436 ENDIF 435 437 ! -
NEMO/branches/2018/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsms.F90
r7806 r10115 450 450 451 451 IF( kt == nittrc000 ) THEN 452 xfact1 = rfact2r * 12. / 1.e15 * ryyss ! conversion molC/kt --> PgC/yr 453 xfact2 = 1.e+3 * rno3 * 14. / 1.e12 * ryyss ! conversion molC/l/s ----> TgN/m3/yr 454 xfact3 = 1.e+3 * rfact2r * rno3 ! conversion molC/l/kt ----> molN/m3/s 452 455 IF( ln_check_mass .AND. lwp) THEN ! Open budget file of NO3, ALK, Si, Fer 453 456 CALL ctl_opn( numco2, 'carbon.budget' , 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, 6, .FALSE., narea ) 454 457 CALL ctl_opn( numnut, 'nutrient.budget', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, 6, .FALSE., narea ) 455 458 CALL ctl_opn( numnit, 'nitrogen.budget', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, 6, .FALSE., narea ) 456 xfact1 = rfact2r * 12. / 1.e15 * ryyss ! conversion molC/kt --> PgC/yr457 xfact2 = 1.e+3 * rno3 * 14. / 1.e12 * ryyss ! conversion molC/l/s ----> TgN/m3/yr458 xfact3 = 1.e+3 * rfact2r * rno3 ! conversion molC/l/kt ----> molN/m3/s459 459 cltxt='time-step Alkalinity Nitrate Phosphorus Silicate Iron' 460 460 IF( lwp ) WRITE(numnut,*) TRIM(cltxt) … … 529 529 IF( iom_use( "tnfix" ) .OR. ( ln_check_mass .AND. kt == nitend ) ) THEN 530 530 znitrpottot = glob_sum ( nitrpot(:,:,:) * nitrfix * cvol(:,:,:) ) 531 CALL iom_put( "tnfix" , znitrpottot * 1.e+3 * rno3 ) ! Global nitrogen fixation molC/l to molN/m3531 CALL iom_put( "tnfix" , znitrpottot * xfact3 ) ! Global nitrogen fixation molC/l to molN/m3 532 532 ENDIF 533 533 ! 534 534 IF( iom_use( "tdenit" ) .OR. ( ln_check_mass .AND. kt == nitend ) ) THEN 535 zrdenittot = glob_sum ( denitr(:,:,:) * rdenit * xnegtr(:,:,:) * cvol(:,:,:) ) 536 CALL iom_put( "tdenit" , zrdenittot * 1.e+3 * rno3 ) ! Total denitrification molC/l to molN/m3 537 ENDIF 538 ! 539 IF( iom_use( "Sdenit" ) .OR. ( ln_check_mass .AND. kt == nitend ) ) THEN 540 zsdenittot = glob_sum ( sdenit(:,:) * e1e2t(:,:) ) 541 CALL iom_put( "Sdenit", sdenit(:,:) * xfact3 * tmask(:,:,1) ) ! Nitrate reduction in the sediments 535 zrdenittot = glob_sum ( denitr(:,:,:) * rdenit * xnegtr(:,:,:) * cvol(:,:,:) ) ! denitrification in the water column 536 zsdenittot = glob_sum ( sdenit(:,:) * e1e2t(:,:) * tmask(:,:,1) ) ! denitrification in the sediments 537 CALL iom_put( "tdenit" , ( zrdenittot + zsdenittot ) * xfact3 ) ! Total denitrification in molN/m3 542 538 ENDIF 543 539 -
NEMO/branches/2018/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/PISCES/sms_pisces.F90
r7806 r10115 87 87 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xfracal !: ?? 88 88 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: nitrfac !: ?? 89 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: nitrfac2 !: ?? 89 90 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimbac !: ?? 90 91 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimbacl !: ?? … … 147 148 ALLOCATE( xfracal (jpi,jpj,jpk), nitrfac(jpi,jpj,jpk), & 148 149 & xlimbac (jpi,jpj,jpk), xdiss (jpi,jpj,jpk), & 149 & xlimbacl(jpi,jpj,jpk), prodcal(jpi,jpj,jpk), STAT=ierr(3) ) 150 & xlimbacl(jpi,jpj,jpk), prodcal(jpi,jpj,jpk), & 151 & nitrfac2(jpi,jpj,jpk), STAT=ierr(3) ) 150 152 151 153 !* Variable for chemistry of the CO2 cycle -
NEMO/branches/2018/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/TRP/trcnxt.F90
r8754 r10115 49 49 50 50 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:) :: r2dt 51 51 REAL(wp) :: rfact1, rfact2 52 53 !! * Substitutions 54 # include "domzgr_substitute.h90" 55 # include "vectopt_loop_substitute.h90" 52 56 !!---------------------------------------------------------------------- 53 57 !! NEMO/TOP 3.3 , NEMO Consortium (2010) … … 145 149 ! 146 150 ELSE 147 ! Leap-Frog + Asselin filter time stepping 148 IF( lk_vvl ) THEN 149 150 IF( ln_crs_top )THEN 151 CALL tra_nxt_vvl_crs( kt, nittrc000, rdttrc, 'TRC', trb, trn, tra, & 152 & sbc_trc, sbc_trc_b, jptra ) ! variable volume level (vvl) 153 ELSE 154 CALL tra_nxt_vvl( kt, nittrc000, rdttrc, 'TRC', trb, trn, tra, & 155 & sbc_trc, sbc_trc_b, jptra ) ! variable volume level (vvl) 151 IF( .NOT. lk_offline ) THEN ! Leap-Frog + Asselin filter time stepping 152 153 IF( lk_vvl ) THEN 154 IF( ln_crs_top )THEN 155 CALL tra_nxt_vvl_crs( kt, nittrc000, rdttrc, 'TRC', trb, trn, tra, & 156 & sbc_trc, sbc_trc_b, jptra ) ! variable volume level (vvl) 157 ELSE 158 CALL tra_nxt_vvl( kt, nittrc000, rdttrc, 'TRC', trb, trn, tra, & 159 & sbc_trc, sbc_trc_b, jptra ) ! variable volume level (vvl) 160 ENDIF 161 ELSE 162 CALL tra_nxt_fix( kt, nittrc000, 'TRC', trb, trn, tra, jptra ) ! fixed volume level 156 163 ENDIF 157 ELSE ; CALL tra_nxt_fix( kt, nittrc000, 'TRC', trb, trn, tra, jptra ) ! fixed volume level 164 165 ELSE 166 CALL trc_nxt_off( kt ) ! offline 158 167 ENDIF 168 169 159 170 ENDIF 160 171 … … 181 192 END SUBROUTINE trc_nxt 182 193 194 SUBROUTINE trc_nxt_off( kt ) 195 !!---------------------------------------------------------------------- 196 !! *** ROUTINE tra_nxt_vvl *** 197 !! 198 !! ** Purpose : Time varying volume: apply the Asselin time filter 199 !! and swap the tracer fields. 200 !! 201 !! ** Method : - Apply a thickness weighted Asselin time filter on now fields. 202 !! - save in (ta,sa) a thickness weighted average over the three 203 !! time levels which will be used to compute rdn and thus the semi- 204 !! implicit hydrostatic pressure gradient (ln_dynhpg_imp = T) 205 !! - swap tracer fields to prepare the next time_step. 206 !! This can be summurized for tempearture as: 207 !! ztm = ( e3t_n*tn + rbcp*[ e3t_b*tb - 2 e3t_n*tn + e3t_a*ta ] ) ln_dynhpg_imp = T 208 !! /( e3t_n + rbcp*[ e3t_b - 2 e3t_n + e3t_a ] ) 209 !! ztm = 0 otherwise 210 !! tb = ( e3t_n*tn + atfp*[ e3t_b*tb - 2 e3t_n*tn + e3t_a*ta ] ) 211 !! /( e3t_n + atfp*[ e3t_b - 2 e3t_n + e3t_a ] ) 212 !! tn = ta 213 !! ta = zt (NB: reset to 0 after eos_bn2 call) 214 !! 215 !! ** Action : - (tb,sb) and (tn,sn) ready for the next time step 216 !! - (ta,sa) time averaged (t,s) (ln_dynhpg_imp = T) 217 !!---------------------------------------------------------------------- 218 INTEGER , INTENT(in ) :: kt ! ocean time-step index 219 !! 220 INTEGER :: ji, jj, jk, jn ! dummy loop indices 221 REAL(wp) :: ztc_a , ztc_n , ztc_b , ztc_f , ztc_d ! local scalar 222 REAL(wp) :: ze3t_b, ze3t_n, ze3t_a, ze3t_f, ze3t_d ! - - 223 !!---------------------------------------------------------------------- 224 ! 225 IF( kt == nittrc000 ) THEN 226 IF(lwp) WRITE(numout,*) 227 IF(lwp) WRITE(numout,*) 'trc_nxt_off : time stepping' 228 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~' 229 IF( lk_vvl ) THEN 230 rfact1 = atfp * rdttrc(1) 231 rfact2 = rfact1 / rau0 232 ENDIF 233 ENDIF 234 ! 235 DO jn = 1, jptra 236 DO jk = 1, jpkm1 237 DO jj = 1, jpj 238 DO ji = 1, jpi 239 ze3t_b = fse3t_b(ji,jj,jk) 240 ze3t_n = fse3t_n(ji,jj,jk) 241 ze3t_a = fse3t_a(ji,jj,jk) 242 ! ! tracer content at Before, now and after 243 ztc_b = trb(ji,jj,jk,jn) * ze3t_b 244 ztc_n = trn(ji,jj,jk,jn) * ze3t_n 245 ztc_a = tra(ji,jj,jk,jn) * ze3t_a 246 ! 247 ze3t_d = ze3t_a - 2. * ze3t_n + ze3t_b 248 ztc_d = ztc_a - 2. * ztc_n + ztc_b 249 ! 250 ze3t_f = ze3t_n + atfp * ze3t_d 251 ztc_f = ztc_n + atfp * ztc_d 252 ! 253 IF( lk_vvl .AND. jk == mikt(ji,jj) ) THEN ! first level 254 ze3t_f = ze3t_f - rfact2 * ( emp_b(ji,jj) - emp(ji,jj) ) 255 ztc_f = ztc_f - rfact1 * ( sbc_trc(ji,jj,jn) - sbc_trc_b(ji,jj,jn) ) 256 ENDIF 257 258 ze3t_f = 1.e0 / ze3t_f 259 trb(ji,jj,jk,jn) = ztc_f * ze3t_f ! ptb <-- ptn filtered 260 trn(ji,jj,jk,jn) = tra(ji,jj,jk,jn) ! ptn <-- pta 261 ! 262 END DO 263 END DO 264 END DO 265 ! 266 END DO 267 ! 268 END SUBROUTINE trc_nxt_off 269 183 270 #else 184 271 !!---------------------------------------------------------------------- -
NEMO/branches/2018/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/TRP/trcrad.F90
r7806 r10115 22 22 PRIVATE 23 23 24 PUBLIC trc_rad 24 PUBLIC trc_rad, trc_rad_sms ! routine called by trcstp.F90 25 25 26 26 !! * Substitutions -
NEMO/branches/2018/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/oce_trc.F90
r10106 r10115 12 12 USE dom_oce , ONLY : gdepw_1d 13 13 USE dom_oce , ONLY : rdttra 14 USE dom_oce , ONLY : atfp 14 15 USE dom_oce , ONLY : Agrif_Root => Agrif_Root 15 16 USE sbc_oce , ONLY : nn_ice_embd -
NEMO/branches/2018/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/trcbc.F90
r5602 r10115 277 277 ! OPEN boundary conditions: DOES NOT WORK. Waiting for stable BDY 278 278 IF( nb_trcobc > 0 ) THEN 279 if (lwp) write(numout,'(a,i5,a,i 5)') ' reading OBC data for ', nb_trcobc ,' variables at step ', kt279 if (lwp) write(numout,'(a,i5,a,i12)') ' reading OBC data for ', nb_trcobc ,' variables at step ', kt 280 280 CALL fld_read(kt,1,sf_trcobc) 281 281 ! vertical interpolation on s-grid and partial step to be added … … 284 284 ! SURFACE boundary conditions 285 285 IF( nb_trcsbc > 0 ) THEN 286 if (lwp) write(numout,'(a,i5,a,i 5)') ' reading SBC data for ', nb_trcsbc ,' variables at step ', kt286 if (lwp) write(numout,'(a,i5,a,i12)') ' reading SBC data for ', nb_trcsbc ,' variables at step ', kt 287 287 CALL fld_read(kt,1,sf_trcsbc) 288 288 ENDIF … … 290 290 ! COASTAL boundary conditions 291 291 IF( nb_trccbc > 0 ) THEN 292 if (lwp) write(numout,'(a,i5,a,i 5)') ' reading CBC data for ', nb_trccbc ,' variables at step ', kt292 if (lwp) write(numout,'(a,i5,a,i12)') ' reading CBC data for ', nb_trccbc ,' variables at step ', kt 293 293 CALL fld_read(kt,1,sf_trccbc) 294 294 ENDIF -
NEMO/branches/2018/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/trcdta.F90
r7398 r10115 200 200 DO ji = 1, jpi 201 201 DO jk = 1, jpk ! determines the intepolated T-S profiles at each (i,j) points 202 zl = fsdept_n(ji,jj,jk)202 zl = gdept_0(ji,jj,jk) 203 203 IF( zl < gdept_1d(1 ) ) THEN ! above the first level of data 204 204 ztp(jk) = ztrcdta(ji,jj,1) … … 229 229 ik = mbkt(ji,jj) 230 230 IF( ik > 1 ) THEN 231 zl = ( gdept_1d(ik) - fsdept_n(ji,jj,ik) ) / ( gdept_1d(ik) - gdept_1d(ik-1) )231 zl = ( gdept_1d(ik) - gdept_0(ji,jj,ik) ) / ( gdept_1d(ik) - gdept_1d(ik-1) ) 232 232 ztrcdta(ji,jj,ik) = (1.-zl) * ztrcdta(ji,jj,ik) + zl * ztrcdta(ji,jj,ik-1) 233 233 ENDIF 234 234 ik = mikt(ji,jj) 235 235 IF( ik > 1 ) THEN 236 zl = ( fsdept_n(ji,jj,ik) - gdept_1d(ik) ) / ( gdept_1d(ik+1) - gdept_1d(ik) )236 zl = ( gdept_0(ji,jj,ik) - gdept_1d(ik) ) / ( gdept_1d(ik+1) - gdept_1d(ik) ) 237 237 ztrcdta(ji,jj,ik) = (1.-zl) * ztrcdta(ji,jj,ik) + zl * ztrcdta(ji,jj,ik+1) 238 238 ENDIF -
NEMO/branches/2018/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/trcice.F90
r6772 r10115 52 52 IF ( nn_ice_tr == 1 ) THEN 53 53 IF( lk_pisces ) CALL trc_ice_ini_pisces ! PISCES bio-model 54 IF( lk_my_trc ) CALL trc_ice_ini_my_trc ! MY_TRC tracers 54 55 IF( lk_cfc ) CALL trc_ice_ini_cfc ! CFC tracers 55 56 IF( lk_c14b ) CALL trc_ice_ini_c14b ! C14 bomb tracer 56 IF( lk_my_trc ) CALL trc_ice_ini_my_trc ! MY_TRC tracers57 57 ENDIF 58 58 -
NEMO/branches/2018/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/trcini.F90
r7806 r10115 99 99 100 100 IF( lk_pisces ) CALL trc_ini_pisces ! PISCES bio-model 101 IF( lk_my_trc ) CALL trc_ini_my_trc ! MY_TRC tracers 101 102 IF( lk_cfc ) CALL trc_ini_cfc ! CFC tracers 102 103 IF( lk_c14b ) CALL trc_ini_c14b ! C14 bomb tracer 103 104 IF( lk_age ) CALL trc_ini_age ! AGE tracer 104 IF( lk_my_trc ) CALL trc_ini_my_trc ! MY_TRC tracers105 105 106 106 CALL trc_ice_ini ! Tracers in sea ice -
NEMO/branches/2018/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/trcnam.F90
r7806 r10115 79 79 ENDIF 80 80 81 ! Call the ice module for tracers 82 ! ------------------------------- 83 CALL trc_nam_ice 84 85 ! namelist of SMS 86 ! --------------- 87 IF( lk_pisces ) THEN ; CALL trc_nam_pisces ! PISCES bio-model 88 ELSE ; IF(lwp) WRITE(numout,*) ' PISCES not used' 89 ENDIF 90 91 IF( lk_my_trc ) THEN ; CALL trc_nam_my_trc ! MY_TRC tracers 92 ELSE ; IF(lwp) WRITE(numout,*) ' MY_TRC not used' 93 ENDIF 94 95 IF( lk_cfc ) THEN ; CALL trc_nam_cfc ! CFC tracers 96 ELSE ; IF(lwp) WRITE(numout,*) ' CFC not used' 97 ENDIF 98 99 IF( lk_c14b ) THEN ; CALL trc_nam_c14b ! C14 bomb tracers 100 ELSE ; IF(lwp) WRITE(numout,*) ' C14 not used' 101 ENDIF 102 103 IF( lk_age ) THEN ; CALL trc_nam_age ! AGE tracer 104 ELSE ; IF(lwp) WRITE(numout,*) ' AGE not used' 105 ENDIF 106 81 107 IF(lwp) THEN ! control print 82 108 WRITE(numout,*) … … 119 145 ENDIF 120 146 147 ! 148 END SUBROUTINE trc_nam 149 150 SUBROUTINE trc_nam_run 151 !!--------------------------------------------------------------------- 152 !! *** ROUTINE trc_nam *** 153 !! 154 !! ** Purpose : read options for the passive tracer run (namelist) 155 !! 156 !!--------------------------------------------------------------------- 157 NAMELIST/namtrc_run/ nn_dttrc, nn_writetrc, ln_rsttr, nn_rsttr, ln_top_euler, & 158 & cn_trcrst_indir, cn_trcrst_outdir, cn_trcrst_in, cn_trcrst_out 159 160 161 INTEGER :: ios ! Local integer output status for namelist read 162 163 !!--------------------------------------------------------------------- 164 165 166 IF(lwp) WRITE(numout,*) 'trc_nam : read the passive tracer namelists' 167 IF(lwp) WRITE(numout,*) '~~~~~~~' 168 169 CALL ctl_opn( numnat_ref, 'namelist_top_ref' , 'OLD' , 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. ) 170 CALL ctl_opn( numnat_cfg, 'namelist_top_cfg' , 'OLD' , 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. ) 171 IF(lwm) CALL ctl_opn( numont, 'output.namelist.top', 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE., 1 ) 172 173 REWIND( numnat_ref ) ! Namelist namtrc in reference namelist : Passive tracer variables 174 READ ( numnat_ref, namtrc_run, IOSTAT = ios, ERR = 901) 175 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc in reference namelist', lwp ) 176 177 REWIND( numnat_cfg ) ! Namelist namtrc in configuration namelist : Passive tracer variables 178 READ ( numnat_cfg, namtrc_run, IOSTAT = ios, ERR = 902 ) 179 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc in configuration namelist', lwp ) 180 IF(lwm) WRITE ( numont, namtrc_run ) 181 182 ! computes the first time step of tracer model 183 nittrc000 = nit000 + nn_dttrc - 1 184 185 IF(lwp) THEN ! control print 186 WRITE(numout,*) 187 WRITE(numout,*) ' Namelist : namtrc_run' 188 WRITE(numout,*) ' time step freq. for passive tracer nn_dttrc = ', nn_dttrc 189 WRITE(numout,*) ' restart for passive tracer ln_rsttr = ', ln_rsttr 190 WRITE(numout,*) ' control of time step for passive tracer nn_rsttr = ', nn_rsttr 191 WRITE(numout,*) ' first time step for pass. trac. nittrc000 = ', nittrc000 192 WRITE(numout,*) ' frequency of outputs for passive tracers nn_writetrc = ', nn_writetrc 193 WRITE(numout,*) ' Use euler integration for TRC (y/n) ln_top_euler = ', ln_top_euler 194 WRITE(numout,*) ' ' 195 ENDIF 196 ! 197 END SUBROUTINE trc_nam_run 198 199 SUBROUTINE trc_nam_ice 200 !!--------------------------------------------------------------------- 201 !! *** ROUTINE trc_nam_ice *** 202 !! 203 !! ** Purpose : Read the namelist for the ice effect on tracers 204 !! 205 !! ** Method : - 206 !! 207 !!--------------------------------------------------------------------- 208 ! --- Variable declarations --- ! 209 INTEGER :: jn ! dummy loop indices 210 INTEGER :: ios ! Local integer output status for namelist read 211 212 ! --- Namelist declarations --- ! 213 TYPE(TRC_I_NML), DIMENSION(jptra) :: sn_tri_tracer 214 NAMELIST/namtrc_ice/ nn_ice_tr, sn_tri_tracer 215 216 IF(lwp) THEN 217 WRITE(numout,*) 218 WRITE(numout,*) 'trc_nam_ice : Read the namelist for trc_ice' 219 WRITE(numout,*) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 220 ENDIF 221 222 IF( nn_timing == 1 ) CALL timing_start('trc_nam_ice') 223 224 ! 225 REWIND( numnat_ref ) ! Namelist namtrc_ice in reference namelist : Passive tracer input data 226 READ ( numnat_ref, namtrc_ice, IOSTAT = ios, ERR = 901) 227 901 IF( ios /= 0 ) CALL ctl_nam ( ios , ' namtrc_ice in reference namelist ', lwp ) 228 229 REWIND( numnat_cfg ) ! Namelist namtrc_ice in configuration namelist : Pisces external sources of nutrients 230 READ ( numnat_cfg, namtrc_ice, IOSTAT = ios, ERR = 902 ) 231 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_ice in configuration namelist', lwp ) 232 233 IF( lwp ) THEN 234 WRITE(numout,*) ' ' 235 WRITE(numout,*) ' Sea ice tracers option (nn_ice_tr) : ', nn_ice_tr 236 WRITE(numout,*) ' ' 237 ENDIF 238 239 ! Assign namelist stuff 240 DO jn = 1, jptra 241 trc_ice_ratio(jn) = sn_tri_tracer(jn)%trc_ratio 242 trc_ice_prescr(jn) = sn_tri_tracer(jn)%trc_prescr 243 cn_trc_o (jn) = sn_tri_tracer(jn)%ctrc_o 244 END DO 245 246 IF( nn_timing == 1 ) CALL timing_stop('trc_nam_ice') 247 ! 248 END SUBROUTINE trc_nam_ice 249 250 SUBROUTINE trc_nam_trc 251 !!--------------------------------------------------------------------- 252 !! *** ROUTINE trc_nam *** 253 !! 254 !! ** Purpose : read options for the passive tracer run (namelist) 255 !! 256 !!--------------------------------------------------------------------- 257 TYPE(PTRACER), DIMENSION(jptra) :: sn_tracer ! type of tracer for saving if not key_iomput 258 !! 259 NAMELIST/namtrc/ sn_tracer, ln_trcdta,ln_trcdmp, ln_trcdmp_clo 260 261 INTEGER :: ios ! Local integer output status for namelist read 262 INTEGER :: jn ! dummy loop indice 263 !!--------------------------------------------------------------------- 264 IF(lwp) WRITE(numout,*) 265 IF(lwp) WRITE(numout,*) 'trc_nam : read the passive tracer namelists' 266 IF(lwp) WRITE(numout,*) '~~~~~~~' 267 268 269 REWIND( numnat_ref ) ! Namelist namtrc in reference namelist : Passive tracer variables 270 READ ( numnat_ref, namtrc, IOSTAT = ios, ERR = 901) 271 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc in reference namelist', lwp ) 272 273 REWIND( numnat_cfg ) ! Namelist namtrc in configuration namelist : Passive tracer variables 274 READ ( numnat_cfg, namtrc, IOSTAT = ios, ERR = 902 ) 275 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc in configuration namelist', lwp ) 276 IF(lwm) WRITE ( numont, namtrc ) 277 278 DO jn = 1, jptra 279 ctrcnm (jn) = TRIM( sn_tracer(jn)%clsname ) 280 ctrcln (jn) = TRIM( sn_tracer(jn)%cllname ) 281 ctrcun (jn) = TRIM( sn_tracer(jn)%clunit ) 282 ln_trc_ini(jn) = sn_tracer(jn)%llinit 283 ln_trc_wri(jn) = sn_tracer(jn)%llsave 284 END DO 285 286 END SUBROUTINE trc_nam_trc 287 288 289 SUBROUTINE trc_nam_dia 290 !!--------------------------------------------------------------------- 291 !! *** ROUTINE trc_nam_dia *** 292 !! 293 !! ** Purpose : read options for the passive tracer diagnostics 294 !! 295 !! ** Method : - read passive tracer namelist 296 !! - read namelist of each defined SMS model 297 !! ( (PISCES, CFC, MY_TRC ) 298 !!--------------------------------------------------------------------- 299 INTEGER :: ierr 300 #if defined key_trdmxl_trc || defined key_trdtrc 301 NAMELIST/namtrc_trd/ nn_trd_trc, nn_ctls_trc, rn_ucf_trc, & 302 & ln_trdmxl_trc_restart, ln_trdmxl_trc_instant, & 303 & cn_trdrst_trc_in, cn_trdrst_trc_out, ln_trdtrc 304 #endif 305 NAMELIST/namtrc_dia/ ln_diatrc, ln_diabio, nn_writedia, nn_writebio 306 307 INTEGER :: jn 308 INTEGER :: ios ! Local integer output status for namelist read 309 !!--------------------------------------------------------------------- 310 311 IF(lwp) WRITE(numout,*) 312 IF(lwp) WRITE(numout,*) 'trc_nam_dia : read the passive tracer diagnostics options' 313 IF(lwp) WRITE(numout,*) '~~~~~~~' 314 315 IF(lwp) WRITE(numout,*) 316 IF(lwp) WRITE(numout,*) 'trc_nam_dia : read the passive tracer diagnostics options' 317 IF(lwp) WRITE(numout,*) '~~~~~~~' 318 319 REWIND( numnat_ref ) ! Namelist namtrc_dia in reference namelist : Passive tracer diagnostics 320 READ ( numnat_ref, namtrc_dia, IOSTAT = ios, ERR = 903) 321 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_dia in reference namelist', lwp ) 322 323 REWIND( numnat_cfg ) ! Namelist namtrc_dia in configuration namelist : Passive tracer diagnostics 324 READ ( numnat_cfg, namtrc_dia, IOSTAT = ios, ERR = 904 ) 325 904 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_dia in configuration namelist', lwp ) 326 IF(lwm) WRITE ( numont, namtrc_dia ) 327 328 IF(lwp) THEN 329 WRITE(numout,*) 330 WRITE(numout,*) 331 WRITE(numout,*) ' Namelist : namtrc_dia' 332 WRITE(numout,*) ' save additionnal diagnostics arrays ln_diatrc = ', ln_diatrc 333 WRITE(numout,*) ' save additionnal biology diagnostics arrays ln_diabio = ', ln_diabio 334 WRITE(numout,*) ' frequency of outputs for additional arrays nn_writedia = ', nn_writedia 335 WRITE(numout,*) ' frequency of outputs for biological trends nn_writebio = ', nn_writebio 336 WRITE(numout,*) ' ' 337 ENDIF 338 339 IF( ln_diatrc ) THEN 340 ALLOCATE( trc2d(jpi,jpj,jpdia2d), trc3d(jpi,jpj,jpk,jpdia3d), & 341 & ctrc2d(jpdia2d), ctrc2l(jpdia2d), ctrc2u(jpdia2d) , & 342 & ctrc3d(jpdia3d), ctrc3l(jpdia3d), ctrc3u(jpdia3d) , STAT = ierr ) 343 IF( ierr > 0 ) CALL ctl_stop( 'STOP', 'trcnam: unable to allocate add. diag. array' ) 344 ! 345 trc2d(:,:,: ) = 0._wp ; ctrc2d(:) = ' ' ; ctrc2l(:) = ' ' ; ctrc2u(:) = ' ' 346 trc3d(:,:,:,:) = 0._wp ; ctrc3d(:) = ' ' ; ctrc3l(:) = ' ' ; ctrc3u(:) = ' ' 347 ! 348 ENDIF 349 350 IF( ln_diabio .OR. l_trdtrc ) THEN 351 ALLOCATE( trbio (jpi,jpj,jpk,jpdiabio) , & 352 & ctrbio(jpdiabio), ctrbil(jpdiabio), ctrbiu(jpdiabio), STAT = ierr ) 353 IF( ierr > 0 ) CALL ctl_stop( 'STOP', 'trcnam: unable to allocate bio. diag. array' ) 354 ! 355 trbio(:,:,:,:) = 0._wp ; ctrbio(:) = ' ' ; ctrbil(:) = ' ' ; ctrbiu(:) = ' ' 356 ! 357 ENDIF 121 358 122 359 #if defined key_trdmxl_trc || defined key_trdtrc … … 146 383 ENDIF 147 384 #endif 148 149 150 ! Call the ice module for tracers151 ! -------------------------------152 CALL trc_nam_ice153 154 ! namelist of SMS155 ! ---------------156 IF( lk_pisces ) THEN ; CALL trc_nam_pisces ! PISCES bio-model157 ELSE ; IF(lwp) WRITE(numout,*) ' PISCES not used'158 ENDIF159 160 IF( lk_cfc ) THEN ; CALL trc_nam_cfc ! CFC tracers161 ELSE ; IF(lwp) WRITE(numout,*) ' CFC not used'162 ENDIF163 164 IF( lk_c14b ) THEN ; CALL trc_nam_c14b ! C14 bomb tracers165 ELSE ; IF(lwp) WRITE(numout,*) ' C14 not used'166 ENDIF167 168 IF( lk_age ) THEN ; CALL trc_nam_age ! AGE tracer169 ELSE ; IF(lwp) WRITE(numout,*) ' AGE not used'170 ENDIF171 172 IF( lk_my_trc ) THEN ; CALL trc_nam_my_trc ! MY_TRC tracers173 ELSE ; IF(lwp) WRITE(numout,*) ' MY_TRC not used'174 ENDIF175 !176 END SUBROUTINE trc_nam177 178 SUBROUTINE trc_nam_run179 !!---------------------------------------------------------------------180 !! *** ROUTINE trc_nam ***181 !!182 !! ** Purpose : read options for the passive tracer run (namelist)183 !!184 !!---------------------------------------------------------------------185 NAMELIST/namtrc_run/ nn_dttrc, nn_writetrc, ln_rsttr, nn_rsttr, ln_top_euler, &186 & cn_trcrst_indir, cn_trcrst_outdir, cn_trcrst_in, cn_trcrst_out187 188 189 INTEGER :: ios ! Local integer output status for namelist read190 191 !!---------------------------------------------------------------------192 193 194 IF(lwp) WRITE(numout,*) 'trc_nam : read the passive tracer namelists'195 IF(lwp) WRITE(numout,*) '~~~~~~~'196 197 CALL ctl_opn( numnat_ref, 'namelist_top_ref' , 'OLD' , 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. )198 CALL ctl_opn( numnat_cfg, 'namelist_top_cfg' , 'OLD' , 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. )199 IF(lwm) CALL ctl_opn( numont, 'output.namelist.top', 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE., 1 )200 201 REWIND( numnat_ref ) ! Namelist namtrc in reference namelist : Passive tracer variables202 READ ( numnat_ref, namtrc_run, IOSTAT = ios, ERR = 901)203 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc in reference namelist', lwp )204 205 REWIND( numnat_cfg ) ! Namelist namtrc in configuration namelist : Passive tracer variables206 READ ( numnat_cfg, namtrc_run, IOSTAT = ios, ERR = 902 )207 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc in configuration namelist', lwp )208 IF(lwm) WRITE ( numont, namtrc_run )209 210 ! computes the first time step of tracer model211 nittrc000 = nit000 + nn_dttrc - 1212 213 IF(lwp) THEN ! control print214 WRITE(numout,*)215 WRITE(numout,*) ' Namelist : namtrc_run'216 WRITE(numout,*) ' time step freq. for passive tracer nn_dttrc = ', nn_dttrc217 WRITE(numout,*) ' restart for passive tracer ln_rsttr = ', ln_rsttr218 WRITE(numout,*) ' control of time step for passive tracer nn_rsttr = ', nn_rsttr219 WRITE(numout,*) ' first time step for pass. trac. nittrc000 = ', nittrc000220 WRITE(numout,*) ' frequency of outputs for passive tracers nn_writetrc = ', nn_writetrc221 WRITE(numout,*) ' Use euler integration for TRC (y/n) ln_top_euler = ', ln_top_euler222 WRITE(numout,*) ' '223 ENDIF224 !225 END SUBROUTINE trc_nam_run226 227 SUBROUTINE trc_nam_ice228 !!---------------------------------------------------------------------229 !! *** ROUTINE trc_nam_ice ***230 !!231 !! ** Purpose : Read the namelist for the ice effect on tracers232 !!233 !! ** Method : -234 !!235 !!---------------------------------------------------------------------236 ! --- Variable declarations --- !237 INTEGER :: jn ! dummy loop indices238 INTEGER :: ios ! Local integer output status for namelist read239 240 ! --- Namelist declarations --- !241 TYPE(TRC_I_NML), DIMENSION(jptra) :: sn_tri_tracer242 NAMELIST/namtrc_ice/ nn_ice_tr, sn_tri_tracer243 244 IF(lwp) THEN245 WRITE(numout,*)246 WRITE(numout,*) 'trc_nam_ice : Read the namelist for trc_ice'247 WRITE(numout,*) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'248 ENDIF249 250 IF( nn_timing == 1 ) CALL timing_start('trc_nam_ice')251 252 !253 REWIND( numnat_ref ) ! Namelist namtrc_ice in reference namelist : Passive tracer input data254 READ ( numnat_ref, namtrc_ice, IOSTAT = ios, ERR = 901)255 901 IF( ios /= 0 ) CALL ctl_nam ( ios , ' namtrc_ice in reference namelist ', lwp )256 257 REWIND( numnat_cfg ) ! Namelist namtrc_ice in configuration namelist : Pisces external sources of nutrients258 READ ( numnat_cfg, namtrc_ice, IOSTAT = ios, ERR = 902 )259 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_ice in configuration namelist', lwp )260 261 IF( lwp ) THEN262 WRITE(numout,*) ' '263 WRITE(numout,*) ' Sea ice tracers option (nn_ice_tr) : ', nn_ice_tr264 WRITE(numout,*) ' '265 ENDIF266 267 ! Assign namelist stuff268 DO jn = 1, jptra269 trc_ice_ratio(jn) = sn_tri_tracer(jn)%trc_ratio270 trc_ice_prescr(jn) = sn_tri_tracer(jn)%trc_prescr271 cn_trc_o (jn) = sn_tri_tracer(jn)%ctrc_o272 END DO273 274 IF( nn_timing == 1 ) CALL timing_stop('trc_nam_ice')275 !276 END SUBROUTINE trc_nam_ice277 278 SUBROUTINE trc_nam_trc279 !!---------------------------------------------------------------------280 !! *** ROUTINE trc_nam ***281 !!282 !! ** Purpose : read options for the passive tracer run (namelist)283 !!284 !!---------------------------------------------------------------------285 TYPE(PTRACER), DIMENSION(jptra) :: sn_tracer ! type of tracer for saving if not key_iomput286 !!287 NAMELIST/namtrc/ sn_tracer, ln_trcdta,ln_trcdmp, ln_trcdmp_clo288 289 INTEGER :: ios ! Local integer output status for namelist read290 INTEGER :: jn ! dummy loop indice291 !!---------------------------------------------------------------------292 IF(lwp) WRITE(numout,*)293 IF(lwp) WRITE(numout,*) 'trc_nam : read the passive tracer namelists'294 IF(lwp) WRITE(numout,*) '~~~~~~~'295 296 297 REWIND( numnat_ref ) ! Namelist namtrc in reference namelist : Passive tracer variables298 READ ( numnat_ref, namtrc, IOSTAT = ios, ERR = 901)299 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc in reference namelist', lwp )300 301 REWIND( numnat_cfg ) ! Namelist namtrc in configuration namelist : Passive tracer variables302 READ ( numnat_cfg, namtrc, IOSTAT = ios, ERR = 902 )303 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc in configuration namelist', lwp )304 IF(lwm) WRITE ( numont, namtrc )305 306 DO jn = 1, jptra307 ctrcnm (jn) = TRIM( sn_tracer(jn)%clsname )308 ctrcln (jn) = TRIM( sn_tracer(jn)%cllname )309 ctrcun (jn) = TRIM( sn_tracer(jn)%clunit )310 ln_trc_ini(jn) = sn_tracer(jn)%llinit311 ln_trc_wri(jn) = sn_tracer(jn)%llsave312 END DO313 314 END SUBROUTINE trc_nam_trc315 316 317 SUBROUTINE trc_nam_dia318 !!---------------------------------------------------------------------319 !! *** ROUTINE trc_nam_dia ***320 !!321 !! ** Purpose : read options for the passive tracer diagnostics322 !!323 !! ** Method : - read passive tracer namelist324 !! - read namelist of each defined SMS model325 !! ( (PISCES, CFC, MY_TRC )326 !!---------------------------------------------------------------------327 INTEGER :: ierr328 #if defined key_trdmxl_trc || defined key_trdtrc329 NAMELIST/namtrc_trd/ nn_trd_trc, nn_ctls_trc, rn_ucf_trc, &330 & ln_trdmxl_trc_restart, ln_trdmxl_trc_instant, &331 & cn_trdrst_trc_in, cn_trdrst_trc_out, ln_trdtrc332 #endif333 NAMELIST/namtrc_dia/ ln_diatrc, ln_diabio, nn_writedia, nn_writebio334 335 INTEGER :: ios ! Local integer output status for namelist read336 !!---------------------------------------------------------------------337 338 IF(lwp) WRITE(numout,*)339 IF(lwp) WRITE(numout,*) 'trc_nam_dia : read the passive tracer diagnostics options'340 IF(lwp) WRITE(numout,*) '~~~~~~~'341 342 IF(lwp) WRITE(numout,*)343 IF(lwp) WRITE(numout,*) 'trc_nam_dia : read the passive tracer diagnostics options'344 IF(lwp) WRITE(numout,*) '~~~~~~~'345 346 REWIND( numnat_ref ) ! Namelist namtrc_dia in reference namelist : Passive tracer diagnostics347 READ ( numnat_ref, namtrc_dia, IOSTAT = ios, ERR = 903)348 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_dia in reference namelist', lwp )349 350 REWIND( numnat_cfg ) ! Namelist namtrc_dia in configuration namelist : Passive tracer diagnostics351 READ ( numnat_cfg, namtrc_dia, IOSTAT = ios, ERR = 904 )352 904 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_dia in configuration namelist', lwp )353 IF(lwm) WRITE ( numont, namtrc_dia )354 355 IF(lwp) THEN356 WRITE(numout,*)357 WRITE(numout,*)358 WRITE(numout,*) ' Namelist : namtrc_dia'359 WRITE(numout,*) ' save additionnal diagnostics arrays ln_diatrc = ', ln_diatrc360 WRITE(numout,*) ' save additionnal biology diagnostics arrays ln_diabio = ', ln_diabio361 WRITE(numout,*) ' frequency of outputs for additional arrays nn_writedia = ', nn_writedia362 WRITE(numout,*) ' frequency of outputs for biological trends nn_writebio = ', nn_writebio363 WRITE(numout,*) ' '364 ENDIF365 366 IF( ln_diatrc ) THEN367 ALLOCATE( trc2d(jpi,jpj,jpdia2d), trc3d(jpi,jpj,jpk,jpdia3d), &368 & ctrc2d(jpdia2d), ctrc2l(jpdia2d), ctrc2u(jpdia2d) , &369 & ctrc3d(jpdia3d), ctrc3l(jpdia3d), ctrc3u(jpdia3d) , STAT = ierr )370 IF( ierr > 0 ) CALL ctl_stop( 'STOP', 'trcnam: unable to allocate add. diag. array' )371 !372 trc2d(:,:,: ) = 0._wp ; ctrc2d(:) = ' ' ; ctrc2l(:) = ' ' ; ctrc2u(:) = ' '373 trc3d(:,:,:,:) = 0._wp ; ctrc3d(:) = ' ' ; ctrc3l(:) = ' ' ; ctrc3u(:) = ' '374 !375 ENDIF376 377 IF( ln_diabio .OR. l_trdtrc ) THEN378 ALLOCATE( trbio (jpi,jpj,jpk,jpdiabio) , &379 & ctrbio(jpdiabio), ctrbil(jpdiabio), ctrbiu(jpdiabio), STAT = ierr )380 IF( ierr > 0 ) CALL ctl_stop( 'STOP', 'trcnam: unable to allocate bio. diag. array' )381 !382 trbio(:,:,:,:) = 0._wp ; ctrbio(:) = ' ' ; ctrbil(:) = ' ' ; ctrbiu(:) = ' '383 !384 ENDIF385 385 ! 386 386 END SUBROUTINE trc_nam_dia -
NEMO/branches/2018/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/trcsms.F90
r7806 r10115 50 50 ! 51 51 IF( lk_pisces ) CALL trc_sms_pisces ( kt ) ! main program of PISCES 52 IF( lk_my_trc ) CALL trc_sms_my_trc ( kt ) ! MY_TRC tracers 52 53 IF( lk_cfc ) CALL trc_sms_cfc ( kt ) ! surface fluxes of CFC 53 54 IF( lk_c14b ) CALL trc_sms_c14b ( kt ) ! surface fluxes of C14 54 55 IF( lk_age ) CALL trc_sms_age ( kt ) ! AGE tracer 55 IF( lk_my_trc ) CALL trc_sms_my_trc ( kt ) ! MY_TRC tracers56 56 57 57 IF(ln_ctl) THEN ! print mean trends (used for debugging) -
NEMO/branches/2018/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/trcwri.F90
r7806 r10115 58 58 ! --------------------------------------- 59 59 IF( lk_pisces ) CALL trc_wri_pisces ! PISCES 60 IF( lk_my_trc ) CALL trc_wri_my_trc ! MY_TRC tracers 60 61 IF( lk_cfc ) CALL trc_wri_cfc ! surface fluxes of CFC 61 62 IF( lk_c14b ) CALL trc_wri_c14b ! surface fluxes of C14 62 63 IF( lk_age ) CALL trc_wri_age ! AGE tracer 63 IF( lk_my_trc ) CALL trc_wri_my_trc ! MY_TRC tracers64 64 ! 65 65 IF( nn_timing == 1 ) CALL timing_stop('trc_wri')
Note: See TracChangeset
for help on using the changeset viewer.