Changeset 3557
- Timestamp:
- 2012-11-14T18:04:49+01:00 (12 years ago)
- Location:
- branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zche.F90
r3443 r3557 132 132 REAL(wp) :: ox10 = -3.11680e-7 133 133 134 REAL(wp), DIMENSION(5) :: devk1, devk2, devk3, devk4, devk5 ! coeff. for seawater pressure correction 135 ! ! (millero 95) 136 DATA devk1 / -25.5 , -15.82 , -29.48 , -25.60 , -48.76 / 137 DATA devk2 / 0.1271 , -0.0219 , 0.1622 , 0.2324 , 0.5304 / 138 DATA devk3 / 0. , 0. , 2.608E-3, -3.6246E-3, 0. / 139 DATA devk4 / -3.08E-3 , 1.13E-3 , -2.84E-3, -5.13E-3 , -11.76E-3 / 140 DATA devk5 / 0.0877E-3, -0.1475E-3, 0. , 0.0794E-3 , 0.3692E-3 / 134 ! ! coeff. for seawater pressure correction : millero 95 135 ! ! AGRIF doesn't like the DATA instruction 136 REAL(wp) :: devk11 = -25.5 137 REAL(wp) :: devk12 = -15.82 138 REAL(wp) :: devk13 = -29.48 139 REAL(wp) :: devk14 = -25.60 140 REAL(wp) :: devk15 = -48.76 141 ! 142 REAL(wp) :: devk21 = 0.1271 143 REAL(wp) :: devk22 = -0.0219 144 REAL(wp) :: devk23 = 0.1622 145 REAL(wp) :: devk24 = 0.2324 146 REAL(wp) :: devk25 = 0.5304 147 ! 148 REAL(wp) :: devk31 = 0. 149 REAL(wp) :: devk32 = 0. 150 REAL(wp) :: devk33 = 2.608E-3 151 REAL(wp) :: devk34 = -3.6246E-3 152 REAL(wp) :: devk35 = 0. 153 ! 154 REAL(wp) :: devk41 = -3.08E-3 155 REAL(wp) :: devk42 = 1.13E-3 156 REAL(wp) :: devk43 = -2.84E-3 157 REAL(wp) :: devk44 = -5.13E-3 158 REAL(wp) :: devk45 = -11.76E-3 159 ! 160 REAL(wp) :: devk51 = 0.0877E-3 161 REAL(wp) :: devk52 = -0.1475E-3 162 REAL(wp) :: devk53 = 0. 163 REAL(wp) :: devk54 = 0.0794E-3 164 REAL(wp) :: devk55 = 0.3692E-3 141 165 142 166 !!* Substitution … … 310 334 ! (CF. BROECKER ET AL., 1982) 311 335 312 zbuf1 = - (devk1(1)+devk2(1)*ztc+devk3(1)*ztc*ztc)313 zbuf2 = 0.5 *(devk4(1)+devk5(1)*ztc)336 zbuf1 = - ( devk11 + devk21 * ztc + devk31 * ztc * ztc ) 337 zbuf2 = 0.5 * ( devk41 + devk51 * ztc ) 314 338 ak13(ji,jj,jk) = zak1 * EXP( zbuf1 * zcpexp + zbuf2 * zcpexp2 ) 315 339 316 zbuf1 = - ( devk1 (2) + devk2(2) * ztc + devk3(2)* ztc * ztc )317 zbuf2 = 0.5 * ( devk4 (2) + devk5(2)* ztc )340 zbuf1 = - ( devk12 + devk22 * ztc + devk32 * ztc * ztc ) 341 zbuf2 = 0.5 * ( devk42 + devk52 * ztc ) 318 342 ak23(ji,jj,jk) = zak2 * EXP( zbuf1 * zcpexp + zbuf2 * zcpexp2 ) 319 343 320 zbuf1 = - ( devk1 (3) + devk2(3) * ztc + devk3(3)* ztc * ztc )321 zbuf2 = 0.5 * ( devk4 (3) + devk5(3)* ztc )344 zbuf1 = - ( devk13 + devk23 * ztc + devk33 * ztc * ztc ) 345 zbuf2 = 0.5 * ( devk43 + devk53 * ztc ) 322 346 akb3(ji,jj,jk) = zakb * EXP( zbuf1 * zcpexp + zbuf2 * zcpexp2 ) 323 347 324 zbuf1 = - ( devk1 (4) + devk2(4) * ztc + devk3(4)* ztc * ztc )325 zbuf2 = 0.5 * ( devk4 (4) + devk5(4)* ztc )348 zbuf1 = - ( devk14 + devk24 * ztc + devk34 * ztc * ztc ) 349 zbuf2 = 0.5 * ( devk44 + devk54 * ztc ) 326 350 akw3(ji,jj,jk) = zakw * EXP( zbuf1 * zcpexp + zbuf2 * zcpexp2 ) 327 351 … … 330 354 ! AS FUNCTION OF PRESSURE FOLLOWING MILLERO 331 355 ! (P. 1285) AND BERNER (1976) 332 zbuf1 = - ( devk1 (5) + devk2(5) * ztc + devk3(5)* ztc * ztc )333 zbuf2 = 0.5 * ( devk4 (5) + devk5(5)* ztc )356 zbuf1 = - ( devk15 + devk25 * ztc + devk35 * ztc * ztc ) 357 zbuf2 = 0.5 * ( devk45 + devk55 * ztc ) 334 358 aksp(ji,jj,jk) = zaksp1 * EXP( zbuf1 * zcpexp + zbuf2 * zcpexp2 ) 335 336 359 337 360 ! TOTAL BORATE CONCENTR. [MOLES/L] -
branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsbc.F90
r3475 r3557 274 274 IF( sn_dust%ln_tint ) ALLOCATE( sf_dust(1)%fdta(jpi,jpj,1,2) ) 275 275 ! 276 ! Get total input dust ; need to compute total atmospheric supply of Si in a year 277 CALL iom_open ( TRIM( sn_dust%clname ) , numdust ) 278 CALL iom_gettime( numdust, zsteps, kntime=ntimes_dust) ! get number of record in file 279 ALLOCATE( zdust(jpi,jpj,ntimes_dust) ) 280 DO jm = 1, ntimes_dust 281 CALL iom_get( numdust, jpdom_data, TRIM( sn_dust%clvar ), zdust(:,:,jm), jm ) 282 END DO 283 CALL iom_close( numdust ) 284 ztimes_dust = 1._wp / FLOAT( ntimes_dust ) 285 sumdepsi = 0.e0 286 DO jm = 1, ntimes_dust 287 sumdepsi = sumdepsi + glob_sum( zdust(:,:,jm) * e1e2t(:,:) * tmask(:,:,1) * ztimes_dust ) 288 ENDDO 289 sumdepsi = sumdepsi / ( nyear_len(1) * rday ) * 12. * 8.8 * 0.075 / 28.1 290 DEALLOCATE( zdust) 276 IF( Agrif_Root() ) THEN ! Only on the master grid 277 ! Get total input dust ; need to compute total atmospheric supply of Si in a year 278 CALL iom_open ( TRIM( sn_dust%clname ) , numdust ) 279 CALL iom_gettime( numdust, zsteps, kntime=ntimes_dust) ! get number of record in file 280 ALLOCATE( zdust(jpi,jpj,ntimes_dust) ) 281 DO jm = 1, ntimes_dust 282 CALL iom_get( numdust, jpdom_data, TRIM( sn_dust%clvar ), zdust(:,:,jm), jm ) 283 END DO 284 CALL iom_close( numdust ) 285 ztimes_dust = 1._wp / FLOAT( ntimes_dust ) 286 sumdepsi = 0.e0 287 DO jm = 1, ntimes_dust 288 sumdepsi = sumdepsi + glob_sum( zdust(:,:,jm) * e1e2t(:,:) * tmask(:,:,1) * ztimes_dust ) 289 ENDDO 290 sumdepsi = sumdepsi / ( nyear_len(1) * rday ) * 12. * 8.8 * 0.075 / 28.1 291 DEALLOCATE( zdust) 292 ENDIF 291 293 ELSE 292 294 sumdepsi = 0._wp … … 335 337 IF( slf_river(ifpr)%ln_tint ) ALLOCATE( sf_river(ifpr)%fdta(jpi,jpj,1,2) ) 336 338 END DO 337 ! Get total input rivers ; need to compute total river supply in a year 338 DO ifpr = 1, jpriv 339 CALL iom_open ( TRIM( slf_river(ifpr)%clname ), numriv ) 340 CALL iom_gettime( numriv, zsteps, kntime=ntimes_riv) 341 ALLOCATE( zriver(jpi,jpj,ntimes_riv) ) 342 DO jm = 1, ntimes_riv 343 CALL iom_get( numriv, jpdom_data, TRIM( slf_river(ifpr)%clvar ), zriver(:,:,jm), jm ) 344 END DO 345 CALL iom_close( numriv ) 346 ztimes_riv = 1._wp / FLOAT(ntimes_riv) 347 DO jm = 1, ntimes_riv 348 rivinput(ifpr) = rivinput(ifpr) + glob_sum( zriver(:,:,jm) * tmask(:,:,1) * ztimes_riv ) 349 END DO 350 DEALLOCATE( zriver) 351 END DO 352 ! N/P and Si releases due to coastal rivers 353 ! ----------------------------------------- 354 rivdicinput = (rivinput(jr_dic) + rivinput(jr_doc) ) * 1E3 / 12._wp 355 rivdininput = (rivinput(jr_din) + rivinput(jr_don) ) * 1E3 / rno3 / 14._wp 356 rivdipinput = (rivinput(jr_dip) + rivinput(jr_dop) ) * 1E3 / po4r / 31._wp 357 rivdsiinput = rivinput(jr_dsi) * 1E3 / 28.1_wp 358 rivalkinput = rivinput(jr_dic) * 1E3 / 12._wp 359 ! 339 IF( Agrif_Root() ) THEN ! Only on the master grid 340 ! Get total input rivers ; need to compute total river supply in a year 341 DO ifpr = 1, jpriv 342 CALL iom_open ( TRIM( slf_river(ifpr)%clname ), numriv ) 343 CALL iom_gettime( numriv, zsteps, kntime=ntimes_riv) 344 ALLOCATE( zriver(jpi,jpj,ntimes_riv) ) 345 DO jm = 1, ntimes_riv 346 CALL iom_get( numriv, jpdom_data, TRIM( slf_river(ifpr)%clvar ), zriver(:,:,jm), jm ) 347 END DO 348 CALL iom_close( numriv ) 349 ztimes_riv = 1._wp / FLOAT(ntimes_riv) 350 DO jm = 1, ntimes_riv 351 rivinput(ifpr) = rivinput(ifpr) + glob_sum( zriver(:,:,jm) * tmask(:,:,1) * ztimes_riv ) 352 END DO 353 DEALLOCATE( zriver) 354 END DO 355 ! N/P and Si releases due to coastal rivers 356 ! ----------------------------------------- 357 rivdicinput = (rivinput(jr_dic) + rivinput(jr_doc) ) * 1E3 / 12._wp 358 rivdininput = (rivinput(jr_din) + rivinput(jr_don) ) * 1E3 / rno3 / 14._wp 359 rivdipinput = (rivinput(jr_dip) + rivinput(jr_dop) ) * 1E3 / po4r / 31._wp 360 rivdsiinput = rivinput(jr_dsi) * 1E3 / 28.1_wp 361 rivalkinput = rivinput(jr_dic) * 1E3 / 12._wp 362 ! 363 ENDIF 360 364 ELSE 361 365 rivdicinput = 0._wp … … 382 386 IF( sn_ndepo%ln_tint ) ALLOCATE( sf_ndepo(1)%fdta(jpi,jpj,1,2) ) 383 387 ! 384 ! Get total input dust ; need to compute total atmospheric supply of N in a year 385 CALL iom_open ( TRIM( sn_ndepo%clname ), numdepo ) 386 CALL iom_gettime( numdepo, zsteps, kntime=ntimes_ndep) 387 ALLOCATE( zndepo(jpi,jpj,ntimes_ndep) ) 388 DO jm = 1, ntimes_ndep 389 CALL iom_get( numdepo, jpdom_data, TRIM( sn_ndepo%clvar ), zndepo(:,:,jm), jm ) 390 END DO 391 CALL iom_close( numdepo ) 392 ztimes_ndep = 1._wp / FLOAT( ntimes_ndep ) 393 nitdepinput = 0._wp 394 DO jm = 1, ntimes_ndep 395 nitdepinput = nitdepinput + glob_sum( zndepo(:,:,jm) * e1e2t(:,:) * tmask(:,:,1) * ztimes_ndep ) 396 ENDDO 397 nitdepinput = nitdepinput / rno3 / 14E6 398 DEALLOCATE( zndepo) 388 IF( Agrif_Root() ) THEN ! Only on the master grid 389 ! Get total input dust ; need to compute total atmospheric supply of N in a year 390 CALL iom_open ( TRIM( sn_ndepo%clname ), numdepo ) 391 CALL iom_gettime( numdepo, zsteps, kntime=ntimes_ndep) 392 ALLOCATE( zndepo(jpi,jpj,ntimes_ndep) ) 393 DO jm = 1, ntimes_ndep 394 CALL iom_get( numdepo, jpdom_data, TRIM( sn_ndepo%clvar ), zndepo(:,:,jm), jm ) 395 END DO 396 CALL iom_close( numdepo ) 397 ztimes_ndep = 1._wp / FLOAT( ntimes_ndep ) 398 nitdepinput = 0._wp 399 DO jm = 1, ntimes_ndep 400 nitdepinput = nitdepinput + glob_sum( zndepo(:,:,jm) * e1e2t(:,:) * tmask(:,:,1) * ztimes_ndep ) 401 ENDDO 402 nitdepinput = nitdepinput / rno3 / 14E6 403 DEALLOCATE( zndepo) 404 ENDIF 399 405 ELSE 400 406 nitdepinput = 0._wp -
branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsms.F90
r3531 r3557 323 323 324 324 IF(lwp) WRITE(numout,*) 325 IF(lwp) WRITE(numout,*) ' p4z_dmp : Re laxationof nutrients at time-step kt = ', kt325 IF(lwp) WRITE(numout,*) ' p4z_dmp : Restoring of nutrients at time-step kt = ', kt 326 326 IF(lwp) WRITE(numout,*) 327 327 328 IF( cp_cfg == "orca" .AND. .NOT. lk_c1d ) THEN ! ORCA con diguration (not 1D) !328 IF( cp_cfg == "orca" .AND. .NOT. lk_c1d ) THEN ! ORCA configuration (not 1D) ! 329 329 ! ! --------------------------- ! 330 330 ! set total alkalinity, phosphate, nitrate & silicate … … 373 373 374 374 IF( ln_check_mass .AND. kt == nitend ) THEN ! Compute the budget of NO3, ALK, Si, Fer 375 no3budget = glob_sum( ( trn(:,:,:,jpno3) + trn(:,:,:,jpnh4) &375 no3budget = glob_sum( ( trn(:,:,:,jpno3) + trn(:,:,:,jpnh4) & 376 376 & + trn(:,:,:,jpphy) + trn(:,:,:,jpdia) & 377 377 & + trn(:,:,:,jpzoo) + trn(:,:,:,jpmes) &
Note: See TracChangeset
for help on using the changeset viewer.