source: trunk/LMDZ.UNIVERSAL/libf/phygeneric/iophys.F90 @ 965

Last change on this file since 965 was 862, checked in by aslmd, 12 years ago

LMDZ.UNIVERSAL
LMDZ.GENERIC

Added calls to Frederic Hourdin's subroutines to output physical fields in parallel. This is under precompiling flags CPP_PARA.
This allows for LMDZ.UNIVERSAL users to use writediagfi with parallel computations.
These lines are not compiled by casual users of LMDZ.GENERIC (or users of LMDZ.UNIVERSAL in sequential mode).

The precompiling flag NOWRITEDIAGFI is obsolete and has been deleted.

NOTES:

  • A better cleaner method might be proposed later
  • Added subroutines

A 0 LMDZ.UNIVERSAL/libf/phygeneric/iotd_ecrit.F90
A 0 LMDZ.UNIVERSAL/libf/phygeneric/iophys.F90
A 0 LMDZ.UNIVERSAL/libf/phygeneric/iotd.h
A 0 LMDZ.UNIVERSAL/libf/phygeneric/iotd_ini.F90
A 0 LMDZ.UNIVERSAL/libf/phygeneric/iotd_fin.F90
The iotd_* subroutines are actually supposed to be put in bibio in LMDZ.COMMON
This will be done later once agreed in the team

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