- Timestamp:
- 2018-12-10T08:45:39+01:00 (5 years ago)
- Location:
- NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src
- Files:
-
- 8 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/OCE/IOM/iom_nf90.F90
r10358 r10377 691 691 INTEGER, DIMENSION(4) :: idimid ! dimensions id 692 692 CHARACTER(LEN=256) :: clinfo ! info character 693 CHARACTER(LEN= 12), DIMENSION( 4) :: cltmp ! temporary character693 CHARACTER(LEN= 12), DIMENSION(5) :: cltmp ! temporary character 694 694 INTEGER :: if90id ! nf90 file identifier 695 695 INTEGER :: idmy ! dummy variable … … 716 716 ENDIF 717 717 ! define the dimension variables if it is not already done 718 IF(iom_file(kiomid)%nlev == jpk ) THEN 719 cltmp = (/ 'nav_lon ', 'nav_lat ', 'nav_lev ', 'time_counter' /) 720 ELSE 721 cltmp = (/ 'nav_lon ', 'nav_lat ', 'numcat ', 'time_counter' /) 722 ENDIF 718 cltmp = (/ 'nav_lon', 'nav_lat', 'nav_lev', 'time_counter', 'numcat' /) 723 719 CALL iom_nf90_check(NF90_DEF_VAR( if90id, TRIM(cltmp(1)), NF90_FLOAT , (/ 1, 2 /), iom_file(kiomid)%nvid(1) ), clinfo) 724 720 CALL iom_nf90_check(NF90_DEF_VAR( if90id, TRIM(cltmp(2)), NF90_FLOAT , (/ 1, 2 /), iom_file(kiomid)%nvid(2) ), clinfo) … … 728 724 iom_file(kiomid)%nvars = 4 729 725 iom_file(kiomid)%luld(1:4) = (/ .FALSE., .FALSE., .FALSE., .TRUE. /) 730 iom_file(kiomid)%cn_var(1:4) = cltmp 731 iom_file(kiomid)%ndims(1:4) = (/ 2, 2, 1, 1 /) 726 iom_file(kiomid)%cn_var(1:4) = cltmp(1:4) 727 iom_file(kiomid)%ndims(1:4) = (/ 2, 2, 1, 1 /) 728 IF( NF90_INQ_DIMID( if90id, 'numcat', idmy ) == nf90_noerr ) THEN ! add a 5th variable corresponding to the 5th dimension 729 CALL iom_nf90_check(NF90_DEF_VAR( if90id, TRIM(cltmp(5)), NF90_FLOAT , (/ 5 /), iom_file(kiomid)%nvid(5) ), clinfo) 730 iom_file(kiomid)%nvars = 5 731 iom_file(kiomid)%luld(5) = .FALSE. 732 iom_file(kiomid)%cn_var(5) = cltmp(5) 733 iom_file(kiomid)%ndims(5) = 1 734 ENDIF 732 735 ! trick: defined to 0 to say that dimension variables are defined but not yet written 733 736 iom_file(kiomid)%dimsz(1, 1) = 0 … … 841 844 CALL iom_nf90_check( NF90_INQ_VARID( if90id, 'nav_lat' , idmy ) , clinfo ) 842 845 CALL iom_nf90_check( NF90_PUT_VAR ( if90id, idmy, gphit(ix1:ix2, iy1:iy2) ), clinfo ) 843 IF(iom_file(kiomid)%nlev == jpk ) THEN 844 !NEMO 845 CALL iom_nf90_check( NF90_INQ_VARID( if90id, 'nav_lev' , idmy ), clinfo ) 846 CALL iom_nf90_check( NF90_PUT_VAR ( if90id, idmy, gdept_1d ), clinfo ) 847 ELSE 848 CALL iom_nf90_check( NF90_INQ_VARID( if90id, 'numcat' , idmy ), clinfo) 846 CALL iom_nf90_check( NF90_INQ_VARID( if90id, 'nav_lev' , idmy ), clinfo ) 847 CALL iom_nf90_check( NF90_PUT_VAR ( if90id, idmy, gdept_1d ), clinfo ) 848 IF( NF90_INQ_VARID( if90id, 'numcat', idmy ) == nf90_noerr ) THEN 849 849 CALL iom_nf90_check( NF90_PUT_VAR ( if90id, idmy, (/ (idlv, idlv = 1,iom_file(kiomid)%nlev) /)), clinfo ) 850 850 ENDIF -
NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/OCE/SBC/geo2ocean.F90
r10297 r10377 10 10 !! 3.7 ! 11-2015 (G. Madec) remove the unused repere and repcmo routines 11 11 !!---------------------------------------------------------------------- 12 #if defined key_agrif13 !clem: these lines do not seem necessary anymore14 !!DIR$ OPTIMIZE (-O 1) ! cray formulation15 # if defined __INTEL_COMPILER16 !acc: still breaks on at least one Ivybridge cluster with ifort 17.0.4 without this directive17 !DIR$ OPTIMIZE:1 ! intel formulation18 # endif19 #endif20 12 !!---------------------------------------------------------------------- 21 13 !! rot_rep : Rotate the Repere: geographic grid <==> stretched coordinates grid … … 81 73 IF(lwp) WRITE(numout,*) ' ~~~~~~~~ ' 82 74 ! 83 CALL angle ! initialization of the transformation75 CALL angle( glamt, gphit, glamu, gphiu, glamv, gphiv, glamf, gphif ) ! initialization of the transformation 84 76 lmust_init = .FALSE. 85 77 ENDIF … … 126 118 127 119 128 SUBROUTINE angle 120 SUBROUTINE angle( plamt, pphit, plamu, pphiu, plamv, pphiv, plamf, pphif ) 129 121 !!---------------------------------------------------------------------- 130 122 !! *** ROUTINE angle *** … … 138 130 !! ** Action : - gsint, gcost, gsinu, gcosu, gsinv, gcosv, gsinf, gcosf 139 131 !!---------------------------------------------------------------------- 132 ! WARNING: for an unexplained reason, we need to pass all glam, gphi arrays as input parameters in 133 ! order to get AGRIF working with -03 compilation option 134 REAL(wp), DIMENSION(jpi,jpj), INTENT(in ) :: plamt, pphit, plamu, pphiu, plamv, pphiv, plamf, pphif 135 ! 140 136 INTEGER :: ji, jj ! dummy loop indices 141 137 INTEGER :: ierr ! local integer … … 167 163 DO ji = fs_2, jpi ! vector opt. 168 164 ! 169 zlam = glamt(ji,jj) ! north pole direction & modulous (at t-point)170 zphi = gphit(ji,jj)165 zlam = plamt(ji,jj) ! north pole direction & modulous (at t-point) 166 zphi = pphit(ji,jj) 171 167 zxnpt = 0. - 2. * COS( rad*zlam ) * TAN( rpi/4. - rad*zphi/2. ) 172 168 zynpt = 0. - 2. * SIN( rad*zlam ) * TAN( rpi/4. - rad*zphi/2. ) 173 169 znnpt = zxnpt*zxnpt + zynpt*zynpt 174 170 ! 175 zlam = glamu(ji,jj) ! north pole direction & modulous (at u-point)176 zphi = gphiu(ji,jj)171 zlam = plamu(ji,jj) ! north pole direction & modulous (at u-point) 172 zphi = pphiu(ji,jj) 177 173 zxnpu = 0. - 2. * COS( rad*zlam ) * TAN( rpi/4. - rad*zphi/2. ) 178 174 zynpu = 0. - 2. * SIN( rad*zlam ) * TAN( rpi/4. - rad*zphi/2. ) 179 175 znnpu = zxnpu*zxnpu + zynpu*zynpu 180 176 ! 181 zlam = glamv(ji,jj) ! north pole direction & modulous (at v-point)182 zphi = gphiv(ji,jj)177 zlam = plamv(ji,jj) ! north pole direction & modulous (at v-point) 178 zphi = pphiv(ji,jj) 183 179 zxnpv = 0. - 2. * COS( rad*zlam ) * TAN( rpi/4. - rad*zphi/2. ) 184 180 zynpv = 0. - 2. * SIN( rad*zlam ) * TAN( rpi/4. - rad*zphi/2. ) 185 181 znnpv = zxnpv*zxnpv + zynpv*zynpv 186 182 ! 187 zlam = glamf(ji,jj) ! north pole direction & modulous (at f-point)188 zphi = gphif(ji,jj)183 zlam = plamf(ji,jj) ! north pole direction & modulous (at f-point) 184 zphi = pphif(ji,jj) 189 185 zxnpf = 0. - 2. * COS( rad*zlam ) * TAN( rpi/4. - rad*zphi/2. ) 190 186 zynpf = 0. - 2. * SIN( rad*zlam ) * TAN( rpi/4. - rad*zphi/2. ) 191 187 znnpf = zxnpf*zxnpf + zynpf*zynpf 192 188 ! 193 zlam = glamv(ji,jj ) ! j-direction: v-point segment direction (around t-point)194 zphi = gphiv(ji,jj )195 zlan = glamv(ji,jj-1)196 zphh = gphiv(ji,jj-1)189 zlam = plamv(ji,jj ) ! j-direction: v-point segment direction (around t-point) 190 zphi = pphiv(ji,jj ) 191 zlan = plamv(ji,jj-1) 192 zphh = pphiv(ji,jj-1) 197 193 zxvvt = 2. * COS( rad*zlam ) * TAN( rpi/4. - rad*zphi/2. ) & 198 194 & - 2. * COS( rad*zlan ) * TAN( rpi/4. - rad*zphh/2. ) … … 202 198 znvvt = MAX( znvvt, 1.e-14 ) 203 199 ! 204 zlam = glamf(ji,jj ) ! j-direction: f-point segment direction (around u-point)205 zphi = gphif(ji,jj )206 zlan = glamf(ji,jj-1)207 zphh = gphif(ji,jj-1)200 zlam = plamf(ji,jj ) ! j-direction: f-point segment direction (around u-point) 201 zphi = pphif(ji,jj ) 202 zlan = plamf(ji,jj-1) 203 zphh = pphif(ji,jj-1) 208 204 zxffu = 2. * COS( rad*zlam ) * TAN( rpi/4. - rad*zphi/2. ) & 209 205 & - 2. * COS( rad*zlan ) * TAN( rpi/4. - rad*zphh/2. ) … … 213 209 znffu = MAX( znffu, 1.e-14 ) 214 210 ! 215 zlam = glamf(ji ,jj) ! i-direction: f-point segment direction (around v-point)216 zphi = gphif(ji ,jj)217 zlan = glamf(ji-1,jj)218 zphh = gphif(ji-1,jj)211 zlam = plamf(ji ,jj) ! i-direction: f-point segment direction (around v-point) 212 zphi = pphif(ji ,jj) 213 zlan = plamf(ji-1,jj) 214 zphh = pphif(ji-1,jj) 219 215 zxffv = 2. * COS( rad*zlam ) * TAN( rpi/4. - rad*zphi/2. ) & 220 216 & - 2. * COS( rad*zlan ) * TAN( rpi/4. - rad*zphh/2. ) … … 224 220 znffv = MAX( znffv, 1.e-14 ) 225 221 ! 226 zlam = glamu(ji,jj+1) ! j-direction: u-point segment direction (around f-point)227 zphi = gphiu(ji,jj+1)228 zlan = glamu(ji,jj )229 zphh = gphiu(ji,jj )222 zlam = plamu(ji,jj+1) ! j-direction: u-point segment direction (around f-point) 223 zphi = pphiu(ji,jj+1) 224 zlan = plamu(ji,jj ) 225 zphh = pphiu(ji,jj ) 230 226 zxuuf = 2. * COS( rad*zlam ) * TAN( rpi/4. - rad*zphi/2. ) & 231 227 & - 2. * COS( rad*zlan ) * TAN( rpi/4. - rad*zphh/2. ) … … 257 253 DO jj = 2, jpjm1 258 254 DO ji = fs_2, jpi ! vector opt. 259 IF( MOD( ABS( glamv(ji,jj) - glamv(ji,jj-1) ), 360. ) < 1.e-8 ) THEN255 IF( MOD( ABS( plamv(ji,jj) - plamv(ji,jj-1) ), 360. ) < 1.e-8 ) THEN 260 256 gsint(ji,jj) = 0. 261 257 gcost(ji,jj) = 1. 262 258 ENDIF 263 IF( MOD( ABS( glamf(ji,jj) - glamf(ji,jj-1) ), 360. ) < 1.e-8 ) THEN259 IF( MOD( ABS( plamf(ji,jj) - plamf(ji,jj-1) ), 360. ) < 1.e-8 ) THEN 264 260 gsinu(ji,jj) = 0. 265 261 gcosu(ji,jj) = 1. 266 262 ENDIF 267 IF( ABS( gphif(ji,jj) - gphif(ji-1,jj) ) < 1.e-8 ) THEN263 IF( ABS( pphif(ji,jj) - pphif(ji-1,jj) ) < 1.e-8 ) THEN 268 264 gsinv(ji,jj) = 0. 269 265 gcosv(ji,jj) = 1. 270 266 ENDIF 271 IF( MOD( ABS( glamu(ji,jj) - glamu(ji,jj+1) ), 360. ) < 1.e-8 ) THEN267 IF( MOD( ABS( plamu(ji,jj) - plamu(ji,jj+1) ), 360. ) < 1.e-8 ) THEN 272 268 gsinf(ji,jj) = 0. 273 269 gcosf(ji,jj) = 1. … … 457 453 IF(lwp) WRITE(numout,*) ' obs_rot : geographic <--> stretched' 458 454 IF(lwp) WRITE(numout,*) ' ~~~~~~~ coordinate transformation' 459 CALL angle ! initialization of the transformation455 CALL angle( glamt, gphit, glamu, gphiu, glamv, gphiv, glamf, gphif ) ! initialization of the transformation 460 456 lmust_init = .FALSE. 461 457 ENDIF -
NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/TOP/PISCES/P4Z/p4zmeso.F90
r10368 r10377 252 252 DEALLOCATE( zw3d ) 253 253 ENDIF 254 ! 255 IF (ln_ligand) DEALLOCATE( zz2ligprod ) 254 256 ! 255 257 IF(ln_ctl) THEN ! print mean trends (used for debugging) -
NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/TOP/PISCES/P4Z/p4zmicro.F90
r10368 r10377 205 205 ENDIF 206 206 ! 207 IF (ln_ligand) DEALLOCATE( zzligprod ) 208 ! 207 209 IF(ln_ctl) THEN ! print mean trends (used for debugging) 208 210 WRITE(charout, FMT="('micro')") -
NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/TOP/PISCES/P4Z/p4zsink.F90
r10368 r10377 16 16 USE trc ! passive tracers common variables 17 17 USE sms_pisces ! PISCES Source Minus Sink variables 18 USE trcsink ! General routine to compute sedimentation 18 19 USE prtctl_trc ! print control for debugging 19 20 USE iom ! I/O manager … … 59 60 !!--------------------------------------------------------------------- 60 61 INTEGER, INTENT(in) :: kt, knt 61 INTEGER :: ji, jj, jk, jit 62 INTEGER :: iiter1, iiter2 63 REAL(wp) :: zagg1, zagg2, zagg3, zagg4 64 REAL(wp) :: zagg , zaggfe, zaggdoc, zaggdoc2, zaggdoc3 65 REAL(wp) :: zfact, zwsmax, zmax 62 INTEGER :: ji, jj, jk 66 63 CHARACTER (len=25) :: charout 64 REAL(wp) :: zmax, zfact 67 65 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zw3d 68 66 REAL(wp), ALLOCATABLE, DIMENSION(:,: ) :: zw2d … … 70 68 ! 71 69 IF( ln_timing ) CALL timing_start('p4z_sink') 72 73 70 74 71 ! Initialization of some global variables … … 97 94 98 95 ! 99 ! OA This is (I hope) a temporary solution for the problem that may100 ! OA arise in specific situation where the CFL criterion is broken101 ! OA for vertical sedimentation of particles. To avoid this, a time102 ! OA splitting algorithm has been coded. A specific maximum103 ! OA iteration number is provided and may be specified in the namelist104 ! OA This is to avoid very large iteration number when explicit free105 ! OA surface is used (for instance). When niter?max is set to 1,106 ! OA this computation is skipped. The crude old threshold method is107 ! OA then applied. This also happens when niter exceeds nitermax.108 IF( MAX( niter1max, niter2max ) == 1 ) THEN109 iiter1 = 1110 iiter2 = 1111 ELSE112 iiter1 = 1113 iiter2 = 1114 DO jk = 1, jpkm1115 DO jj = 1, jpj116 DO ji = 1, jpi117 IF( tmask(ji,jj,jk) == 1) THEN118 zwsmax = 0.5 * e3t_n(ji,jj,jk) / xstep119 iiter1 = MAX( iiter1, INT( wsbio3(ji,jj,jk) / zwsmax ) )120 iiter2 = MAX( iiter2, INT( wsbio4(ji,jj,jk) / zwsmax ) )121 ENDIF122 END DO123 END DO124 END DO125 IF( lk_mpp ) THEN126 CALL mpp_max( 'p4zsink', iiter1 )127 CALL mpp_max( 'p4zsink', iiter2 )128 ENDIF129 iiter1 = MIN( iiter1, niter1max )130 iiter2 = MIN( iiter2, niter2max )131 ENDIF132 133 DO jk = 1,jpkm1134 DO jj = 1, jpj135 DO ji = 1, jpi136 IF( tmask(ji,jj,jk) == 1 ) THEN137 zwsmax = 0.5 * e3t_n(ji,jj,jk) / xstep138 wsbio3(ji,jj,jk) = MIN( wsbio3(ji,jj,jk), zwsmax * REAL( iiter1, wp ) )139 wsbio4(ji,jj,jk) = MIN( wsbio4(ji,jj,jk), zwsmax * REAL( iiter2, wp ) )140 ENDIF141 END DO142 END DO143 END DO144 145 96 ! Initializa to zero all the sinking arrays 146 97 ! ----------------------------------------- … … 154 105 ! Compute the sedimentation term using p4zsink2 for all the sinking particles 155 106 ! ----------------------------------------------------- 156 DO jit = 1, iiter1 157 CALL p4z_sink2( wsbio3, sinking , jppoc, iiter1 ) 158 CALL p4z_sink2( wsbio3, sinkfer , jpsfe, iiter1 ) 159 END DO 160 161 DO jit = 1, iiter2 162 CALL p4z_sink2( wsbio4, sinking2, jpgoc, iiter2 ) 163 CALL p4z_sink2( wsbio4, sinkfer2, jpbfe, iiter2 ) 164 CALL p4z_sink2( wsbio4, sinksil , jpgsi, iiter2 ) 165 CALL p4z_sink2( wsbio4, sinkcal , jpcal, iiter2 ) 166 END DO 107 CALL trc_sink( kt, wsbio3, sinking , jppoc, rfact2 ) 108 CALL trc_sink( kt, wsbio3, sinkfer , jpsfe, rfact2 ) 109 CALL trc_sink( kt, wsbio4, sinking2, jpgoc, rfact2 ) 110 CALL trc_sink( kt, wsbio4, sinkfer2, jpbfe, rfact2 ) 111 CALL trc_sink( kt, wsbio4, sinksil , jpgsi, rfact2 ) 112 CALL trc_sink( kt, wsbio4, sinkcal , jpcal, rfact2 ) 167 113 168 114 IF( ln_p5z ) THEN … … 174 120 ! Compute the sedimentation term using p4zsink2 for all the sinking particles 175 121 ! ----------------------------------------------------- 176 DO jit = 1, iiter1 177 CALL p4z_sink2( wsbio3, sinkingn , jppon, iiter1 ) 178 CALL p4z_sink2( wsbio3, sinkingp , jppop, iiter1 ) 179 END DO 180 181 DO jit = 1, iiter2 182 CALL p4z_sink2( wsbio4, sinking2n, jpgon, iiter2 ) 183 CALL p4z_sink2( wsbio4, sinking2p, jpgop, iiter2 ) 184 END DO 122 CALL trc_sink( kt, wsbio3, sinkingn , jppon, rfact2 ) 123 CALL trc_sink( kt, wsbio3, sinkingp , jppop, rfact2 ) 124 CALL trc_sink( kt, wsbio4, sinking2n, jpgon, rfact2 ) 125 CALL trc_sink( kt, wsbio4, sinking2p, jpgop, rfact2 ) 185 126 ENDIF 186 127 187 128 IF( ln_ligand ) THEN 188 129 wsfep (:,:,:) = wfep 189 DO jk = 1,jpkm1190 DO jj = 1, jpj191 DO ji = 1, jpi192 IF( tmask(ji,jj,jk) == 1 ) THEN193 zwsmax = 0.5 * e3t_n(ji,jj,jk) / xstep194 wsfep(ji,jj,jk) = MIN( wsfep(ji,jj,jk), zwsmax * REAL( iiter1, wp ) )195 ENDIF196 END DO197 END DO198 END DO199 130 ! 200 131 sinkfep(:,:,:) = 0.e0 201 DO jit = 1, iiter1 202 CALL p4z_sink2( wsfep, sinkfep , jpfep, iiter1 ) 203 END DO 132 CALL trc_sink( kt, wsfep, sinkfep , jpfep, rfact2 ) 204 133 ENDIF 205 134 … … 281 210 END SUBROUTINE p4z_sink_init 282 211 283 284 SUBROUTINE p4z_sink2( pwsink, psinkflx, jp_tra, kiter )285 !!---------------------------------------------------------------------286 !! *** ROUTINE p4z_sink2 ***287 !!288 !! ** Purpose : Compute the sedimentation terms for the various sinking289 !! particles. The scheme used to compute the trends is based290 !! on MUSCL.291 !!292 !! ** Method : - this ROUTINE compute not exactly the advection but the293 !! transport term, i.e. div(u*tra).294 !!---------------------------------------------------------------------295 INTEGER , INTENT(in ) :: jp_tra ! tracer index index296 INTEGER , INTENT(in ) :: kiter ! number of iterations for time-splitting297 REAL(wp), INTENT(in ), DIMENSION(jpi,jpj,jpk) :: pwsink ! sinking speed298 REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk) :: psinkflx ! sinking fluxe299 !300 INTEGER :: ji, jj, jk, jn301 REAL(wp) :: zigma,zew,zign, zflx, zstep302 REAL(wp), DIMENSION(jpi,jpj,jpk) :: ztraz, zakz, zwsink2, ztrb303 !!---------------------------------------------------------------------304 !305 IF( ln_timing ) CALL timing_start('p4z_sink2')306 !307 zstep = rfact2 / REAL( kiter, wp ) / 2.308 309 ztraz(:,:,:) = 0.e0310 zakz (:,:,:) = 0.e0311 ztrb (:,:,:) = trb(:,:,:,jp_tra)312 313 DO jk = 1, jpkm1314 zwsink2(:,:,jk+1) = -pwsink(:,:,jk) / rday * tmask(:,:,jk+1)315 END DO316 zwsink2(:,:,1) = 0.e0317 318 319 ! Vertical advective flux320 DO jn = 1, 2321 ! first guess of the slopes interior values322 DO jk = 2, jpkm1323 ztraz(:,:,jk) = ( trb(:,:,jk-1,jp_tra) - trb(:,:,jk,jp_tra) ) * tmask(:,:,jk)324 END DO325 ztraz(:,:,1 ) = 0.0326 ztraz(:,:,jpk) = 0.0327 328 ! slopes329 DO jk = 2, jpkm1330 DO jj = 1,jpj331 DO ji = 1, jpi332 zign = 0.25 + SIGN( 0.25, ztraz(ji,jj,jk) * ztraz(ji,jj,jk+1) )333 zakz(ji,jj,jk) = ( ztraz(ji,jj,jk) + ztraz(ji,jj,jk+1) ) * zign334 END DO335 END DO336 END DO337 338 ! Slopes limitation339 DO jk = 2, jpkm1340 DO jj = 1, jpj341 DO ji = 1, jpi342 zakz(ji,jj,jk) = SIGN( 1., zakz(ji,jj,jk) ) * &343 & MIN( ABS( zakz(ji,jj,jk) ), 2. * ABS(ztraz(ji,jj,jk+1)), 2. * ABS(ztraz(ji,jj,jk) ) )344 END DO345 END DO346 END DO347 348 ! vertical advective flux349 DO jk = 1, jpkm1350 DO jj = 1, jpj351 DO ji = 1, jpi352 zigma = zwsink2(ji,jj,jk+1) * zstep / e3w_n(ji,jj,jk+1)353 zew = zwsink2(ji,jj,jk+1)354 psinkflx(ji,jj,jk+1) = -zew * ( trb(ji,jj,jk,jp_tra) - 0.5 * ( 1 + zigma ) * zakz(ji,jj,jk) ) * zstep355 END DO356 END DO357 END DO358 !359 ! Boundary conditions360 psinkflx(:,:,1 ) = 0.e0361 psinkflx(:,:,jpk) = 0.e0362 363 DO jk=1,jpkm1364 DO jj = 1,jpj365 DO ji = 1, jpi366 zflx = ( psinkflx(ji,jj,jk) - psinkflx(ji,jj,jk+1) ) / e3t_n(ji,jj,jk)367 trb(ji,jj,jk,jp_tra) = trb(ji,jj,jk,jp_tra) + zflx368 END DO369 END DO370 END DO371 372 ENDDO373 374 DO jk = 1,jpkm1375 DO jj = 1,jpj376 DO ji = 1, jpi377 zflx = ( psinkflx(ji,jj,jk) - psinkflx(ji,jj,jk+1) ) / e3t_n(ji,jj,jk)378 ztrb(ji,jj,jk) = ztrb(ji,jj,jk) + 2. * zflx379 END DO380 END DO381 END DO382 383 trb(:,:,:,jp_tra) = ztrb(:,:,:)384 psinkflx(:,:,:) = 2. * psinkflx(:,:,:)385 !386 IF( ln_timing ) CALL timing_stop('p4z_sink2')387 !388 END SUBROUTINE p4z_sink2389 390 391 212 INTEGER FUNCTION p4z_sink_alloc() 392 213 !!---------------------------------------------------------------------- -
NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/TOP/PISCES/P4Z/p4zsms.F90
r10345 r10377 74 74 CALL p4z_che ! initialize the chemical constants 75 75 CALL ahini_for_at(hi) ! set PH at kt=nit000 76 t_oce_co2_flx_cum = 0._wp77 76 ELSE 78 77 CALL p4z_rst( nittrc000, 'READ' ) !* read or initialize all required fields … … 189 188 !! 190 189 NAMELIST/nampisbio/ nrdttrc, wsbio, xkmort, ferat3, wsbio2, wsbio2max, wsbio2scale, & 191 & niter1max, niter2max,wfep, ldocp, ldocz, lthet, &190 & wfep, ldocp, ldocz, lthet, & 192 191 & no3rat3, po4rat3 193 192 ! … … 223 222 WRITE(numout,*) ' Big particles maximum sinking speed wsbio2max =', wsbio2max 224 223 WRITE(numout,*) ' Big particles sinking speed length scale wsbio2scale =', wsbio2scale 225 WRITE(numout,*) ' Maximum number of iterations for POC niter1max =', niter1max226 WRITE(numout,*) ' Maximum number of iterations for GOC niter2max =', niter2max227 224 IF( ln_ligand ) THEN 228 225 WRITE(numout,*) ' FeP sinking speed wfep =', wfep -
NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/TOP/PISCES/sms_pisces.F90
r10368 r10377 36 36 37 37 !!* Biological parameters 38 INTEGER :: niter1max, niter2max !: Maximum number of iterations for sinking39 38 REAL(wp) :: rno3 !: ??? 40 39 REAL(wp) :: o2ut !: ??? -
NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/TOP/trcini.F90
r10372 r10377 205 205 USE trcldf , ONLY: trc_ldf_ini 206 206 USE trcrad , ONLY: trc_rad_ini 207 USE trcsink, ONLY: trc_sink_ini 207 208 ! 208 209 INTEGER :: ierr … … 214 215 ! ! vertical diffusion: always implicit time stepping scheme 215 216 CALL trc_rad_ini ! positivity of passive tracers 217 CALL trc_sink_ini ! Vertical sedimentation of particles 216 218 ! 217 219 END SUBROUTINE trc_ini_trp
Note: See TracChangeset
for help on using the changeset viewer.