source: trunk/LMDZ.COMMON/libf/dyn3dpar/writedynav_p.F @ 3552

Last change on this file since 3552 was 1422, checked in by milmd, 10 years ago

In GENERIC, MARS and COMMON models replace some include files by modules (usefull for decoupling physics with dynamics).

File size: 3.7 KB
Line 
1!
2! $Id: writedynav_p.F 1279 2009-12-10 09:02:56Z fairhead $
3!
4      subroutine writedynav_p( histid, time, vcov,
5     ,                          ucov,teta,ppk,phi,q,masse,ps,phis)
6
7#ifdef CPP_IOIPSL
8! This routine needs IOIPSL
9      USE ioipsl
10#endif
11      USE parallel_lmdz
12      USE misc_mod
13      USE infotrac
14      USE comconst_mod, ONLY: cpp
15      USE temps_mod, ONLY: itau_dyn
16      implicit none
17
18C
19C   Ecriture du fichier histoire au format IOIPSL
20C
21C   Appels succesifs des routines: histwrite
22C
23C   Entree:
24C      histid: ID du fichier histoire
25C      time: temps de l'ecriture
26C      vcov: vents v covariants
27C      ucov: vents u covariants
28C      teta: temperature potentielle
29C      phi : geopotentiel instantane
30C      q   : traceurs
31C      masse: masse
32C      ps   :pression au sol
33C      phis : geopotentiel au sol
34C     
35C
36C   Sortie:
37C      fileid: ID du fichier netcdf cree
38C
39C   L. Fairhead, LMD, 03/99
40C
41C =====================================================================
42C
43C   Declarations
44#include "dimensions.h"
45#include "paramet.h"
46#include "comgeom.h"
47#include "iniprint.h"
48
49C
50C   Arguments
51C
52
53      INTEGER histid
54      REAL vcov(ip1jm,llm),ucov(ip1jmp1,llm)
55      REAL teta(ip1jmp1,llm),phi(ip1jmp1,llm),ppk(ip1jmp1,llm)                 
56      REAL ps(ip1jmp1),masse(ip1jmp1,llm)                   
57      REAL phis(ip1jmp1)                 
58      REAL q(ip1jmp1,llm,nqtot)
59      integer time
60
61
62#ifdef CPP_IOIPSL
63! This routine needs IOIPSL
64C   Variables locales
65C
66      integer ndex2d(iip1*jjp1),ndex3d(iip1*jjp1*llm),iq, ii, ll
67      real us(ip1jmp1,llm), vs(ip1jmp1,llm)
68      real tm(ip1jmp1,llm)
69      REAL vnat(ip1jm,llm),unat(ip1jmp1,llm)
70      logical ok_sync
71      integer itau_w
72      integer :: ijb,ije,jjn
73C
74C  Initialisations
75C
76      if (adjust) return
77     
78      ndex3d = 0
79      ndex2d = 0
80      ok_sync = .TRUE.
81      us = 999.999
82      vs = 999.999
83      tm = 999.999
84      vnat = 999.999
85      unat = 999.999
86      itau_w = itau_dyn + time
87
88C Passage aux composantes naturelles du vent
89      call covnat_p(llm, ucov, vcov, unat, vnat)
90
91C
92C  Appels a histwrite pour l'ecriture des variables a sauvegarder
93C
94C  Vents U scalaire
95C
96      call gr_u_scal_p(llm, unat, us)
97     
98      ijb=ij_begin
99      ije=ij_end
100      jjn=jj_nb
101     
102      call histwrite(histid, 'u', itau_w, us(ijb:ije,:),
103     .               iip1*jjn*llm, ndex3d)
104C
105C  Vents V scalaire
106C
107     
108      call gr_v_scal_p(llm, vnat, vs)
109      call histwrite(histid, 'v', itau_w, vs(ijb:ije,:),
110     .               iip1*jjn*llm, ndex3d)
111C
112C  Temperature potentielle moyennee
113C
114     
115      call histwrite(histid, 'theta', itau_w, teta(ijb:ije,:),
116     .                iip1*jjn*llm, ndex3d)
117C
118C  Temperature moyennee
119C
120      do ll=1,llm
121        do ii = ijb, ije
122          tm(ii,ll) = teta(ii,ll) * ppk(ii,ll)/cpp
123        enddo
124      enddo
125     
126      call histwrite(histid, 'temp', itau_w, tm(ijb:ije,:),
127     .                iip1*jjn*llm, ndex3d)
128C
129C  Geopotentiel
130C
131      call histwrite(histid, 'phi', itau_w, phi(ijb:ije,:),
132     .                iip1*jjn*llm, ndex3d)
133C
134C  Traceurs
135C
136        DO iq=1,nqtot
137          call histwrite(histid, ttext(iq), itau_w, q(ijb:ije,:,iq),
138     .                   iip1*jjn*llm, ndex3d)
139        enddo
140C
141C  Masse
142C
143       call histwrite(histid, 'masse', itau_w, masse(ijb:ije,1),
144     .                iip1*jjn, ndex2d)
145C
146C  Pression au sol
147C
148       call histwrite(histid, 'ps', itau_w, ps(ijb:ije),
149     .                 iip1*jjn, ndex2d)
150C
151C  Geopotentiel au sol
152C
153       call histwrite(histid, 'phis', itau_w, phis(ijb:ije),
154     .                 iip1*jjn, ndex2d)
155C
156C  Fin
157C
158      if (ok_sync) call histsync(histid)
159#else
160      write(lunout,*)'writedynav_p: Needs IOIPSL to function'
161#endif
162! #endif of #ifdef CPP_IOIPSL
163      return
164      end
Note: See TracBrowser for help on using the repository browser.