Skip to content
Snippets Groups Projects
Commit cd330ce4 authored by RODIER Quentin's avatar RODIER Quentin
Browse files

Quentin 02/03/2022: Merge MNH->COMMON mode_prandtl.F90 SMOOTH_FUNCTION and...

Quentin 02/03/2022: Merge MNH->COMMON mode_prandtl.F90 SMOOTH_FUNCTION and correction from mesonh (in REPRO48 for AROME)
parent 1c4f8dd9
No related branches found
No related tags found
No related merge requests found
...@@ -684,7 +684,7 @@ FUNCTION D_PHI3DTDZ_O_DDTDZ(PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,HTURBDIM,OUS ...@@ -684,7 +684,7 @@ FUNCTION D_PHI3DTDZ_O_DDTDZ(PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,HTURBDIM,OUS
CHARACTER(len=4), INTENT(IN) :: HTURBDIM ! 1DIM or 3DIM turb. scheme CHARACTER(len=4), INTENT(IN) :: HTURBDIM ! 1DIM or 3DIM turb. scheme
LOGICAL, INTENT(IN) :: OUSERV ! flag to use vapor LOGICAL, INTENT(IN) :: OUSERV ! flag to use vapor
REAL, DIMENSION(SIZE(PREDTH1,1),SIZE(PREDTH1,2),SIZE(PREDTH1,3)) :: D_PHI3DTDZ_O_DDTDZ REAL, DIMENSION(SIZE(PREDTH1,1),SIZE(PREDTH1,2),SIZE(PREDTH1,3)) :: D_PHI3DTDZ_O_DDTDZ
INTEGER :: IKB, IKE,JL,JK INTEGER :: IKB, IKE,JL,JK,JJ
! !
REAL(KIND=JPRB) :: ZHOOK_HANDLE REAL(KIND=JPRB) :: ZHOOK_HANDLE
IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_PHI3DTDZ_O_DDTDZ',0,ZHOOK_HANDLE) IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_PHI3DTDZ_O_DDTDZ',0,ZHOOK_HANDLE)
...@@ -694,7 +694,11 @@ IKE = SIZE(PREDTH1,3)-JPVEXT_TURB ...@@ -694,7 +694,11 @@ IKE = SIZE(PREDTH1,3)-JPVEXT_TURB
IF (HTURBDIM=='3DIM') THEN IF (HTURBDIM=='3DIM') THEN
!* 3DIM case !* 3DIM case
IF (OUSERV) THEN IF (OUSERV) THEN
#ifdef REPRO48
WHERE (PPHI3(:,:,:)/=XPHI_LIM) WHERE (PPHI3(:,:,:)/=XPHI_LIM)
#else
WHERE (PPHI3(:,:,:)<=XPHI_LIM)
#endif
D_PHI3DTDZ_O_DDTDZ(:,:,:) = PPHI3(:,:,:) & D_PHI3DTDZ_O_DDTDZ(:,:,:) = PPHI3(:,:,:) &
* (1. - PREDTH1(:,:,:) * (3./2.+PREDTH1+PREDR1) & * (1. - PREDTH1(:,:,:) * (3./2.+PREDTH1+PREDR1) &
/((1.+PREDTH1+PREDR1)*(1.+1./2.*(PREDTH1+PREDR1)))) & /((1.+PREDTH1+PREDR1)*(1.+1./2.*(PREDTH1+PREDR1)))) &
...@@ -708,7 +712,11 @@ IF (HTURBDIM=='3DIM') THEN ...@@ -708,7 +712,11 @@ IF (HTURBDIM=='3DIM') THEN
! !
ELSE ELSE
#ifdef REPRO48
WHERE (PPHI3(:,:,:)/=XPHI_LIM) WHERE (PPHI3(:,:,:)/=XPHI_LIM)
#else
WHERE (PPHI3(:,:,:)<=XPHI_LIM)
#endif
D_PHI3DTDZ_O_DDTDZ(:,:,:) = PPHI3(:,:,:) & D_PHI3DTDZ_O_DDTDZ(:,:,:) = PPHI3(:,:,:) &
* (1. - PREDTH1(:,:,:) * (3./2.+PREDTH1) & * (1. - PREDTH1(:,:,:) * (3./2.+PREDTH1) &
/((1.+PREDTH1)*(1.+1./2.*PREDTH1))) & /((1.+PREDTH1)*(1.+1./2.*PREDTH1))) &
...@@ -721,25 +729,25 @@ IF (HTURBDIM=='3DIM') THEN ...@@ -721,25 +729,25 @@ IF (HTURBDIM=='3DIM') THEN
END IF END IF
ELSE ELSE
!* 1DIM case !* 1DIM case
! WHERE (PPHI3(:,:,:)/=XPHI_LIM) DO JJ=1,SIZE(PPHI3,2)
! D_PHI3DTDZ_O_DDTDZ(:,:,:) = PPHI3(:,:,:) & DO JL=1,SIZE(PPHI3,1)
! * (1. - PREDTH1(:,:,:)*PPHI3(:,:,:)) DO JK=1,SIZE(PPHI3,3)
! ELSEWHERE IF ( ABS(PPHI3(JL,JJ,JK)-XPHI_LIM) < 1.E-12 ) THEN
! D_PHI3DTDZ_O_DDTDZ(:,:,:) = PPHI3(:,:,:) D_PHI3DTDZ_O_DDTDZ(JL,JJ,JK)=PPHI3(JL,JJ,JK)*&
! ENDWHERE & (1. - PREDTH1(JL,JJ,JK)*PPHI3(JL,JJ,JK))
DO JL=1,SIZE(PPHI3,1) ELSE
DO JK=1,SIZE(PPHI3,3) D_PHI3DTDZ_O_DDTDZ(JL,JJ,JK)=PPHI3(JL,JJ,JK)
IF ( ABS(PPHI3(JL,1,JK)-XPHI_LIM) < 1.E-12 ) THEN ENDIF
D_PHI3DTDZ_O_DDTDZ(JL,1,JK)=PPHI3(JL,1,JK)*& ENDDO
& (1. - PREDTH1(JL,1,JK)*PPHI3(JL,1,JK))
ELSE
D_PHI3DTDZ_O_DDTDZ(JL,1,JK)=PPHI3(JL,1,JK)
ENDIF
ENDDO ENDDO
ENDDO ENDDO
END IF END IF
! !
#ifdef REPRO48
#else
!* smoothing
CALL SMOOTH_TURB_FUNCT(PPHI3,PPHI3,D_PHI3DTDZ_O_DDTDZ)
#endif
! !
D_PHI3DTDZ_O_DDTDZ(:,:,IKB-1)=D_PHI3DTDZ_O_DDTDZ(:,:,IKB) D_PHI3DTDZ_O_DDTDZ(:,:,IKB-1)=D_PHI3DTDZ_O_DDTDZ(:,:,IKB)
D_PHI3DTDZ_O_DDTDZ(:,:,IKE+1)=D_PHI3DTDZ_O_DDTDZ(:,:,IKE) D_PHI3DTDZ_O_DDTDZ(:,:,IKE+1)=D_PHI3DTDZ_O_DDTDZ(:,:,IKE)
...@@ -767,7 +775,11 @@ IKE = SIZE(PREDTH1,3)-JPVEXT_TURB ...@@ -767,7 +775,11 @@ IKE = SIZE(PREDTH1,3)-JPVEXT_TURB
IF (HTURBDIM=='3DIM') THEN IF (HTURBDIM=='3DIM') THEN
!* 3DIM case !* 3DIM case
IF (OUSERV) THEN IF (OUSERV) THEN
#ifdef REPRO48
WHERE (PPHI3(:,:,:)/=XPHI_LIM) WHERE (PPHI3(:,:,:)/=XPHI_LIM)
#else
WHERE (PPHI3(:,:,:)<=XPHI_LIM)
#endif
D_PHI3DRDZ_O_DDRDZ(:,:,:) = & D_PHI3DRDZ_O_DDRDZ(:,:,:) = &
PPHI3(:,:,:) * (1.-PREDR1(:,:,:)*(3./2.+PREDTH1+PREDR1) & PPHI3(:,:,:) * (1.-PREDR1(:,:,:)*(3./2.+PREDTH1+PREDR1) &
/ ((1.+PREDTH1+PREDR1)*(1.+1./2.*(PREDTH1+PREDR1)))) & / ((1.+PREDTH1+PREDR1)*(1.+1./2.*(PREDTH1+PREDR1)))) &
...@@ -783,7 +795,11 @@ IF (HTURBDIM=='3DIM') THEN ...@@ -783,7 +795,11 @@ IF (HTURBDIM=='3DIM') THEN
END IF END IF
ELSE ELSE
!* 1DIM case !* 1DIM case
WHERE (PPHI3(:,:,:)/=XPHI_LIM) #ifdef REPRO48
WHERE (PPHI3(:,:,:)/=XPHI_LIM)
#else
WHERE (PPHI3(:,:,:)<=XPHI_LIM)
#endif
D_PHI3DRDZ_O_DDRDZ(:,:,:) = PPHI3(:,:,:) & D_PHI3DRDZ_O_DDRDZ(:,:,:) = PPHI3(:,:,:) &
* (1. - PREDR1(:,:,:)*PPHI3(:,:,:)) * (1. - PREDR1(:,:,:)*PPHI3(:,:,:))
ELSEWHERE ELSEWHERE
...@@ -791,6 +807,11 @@ ELSE ...@@ -791,6 +807,11 @@ ELSE
END WHERE END WHERE
END IF END IF
! !
#ifdef REPRO48
#else
!* smoothing
CALL SMOOTH_TURB_FUNCT(PPHI3,PPHI3,D_PHI3DRDZ_O_DDRDZ)
#endif
! !
D_PHI3DRDZ_O_DDRDZ(:,:,IKB-1)=D_PHI3DRDZ_O_DDRDZ(:,:,IKB) D_PHI3DRDZ_O_DDRDZ(:,:,IKB-1)=D_PHI3DRDZ_O_DDRDZ(:,:,IKB)
D_PHI3DRDZ_O_DDRDZ(:,:,IKE+1)=D_PHI3DRDZ_O_DDRDZ(:,:,IKE) D_PHI3DRDZ_O_DDRDZ(:,:,IKE+1)=D_PHI3DRDZ_O_DDRDZ(:,:,IKE)
...@@ -817,35 +838,17 @@ IKE = SIZE(PREDTH1,3)-JPVEXT_TURB ...@@ -817,35 +838,17 @@ IKE = SIZE(PREDTH1,3)-JPVEXT_TURB
! !
! !
IF (HTURBDIM=='3DIM') THEN IF (HTURBDIM=='3DIM') THEN
!* 3DIM case ! by derivation of (phi3 dtdz) * dtdz according to dtdz we obtain:
IF (OUSERV) THEN D_PHI3DTDZ2_O_DDTDZ(:,:,:) = PDTDZ * (PPHI3 + &
WHERE (PPHI3(:,:,:)/=XPHI_LIM) D_PHI3DTDZ_O_DDTDZ(PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,HTURBDIM,OUSERV) )
D_PHI3DTDZ2_O_DDTDZ(:,:,:) = PPHI3(:,:,:) &
* PDTDZ(:,:,:)*(2.-PREDTH1(:,:,:)*(3./2.+PREDTH1+PREDR1) &
/((1.+PREDTH1+PREDR1)*(1.+1./2.*(PREDTH1+PREDR1)))) &
+ (1.+PREDR1)*(PRED2THR3+PRED2TH3) &
/ (PREDTH1*(1.+PREDTH1+PREDR1)*(1.+1./2.*(PREDTH1+PREDR1))) &
- (1./2.*PREDTH1+PREDR1 * (1.+PREDTH1+PREDR1)) &
/ ((1.+PREDTH1+PREDR1)*(1.+1./2.*(PREDTH1+PREDR1)))
ELSEWHERE
D_PHI3DTDZ2_O_DDTDZ(:,:,:) = PPHI3(:,:,:) * 2. * PDTDZ(:,:,:)
ENDWHERE
!
ELSE
WHERE (PPHI3(:,:,:)/=XPHI_LIM)
D_PHI3DTDZ2_O_DDTDZ(:,:,:) = PPHI3(:,:,:) &
* PDTDZ(:,:,:)*(2.-PREDTH1(:,:,:)*(3./2.+PREDTH1) &
/((1.+PREDTH1)*(1.+1./2.*PREDTH1))) &
+ PRED2TH3 / (PREDTH1*(1.+PREDTH1)*(1.+1./2.*PREDTH1)) &
- 1./2.*PREDTH1 / ((1.+PREDTH1)*(1.+1./2.*PREDTH1))
ELSEWHERE
D_PHI3DTDZ2_O_DDTDZ(:,:,:) = PPHI3(:,:,:) * 2. * PDTDZ(:,:,:)
ENDWHERE
END IF
ELSE ELSE
!* 1DIM case !* 1DIM case
#ifdef REPRO48
WHERE (PPHI3(:,:,:)/=XPHI_LIM) WHERE (PPHI3(:,:,:)/=XPHI_LIM)
#else
WHERE (PPHI3(:,:,:)<=XPHI_LIM)
#endif
D_PHI3DTDZ2_O_DDTDZ(:,:,:) = PPHI3(:,:,:)*PDTDZ(:,:,:) & D_PHI3DTDZ2_O_DDTDZ(:,:,:) = PPHI3(:,:,:)*PDTDZ(:,:,:) &
* (2. - PREDTH1(:,:,:)*PPHI3(:,:,:)) * (2. - PREDTH1(:,:,:)*PPHI3(:,:,:))
ELSEWHERE ELSEWHERE
...@@ -853,6 +856,12 @@ ELSE ...@@ -853,6 +856,12 @@ ELSE
END WHERE END WHERE
END IF END IF
! !
#ifdef REPRO48
#else
!* smoothing
CALL SMOOTH_TURB_FUNCT(PPHI3,PPHI3*2.*PDTDZ,D_PHI3DTDZ2_O_DDTDZ)
#endif
!
! !
D_PHI3DTDZ2_O_DDTDZ(:,:,IKB-1)=D_PHI3DTDZ2_O_DDTDZ(:,:,IKB) D_PHI3DTDZ2_O_DDTDZ(:,:,IKB-1)=D_PHI3DTDZ2_O_DDTDZ(:,:,IKB)
D_PHI3DTDZ2_O_DDTDZ(:,:,IKE+1)=D_PHI3DTDZ2_O_DDTDZ(:,:,IKE) D_PHI3DTDZ2_O_DDTDZ(:,:,IKE+1)=D_PHI3DTDZ2_O_DDTDZ(:,:,IKE)
......
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment