/[lmdze]/trunk/libf/phylmd/calltherm.f
ViewVC logotype

Contents of /trunk/libf/phylmd/calltherm.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 12 - (show annotations)
Mon Jul 21 16:05:07 2008 UTC (15 years, 9 months ago) by guez
File size: 3431 byte(s)
-- Minor modification of input/output:

Created procedure "read_logic". Variables of module "logic" are read
by "read_logic" instead of "conf_gcm". Variable "offline" of module
"conf_gcm" is read from namelist instead of "*.def".

Deleted arguments "dtime", "co2_ppm_etat0", "solaire_etat0",
"tabcntr0" and local variables "radpas", "tab_cntrl" of
"phyetat0". "phyetat0" does not read "controle" in "startphy.nc" any
longer. "phyetat0" now reads global attribute "itau_phy" from
"startphy.nc". "phyredem" does not create variable "controle" in
"startphy.nc" any longer. "phyredem" now writes global attribute
"itau_phy" of "startphy.nc". Deleted argument "tabcntr0" of
"printflag". Removed diagnostic messages written by "printflag" for
comparison of the variable "controle" of "startphy.nc" and the
variables read from "*.def" or namelist input.

-- Removing unwanted functionality:

Removed variable "lunout" from module "iniprint", replaced everywhere
by standard output.

Removed case "ocean == 'couple'" in "clmain", "interfsurf_hq" and
"physiq". Removed procedure "interfoce_cpl".

-- Should not change anything at run time:

Automated creation of graphs in documentation. More documentation on
input files.

Converted Fortran files to free format: "phyredem.f90", "printflag.f90".

Split module "clesphy" into "clesphys" and "clesphys2".

Removed variables "conser", "leapf", "forward", "apphys", "apdiss" and
"statcl" from module "logic". Added arguments "conser" to "advect",
"leapf" to "integrd". Added local variables "forward", "leapf",
"apphys", "conser", "apdiss" in "leapfrog".

Added intent attributes.

Deleted arguments "dtime" of "phyredem", "pdtime" of "flxdtdq", "sh"
of "phytrac", "dt" of "yamada".

Deleted local variables "dtime", "co2_ppm_etat0", "solaire_etat0",
"length", "tabcntr0" in "physiq". Replaced all references to "dtime"
by references to "pdtphys".

1 !
2 ! $Header: /home/cvsroot/LMDZ4/libf/phylmd/calltherm.F,v 1.2 2004/12/10 11:27:46 lmdzadmin Exp $
3 !
4 subroutine calltherm(dtime
5 s ,pplay,paprs,pphi
6 s ,u_seri,v_seri,t_seri,q_seri
7 s ,d_u_ajs,d_v_ajs,d_t_ajs,d_q_ajs
8 s ,fm_therm,entr_therm)
9
10 use dimens_m
11 use dimphy
12 use ctherm
13 implicit none
14
15 REAL, intent(in):: dtime
16
17 REAL u_seri(klon,klev),v_seri(klon,klev)
18 REAL t_seri(klon,klev),q_seri(klon,klev)
19 REAL, intent(in):: paprs(klon,klev+1)
20 REAL, intent(in):: pplay(klon,klev)
21 REAL pphi(klon,klev)
22
23 CFH Update Thermiques
24 REAL d_t_ajs(klon,klev), d_q_ajs(klon,klev)
25 REAL d_u_ajs(klon,klev),d_v_ajs(klon,klev)
26 real fm_therm(klon,klev+1),entr_therm(klon,klev)
27
28
29 c variables locales
30 REAL d_t_the(klon,klev), d_q_the(klon,klev)
31 REAL d_u_the(klon,klev),d_v_the(klon,klev)
32 c
33 real zfm_therm(klon,klev+1),zentr_therm(klon,klev),zdt
34 save zentr_therm,zfm_therm
35
36 integer i,k, isplit
37
38 *********************************************************
39
40 c Modele du thermique
41 c ===================
42 c print*,'thermiques: WARNING on passe t au lieu de t_seri'
43 print*,'avant isplit ',nsplit_thermals
44
45
46 fm_therm(:,:)=0.
47 entr_therm(:,:)=0.
48
49 c tests sur les valeurs negatives de l'eau
50 do k=1,klev
51 do i=1,klon
52 if (.not.q_seri(i,k).ge.0.) then
53 print*,'WARN eau<0 avant therm i=',i,' k=',k
54 s ,' dq,q',d_q_the(i,k),q_seri(i,k)
55 q_seri(i,k)=1.e-15
56 endif
57 enddo
58 enddo
59
60
61 zdt=dtime/float(nsplit_thermals)
62 do isplit=1,nsplit_thermals
63
64 CALL thermcell(klon,klev,zdt
65 s ,pplay,paprs,pphi
66 s ,u_seri,v_seri,t_seri,q_seri
67 s ,d_u_the,d_v_the,d_t_the,d_q_the
68 s ,zfm_therm,zentr_therm
69 s ,r_aspect_thermals,l_mix_thermals,w2di_thermals
70 s ,tho_thermals)
71
72 c transformation de la derivee en tendance
73 d_t_the(:,:)=d_t_the(:,:)*dtime/float(nsplit_thermals)
74 d_u_the(:,:)=d_u_the(:,:)*dtime/float(nsplit_thermals)
75 d_v_the(:,:)=d_v_the(:,:)*dtime/float(nsplit_thermals)
76 d_q_the(:,:)=d_q_the(:,:)*dtime/float(nsplit_thermals)
77 fm_therm(:,:)=fm_therm(:,:)
78 s +zfm_therm(:,:)/float(nsplit_thermals)
79 entr_therm(:,:)=entr_therm(:,:)
80 s +zentr_therm(:,:)/float(nsplit_thermals)
81 fm_therm(:,klev+1)=0.
82
83
84
85 c accumulation de la tendance
86 d_t_ajs(:,:)=d_t_ajs(:,:)+d_t_the(:,:)
87 d_u_ajs(:,:)=d_u_ajs(:,:)+d_u_the(:,:)
88 d_v_ajs(:,:)=d_v_ajs(:,:)+d_v_the(:,:)
89 d_q_ajs(:,:)=d_q_ajs(:,:)+d_q_the(:,:)
90
91 c incrementation des variables meteo
92 t_seri(:,:) = t_seri(:,:) + d_t_the(:,:)
93 u_seri(:,:) = u_seri(:,:) + d_u_the(:,:)
94 v_seri(:,:) = v_seri(:,:) + d_v_the(:,:)
95 q_seri(:,:) = q_seri(:,:) + d_q_the(:,:)
96
97 c tests sur les valeurs negatives de l'eau
98 DO k = 1, klev
99 DO i = 1, klon
100 if (.not.q_seri(i,k).ge.0.) then
101 print*,'WARN eau<0 apres therm i=',i,' k=',k
102 s ,' dq,q',d_q_the(i,k),q_seri(i,k)
103 q_seri(i,k)=1.e-15
104 endif
105 ENDDO
106 ENDDO
107
108 enddo ! isplit
109
110 return
111
112 end

  ViewVC Help
Powered by ViewVC 1.1.21