source: LMDZ5/trunk/libf/phylmd/iophys.F90 @ 2733

Last change on this file since 2733 was 2733, checked in by Ehouarn Millour, 8 years ago

Removing unnecessary references to files in the dynamics from the physics:

  • phys_output_write_mod: use infotrac_phy, not infotrac.
  • iophys: global grid sizes iim and jjp1 are nbp_lon and nbp_lat, from module mod_grid_phy_lmdz.

EM

File size: 3.7 KB
Line 
1      subroutine iophys_ecrit(nom,lllm,titre,unite,px)
2
3      USE mod_phys_lmdz_para, ONLY: klon_omp, is_mpi_root
4      USE mod_grid_phy_lmdz, ONLY: klon_glo, nbp_lon, nbp_lat
5      IMPLICIT NONE
6
7
8
9!  Ecriture de variables diagnostiques au choix dans la physique
10!  dans un fichier NetCDF nomme  'diagfi'. Ces variables peuvent etre
11!  3d (ex : temperature), 2d (ex : temperature de surface), ou
12!  0d (pour un scalaire qui ne depend que du temps : ex : la longitude
13!  solaire)
14!  (ou encore 1d, dans le cas de testphys1d, pour sortir une colonne)
15!  La periode d'ecriture est donnee par
16!  "ecritphy " regle dans le fichier de controle de run :  run.def
17!
18!    writediagfi peut etre appele de n'importe quelle subroutine
19!    de la physique, plusieurs fois. L'initialisation et la creation du
20!    fichier se fait au tout premier appel.
21!
22! WARNING : les variables dynamique (u,v,t,q,ps)
23!  sauvees par writediagfi avec une
24! date donnee sont legerement differentes que dans le fichier histoire car
25! on ne leur a pas encore ajoute de la dissipation et de la physique !!!
26! IL est  RECOMMANDE d'ajouter les tendance physique a ces variables
27! avant l'ecriture dans diagfi (cf. physiq.F)
28
29! Modifs: Aug.2010 Ehouarn: enforce outputs to be real*4
30!
31!  parametres (input) :
32!  ----------
33!      unit : unite logique du fichier de sortie (toujours la meme)
34!      nom  : nom de la variable a sortir (chaine de caracteres)
35!      titre: titre de la variable (chaine de caracteres)
36!      unite : unite de la variable (chaine de caracteres)
37!      px : variable a sortir (real 0, 1, 2, ou 3d)
38!
39!=================================================================
40
41
42! Arguments on input:
43      integer lllm
44      character (len=*) :: nom,titre,unite
45      integer imjmax
46      parameter (imjmax=100000)
47      real px(klon_omp,lllm)
48      real xglo(klon_glo,lllm)
49      real zx(nbp_lon,nbp_lat,lllm)
50
51
52      CALL Gather(px,xglo)
53!$OMP MASTER
54      IF (is_mpi_root) THEN       
55        CALL Grid1Dto2D_glo(xglo,zx)
56        call iotd_ecrit(nom,lllm,titre,unite,zx)
57      ENDIF
58!$OMP END MASTER
59
60      return
61      end
62
63!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
64      SUBROUTINE iophys_ini
65      USE mod_phys_lmdz_para, ONLY: is_mpi_root
66      USE vertical_layers_mod, ONLY: presnivs
67      USE regular_lonlat_mod, ONLY: lon_reg, lat_reg
68      USE dimphy, ONLY: klev
69
70      IMPLICIT NONE
71
72!=======================================================================
73!
74!   Auteur:  L. Fairhead  ,  P. Le Van, Y. Wanherdrick, F. Forget
75!   -------
76!
77!   Objet:
78!   ------
79!
80!   'Initialize' the diagfi.nc file: write down dimensions as well
81!   as time-independent fields (e.g: geopotential, mesh area, ...)
82!
83!=======================================================================
84!-----------------------------------------------------------------------
85!   Declarations:
86!   -------------
87
88real pi
89
90!   Arguments:
91!   ----------
92
93!$OMP MASTER
94    IF (is_mpi_root) THEN       
95pi=2.*asin(1.)
96call iotd_ini('phys.nc   ', &
97!iim,jjp1,llm,rlonv(1:iim)*180./pi,rlatu*180./pi,presnivs)
98size(lon_reg),size(lat_reg),klev,lon_reg(:)*180./pi,lat_reg*180./pi,presnivs)
99    ENDIF
100!$OMP END MASTER
101
102      END
103
104#ifdef und
105      SUBROUTINE gr_fi_ecrit(nfield,nlon,iim,jjmp1,fi,ecrit)
106      IMPLICIT none
107
108!=======================================================================
109      INTEGER nfield,nlon,iim,jjmp1, jjm
110      REAL fi(nlon,nfield), ecrit(iim*jjmp1,nfield)
111
112      INTEGER i, n, ig
113
114      jjm = jjmp1 - 1
115      DO n = 1, nfield
116         DO i=1,iim
117            ecrit(i,n) = fi(1,n)
118            ecrit(i+jjm*iim,n) = fi(nlon,n)
119         ENDDO
120         DO ig = 1, nlon - 2
121           ecrit(iim+ig,n) = fi(1+ig,n)
122         ENDDO
123      ENDDO
124      RETURN
125      END
126
127#endif
Note: See TracBrowser for help on using the repository browser.