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