Changeset 3557


Ignore:
Timestamp:
2012-11-14T18:04:49+01:00 (9 years ago)
Author:
cetlod
Message:

branch:2012/dev_r3438_LOCEAN15_PISLOB minor modifications for PISCES when using AGRIF

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  
    132132   REAL(wp) ::   ox10   = -3.11680e-7  
    133133 
    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       
    141165 
    142166   !!* Substitution 
     
    310334               !        (CF. BROECKER ET AL., 1982) 
    311335 
    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 ) 
    314338               ak13(ji,jj,jk) = zak1 * EXP( zbuf1 * zcpexp + zbuf2 * zcpexp2 ) 
    315339 
    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 ) 
    318342               ak23(ji,jj,jk) = zak2 * EXP( zbuf1 * zcpexp + zbuf2 * zcpexp2 ) 
    319343 
    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 ) 
    322346               akb3(ji,jj,jk) = zakb * EXP( zbuf1 * zcpexp + zbuf2 * zcpexp2 ) 
    323347 
    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 ) 
    326350               akw3(ji,jj,jk) = zakw * EXP( zbuf1 * zcpexp + zbuf2 * zcpexp2 ) 
    327351 
     
    330354               !        AS FUNCTION OF PRESSURE FOLLOWING MILLERO 
    331355               !        (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 ) 
    334358               aksp(ji,jj,jk) = zaksp1 * EXP( zbuf1 * zcpexp + zbuf2 * zcpexp2 ) 
    335  
    336359 
    337360               ! TOTAL BORATE CONCENTR. [MOLES/L] 
  • branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsbc.F90

    r3475 r3557  
    274274         IF( sn_dust%ln_tint )     ALLOCATE( sf_dust(1)%fdta(jpi,jpj,1,2) ) 
    275275         ! 
    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 
    291293      ELSE 
    292294         sumdepsi  = 0._wp 
     
    335337            IF( slf_river(ifpr)%ln_tint ) ALLOCATE( sf_river(ifpr)%fdta(jpi,jpj,1,2) ) 
    336338         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 
    360364      ELSE 
    361365         rivdicinput = 0._wp 
     
    382386         IF( sn_ndepo%ln_tint )    ALLOCATE( sf_ndepo(1)%fdta(jpi,jpj,1,2) ) 
    383387         ! 
    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 
    399405      ELSE 
    400406         nitdepinput = 0._wp 
  • branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsms.F90

    r3531 r3557  
    323323 
    324324      IF(lwp)  WRITE(numout,*) 
    325       IF(lwp)  WRITE(numout,*) ' p4z_dmp : Relaxation of nutrients at time-step kt = ', kt 
     325      IF(lwp)  WRITE(numout,*) ' p4z_dmp : Restoring of nutrients at time-step kt = ', kt 
    326326      IF(lwp)  WRITE(numout,*) 
    327327 
    328       IF( cp_cfg == "orca" .AND. .NOT. lk_c1d ) THEN      ! ORCA condiguration (not 1D) ! 
     328      IF( cp_cfg == "orca" .AND. .NOT. lk_c1d ) THEN      ! ORCA configuration (not 1D) ! 
    329329         !                                                    ! --------------------------- ! 
    330330         ! set total alkalinity, phosphate, nitrate & silicate 
     
    373373 
    374374      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)  & 
    376376            &                     + trn(:,:,:,jpphy) + trn(:,:,:,jpdia)  & 
    377377            &                     + trn(:,:,:,jpzoo) + trn(:,:,:,jpmes)  & 
Note: See TracChangeset for help on using the changeset viewer.