[388] | 1 | MODULE etat0_dcmip2016_supercell_mod |
---|
| 2 | USE icosa |
---|
| 3 | IMPLICIT NONE |
---|
| 4 | PRIVATE |
---|
| 5 | |
---|
| 6 | REAL(rstd),PARAMETER :: eta0=0.252 |
---|
| 7 | REAL(rstd),PARAMETER :: etat=0.2 |
---|
| 8 | REAL(rstd),PARAMETER :: ps0=1e5 |
---|
| 9 | REAL(rstd),PARAMETER :: u0=35 |
---|
| 10 | REAL(rstd),PARAMETER :: T0=288 |
---|
| 11 | REAL(rstd),PARAMETER :: DeltaT=4.8e5 |
---|
| 12 | REAL(rstd),PARAMETER :: Rd=287 |
---|
| 13 | REAL(rstd),PARAMETER :: Gamma=0.005 |
---|
| 14 | REAL(rstd),PARAMETER :: up0=1 |
---|
| 15 | REAL(rstd),PARAMETER :: lonc=Pi/9, latc=2*Pi/9, latw=2*Pi/9 |
---|
| 16 | REAL(rstd),PARAMETER :: pw=34000 |
---|
| 17 | REAL(rstd),PARAMETER :: q0=0.021 |
---|
| 18 | |
---|
| 19 | INTEGER,SAVE :: testcase |
---|
| 20 | !$OMP THREADPRIVATE(testcase) |
---|
| 21 | |
---|
| 22 | PUBLIC getin_etat0, compute_etat0 |
---|
| 23 | |
---|
| 24 | CONTAINS |
---|
| 25 | |
---|
| 26 | SUBROUTINE getin_etat0 |
---|
| 27 | USE mpipara, ONLY : is_mpi_root |
---|
| 28 | USE tracer_mod |
---|
| 29 | USE dcmip2016_supercell_mod, ONLY : supercell_init, supercell_test |
---|
| 30 | IF(nqtot<5) THEN |
---|
| 31 | IF (is_mpi_root) THEN |
---|
| 32 | PRINT *, "nqtot must be at least 5 for test case dcmip2016_supercell" |
---|
| 33 | END IF |
---|
| 34 | STOP |
---|
| 35 | END IF |
---|
| 36 | |
---|
| 37 | CALL supercell_init |
---|
| 38 | |
---|
| 39 | END SUBROUTINE getin_etat0 |
---|
| 40 | |
---|
| 41 | SUBROUTINE compute_etat0(ngrid,lon,lat, phis,ps,temp,ulon,ulat,q) |
---|
| 42 | USE icosa |
---|
| 43 | USE disvert_mod |
---|
| 44 | USE omp_para |
---|
| 45 | USE dcmip2016_supercell_mod, ONLY : supercell_init, supercell_test, supercell_z |
---|
| 46 | INTEGER, INTENT(IN) :: ngrid |
---|
| 47 | REAL(rstd),INTENT(IN) :: lon(ngrid) |
---|
| 48 | REAL(rstd),INTENT(IN) :: lat(ngrid) |
---|
| 49 | REAL(rstd),INTENT(OUT) :: phis(ngrid) |
---|
| 50 | REAL(rstd),INTENT(OUT) :: ps(ngrid) |
---|
| 51 | REAL(rstd),INTENT(OUT) :: temp(ngrid,llm) |
---|
| 52 | REAL(rstd),INTENT(OUT) :: ulon(ngrid,llm) |
---|
| 53 | REAL(rstd),INTENT(OUT) :: ulat(ngrid,llm) |
---|
| 54 | REAL(rstd),INTENT(OUT) :: q(ngrid,llm,nqtot) |
---|
| 55 | |
---|
| 56 | INTEGER :: l,ij |
---|
[402] | 57 | INTEGER,PARAMETER :: perturbation = 1 |
---|
| 58 | |
---|
[388] | 59 | REAL(rstd) :: p,z, thetav,rho |
---|
| 60 | |
---|
| 61 | phis(:)=0 |
---|
| 62 | DO ij=1,ngrid |
---|
| 63 | z=0. |
---|
[402] | 64 | CALL supercell_z(lon(ij), lat(ij), z, ps(ij), thetav, rho, q(ij,1,1), perturbation) |
---|
[388] | 65 | DO l=ll_begin,ll_end |
---|
| 66 | p=0.5*(ap(l)+ap(l+1) + (bp(l)+bp(l+1)) * ps(ij)) |
---|
[402] | 67 | CALL supercell_test(lon(ij),lat(ij),p,z,0,ulon(ij,l),ulat(ij,l),temp(ij,l),thetav, ps(ij),rho, q(ij,l,1),perturbation) |
---|
[388] | 68 | END DO |
---|
| 69 | END DO |
---|
| 70 | |
---|
| 71 | END SUBROUTINE compute_etat0 |
---|
| 72 | |
---|
| 73 | END MODULE etat0_dcmip2016_supercell_mod |
---|