Changeset 15540 for NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/SBC/sbcdcy.F90
- Timestamp:
- 2021-11-26T12:27:56+01:00 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/SBC/sbcdcy.F90
r13483 r15540 30 30 INTEGER, PUBLIC :: nday_qsr !: day when parameters were computed 31 31 32 REAL( wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: raa , rbb , rcc , rab ! diurnal cycle parameters33 REAL( wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: rtmd, rscal ! - - -34 REAL( wp), ALLOCATABLE, SAVE, DIMENSION(:,:), PUBLIC :: rdawn_dcy, rdusk_dcy ! - - -32 REAL(dp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: raa , rbb , rcc , rab ! diurnal cycle parameters 33 REAL(dp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: rtmd, rscal ! - - - 34 REAL(dp), ALLOCATABLE, SAVE, DIMENSION(:,:), PUBLIC :: rdawn_dcy, rdusk_dcy ! - - - 35 35 36 36 PUBLIC sbc_dcy ! routine called by sbc … … 73 73 !!---------------------------------------------------------------------- 74 74 LOGICAL , OPTIONAL , INTENT(in) :: l_mask ! use the routine for night mask computation 75 REAL( wp), DIMENSION(jpi,jpj), INTENT(in) :: pqsrin ! input daily QSR flux76 REAL( wp), DIMENSION(jpi,jpj) :: zqsrout ! output QSR flux with diurnal cycle75 REAL(dp), DIMENSION(jpi,jpj), INTENT(in) :: pqsrin ! input daily QSR flux 76 REAL(dp), DIMENSION(jpi,jpj) :: zqsrout ! output QSR flux with diurnal cycle 77 77 !! 78 78 INTEGER :: ji, jj ! dummy loop indices 79 79 INTEGER, DIMENSION(jpi,jpj) :: imask_night ! night mask 80 REAL( wp) :: zlo, zup, zlousd, zupusd81 REAL( wp) :: ztmp, ztmp1, ztmp282 REAL( wp) :: ztmpm, ztmpm1, ztmpm280 REAL(dp) :: zlo, zup, zlousd, zupusd 81 REAL(dp) :: ztmp, ztmp1, ztmp2 82 REAL(dp) :: ztmpm, ztmpm1, ztmpm2 83 83 !!--------------------------------------------------------------------- 84 84 ! … … 163 163 INTEGER :: ji, jj ! dummy loop indices 164 164 !INTEGER, DIMENSION(jpi,jpj) :: imask_night ! night mask 165 REAL( wp) :: zdsws, zdecrad, ztx, zsin, zcos166 REAL( wp) :: ztmp, ztest165 REAL(dp) :: zdsws, zdecrad, ztx, zsin, zcos 166 REAL(dp) :: ztmp, ztest 167 167 !---------------------------statement functions------------------------ 168 168 ! … … 236 236 ELSE ! day time in two parts 237 237 IF( (rdusk_dcy(ji,jj) + (1._wp - rdawn_dcy(ji,jj)) ) .ge. 0.001_wp ) THEN 238 rscal(ji,jj) = fintegral(0._ wp, rdusk_dcy(ji,jj), raa(ji,jj), rbb(ji,jj), rcc(ji,jj)) &239 & + fintegral(rdawn_dcy(ji,jj), 1._ wp, raa(ji,jj), rbb(ji,jj), rcc(ji,jj))238 rscal(ji,jj) = fintegral(0._dp, rdusk_dcy(ji,jj), raa(ji,jj), rbb(ji,jj), rcc(ji,jj)) & 239 & + fintegral(rdawn_dcy(ji,jj), 1._dp, raa(ji,jj), rbb(ji,jj), rcc(ji,jj)) 240 240 rscal(ji,jj) = 1. / rscal(ji,jj) 241 241 ENDIF … … 243 243 ELSE 244 244 IF( raa(ji,jj) > rbb(ji,jj) ) THEN ! 24h day 245 rscal(ji,jj) = fintegral(0._ wp, 1._wp, raa(ji,jj), rbb(ji,jj), rcc(ji,jj))245 rscal(ji,jj) = fintegral(0._dp, 1._dp, raa(ji,jj), rbb(ji,jj), rcc(ji,jj)) 246 246 rscal(ji,jj) = 1._wp / rscal(ji,jj) 247 247 ELSE ! No day … … 260 260 261 261 FUNCTION fintegral( pt1, pt2, paaa, pbbb, pccc ) 262 REAL( wp), INTENT(in) :: pt1, pt2, paaa, pbbb, pccc263 REAL( wp) :: fintegral262 REAL(dp), INTENT(in) :: pt1, pt2, paaa, pbbb, pccc 263 REAL(dp) :: fintegral 264 264 fintegral = paaa * pt2 + 1._wp/(2._wp*rpi) * pbbb * SIN(pccc + 2._wp*rpi*pt2) & 265 265 & - paaa * pt1 - 1._wp/(2._wp*rpi) * pbbb * SIN(pccc + 2._wp*rpi*pt1)
Note: See TracChangeset
for help on using the changeset viewer.