/[lmdze]/trunk/Sources/dyn3d/caldyn.f
ViewVC logotype

Contents of /trunk/Sources/dyn3d/caldyn.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 68 - (show annotations)
Wed Nov 14 16:59:30 2012 UTC (11 years, 6 months ago) by guez
Original Path: trunk/libf/dyn3d/caldyn.f90
File size: 2935 byte(s)
Split "flincom.f90" into "flinclo.f90", "flinfindcood.f90",
"flininfo.f90" and "flinopen_nozoom.f90", in directory
"IOIPSL/Flincom".

Renamed "etat0_lim" to "ce0l", as in LMDZ.

Split "readsulfate.f" into "readsulfate.f90", "readsulfate_preind.f90"
and "getso4fromfile.f90".

In etat0, renamed variable q3d to q, as in "dynredem1". Replaced calls
to Flicom procedures by calls to NetCDF95.

In leapfrog, added call to writehist.

Extracted ASCII art from "grid_noro" into a file
"grid_noro.txt". Transformed explicit-shape local arrays into
automatic arrays, so that test on values of iim and jjm is no longer
needed. Test on weight:
          IF (weight(ii, jj) /= 0.) THEN
is useless. There is already a test before:
    if (any(weight == 0.)) stop "zero weight in grid_noro"

In "aeropt", replaced duplicated lines with different values of inu by
a loop on inu.

Removed arguments of "conf_phys". Corresponding variables are now
defined in "physiq", in a namelist. In "conf_phys", read a namelist
instead of using getin.

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

  ViewVC Help
Powered by ViewVC 1.1.21