Changeset 12009


Ignore:
Timestamp:
2019-11-29T10:47:32+01:00 (9 months ago)
Author:
cetlod
Message:

cmip6_diag : minor corrections

Location:
NEMO/branches/2019/dev_r11643_ENHANCE-11_CEthe_Shaconemo_diags/src/OCE
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r11643_ENHANCE-11_CEthe_Shaconemo_diags/src/OCE/DIA/diaar5.F90

    r11995 r12009  
    232232            ALLOCATE( ztpot(jpi,jpj,jpk) ) 
    233233            ztpot(:,:,jpk) = 0._wp 
    234             ztpot(:,:,:)   = eos_pt_from_ct( tsn(:,:,:,jp_tem), tsn(:,:,:,jp_sal) ) 
     234            DO jk = 1, jpkm1 
     235               ztpot(:,:,jk) = eos_pt_from_ct( tsn(:,:,jk,jp_tem), tsn(:,:,jk,jp_sal) ) 
     236            END DO 
    235237            ! 
    236238            CALL iom_put( 'toce_pot', ztpot(:,:,:) )  ! potential temperature (TEOS-10 case) 
  • NEMO/branches/2019/dev_r11643_ENHANCE-11_CEthe_Shaconemo_diags/src/OCE/TRA/eosbn2.F90

    r11995 r12009  
    3030   !!   eos_insitu_2d : Compute the in situ density for 2d fields 
    3131   !!   bn2           : Compute the Brunt-Vaisala frequency 
     32   !!   bn2           : compute the Brunt-Vaisala frequency 
    3233   !!   eos_pt_from_ct: compute the potential temperature from the Conservative Temperature 
    3334   !!   eos_rab       : generic interface of in situ thermal/haline expansion ratio  
     
    6667   END INTERFACE 
    6768   ! 
    68    INTERFACE eos_pt_from_ct 
    69       MODULE PROCEDURE eos_pt_from_ct_2d, eos_pt_from_ct_3d 
    70    END INTERFACE 
    71  
    7269   PUBLIC   eos            ! called by step, istate, tranpc and zpsgrd modules 
    7370   PUBLIC   bn2            ! called by step module 
     
    7976 
    8077   !                               !!** Namelist nameos ** 
    81    LOGICAL , PUBLIC ::   ln_TEOS10   
    82    LOGICAL , PUBLIC ::   ln_EOS80   
    83    LOGICAL , PUBLIC ::   ln_SEOS   
     78   LOGICAL , PUBLIC ::   ln_TEOS10 
     79   LOGICAL , PUBLIC ::   ln_EOS80 
     80   LOGICAL , PUBLIC ::   ln_SEOS 
    8481 
    8582   ! Parameters 
     
    939936 
    940937 
    941    FUNCTION eos_pt_from_ct_2d( ctmp, psal ) RESULT( ptmp ) 
     938   FUNCTION eos_pt_from_ct( ctmp, psal ) RESULT( ptmp ) 
    942939      !!---------------------------------------------------------------------- 
    943940      !!                 ***  ROUTINE eos_pt_from_ct  *** 
     
    962959      !!---------------------------------------------------------------------- 
    963960      ! 
    964       IF( ln_timing )   CALL timing_start('eos_pt_from_ct_2d') 
     961      IF( ln_timing )   CALL timing_start('eos_pt_from_ct') 
    965962      ! 
    966963      zdeltaS = 5._wp 
     
    993990      END DO 
    994991      ! 
    995       IF( ln_timing )   CALL timing_stop('eos_pt_from_ct_2d') 
    996       ! 
    997    END FUNCTION eos_pt_from_ct_2d 
    998  
    999     
    1000    FUNCTION eos_pt_from_ct_3d( ctmp, psal ) RESULT( ptmp ) 
    1001       !!---------------------------------------------------------------------- 
    1002       !!                 ***  ROUTINE eos_pt_from_ct  *** 
    1003       !! 
    1004       !! ** Purpose :   Compute pot.temp. from cons. temp. [Celcius] 
    1005       !! 
    1006       !! ** Method  :   rational approximation (5/3th order) of TEOS-10 algorithm 
    1007       !!       checkvalue: pt=20.02391895 Celsius for sa=35.7g/kg, ct=20degC 
    1008       !! 
    1009       !! Reference  :   TEOS-10, UNESCO 
    1010       !!                Rational approximation to TEOS10 algorithm (rms error on WOA13 values: 4.0e-5 degC) 
    1011       !!---------------------------------------------------------------------- 
    1012       REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in) ::   ctmp   ! Cons. Temp [Celcius] 
    1013       REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in) ::   psal   ! salinity   [psu] 
    1014       ! Leave result array automatic rather than making explicitly allocated 
    1015       REAL(wp), DIMENSION(jpi,jpj,jpk) ::   ptmp   ! potential temperature [Celcius] 
    1016       ! 
    1017       INTEGER  ::   ji, jj, jk           ! dummy loop indices 
    1018       REAL(wp) ::   zt , zs , ztm        ! local scalars 
    1019       REAL(wp) ::   zn , zd              ! local scalars 
    1020       REAL(wp) ::   zdeltaS , z1_S0 , z1_T0 
    1021       !!---------------------------------------------------------------------- 
    1022       ! 
    1023       IF ( ln_timing )   CALL timing_start('eos_pt_from_ct_3d') 
    1024       ! 
    1025       zdeltaS = 5._wp 
    1026       z1_S0   = 0.875_wp/35.16504_wp 
    1027       z1_T0   = 1._wp/40._wp 
    1028       ! 
    1029       DO jk = 1, jpkm1 
    1030          DO jj = 1, jpj 
    1031             DO ji = 1, jpi 
    1032                ! 
    1033                zt  = ctmp   (ji,jj,jk) * z1_T0 
    1034                zs  = SQRT( ABS( psal(ji,jj,jk) + zdeltaS ) * r1_S0 ) 
    1035                ztm = tmask(ji,jj,jk) 
    1036                ! 
    1037                zn = ((((-2.1385727895e-01_wp*zt   & 
    1038                   &   - 2.7674419971e-01_wp*zs+1.0728094330_wp)*zt   & 
    1039                   &   + (2.6366564313_wp*zs+3.3546960647_wp)*zs-7.8012209473_wp)*zt   & 
    1040                   &   + ((1.8835586562_wp*zs+7.3949191679_wp)*zs-3.3937395875_wp)*zs-5.6414948432_wp)*zt   & 
    1041                   &   + (((3.5737370589_wp*zs-1.5512427389e+01_wp)*zs+2.4625741105e+01_wp)*zs   & 
    1042                   &      +1.9912291000e+01_wp)*zs-3.2191146312e+01_wp)*zt   & 
    1043                   &   + ((((5.7153204649e-01_wp*zs-3.0943149543_wp)*zs+9.3052495181_wp)*zs   & 
    1044                   &      -9.4528934807_wp)*zs+3.1066408996_wp)*zs-4.3504021262e-01_wp 
    1045                   ! 
    1046                zd = (2.0035003456_wp*zt   & 
    1047                   &   -3.4570358592e-01_wp*zs+5.6471810638_wp)*zt   & 
    1048                   &   + (1.5393993508_wp*zs-6.9394762624_wp)*zs+1.2750522650e+01_wp 
    1049                   ! 
    1050                ptmp(ji,jj,jk) = ( zt / z1_T0 + zn / zd ) * ztm 
    1051                   ! 
    1052             END DO 
    1053          END DO 
    1054       END DO 
    1055       ! 
    1056       IF( ln_timing )   CALL timing_stop('eos_pt_from_ct_3d') 
    1057       ! 
    1058    END FUNCTION eos_pt_from_ct_3d 
     992      IF( ln_timing )   CALL timing_stop('eos_pt_from_ct') 
     993      ! 
     994   END FUNCTION eos_pt_from_ct 
    1059995 
    1060996 
     
    17151651 
    17161652         r1_S0  = 0.875_wp/35.16504_wp   ! Used to convert CT in potential temperature when using bulk formulae (eos_pt_from_ct) 
    1717  
     1653          
    17181654         IF(lwp) THEN 
    17191655            WRITE(numout,*) 
Note: See TracChangeset for help on using the changeset viewer.