/[lmdze]/trunk/dyn3d/conf_gcm.f
ViewVC logotype

Annotation of /trunk/dyn3d/conf_gcm.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 25 - (hide annotations)
Fri Mar 5 16:43:45 2010 UTC (14 years, 2 months ago) by guez
Original Path: trunk/libf/dyn3d/conf_gcm.f90
File size: 3088 byte(s)
Simplified "etat0_lim.sh" and "gcm.sh" because the full versions
depended on personal arrangements for directories and machines.

Translated included files into modules. Encapsulated procedures into modules.

Moved variables from module "comgeom" to local variables of
"inigeom". Deleted some unused variables in "comgeom".

Moved variable "day_ini" from module "temps" to module "dynetat0_m".

Removed useless test on variable "time" and useless "close" statement
in procedure "leapfrog".

Removed useless call to "inigeom" in procedure "limit".

1 guez 3 module conf_gcm_m
2    
3     ! This module is clean: no C preprocessor directive, no include line
4    
5     IMPLICIT NONE
6    
7     INTEGER:: nday= 10
8     ! Nombre de jours d'integration
9     ! On pourait aussi permettre des mois ou des annees !
10    
11     integer:: day_step= 240 ! nombre de pas par jour, multiple de iperiod
12    
13     integer:: iperiod= 5
14     ! periode pour le pas Matsuno (en pas de temps)
15    
16     integer:: iapp_tracvl= 5
17     ! Should normally be equal to "iperiod"
18     ! frequence du groupement des flux (en pas de temps)
19    
20     integer:: iconser= 240
21 guez 25 ! période de sortie des variables de contrôle (en pas de temps)
22 guez 3
23     integer:: iecri= 1 ! période d'écriture du fichier "dyn_hist.nc" (en jours)
24    
25     integer:: idissip= 10 ! periode de la dissipation (en pas)
26    
27     integer:: iphysiq= 5
28 guez 25 ! Période de la physique en pas de temps de la dynamique.
29 guez 3
30     integer:: dayref = 1 ! jour de l'année de l'état initial
31     ! (= 350 si 20 décembre par exemple)
32    
33     integer:: anneeref = 1998 ! Annee de l'etat initial (avec 4 chiffres)
34    
35 guez 15 logical:: raz_date = .false.
36     ! (remise a zero de la date initiale, prise en compte de la date de
37     ! gcm.def avec remise a zero des compteurs de pas de temps)
38     ! (pas de remise a zero: on garde la date du fichier restart)
39 guez 3
40     REAL:: periodav= 1.
41     ! periode de stockage fichier histmoy (en jour)
42    
43 guez 12 logical:: offline = .FALSE.
44     ! Nouvelle eau liquide
45     ! Permet de mettre en route la nouvelle parametrisation de l'eau liquide
46 guez 3
47     contains
48    
49 guez 13 SUBROUTINE conf_gcm
50 guez 3
51     ! Auteurs : L. Fairhead, P. Le Van
52     ! Version du 29/04/97
53    
54     ! Nouveaux paramètres nitergdiv, nitergrot, niterh, tetagdiv, tetagrot,
55     ! tetatemp ajoutés pour la dissipation.
56    
57     ! On ne compare pas les valeurs des paramètres du zoom, grossismx,
58     ! grossismy, clon, clat, fxyhypb lues sur le fichier start avec
59     ! celles passées par run.def, au début du gcm.
60     ! Ces paramètres définissent entre autres la grille et doivent être
61     ! cohérents, sinon il y aura divergence du gcm.
62    
63     use comdissnew, only: read_comdissnew
64 guez 12 use logic, only: read_logic
65 guez 3 use serre, only: clon, clat, grossismx, grossismy, alphax, alphay, &
66     dzoomx, dzoomy, taux, tauy
67 guez 12 use iniprint, only: read_iniprint
68 guez 3
69     namelist /conf_gcm_nml/dayref, anneeref, raz_date, nday, day_step, &
70 guez 12 iperiod, iapp_tracvl, iconser, iecri, periodav, idissip, &
71 guez 13 iphysiq, clon, clat, grossismx, grossismy, dzoomx, dzoomy, taux, &
72     tauy, offline
73 guez 3
74     !------------------------------------
75    
76     print *, "Call sequence information: conf_gcm"
77 guez 12
78 guez 3 call read_iniprint
79 guez 12 call read_logic
80     call read_comdissnew
81 guez 3
82     print *, "Enter namelist 'conf_gcm_nml'."
83     read(unit=*, nml=conf_gcm_nml)
84     write(unit=*, nml=conf_gcm_nml)
85    
86     IF (grossismx < 1.) THEN
87     PRINT *, 'Error: grossismx < 1'
88     STOP 1
89     ELSE
90     alphax = 1. - 1. / grossismx
91     ENDIF
92     IF (grossismy < 1.) THEN
93     PRINT *, 'Error: grossismy < 1'
94     STOP 1
95     ELSE
96     alphay = 1. - 1. / grossismy
97     ENDIF
98     PRINT *, 'alphax = ', alphax
99     PRINT *, 'alphay = ', alphay
100    
101     END SUBROUTINE conf_gcm
102    
103     end module conf_gcm_m

  ViewVC Help
Powered by ViewVC 1.1.21