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 15540 for NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/ISF/isfparmlt.F90 – NEMO

Ignore:
Timestamp:
2021-11-26T12:27:56+01:00 (3 years ago)
Author:
sparonuz
Message:

Mixed precision version, tested up to 30 years on ORCA2.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/ISF/isfparmlt.F90

    r14219 r15540  
    5252      !! 
    5353      !!-------------------------- OUT ------------------------------------- 
    54       REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) :: pqfwf, pqoce, pqhc  ! fresh water, ice-ocean heat and heat content fluxes 
     54      REAL(dp), DIMENSION(jpi,jpj), INTENT(inout) :: pqfwf, pqoce, pqhc  ! fresh water, ice-ocean heat and heat content fluxes 
    5555      !!-------------------------- IN  ------------------------------------- 
    5656      INTEGER, INTENT(in) ::   kt   ! ocean time step 
     
    8484      !! 
    8585      !!-------------------------- OUT ------------------------------------- 
    86       REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) :: pqhc, pqfwf, pqoce  ! fresh water and ice-ocean heat fluxes 
     86      REAL(dp), DIMENSION(jpi,jpj), INTENT(inout) :: pqhc, pqfwf, pqoce  ! fresh water and ice-ocean heat fluxes 
    8787      !!-------------------------- IN  ------------------------------------- 
    8888      INTEGER,  INTENT(in) :: kt 
     
    9090      !!-------------------------------------------------------------------- 
    9191      INTEGER :: jk 
    92       REAL(wp), DIMENSION(jpi,jpj,jpk)  :: ztfrz3d 
    93       REAL(wp), DIMENSION(jpi,jpj)      :: ztfrz 
     92      REAL(dp), DIMENSION(jpi,jpj,jpk)  :: ztfrz3d 
     93      REAL(dp), DIMENSION(jpi,jpj)      :: ztfrz 
    9494      !!-------------------------------------------------------------------- 
    9595      ! 
     
    100100      ! 1. ------------Mean freezing point 
    101101      DO jk = 1,jpk 
    102          CALL eos_fzp(CASTWP(ts(:,:,jk,jp_sal,Kmm)), ztfrz3d(:,:,jk), CASTWP(gdept(:,:,jk,Kmm))) 
     102         CALL eos_fzp(ts(:,:,jk,jp_sal,Kmm), ztfrz3d(:,:,jk), gdept(:,:,jk,Kmm)) 
    103103      END DO 
    104       CALL isf_tbl(Kmm, CASTDP(ztfrz3d), ztfrz, 'T', misfkt_par, rhisf_tbl_par, misfkb_par, rfrac_tbl_par ) 
     104      CALL isf_tbl(Kmm, ztfrz3d, ztfrz, 'T', misfkt_par, rhisf_tbl_par, misfkb_par, rfrac_tbl_par ) 
    105105      ! 
    106106      pqfwf(:,:) = - sf_isfpar_fwf(1)%fnow(:,:,1)      ! fresh water flux from the isf (fwfisf <0 mean melting)  
     
    128128      !!---------------------------------------------------------------------- 
    129129      !!-------------------------- OUT ------------------------------------- 
    130       REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) :: pqhc, pqfwf, pqoce  ! fresh water and ice-ocean heat fluxes 
     130      REAL(dp), DIMENSION(jpi,jpj), INTENT(inout) :: pqhc, pqfwf, pqoce  ! fresh water and ice-ocean heat fluxes 
    131131      !!-------------------------- IN  ------------------------------------- 
    132132      INTEGER,  INTENT(in) :: kt 
     
    134134      !!-------------------------------------------------------------------- 
    135135      INTEGER :: jk 
    136       REAL(wp), DIMENSION(jpi,jpj,jpk) :: ztfrz3d        ! freezing point 
    137       REAL(wp), DIMENSION(jpi,jpj)     :: ztfrz          ! freezing point 
    138       REAL(wp), DIMENSION(jpi,jpj)     :: ztavg          ! temperature avg 
     136      REAL(dp), DIMENSION(jpi,jpj,jpk) :: ztfrz3d        ! freezing point 
     137      REAL(dp), DIMENSION(jpi,jpj)     :: ztfrz          ! freezing point 
     138      REAL(dp), DIMENSION(jpi,jpj)     :: ztavg          ! temperature avg 
    139139      !!---------------------------------------------------------------------- 
    140140      ! 
    141141      ! 0. ------------Mean freezing point 
    142142      DO jk = 1,jpk 
    143          CALL eos_fzp(CASTWP(ts(:,:,jk,jp_sal,Kmm)), ztfrz3d(:,:,jk), CASTWP(gdept(:,:,jk,Kmm))) 
     143         CALL eos_fzp(ts(:,:,jk,jp_sal,Kmm), ztfrz3d(:,:,jk), gdept(:,:,jk,Kmm)) 
    144144      END DO 
    145       CALL isf_tbl(Kmm, CASTDP(ztfrz3d), ztfrz, 'T', misfkt_par, rhisf_tbl_par, misfkb_par, rfrac_tbl_par ) 
     145      CALL isf_tbl(Kmm, ztfrz3d, ztfrz, 'T', misfkt_par, rhisf_tbl_par, misfkb_par, rfrac_tbl_par ) 
    146146      ! 
    147147      ! 1. ------------Mean temperature 
     
    177177      !!--------------------------------------------------------------------- 
    178178      !!-------------------------- OUT ------------------------------------- 
    179       REAL(wp), DIMENSION(jpi,jpj), INTENT(  out) :: pqhc, pqoce, pqfwf  ! heat content, latent heat and fwf fluxes 
     179      REAL(dp), DIMENSION(jpi,jpj), INTENT(  out) :: pqhc, pqoce, pqfwf  ! heat content, latent heat and fwf fluxes 
    180180      !!-------------------------- IN  ------------------------------------- 
    181181      INTEGER                     , INTENT(in   ) :: kt                  ! current time step 
     
    183183      !!-------------------------------------------------------------------- 
    184184      INTEGER                           :: jk                            ! loop index 
    185       REAL(wp)                          :: zfwf_fld, zfwf_oasis          ! total fwf in the forcing fields (pattern) and from the cpl interface (amount) 
    186       REAL(wp), DIMENSION(jpi,jpj)      :: ztfrz                         ! tbl freezing temperature 
    187       REAL(wp), DIMENSION(jpi,jpj)      :: zfwf                          ! 2d fwf map after scaling 
    188       REAL(wp), DIMENSION(jpi,jpj,jpk)  :: ztfrz3d 
     185      REAL(dp)                          :: zfwf_fld, zfwf_oasis          ! total fwf in the forcing fields (pattern) and from the cpl interface (amount) 
     186      REAL(dp), DIMENSION(jpi,jpj)      :: ztfrz                         ! tbl freezing temperature 
     187      REAL(dp), DIMENSION(jpi,jpj)      :: zfwf                          ! 2d fwf map after scaling 
     188      REAL(dp), DIMENSION(jpi,jpj,jpk)  :: ztfrz3d 
    189189      !!-------------------------------------------------------------------- 
    190190      ! 
     
    194194      ! 1. ------------Mean freezing point (needed for heat content flux) 
    195195      DO jk = 1,jpk 
    196          CALL eos_fzp(CASTWP(ts(:,:,jk,jp_sal,Kmm)), ztfrz3d(:,:,jk), CASTWP(gdept(:,:,jk,Kmm))) 
     196         CALL eos_fzp(ts(:,:,jk,jp_sal,Kmm), ztfrz3d(:,:,jk), gdept(:,:,jk,Kmm)) 
    197197      END DO 
    198       CALL isf_tbl(Kmm, CASTDP(ztfrz3d), ztfrz, 'T', misfkt_par, rhisf_tbl_par, misfkb_par, rfrac_tbl_par ) 
     198      CALL isf_tbl(Kmm, ztfrz3d, ztfrz, 'T', misfkt_par, rhisf_tbl_par, misfkb_par, rfrac_tbl_par ) 
    199199      ! 
    200200      ! 2. ------------Scale isf melt pattern with total amount from oasis 
Note: See TracChangeset for help on using the changeset viewer.