Changeset 7753 for trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zfechem.F90
- Timestamp:
- 2017-03-03T12:46:59+01:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zfechem.F90
r7698 r7753 83 83 ! Allocate temporary workspace 84 84 CALL wrk_alloc( jpi, jpj, jpk, zFe3, zFeL1, zTL1, ztotlig, precip ) 85 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 86 DO jk = 1, jpk 87 DO jj = 1, jpj 88 DO ji = 1, jpi 89 zFe3 (ji,jj,jk) = 0. 90 zFeL1(ji,jj,jk) = 0. 91 zTL1 (ji,jj,jk) = 0. 92 END DO 93 END DO 94 END DO 85 zFe3 (:,:,:) = 0. 86 zFeL1(:,:,:) = 0. 87 zTL1 (:,:,:) = 0. 88 IF( ln_fechem ) THEN 89 CALL wrk_alloc( jpi, jpj, zstrn, zstrn2 ) 90 CALL wrk_alloc( jpi, jpj, jpk, zFe2, zFeL2, zTL2, zFeP ) 91 zFe2 (:,:,:) = 0. 92 zFeL2(:,:,:) = 0. 93 zTL2 (:,:,:) = 0. 94 zFeP (:,:,:) = 0. 95 ENDIF 95 96 96 97 ! Total ligand concentration : Ligands can be chosen to be constant or variable … … 98 99 ! ------------------------------------------------- 99 100 IF( ln_ligvar ) THEN 100 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 101 DO jk = 1, jpk 102 DO jj = 1, jpj 103 DO ji = 1, jpi 104 ztotlig(ji,jj,jk) = 0.09 * trb(ji,jj,jk,jpdoc) * 1E6 + ligand * 1E9 105 ztotlig(ji,jj,jk) = MIN( ztotlig(ji,jj,jk), 10. ) 106 END DO 107 END DO 108 END DO 101 ztotlig(:,:,:) = 0.09 * trb(:,:,:,jpdoc) * 1E6 + ligand * 1E9 102 ztotlig(:,:,:) = MIN( ztotlig(:,:,:), 10. ) 109 103 ELSE 110 IF( ln_ligand ) THEN 111 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 112 DO jk = 1, jpk 113 DO jj = 1, jpj 114 DO ji = 1, jpi 115 ztotlig(ji,jj,jk) = trb(ji,jj,jk,jplgw) * 1E9 116 END DO 117 END DO 118 END DO 119 ELSE 120 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 121 DO jk = 1, jpk 122 DO jj = 1, jpj 123 DO ji = 1, jpi 124 ztotlig(ji,jj,jk) = ligand * 1E9 125 END DO 126 END DO 127 END DO 104 IF( ln_ligand ) THEN ; ztotlig(:,:,:) = trb(:,:,:,jplgw) * 1E9 105 ELSE ; ztotlig(:,:,:) = ligand * 1E9 128 106 ENDIF 129 107 ENDIF 130 108 131 109 IF( ln_fechem ) THEN 132 CALL wrk_alloc( jpi, jpj, zstrn, zstrn2 )133 CALL wrk_alloc( jpi, jpj, jpk, zFe2, zFeL2, zTL2, zFeP )134 110 ! compute the day length depending on latitude and the day 135 111 zrum = REAL( nday_year - 80, wp ) / REAL( nyear_len(1), wp ) 136 112 zcodel = ASIN( SIN( zrum * rpi * 2._wp ) * SIN( rad * 23.5_wp ) ) 137 113 138 !$OMP PARALLEL139 !$OMP DO schedule(static) private(jk,jj,ji)140 DO jk = 1, jpk141 DO jj = 1, jpj142 DO ji = 1, jpi143 zFe2 (ji,jj,jk) = 0.144 zFeL2(ji,jj,jk) = 0.145 zTL2 (ji,jj,jk) = 0.146 zFeP (ji,jj,jk) = 0.147 END DO148 END DO149 END DO150 114 ! day length in hours 151 !$OMP DO schedule(static) private(jj,ji) 152 DO jj = 1, jpj 153 DO ji = 1, jpi 154 zstrn(ji,jj) = 0. 155 END DO 156 END DO 157 !$OMP DO schedule(static) private(jj,ji,zargu) 115 zstrn(:,:) = 0. 158 116 DO jj = 1, jpj 159 117 DO ji = 1, jpi … … 165 123 166 124 ! Maximum light intensity 167 !$OMP DO schedule(static) private(jj,ji) 168 DO jj = 1, jpj 169 DO ji = 1, jpi 170 zstrn2(ji,jj) = zstrn(ji,jj) / 24. 171 IF( zstrn(ji,jj) < 1.e0 ) zstrn(ji,jj) = 24. 172 zstrn(ji,jj) = 24. / zstrn(ji,jj) 173 END DO 174 END DO 125 zstrn2(:,:) = zstrn(:,:) / 24. 126 WHERE( zstrn(:,:) < 1.e0 ) zstrn(:,:) = 24. 127 zstrn(:,:) = 24. / zstrn(:,:) 175 128 176 129 ! ------------------------------------------------------------ … … 180 133 ! ------------------------------------------------------------ 181 134 DO jn = 1, 2 182 !$OMP DO schedule(static) private(jk,jj,ji,zzstrn2,ztligand,zph,zoxy,zkox,zkph2,zkph1,ztfe,za) &183 !$OMP& private(zb,zc,zkappa1,zkappa2,za2,za1,za0,zp,zq,zp3,zq2,zd,zr,zphi,zxs,zfff,jic,zfunc) &184 !$OMP& private(zlight,zzFe3,zzFep,zzFeL2,zzFeL1,zzFe2)185 135 DO jk = 1, jpkm1 186 136 DO jj = 1, jpj … … 263 213 END DO 264 214 END DO 265 !$OMP END PARALLEL266 215 ELSE 267 216 ! ------------------------------------------------------------ … … 270 219 ! Chemistry is supposed to be fast enough to be at equilibrium 271 220 ! ------------------------------------------------------------ 272 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji,zkeq,zfesatur,ztfe)273 221 DO jk = 1, jpkm1 274 222 DO jj = 1, jpj … … 291 239 292 240 zdust = 0. ! if no dust available 293 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji,zfeequi,zfecoll,zhplus,fe3sol,ztrc,zdust) &294 !$OMP& private(zlam1b,zscave,zdenom1,zdenom2,zlamfac,zdep,zcoag,zlam1a,zaggdfea,zaggdfeb)295 241 DO jk = 1, jpkm1 296 242 DO jj = 1, jpj … … 362 308 ! Define the bioavailable fraction of iron 363 309 ! ---------------------------------------- 364 IF( ln_fechem ) THEN 365 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 366 DO jk = 1, jpk 367 DO jj = 1, jpj 368 DO ji = 1, jpi 369 biron(ji,jj,jk) = MAX( 0., trb(ji,jj,jk,jpfer) - zFeP(ji,jj,jk) * 1E-9 ) 370 END DO 371 END DO 372 END DO 373 ELSE 374 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 375 DO jk = 1, jpk 376 DO jj = 1, jpj 377 DO ji = 1, jpi 378 biron(ji,jj,jk) = trb(ji,jj,jk,jpfer) 379 END DO 380 END DO 381 END DO 310 IF( ln_fechem ) THEN ; biron(:,:,:) = MAX( 0., trb(:,:,:,jpfer) - zFeP(:,:,:) * 1E-9 ) 311 ELSE ; biron(:,:,:) = trb(:,:,:,jpfer) 382 312 ENDIF 383 313 ! 384 314 IF( ln_ligand ) THEN 385 315 ! 386 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji,zlam1a,zlam1b,zligco,zaggliga,zaggligb)387 316 DO jk = 1, jpkm1 388 317 DO jj = 1, jpj … … 402 331 ! 403 332 IF( .NOT.ln_fechem) THEN 404 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 405 DO jk = 1, jpk 406 DO jj = 1, jpj 407 DO ji = 1, jpi 408 plig(ji,jj,jk) = MAX( 0., ( ( zFeL1(ji,jj,jk) * 1E-9 ) / ( trb(ji,jj,jk,jpfer) +rtrn ) ) ) 409 plig(ji,jj,jk) = MAX( 0. , plig(ji,jj,jk) ) 410 END DO 411 END DO 412 END DO 333 plig(:,:,:) = MAX( 0., ( ( zFeL1(:,:,:) * 1E-9 ) / ( trb(:,:,:,jpfer) +rtrn ) ) ) 334 plig(:,:,:) = MAX( 0. , plig(:,:,:) ) 413 335 ENDIF 414 336 !
Note: See TracChangeset
for help on using the changeset viewer.