/[lmdze]/trunk/libf/dyn3d/caldyn.f90
ViewVC logotype

Annotation of /trunk/libf/dyn3d/caldyn.f90

Parent Directory Parent Directory | Revision Log Revision Log


Revision 43 - (hide annotations)
Fri Apr 8 12:43:31 2011 UTC (13 years, 1 month ago) by guez
File size: 2902 byte(s)
"start_init_phys" is now called directly by "etat0" instead of through
"start_init_dyn". "qsol_2d" is no longer a variable of module
"start_init_phys_m", it is an argument of
"start_init_phys". "start_init_dyn" now receives "tsol_2d" from
"etat0".

Split file "vlspltqs.f" into "vlspltqs.f90", "vlxqs.f90" and
""vlyqs.f90".

In "start_init_orog", replaced calls to "flin*" by calls to NetCDF95.

1 guez 43 module caldyn_m
2 guez 3
3 guez 43 IMPLICIT NONE
4 guez 3
5 guez 43 contains
6 guez 3
7 guez 43 SUBROUTINE caldyn(itau, ucov, vcov, teta, ps, masse, pk, pkf, phis, phi, &
8     conser, du, dv, dteta, dp, w, pbaru, pbarv, time_0)
9 guez 3
10 guez 43 ! From dyn3d/caldyn.F, v 1.1.1.1 2004/05/19 12:53:06
11     ! Auteur : P. Le Van
12     ! Objet : calcul des tendances dynamiques
13 guez 3
14 guez 43 USE dimens_m, ONLY : iim, llm
15     USE paramet_m, ONLY : iip1, ip1jm, ip1jmp1, jjp1, llmp1
16     USE comvert, ONLY : ap, bp
17     USE comgeom, ONLY : airesurg, constang
18     use sortvarc_m, only: sortvarc
19 guez 3
20 guez 43 ! Arguments:
21 guez 3
22 guez 43 LOGICAL, INTENT (IN):: conser
23     INTEGER, INTENT (IN):: itau
24     REAL vcov(ip1jm, llm), ucov(ip1jmp1, llm)
25     real, intent(in):: teta(ip1jmp1, llm)
26     REAL ps(ip1jmp1), phis(ip1jmp1)
27     REAL, INTENT (IN):: pk(iip1, jjp1, llm)
28     REAL pkf(ip1jmp1, llm)
29     REAL vcont(ip1jm, llm), ucont(ip1jmp1, llm)
30     REAL phi(ip1jmp1, llm), masse(ip1jmp1, llm)
31     REAL dv(ip1jm, llm), du(ip1jmp1, llm)
32     REAL dteta(ip1jmp1, llm), dp(ip1jmp1)
33     REAL pbaru(ip1jmp1, llm), pbarv(ip1jm, llm)
34     REAL, intent(in):: time_0
35     REAL, INTENT (out):: w(ip1jmp1, llm)
36 guez 3
37 guez 43 ! Local:
38 guez 3
39 guez 43 REAL ang(ip1jmp1, llm), p(ip1jmp1, llmp1)
40     REAL massebx(ip1jmp1, llm), masseby(ip1jm, llm), psexbarxy(ip1jm)
41     REAL vorpot(ip1jm, llm)
42     real ecin(ip1jmp1, llm), convm(ip1jmp1, llm)
43     REAL bern(ip1jmp1, llm)
44     REAL massebxy(ip1jm, llm)
45 guez 3
46 guez 43 INTEGER ij, l
47 guez 3
48 guez 43 !-----------------------------------------------------------------------
49 guez 3
50 guez 43 CALL covcont(llm, ucov, vcov, ucont, vcont)
51     forall (l = 1: llm + 1) p(:, l) = ap(l) + bp(l) * ps
52     CALL psextbar(ps, psexbarxy)
53     CALL massdair(p, masse)
54     CALL massbar(masse, massebx, masseby)
55     CALL massbarxy(masse, massebxy)
56     CALL flumass(massebx, masseby, vcont, ucont, pbaru, pbarv)
57     CALL dteta1(teta, pbaru, pbarv, dteta)
58     CALL convmas(pbaru, pbarv, convm)
59 guez 3
60 guez 43 DO ij = 1, ip1jmp1
61     dp(ij) = convm(ij, 1)/airesurg(ij)
62     END DO
63 guez 3
64 guez 43 CALL vitvert(convm, w)
65     CALL tourpot(vcov, ucov, massebxy, vorpot)
66     CALL dudv1(vorpot, pbaru, pbarv, du, dv)
67     CALL enercin(vcov, ucov, vcont, ucont, ecin)
68     CALL bernoui(ip1jmp1, llm, phi, ecin, bern)
69     CALL dudv2(teta, pkf, bern, du, dv)
70 guez 3
71 guez 43 DO l = 1, llm
72     DO ij = 1, ip1jmp1
73     ang(ij, l) = ucov(ij, l) + constang(ij)
74     END DO
75     END DO
76 guez 3
77 guez 43 CALL advect(ang, vcov, teta, w, massebx, masseby, du, dv, dteta, conser)
78 guez 3
79 guez 43 ! WARNING probleme de peridocite de dv sur les PC/linux. Pb d'arrondi
80     ! probablement. Observe sur le code compile avec pgf90 3.0-1
81     DO l = 1, llm
82     DO ij = 1, ip1jm, iip1
83     IF (dv(ij, l)/=dv(ij+iim, l)) THEN
84     dv(ij+iim, l) = dv(ij, l)
85     END IF
86     END DO
87     END DO
88    
89     ! Sorties eventuelles des variables de controle :
90     IF (conser) CALL sortvarc(itau, ucov, teta, ps, masse, pk, phis, vorpot, &
91     phi, bern, dp, time_0)
92    
93     END SUBROUTINE caldyn
94    
95     end module caldyn_m

  ViewVC Help
Powered by ViewVC 1.1.21