Changeset 15540 for NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/ISF/isfcpl.F90
- Timestamp:
- 2021-11-26T12:27:56+01:00 (2 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/ISF/isfcpl.F90
r14644 r15540 39 39 INTEGER :: jj ! j global 40 40 INTEGER :: kk ! k level 41 REAL( wp):: dvol ! volume increment42 REAL( wp):: dsal ! salt increment43 REAL( wp):: dtem ! heat increment44 REAL( wp):: lon ! lon45 REAL( wp):: lat ! lat41 REAL(dp):: dvol ! volume increment 42 REAL(dp):: dsal ! salt increment 43 REAL(dp):: dtem ! heat increment 44 REAL(dp):: lon ! lon 45 REAL(dp):: lat ! lat 46 46 INTEGER :: ngb ! 0/1 (valid location or not (ie on halo or no neigbourg)) 47 47 END TYPE … … 138 138 !!---------------------------------------------------------------------- 139 139 INTEGER :: jk ! loop index 140 REAL( wp), DIMENSION(jpi,jpj,jpk) :: ze3t, ze3u, ze3v, zgdepw ! for qco substitution140 REAL(dp), DIMENSION(jpi,jpj,jpk) :: ze3t, ze3u, ze3v, zgdepw ! for qco substitution 141 141 !!---------------------------------------------------------------------- 142 142 ! … … 174 174 INTEGER :: jip1, jim1, jjp1, jjm1 175 175 !! 176 REAL( wp):: zsummsk177 REAL( wp), DIMENSION(jpi,jpj) :: zdssmask, zssmask0, zssmask_b, zssh176 REAL(dp):: zsummsk 177 REAL(dp), DIMENSION(jpi,jpj) :: zdssmask, zssmask0, zssmask_b, zssh 178 178 !!---------------------------------------------------------------------- 179 179 ! … … 216 216 ssh(:,:,Kbb) = ssh(:,:,Kmm) 217 217 ! 218 IF ( ln_isfdebug ) CALL debug('isfcpl_ssh: sshn', CASTWP(ssh(:,:,Kmm)))218 IF ( ln_isfdebug ) CALL debug('isfcpl_ssh: sshn',ssh(:,:,Kmm)) 219 219 ! 220 220 ! recompute the vertical scale factor, depth and water thickness … … 247 247 INTEGER, INTENT(in) :: Kmm ! ocean time level index 248 248 !!---------------------------------------------------------------------- 249 REAL( wp), DIMENSION(jpi,jpj,jpk) :: ztmask_b249 REAL(dp), DIMENSION(jpi,jpj,jpk) :: ztmask_b 250 250 !REAL(wp), DIMENSION(:,:,: ), INTENT(in ) :: pdepw_b !! depth w before 251 251 !! … … 253 253 INTEGER :: jip1, jim1, jjp1, jjm1, jkp1, jkm1 254 254 !! 255 REAL( wp):: zsummsk256 REAL( wp):: zdz, zdzm1, zdzp1257 !! 258 REAL( wp), DIMENSION(jpi,jpj) :: zdmask259 REAL( wp), DIMENSION(jpi,jpj,jpk) :: ztmask0, zwmaskn260 REAL( wp), DIMENSION(jpi,jpj,jpk) :: ztmask1, zwmaskb, ztmp3d261 REAL( wp), DIMENSION(jpi,jpj,jpk,jpts) :: zts0255 REAL(dp):: zsummsk 256 REAL(dp):: zdz, zdzm1, zdzp1 257 !! 258 REAL(dp), DIMENSION(jpi,jpj) :: zdmask 259 REAL(dp), DIMENSION(jpi,jpj,jpk) :: ztmask0, zwmaskn 260 REAL(dp), DIMENSION(jpi,jpj,jpk) :: ztmask1, zwmaskb, ztmp3d 261 REAL(dp), DIMENSION(jpi,jpj,jpk,jpts) :: zts0 262 262 !!---------------------------------------------------------------------- 263 263 ! … … 404 404 INTEGER :: ikb, ikt 405 405 !! 406 REAL( wp), DIMENSION(jpi,jpj,jpk) :: zqvolb, zqvoln ! vol flux div. before/after coupling407 REAL( wp), DIMENSION(jpi,jpj,jpk) :: ze3u_b, ze3v_b ! vertical scale factor before/after coupling408 REAL( wp), DIMENSION(jpi,jpj,jpk) :: ztmask_b ! mask before coupling406 REAL(dp), DIMENSION(jpi,jpj,jpk) :: zqvolb, zqvoln ! vol flux div. before/after coupling 407 REAL(dp), DIMENSION(jpi,jpj,jpk) :: ze3u_b, ze3v_b ! vertical scale factor before/after coupling 408 REAL(dp), DIMENSION(jpi,jpj,jpk) :: ztmask_b ! mask before coupling 409 409 !!---------------------------------------------------------------------- 410 410 ! … … 506 506 INTEGER, DIMENSION(jpnij) :: nisfl ! local number of cell concerned by the wet->dry case 507 507 ! 508 REAL( wp) :: z1_sum, z1_rdtiscpl509 REAL( wp) :: zdtem, zdsal, zdvol, zratio ! tem, sal, vol increment510 REAL( wp) :: zlon , zlat ! target location511 REAL( wp), DIMENSION(jpi,jpj,jpk) :: ztmask_b ! mask before512 REAL( wp), DIMENSION(jpi,jpj,jpk) :: ze3t_b ! scale factor before513 REAL( wp), DIMENSION(jpi,jpj,jpk) :: zt_b ! scale factor before514 REAL( wp), DIMENSION(jpi,jpj,jpk) :: zs_b ! scale factor before508 REAL(dp) :: z1_sum, z1_rdtiscpl 509 REAL(dp) :: zdtem, zdsal, zdvol, zratio ! tem, sal, vol increment 510 REAL(dp) :: zlon , zlat ! target location 511 REAL(dp), DIMENSION(jpi,jpj,jpk) :: ztmask_b ! mask before 512 REAL(dp), DIMENSION(jpi,jpj,jpk) :: ze3t_b ! scale factor before 513 REAL(dp), DIMENSION(jpi,jpj,jpk) :: zt_b ! scale factor before 514 REAL(dp), DIMENSION(jpi,jpj,jpk) :: zs_b ! scale factor before 515 515 !!---------------------------------------------------------------------- 516 516 … … 630 630 ELSE IF ( tmask(ji,jj,jk+1) == 1._wp ) THEN 631 631 ! spread correction amoung neigbourg wet cells (vertical direction) 632 CALL update_isfpts(zisfpts, jisf, ji , jj , jk+1, zdvol, zdsal, zdtem, 1.0_ wp, 0)632 CALL update_isfpts(zisfpts, jisf, ji , jj , jk+1, zdvol, zdsal, zdtem, 1.0_dp, 0) 633 633 ELSE 634 634 ! need to find where to put correction in later on 635 CALL update_isfpts(zisfpts, jisf, ji , jj , jk , zdvol, zdsal, zdtem, 1.0_ wp, 1)635 CALL update_isfpts(zisfpts, jisf, ji , jj , jk , zdvol, zdsal, zdtem, 1.0_dp, 1) 636 636 END IF 637 637 END IF … … 721 721 INTEGER, INTENT(in ), OPTIONAL :: kfind ! 0 target cell already found 722 722 ! ! 1 target to be determined 723 REAL( wp), INTENT(in ) :: pdvol, pdsal, pdtem, pratio ! vol/sal/tem increment723 REAL(dp), INTENT(in ) :: pdvol, pdsal, pdtem, pratio ! vol/sal/tem increment 724 724 ! ! and ratio in case increment span over multiple cells. 725 725 !!---------------------------------------------------------------------- … … 752 752 !!---------------------------------------------------------------------- 753 753 INTEGER , INTENT(in) :: ki, kj, kk, kfind ! target point indices 754 REAL( wp), INTENT(in) :: plon, plat ! target point lon/lat755 REAL( wp), INTENT(in) :: pvolinc, pteminc,psalinc ! correction increment for vol/temp/salt754 REAL(dp), INTENT(in) :: plon, plat ! target point lon/lat 755 REAL(dp), INTENT(in) :: pvolinc, pteminc,psalinc ! correction increment for vol/temp/salt 756 756 !!---------------------------------------------------------------------- 757 757 INTEGER :: jj, ji, iig, ijg … … 760 760 ! define global indice of correction location 761 761 iig = ki ; ijg = kj 762 IF ( kfind == 1 ) CALL dom_ngb( plon, plat, iig, ijg,'T', kk)762 IF ( kfind == 1 ) CALL dom_ngb( CASTSP(plon), CASTSP(plat), iig, ijg,'T', kk) 763 763 ! 764 764 ! fill the correction array
Note: See TracChangeset
for help on using the changeset viewer.