source: trunk/SOURCES/initial-phy-2.f90 @ 237

Last change on this file since 237 was 237, checked in by aquiquet, 5 years ago

Sealevel is now treated as a 2D variable (sealevel_2d while sealevel remains the eustatic sea level), results should remain identical as sealevel_2d is equal to sealevel in this revision.

File size: 8.0 KB
Line 
1!> \file initial-phy-2.f90
2!! Initialisation des parametres physique du modele
3!<
4
5!> SUBROUTINE: initial_phy
6!! Subroutine qui initialise les parametres physique du modele
7!! \author ...
8!! \date ...
9!! @note Used modules:
10!! @note    - module3D_phy
11!!
12!<
13subroutine initial_phy
14
15  !     **************************************************
16  !     **         initialisation                        *
17  !     *                                                *
18  !     **************************************************
19
20  use module3D_phy
21  use param_phy_mod
22
23  implicit none
24
25  character(len=80) :: filin
26  character(len=80) :: comment_run
27
28  namelist/runpar/runname,icompteur,iout,reprcptr,itracebug,num_tracebug,comment_run
29  namelist/grdline/igrdline,Schoof,ibmelt_inv
30  namelist/timesteps/dtmin,dtmax,dtt,testdiag,tbegin,tend
31
32
33  ! ouverture du fichier parametre ..._param_list.dat
34  !--------------------------------------------------------------
35  dirsource='../SOURCES'
36  ! dirsource='../../SOURCES'
37  ! filin='../'//trim(dirsource)//'/Fichiers-parametres/'//trim(geoplace)//'_param_list.dat'
38  filin=trim(geoplace)//'_param_list.dat'
39
40  open(num_param,file=filin) 
41
42
43  ! lecture des parametres du run                          block runpar
44  !--------------------------------------------------------------------
45
46  rewind(num_param)        ! pour revenir au debut du fichier param_list.dat
47  read(num_param,runpar)
48
49!  filin='../Param/param'//runname
50  filin='param'//runname
51  open(num_rep_42,file=filin)
52
53  ! reecriture des parametres entres dans le fichier 42
54  !------------------------------------------------------
55  write(num_rep_42,*)'!  Parametres du run :',runname, '    ',geoplace
56  write(num_rep_42,*)'!  sources dans  ',trim(dirsource)
57  write(num_rep_42,*)
58  write(num_rep_42,'(A)')'!___________________________________________________________' 
59  write(num_rep_42,'(A)') '&runpar                  ! nom du bloc  parametres du run'
60  write(num_rep_42,*)
61  write(num_rep_42,*) 'runname      =  "',runname,'"'
62  write(num_rep_42,*) 'icompteur    = ', icompteur                             
63  write(num_rep_42,*) 'iout         = ', iout 
64  write(num_rep_42,*) 'reprcptr     = "',trim(reprcptr),'"'
65  write(num_rep_42,*) 'itracebug    = ', itracebug
66  write(num_rep_42,*) 'num_tracebug  = ', num_tracebug
67  write(num_rep_42,*) 'comment_run   = "',trim(comment_run),'"'
68  write(num_rep_42,*)'/'                           
69  write(num_rep_42,'(A)') '! runname    : nom de l experience (8 caracteres)  '
70  write(num_rep_42,'(A)') '! icompteur  : reprise dans un fichier  0 -> non, 1 -> oui, 2 -> T et Hw'
71  write(num_rep_42,'(A)') '! icompteur  : 3-> T seulement'
72  write(num_rep_42,'(A)') '! iout   : 1-> sortie cptr pour reprise,2 -> sortie nc pour reprise '
73  write(num_rep_42,'(A)') '! reprcptr   : nom du fichier restart'
74  write(num_rep_42,'(A)') '! itracebug: 1-> ecriture de traces au debut des routines'
75  write(num_rep_42,'(A)') '! num_tracebug   numero d unite ecriture traces'
76  write(num_rep_42,'(A)') '! comment_run: commentaire court sur le run'
77
78  write(num_rep_42,*)
79
80
81
82  !     switch reprise compteur ou non: 1 => compteur, 0 => pas compteur
83  !     icompteur=2 reprise de tout sauf de la topo
84  !     icompteur=1 reprise de tout
85
86  !      reprcptr=TRIM('../CPTR-Heino/Heino096+k150.CPTR')
87
88
89
90
91  write(6,*)'_________________________________________________'
92  write(6,*)'runname=',runname
93  !      write(6,*) dirnameout
94  !      write(6,*) TRIM(DIRNAMEOUT)//'short'//runname//'.ritz'
95
96
97  ! ouverture du fichier short
98  !------------------------------
99
100  ! filin='time-series/short'//runname//'.ritz'
101  filin='short'//runname//'.ritz'
102  filin=TRIM(DIRNAMEOUT)//TRIM(filin)
103
104  open(num_ritz,file=filin)
105
106
107
108  ! lecture des parametres du run                          block grdline
109  !--------------------------------------------------------------------
110
111
112  rewind(num_param)        ! pour revenir au debut du fichier param_list.dat
113  read(num_param,grdline)
114
115
116  write(num_rep_42,'(A)')'!___________________________________________________________' 
117  write(num_rep_42,'(A)') '&grdline                 ! bloc grounding line'
118  write(num_rep_42,*)
119  write(num_rep_42,*) 'igrdline     = ',igrdline
120  write(num_rep_42,*) 'Schoof       = ',Schoof
121  write(num_rep_42,*) 'ibmelt_inv   = ',ibmelt_inv
122  write(num_rep_42,*)'/'                           
123  write(num_rep_42,'(A)')'! igrdline   : 1 ligne d echouage fixée, sinon 0'
124  write(num_rep_42,'(A)')'! Schoof     : 0 pas de Schoof, 1 flux de Schoof'
125  write(num_rep_42,'(A)')'! ibmelt_inv : 0 cas std, 1 inversion du bmelt (avec igrdline=1)'
126  write(num_rep_42,*)
127
128
129  !     grounding line fixee
130  !--------------------------
131  !     Pour faire des expériences avec l'épaisseur des ice-shelves fixée
132  !     igrdline=1 !fixé, sinon (libre) igrdline=0
133  !     igrdline=0
134
135
136
137  ! lecture des parametres du run                          block timesteps
138  !-----------------------------------------------------------------------
139  rewind(num_param)        ! pour revenir au debut du fichier param_list.dat
140  read(num_param,timesteps)
141
142! dmr&aurel ##  namelist/timesteps/dtmin,dtmax,dtt,testdiag,tbegin,tend
143  write(num_rep_42,'(A)')'!___________________________________________________________' 
144  write(num_rep_42,'(A)') '&timesteps                 ! bloc time steps'
145  write(num_rep_42,*)
146  write(num_rep_42,*) 'tend      = ',tend
147  write(num_rep_42,*) 'tbegin    = ',tbegin
148  write(num_rep_42,*) 'dtmin     = ',dtmin
149  write(num_rep_42,*) 'dtmax     = ',dtmax
150  write(num_rep_42,*) 'dtt       = ',dtt
151  write(num_rep_42,*) 'testdiag  = ',testdiag
152
153
154  write(num_rep_42,*)'/'                           
155  write(num_rep_42,'(A)')'! tous les temps en annees. tbegin et tend : debut et fin du run '
156  write(num_rep_42,'(A)')'! pour equation masse, pas de temps mini -> dtmin, maxi -> dtmax'     
157  write(num_rep_42,'(A)')'! dtt : pas de temps long'
158  write(num_rep_42,'(A)')'! testdiag, pour gérer le pas de temps dynamique dt'
159  write(num_rep_42,'(A)')'! ordres de grandeur (a moduler selon dx) : '
160  write(num_rep_42,'(A)')'! 40 km dtmin=2.e-2, dtmax=1., dtt=5., tesdiag=0.02'
161
162  write(num_rep_42,*)
163
164
165  !      si shelf rapide
166  !        testdiag=0.016
167
168  !---------------------------------------------------------------------
169  dt=dtmin           ! sera réattribue a chaque pas de temps
170  ntmax=90000000     ! nombre de tours maxi dans la boucle temps
171  dttest=dtmin       ! sert dans plein de tests
172  time=tbegin 
173  nt=-1
174
175
176
177  ! ----------------parametres dont le traitement en namelist est remis a plus tard
178
179
180  ! Tous les parametres liés à l'ablation devraient être dans un module ablation
181  ! A changer plus tard
182
183  !     temperature forcing : annual, july.
184  TAFOR=0.
185  TJFOR=0.0
186  SEALEVEL=0.0
187  sealevel_2d(:,:)=0.
188
189  SECYEAR=365.*24.*3600.
190  secyear= 31556926 ! s /an   pour Heino
191
192!!$!     *** ABLATION
193!!$!     integrating step for positive degree days (degrees)
194!!$      DTP=2.0
195!!$!     number of months in 1 year, st. dev. for temp *)
196!!$      NYEAR=12
197!!$      SIGMA=5.0
198!!$!     proportion of melted water that can refreeze *)
199!!$      CSI=0.6
200!!$!     melting factors for snow and ice
201!!$      Csnow=0.003
202!!$      Cice=0.008
203!!$!     ct for PDD calculation
204!!$      S22=0.5/SIGMA/SIGMA
205!!$      PY=2*PI/NYEAR
206!!$      PDDCT=DTP/SIGMA/sqrt(2.*PI)/NYEAR*365.
207
208
209! calcul de certain parametres de param_phy car ro et g ne sont plus parameter
210
211rog      = ro*g                !<  ro*g   (glace)
212rowg     = row*g               !<  row*g  (ocean)
213romg     = rom*g               !<  rom*g  (asthenosphere)
214rofreshg = rofresh*g           !<  rofresh*g
215d00      = ro**3*g**3          !<  ro**3*g**3
216dice     = ro/row              !<  ro/row
217
218coef_Sflot = (Row-Ro)/Row      !<   S = coef_Sflot * H + sealevel pour les shelves
219coef_Bflot = -Ro/Row           !<   B = coef_Bflot * H + sealevel pour les shelves
220
221  !---------------------
222
223
224  !     *** TEMPERATURE IN ICE AND MANTLE
225  !     Total number of vertical grid points, grid step in mantle
226  NZZ=NZ+NZM
227
228  !     specific latent heat of fusion of ice J/Kg
229  CL=3.35E5
230
231  !     DA mantle diffusion
232  DA=4.E7
233  !     switch
234  NICE=1
235  isynchro=0
236
237
238end subroutine initial_phy
Note: See TracBrowser for help on using the repository browser.