New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 3518 for branches – NEMO

Changeset 3518 for branches


Ignore:
Timestamp:
2012-10-29T13:22:36+01:00 (11 years ago)
Author:
rfurner
Message:

ammended code to calculate heat and salt transports in W and kg s-1

Location:
branches/2012/dev_r3452_UKMO2_DIADCT
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2012/dev_r3452_UKMO2_DIADCT/DOC/TexFiles/Chapters/Chap_DIA.tex

    r3294 r3518  
    836836- \texttt{volume\_transport} for volume transports (  unit: $10^{6} m^{3} s^{-1}$ ) 
    837837 
    838 - \texttt{heat\_transport}   for heat transports   (  unit: $10^{15} W $ ) 
    839  
    840 - \texttt{salt\_transport}   for salt transports   (  unit: $10^{9}g s^{-1}$ )\\ 
     838- \texttt{heat\_transport}   for heat transports   (  unit: $W$ ) 
     839 
     840- \texttt{salt\_transport}   for salt transports   (  unit: $kg s^{-1}$ )\\ 
    841841 
    842842 
  • branches/2012/dev_r3452_UKMO2_DIADCT/NEMOGCM/NEMO/OPA_SRC/DIA/diadct.F90

    r3501 r3518  
    2121  !!---------------------------------------------------------------------- 
    2222  !!---------------------------------------------------------------------- 
    23   !!   dia_dct      :  compute the transport through a sec. 
    24   !!   dia_dct_init :  read namelist. 
    25   !!   readsec      :  read sections description and pathway 
    26   !!   removepoints :  remove points which are common to 2 procs 
     23  !!   dia_dct      :  Compute the transport through a sec. 
     24  !!   dia_dct_init :  Read namelist. 
     25  !!   readsec      :  Read sections description and pathway 
     26  !!   removepoints :  Remove points which are common to 2 procs 
    2727  !!   transport    :  Compute transport for each sections 
    28   !!   dia_dct_wri  :  write tranports results in ascii files 
    29   !!   interp       :  compute Temperature/Salinity/density on U-point or V-point 
     28  !!   dia_dct_wri  :  Write tranports results in ascii files 
     29  !!   interp       :  Compute temperature/salinity/density at U-point or V-point 
    3030  !!    
    3131  !!---------------------------------------------------------------------- 
     
    9595     INTEGER                                      :: nb_class          ! number of boundaries for density classes 
    9696     INTEGER, DIMENSION(nb_point_max)             :: direction         ! vector direction of the point in the section 
    97      CHARACTER(len=40),DIMENSION(nb_class_max)    :: classname         ! caracteristics of the class 
     97     CHARACTER(len=40),DIMENSION(nb_class_max)    :: classname         ! characteristics of the class 
    9898     REAL(wp), DIMENSION(nb_class_max)            :: zsigi           ,&! in-situ   density classes    (99 if you don't want) 
    9999                                                     zsigp           ,&! potential density classes    (99 if you don't want) 
     
    309309     INTEGER :: isec, iiglo, ijglo, iiloc, ijloc,iost,i1 ,i2  ! temporary  integer 
    310310     INTEGER :: jsec, jpt                                     ! dummy loop indices 
    311                                                               ! heat/salt tranport is actived 
    312311 
    313312     INTEGER, DIMENSION(2) :: icoord  
     
    501500     !!             *** function removepoints 
    502501     !! 
    503      !!   ** Purpose :: 
    504      !!              remove points which are common to 2 procs 
    505      !! 
     502     !!   ** Purpose :: Remove points which are common to 2 procs 
    506503     !! 
    507504     !---------------------------------------------------------------------------- 
     
    595592     !!              loop on the level jk !! 
    596593     !!  
    597      !!  Output  ::  Arrays containing the volume,density,salinity,temperature etc  
    598      !!              transports for each point in a section, summed over each nn_dct.  
     594     !!  Output  ::  Arrays containing the volume,density,heat,salt transports for each i 
     595     !!              point in a section, summed over each nn_dct.  
    599596     !! 
    600597     !!------------------------------------------------------------------------------------------- 
     
    698695           DO jk=1,mbathy(k%I,k%J)  
    699696  
    700               ! compute temparature, salinity, insitu & potential density, ssh and depth at U/V point  
     697              ! compute temperature, salinity, insitu & potential density, ssh and depth at U/V point  
    701698              SELECT CASE( sec%direction(jseg) )  
    702699              CASE(0,1)  
     
    745742                 transports_3d(2,jsec,jseg,jk) = transports_3d(2,jsec,jseg,jk)  + zTnorm * zrhoi  
    746743                 transports_3d(3,jsec,jseg,jk) = transports_3d(3,jsec,jseg,jk)  + zTnorm * zrhop  
    747                  transports_3d(4,jsec,jseg,jk) = transports_3d(4,jsec,jseg,jk)  + zTnorm * ztn  
    748                  transports_3d(5,jsec,jseg,jk) = transports_3d(5,jsec,jseg,jk)  + zTnorm * zsn  
     744                 transports_3d(4,jsec,jseg,jk) = transports_3d(4,jsec,jseg,jk)  + zTnorm * (ztn + 273.15) * zrhop * rcp 
     745                 transports_3d(5,jsec,jseg,jk) = transports_3d(5,jsec,jseg,jk)  + zTnorm * zsn * zrhop * 0.001 
    749746              ENDIF 
    750747    
     
    787784        ENDDO !end of loop on the segment 
    788785 
    789      ENDIF   !end of sec%nb_point =0 case 
     786     ENDIF !end of sec%nb_point =0 case 
    790787     ! 
    791788  END SUBROUTINE transport 
     
    796793     !! and sum over the density/salinity/temperature/depth classes  
    797794     !!  
    798      !! Method:   
    799      !!           Sum over relevant grid cells to obtain values  
    800      !!           for each  
     795     !! Method:   Sum over relevant grid cells to obtain values   
     796     !!           for each class 
    801797     !!              There are several loops:                   
    802798     !!              loop on the segment between 2 nodes  
     
    805801     !!              test on the density/temperature/salinity/level  
    806802     !!  
    807      !!  ** Method  :Transport through a given section is equal to the sum of transports  
    808      !!              computed on each proc.  
    809      !!              On each proc,transport is equal to the sum of transport computed through  
    810      !!              segments linking each point of sec%listPoint  with the next one.     
     803     !!  Note:    Transport through a given section is equal to the sum of transports  
     804     !!           computed on each proc.  
     805     !!           On each proc,transport is equal to the sum of transport computed through  
     806     !!           segments linking each point of sec%listPoint  with the next one.     
    811807     !!  
    812808     !!-------------------------------------------------------------  
     
    816812  
    817813     TYPE(POINT_SECTION) :: k  
    818      INTEGER  :: jk,jseg,jclass                        !loop on level/segment/classes   
     814     INTEGER  :: jk,jseg,jclass                        ! dummy variables for looping on level/segment/classes   
    819815     REAL(wp) :: ztn, zsn, zrhoi, zrhop, zsshn, zfsdep ! temperature/salinity/ssh/potential density /depth at u/v point  
    820816     !!-------------------------------------------------------------  
     
    891887              !  LOOP ON THE DENSITY CLASSES |  
    892888              !-------------------------------  
    893               !The computation is made for each density/heat/salt/... class  
     889              !The computation is made for each density/temperature/salinity/depth class  
    894890              DO jclass=1,MAX(1,sec%nb_class-1)  
    895891  
     
    10151011     !!  
    10161012     !!        2. Write heat transports in "heat_transport" 
    1017      !!           Unit: Peta W : area * Velocity * T * rhau * Cp / 1.e15 
     1013     !!           Unit: W : area * Velocity / 1.e6 * T(in Kelvin) * rhop * Cp 
    10181014     !!  
    10191015     !!        3. Write salt transports in "salt_transport" 
    1020      !!           Unit: 10^9 g m^3 / s : area * Velocity * S / 1.e6 
     1016     !!           Unit: Kg/s : area * Velocity / 1.e6 * S * 1.e-3  
    10211017     !! 
    10221018     !!-------------------------------------------------------------  
     
    11521148  !!---------------------------------------------------------------------- 
    11531149  !! 
    1154   !!   Purpose: compute Temperature/Salinity/density at U-point or V-point 
     1150  !!   Purpose: compute temperature/salinity/density at U-point or V-point 
    11551151  !!   -------- 
    11561152  !! 
     
    11611157  !!  
    11621158  !! 
    1163   !!    |    I          |    I+1           |    Z=Temperature/Salinity/density at U-poinT 
     1159  !!    |    I          |    I+1           |    Z=temperature/salinity/density at U-poinT 
    11641160  !!    |               |                  | 
    1165   !!  ----------------------------------------  1. Veritcale interpolation: compute zbis 
     1161  !!  ----------------------------------------  1. Veritcal interpolation: compute zbis 
    11661162  !!    |               |                  |       interpolation between ptab(I,J,K) and ptab(I,J,K+1) 
    11671163  !!    |               |                  |       zbis =  
     
    12441240     zdep2 = fsdept(ii2,ij2,kk) - zdepu 
    12451241 
    1246      !weights 
     1242     ! weights 
    12471243     zwgt1 = SQRT( ( 0.5 * zet1 ) * ( 0.5 * zet1 ) + ( zdep1 * zdep1 ) ) 
    12481244     zwgt2 = SQRT( ( 0.5 * zet2 ) * ( 0.5 * zet2 ) + ( zdep2 * zdep2 ) ) 
     
    12711267 
    12721268        IF( ze3t >= 0. )THEN  
    1273            !zbis 
     1269           ! zbis 
    12741270           zbis = ptab(ii2,ij2,kk) + zwgt1 * ( ptab(ii2,ij2,kk-1) - ptab(ii2,ij2,kk) )  
    12751271           ! result 
    12761272            interp = umask(ii1,ij1,kk) * ( zet2 * ptab(ii1,ij1,kk) + zet1 * zbis )/( zet1 + zet2 ) 
    12771273        ELSE 
    1278            !zbis 
     1274           ! zbis 
    12791275           zbis = ptab(ii1,ij1,kk) + zwgt2 * ( ptab(ii1,ij1,kk-1) - ptab(ii1,ij2,kk) ) 
    12801276           ! result 
     
    13031299   END SUBROUTINE dia_dct_init 
    13041300 
    1305    SUBROUTINE dia_dct( kt )           ! Dummy routine 
    1306       INTEGER, INTENT( in ) ::   kt      ! ocean time-step index 
     1301   SUBROUTINE dia_dct( kt )         ! Dummy routine 
     1302      INTEGER, INTENT( in ) :: kt   ! ocean time-step index 
    13071303      WRITE(*,*) 'dia_dct: You should not have seen this print! error?', kt 
    13081304   END SUBROUTINE dia_dct 
Note: See TracChangeset for help on using the changeset viewer.