1 | SUBROUTINE caldyn0(itau,ucov,vcov,teta,ps,masse,pk,phis,phi,w,pbaru,pbarv,time) |
---|
2 | ! |
---|
3 | !------------------------------------------------------------------------------- |
---|
4 | ! Author: P. Le Van ; modif. 04/93: F.Forget. |
---|
5 | !------------------------------------------------------------------------------- |
---|
6 | ! Purpose: Compute dynamic tendencies. |
---|
7 | !------------------------------------------------------------------------------- |
---|
8 | USE comgeom_mod_h |
---|
9 | USE control_mod, ONLY: resetvarc |
---|
10 | USE comvert_mod, ONLY: ap, bp |
---|
11 | USE dimensions_mod, ONLY: iim, jjm, llm, ndm |
---|
12 | USE paramet_mod_h |
---|
13 | IMPLICIT NONE |
---|
14 | |
---|
15 | |
---|
16 | !=============================================================================== |
---|
17 | ! Arguments: |
---|
18 | INTEGER, INTENT(IN) :: itau !--- TIME STEP INDEX |
---|
19 | REAL, INTENT(IN) :: vcov (ip1jm ,llm) !--- V COVARIANT WIND |
---|
20 | REAL, INTENT(IN) :: ucov (ip1jmp1 ,llm) !--- U COVARIANT WIND |
---|
21 | REAL, INTENT(IN) :: teta (ip1jmp1 ,llm) !--- POTENTIAL TEMPERATURE |
---|
22 | REAL, INTENT(IN) :: ps (ip1jmp1) !--- GROUND PRESSURE |
---|
23 | REAL, INTENT(OUT) :: masse(ip1jmp1 ,llm) !--- MASS IN EACH CELL |
---|
24 | REAL, INTENT(IN) :: pk (iip1,jjp1,llm) !--- PRESSURE |
---|
25 | REAL, INTENT(IN) :: phis (ip1jmp1) !--- GROUND GEOPOTENTIAL |
---|
26 | REAL, INTENT(IN) :: phi (ip1jmp1 ,llm) !--- 3D GEOPOTENTIAL |
---|
27 | REAL, INTENT(OUT) :: w (ip1jmp1 ,llm) !--- VERTICAL WIND |
---|
28 | REAL, INTENT(OUT) :: pbaru(ip1jmp1 ,llm) !--- U MASS FLUX |
---|
29 | REAL, INTENT(OUT) :: pbarv(ip1jm ,llm) !--- V MASS FLUX |
---|
30 | REAL, INTENT(IN) :: time !--- TIME |
---|
31 | !=============================================================================== |
---|
32 | ! Local variables: |
---|
33 | REAL, DIMENSION(ip1jmp1,llmp1) :: p |
---|
34 | REAL, DIMENSION(ip1jmp1,llm) :: ucont, massebx, ang, ecin, convm, bern |
---|
35 | REAL, DIMENSION(ip1jmp1) :: dp |
---|
36 | REAL, DIMENSION(ip1jm ,llm) :: vcont, masseby, massebxy, vorpot |
---|
37 | REAL, DIMENSION(ip1jm) :: psexbarxy |
---|
38 | INTEGER :: ij, l |
---|
39 | !=============================================================================== |
---|
40 | CALL covcont ( llm , ucov , vcov , ucont, vcont ) |
---|
41 | CALL pression ( ip1jmp1, ap , bp , ps , p ) |
---|
42 | CALL psextbar ( ps , psexbarxy ) |
---|
43 | CALL massdair ( p , masse ) |
---|
44 | CALL massbar ( masse, massebx , masseby ) |
---|
45 | CALL massbarxy( masse, massebxy ) |
---|
46 | CALL flumass ( massebx, masseby , vcont, ucont ,pbaru, pbarv ) |
---|
47 | CALL convmas ( pbaru, pbarv , convm ) |
---|
48 | CALL vitvert ( convm , w ) |
---|
49 | CALL tourpot ( vcov , ucov , massebxy , vorpot ) |
---|
50 | CALL enercin ( vcov , ucov , vcont , ucont , ecin ) |
---|
51 | CALL bernoui ( ip1jmp1, llm , phi , ecin , bern ) |
---|
52 | DO l=1,llm; ang(:,l) = ucov(:,l) + constang(:); END DO |
---|
53 | resetvarc=.true. ! force a recomputation of initial values in sortvarc |
---|
54 | dp(:)=convm(:,1)/airesurg(:) |
---|
55 | CALL sortvarc( itau,ucov,teta,ps,masse,pk,phis,vorpot,phi,bern,dp,time,vcov ) |
---|
56 | |
---|
57 | END SUBROUTINE caldyn0 |
---|