Changeset 5193 for branches/2015/dev_r5171_CNRS_LIM3_seaicebgc
- Timestamp:
- 2015-04-03T10:48:51+02:00 (9 years ago)
- Location:
- branches/2015/dev_r5171_CNRS_LIM3_seaicebgc/NEMOGCM/NEMO/TOP_SRC
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/dev_r5171_CNRS_LIM3_seaicebgc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsbc.F90
r4996 r5193 216 216 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampissbc in configuration namelist', lwp ) 217 217 IF(lwm) WRITE ( numonp, nampissbc ) 218 219 IF ( ( nn_ice_tr >= 0 ) .AND. ln_ironice ) THEN 220 WRITE(numout,*) ' ln_ironice incompatible with nn_ice_tr = ', nn_ice_tr 221 WRITE(numout,*) ' Specify your sea ice iron concentration in nampisice instead ' 222 WRITE(numout,*) ' ln_ironice is forced to .FALSE. ' 223 ln_ironice = .FALSE. 224 ENDIF 218 225 219 226 IF(lwp) THEN -
branches/2015/dev_r5171_CNRS_LIM3_seaicebgc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsed.F90
r5184 r5193 73 73 CHARACTER (len=25) :: charout 74 74 REAL(wp), POINTER, DIMENSION(:,: ) :: zpdep, zsidep, zwork1, zwork2, zwork3, zwork4 75 REAL(wp), POINTER, DIMENSION(:,: ) :: zdenit2d, z bureff75 REAL(wp), POINTER, DIMENSION(:,: ) :: zdenit2d, zironice, zbureff 76 76 REAL(wp), POINTER, DIMENSION(:,: ) :: zwsbio3, zwsbio4, zwscal 77 77 REAL(wp), POINTER, DIMENSION(:,:,:) :: znitrpot, zirondep, zsoufer … … 97 97 zwork3 (:,:) = 0.e0 98 98 zwork4 (:,:) = 0.e0 99 100 ! Iron input/uptake due to sea ice : Crude parameterization based on Lancelot et al. 101 ! ---------------------------------------------------- 102 IF( ln_ironice ) THEN 103 ! 104 CALL wrk_alloc( jpi, jpj, zironice ) 105 ! 106 DO jj = 1, jpj 107 DO ji = 1, jpi 108 zdep = rfact2 / fse3t(ji,jj,1) 109 zwflux = fmmflx(ji,jj) / 1000._wp 110 zfminus = MIN( 0._wp, -zwflux ) * trn(ji,jj,1,jpfer) * zdep 111 zfplus = MAX( 0._wp, -zwflux ) * icefeinput * zdep 112 zironice(ji,jj) = zfplus + zfminus 113 END DO 114 END DO 115 ! 116 trn(:,:,1,jpfer) = trn(:,:,1,jpfer) + zironice(:,:) 117 ! 118 IF( lk_iomput .AND. jnt == nrdttrc .AND. iom_use( "Ironice" ) ) & 119 & CALL iom_put( "Ironice", zironice(:,:) * 1.e+3 * rfact2r * fse3t(:,:,1) * tmask(:,:,1) ) ! iron flux from ice 120 ! 121 CALL wrk_dealloc( jpi, jpj, zironice ) 122 ! 123 ENDIF 124 99 125 100 126 ! Add the external input of nutrients from dust deposition -
branches/2015/dev_r5171_CNRS_LIM3_seaicebgc/NEMOGCM/NEMO/TOP_SRC/PISCES/trcice_pisces.F90
r5185 r5193 21 21 USE sms_pisces ! PISCES Source Minus Sink variables 22 22 USE p4zsbc 23 USE in_out_manager 23 24 24 25 IMPLICIT NONE … … 114 115 !-------------------------------------------- 115 116 116 REWIND( numnatp ) 117 READ( numnatp, nampisice ) 117 REWIND( numnatp_ref ) 118 READ( numnatp_ref, nampisice, IOSTAT = ios, ERR = 901 ) 119 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisice in reference namelist', lwp ) 120 121 REWIND( numnatp_cfg ) 122 READ( numnatp_cfg, nampisice, IOSTAT = ios, ERR = 902 ) 123 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisice in configuration namelist', lwp ) 118 124 119 125 ! Assign namelist stuff -
branches/2015/dev_r5171_CNRS_LIM3_seaicebgc/NEMOGCM/NEMO/TOP_SRC/TRP/trcsbc.F90
r5184 r5193 63 63 ! 64 64 INTEGER :: ji, jj, jn ! dummy loop indices 65 REAL(wp) :: zs rau, zse3t! temporary scalars66 REAL(wp) :: zswitch, zftra, zcd, zdtra, ztfx, ztra , zeuler! temporary scalars65 REAL(wp) :: zse3t ! temporary scalars 66 REAL(wp) :: zswitch, zftra, zcd, zdtra, ztfx, ztra ! temporary scalars 67 67 CHARACTER (len=22) :: charout 68 68 REAL(wp), POINTER, DIMENSION(:,: ) :: zsfx … … 99 99 ENDIF 100 100 101 WRITE(numout,*) ' trc_sbc initial values', trn(3,2,1,2), trb(3,2,1,2), tra(3,2,1,2) 102 101 103 ! 0. initialization 102 zsrau = 1. / rau0103 104 zeuler = 1. ; IF ( neuler .EQ. 0 ) zeuler = 0.105 106 104 DO jn = 1, jptra 107 105 ! … … 114 112 DO ji = fs_2, fs_jpim1 ! vector opt. 115 113 zse3t = 1. / fse3t(ji,jj,1) 116 tra(ji,jj,1,jn) = tra(ji,jj,1,jn) + zsfx(ji,jj) * zsrau* trn(ji,jj,1,jn) * zse3t114 tra(ji,jj,1,jn) = tra(ji,jj,1,jn) + zsfx(ji,jj) * r1_rau0 * trn(ji,jj,1,jn) * zse3t 117 115 END DO 118 116 END DO … … 122 120 DO jj = 2, jpj 123 121 DO ji = fs_2, fs_jpim1 ! vector opt. 124 122 125 123 zse3t = 1. / fse3t(ji,jj,1) 126 124 … … 133 131 ztfx = zftra + zswitch * zcd ! net tracer flux (+C/D if no ice/ocean mass exchange) 134 132 135 ! tracer change (left member: euler; right member:leapfrog) 136 ztra = ( 1. - zeuler ) * trn(ji,jj,1,jn) + zeuler * trb(ji,jj,1,jn) 137 138 ! MAX is there to avoid integral ocean uptake in the case of freezing (for iron) 139 zdtra = MAX ( - ztra / r2dtra(1) , zsrau * ( ztfx + zsfx(ji,jj) * trn(ji,jj,1,jn) ) * zse3t ) ! tracer tendency 140 ! r2dtra is time step 141 tra(ji,jj,1,jn) = tra(ji,jj,1,jn) + zdtra ! new line 133 zdtra = r1_rau0 * ( ztfx + zsfx(ji,jj) * trn(ji,jj,1,jn) ) * zse3t 134 tra(ji,jj,1,jn) = MAX( tra(ji,jj,1,jn) + zdtra, 0.) ! avoid integral ocean uptake if freezing (for iron) 142 135 143 ! IF ( ztfx .NE. 0.0 ) THEN 144 ! WRITE(numout,*) ji, jj, jn 145 ! WRITE(numout,*) ' trc_o : ', trc_o(ji,jj,jn) 146 ! WRITE(numout,*) ' trc_i : ', trc_i(ji,jj,jn) 147 ! WRITE(numout,*) ' fmmflx : ', fmmflx(ji,jj) 148 ! WRITE(numout,*) ' zswitch: ', zswitch 149 ! WRITE(numout,*) ' zcd : ', zcd 150 ! WRITE(numout,*) ' zftra : ', zftra 151 ! WRITE(numout,*) ' ztfx : ', ztfx 152 ! WRITE(numout,*) ' zsrau : ', zsrau 153 ! WRITE(numout,*) ' zsfx : ', zsfx(ji,jj) 154 ! WRITE(numout,*) ' zse3t : ', zse3t 155 ! WRITE(numout,*) ' ztra : ', ztra 156 ! WRITE(numout,*) ' zdtra : ', zdtra 157 ! WRITE(numout,*) ' Old tendency : ', zsfx(ji,jj) * zsrau * trn(ji,jj,1,jn) * zse3t 158 ! ENDIF 136 ! IF ( ztfx .NE. 0.0 ) THEN 137 IF ( ( ji .EQ. 3 ) .AND. ( jj .EQ. 2 ) .AND. ( jn .EQ. 2 ) ) THEN 138 WRITE(numout,*) ji, jj, jn 139 WRITE(numout,*) ' trn : ', trn(ji,jj,1,jn) 140 WRITE(numout,*) ' trb : ', trb(ji,jj,1,jn) 141 WRITE(numout,*) ' tra : ', tra(ji,jj,1,jn) 142 WRITE(numout,*) ' trc_o : ', trc_o(ji,jj,jn) 143 WRITE(numout,*) ' trc_i : ', trc_i(ji,jj,jn) 144 WRITE(numout,*) ' fmmflx : ', fmmflx(ji,jj) 145 WRITE(numout,*) ' zswitch: ', zswitch 146 WRITE(numout,*) ' zcd : ', zcd 147 WRITE(numout,*) ' zftra : ', zftra 148 WRITE(numout,*) ' ztfx : ', ztfx 149 WRITE(numout,*) ' r1_rau0 : ', r1_rau0 150 WRITE(numout,*) ' zsfx : ', zsfx(ji,jj) 151 WRITE(numout,*) ' zse3t : ', zse3t 152 WRITE(numout,*) ' ztra : ', ztra 153 WRITE(numout,*) ' zdtra : ', zdtra 154 WRITE(numout,*) ' Old tendency : ', zsfx(ji,jj) * r1_rau0 * trn(ji,jj,1,jn) * zse3t 155 ENDIF 159 156 160 157 END DO -
branches/2015/dev_r5171_CNRS_LIM3_seaicebgc/NEMOGCM/NEMO/TOP_SRC/trcice.F90
r5185 r5193 49 49 NAMELIST/namtrc_ice/ nn_ice_tr 50 50 ! 51 IF(lwp) WRITE(numout,*) 52 IF(lwp) WRITE(numout,*) 'trc_ice_ini : Initialize sea ice tracer boundary condition' 53 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~' 51 IF(lwp) THEN 52 WRITE(numout,*) 53 WRITE(numout,*) 'trc_ice_ini : Initialize sea ice tracer boundary condition' 54 WRITE(numout,*) '~~~~~~~~~~~~~' 55 ENDIF 54 56 55 57 IF( nn_timing == 1 ) CALL timing_start('trc_ice_ini') 56 58 57 IF(lwp) THEN58 WRITE(numout,*) ' '59 WRITE(numout,*) ' sea ice tracers option (nn_ice_tr) : ', nn_ice_tr60 WRITE(numout,*) ' '61 ENDIF62 59 ! 63 60 REWIND( numnat_ref ) ! Namelist namtrc_dta in reference namelist : Passive tracer input data 64 61 READ ( numnat_ref, namtrc_ice, IOSTAT = ios, ERR = 901) 65 62 901 IF( ios /= 0 ) CALL ctl_nam ( ios , ' namtrc_ice in reference namelist ', lwp ) 63 64 REWIND( numnat_cfg ) ! Namelist nampissbc in configuration namelist : Pisces external sources of nutrients 65 READ ( numnat_cfg, namtrc_ice, IOSTAT = ios, ERR = 902 ) 66 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_ice in configuration namelist', lwp ) 67 68 WRITE(numout,*) ' ' 69 WRITE(numout,*) ' Sea ice tracers option (nn_ice_tr) : ', nn_ice_tr 70 WRITE(numout,*) ' ' 66 71 67 72 trc_i(:,:,:) = 0.0d0 ! by default -
branches/2015/dev_r5171_CNRS_LIM3_seaicebgc/NEMOGCM/NEMO/TOP_SRC/trcini.F90
r5184 r5193 97 97 areatot = glob_sum( cvol(:,:,:) ) 98 98 99 CALL trc_ice_ini ! Tracers in sea ice 100 99 101 IF( lk_pisces ) CALL trc_ini_pisces ! PISCES bio-model 100 102 IF( lk_cfc ) CALL trc_ini_cfc ! CFC tracers 101 103 IF( lk_c14b ) CALL trc_ini_c14b ! C14 bomb tracer 102 104 IF( lk_my_trc ) CALL trc_ini_my_trc ! MY_TRC tracers 103 104 CALL trc_ice_ini ! Tracers in sea ice105 105 106 106 IF( lwp ) THEN
Note: See TracChangeset
for help on using the changeset viewer.