The TELEMAC-MASCARET system  trunk
point_khione.f
Go to the documentation of this file.
1 ! ***********************
2  SUBROUTINE point_khione
3 ! ***********************
4 !
5  &( mesh,ielmx )
6 !
7 !***********************************************************************
8 ! KHIONE V7P3
9 !***********************************************************************
10 !
11 !brief Memory allocation of structures, aliases, blocks...
12 !
13 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
14 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
15 !
16  USE bief
19 ! USE DECLARATIONS_WAQTEL, ONLY: TDEW,VISBI
20 !
21  IMPLICIT NONE
22 !
23 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
24 !
25  INTEGER, INTENT(IN) :: IELMX
26  TYPE(bief_mesh), INTENT(IN) :: MESH
27 !
28 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
29 !
30  INTEGER NTR,I,J
31  INTEGER CFG(2),IELM0,ILAST
32 !
33 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
34  cfg(1) = 3
35  cfg(2) = 1
36  ielm0 = 10*(ielmx/10)
37 !
38 ! THERMAL BUDGET
39  CALL bief_allvec(1,phcl, 'PHCL ',ielmx,1,1,mesh)
40  CALL bief_allvec(1,phri, 'PHRI ',ielmx,1,1,mesh)
41  CALL bief_allvec(1,phps, 'PHPS ',ielmx,1,1,mesh)
42  CALL bief_allvec(1,phib, 'PHIB ',ielmx,1,1,mesh)
43  CALL bief_allvec(1,phie, 'PHIE ',ielmx,1,1,mesh)
44  CALL bief_allvec(1,phih, 'PHIH ',ielmx,1,1,mesh)
45  CALL bief_allvec(1,phip, 'PHIP ',ielmx,1,1,mesh)
46  CALL bief_allvec(1,phiw, 'PHIW ',ielmx,1,1,mesh)
47  CALL bief_allvec(1,sumph, 'SUMPH ',ielmx,1,1,mesh)
48  CALL bief_allvec(1,sumph_ice, 'SUMPH_ICE ',ielmx,1,1,mesh)
49 !
50 ! FRAZIL ICE
51  CALL bief_allvec(1,seed, 'SEED ' ,ielmx,1,1,mesh)
52  CALL bief_allvec(1,tmelt, 'TMELT ' ,ielmx,1,1,mesh)
53  CALL bief_allvec(1,kgm, 'KGM ' ,ielmx,1,1,mesh)
54  CALL bief_allvec(1,epsgm, 'EPSGM ' ,ielmx,1,1,mesh)
55  CALL bief_allvec(1,alpgm, 'ALPGM ' ,ielmx,1,1,mesh)
56  CALL bief_allvec(1,nutgm, 'NUTGM ' ,ielmx,1,1,mesh)
57  IF(thermal_budget) THEN
58  CALL allblo(frzl ,'FRAZIL')
59  CALL allblo(nbp ,'NBPART')
60  CALL bief_allvec(1,ntot, 'NTOT ' ,ielmx,1,1,mesh)
61  CALL bief_allvec(1,ctot, 'CTOT ' ,ielmx,1,1,mesh)
62  CALL bief_allvec_in_block(frzl,nc_fra,1,'F ',
63  & ielmx,1,1,mesh)
64  CALL bief_allvec_in_block(nbp,nc_fra,1,'NBFRZL',
65  & ielmx,1,1,mesh)
66  CALL bief_allvec(1,temp, 'TEMP ' ,ielmx,1,1,mesh)
67  CALL bief_allvec(1,sal , 'SAL ' ,ielmx,1,1,mesh)
68  ENDIF
69 !
70 ! ICE CONCENTRATION AS COMPUTED FROM SURFACE ICE PARTICLES
71  CALL bief_allvec(1,anfem , 'COVFC ',ielmx,1,1,mesh)
72 !
73 ! ICE COVER DEFINITION - REQUIRED FOR A RESTART
74  CALL bief_allvec(1,theta0, 'COVTH0',ielmx,1,1,mesh)
75  CALL bief_allvec(1,theta1, 'COVTH1',ielmx,1,1,mesh)
76  CALL bief_allvec(1,beta1 , 'COVBT1',ielmx,1,1,mesh)
77  CALL bief_allvec(1,vbb , 'COVVBB',ielmx,1,1,mesh)
78  CALL bief_allvec(1,thifem, 'COVTHT',ielmx,1,1,mesh)
79  CALL bief_allvec(1,thifems,'COVTHS',ielmx,1,1,mesh)
80  CALL bief_allvec(1,thifemf,'COVTHF',ielmx,1,1,mesh)
81  CALL bief_allvec(1,hun , 'COVHUN',ielmx,1,1,mesh)
82  CALL bief_allvec(1,icestr, 'ICESTR',ielmx,1,1,mesh)
83  CALL bief_allvec(1,vz , 'VZ ',ielmx,1,1,mesh)
84  CALL bief_allvec(1,tcr , 'TCR ',ielmx,1,1,mesh)
85 !
86 ! ICE CHARACTERISATION
87  CALL bief_allvec(3,icetype, 'ITYPE ',ielmx,1,1,mesh)
88  CALL bief_allvec(3,icetypep,'ITYPEP',ielmx,1,1,mesh)
89  CALL bief_allvec(3,iceloc , 'ILOC ',ielmx,1,1,mesh)
90  CALL bief_allvec(3,it1, 'IT1 ',ielmx,1,1,mesh)
91  CALL bief_allvec(3,it2, 'IT2 ',ielmx,1,1,mesh)
92 !
93 ! CLOGGING SECTION
94 !
95  CALL allblo(msksec,'MSKSEC')
96  IF(nseclog.GT.0) THEN
97  CALL bief_allvec_in_block(msksec,nseclog,1,'MSKS ',
98  & ielm0,1,1,mesh)
99  ENDIF
100 !
101 !-----------------------------------------------------------------------
102 !
103 ! WORKING ARRAYS
104 !
105  ntr = 6
106 !
107 ! ALLOCATES NTR WORKING ARRAYS
108 ! TB WILL CONTAIN ARRAYS T1,T2,...
109 !
110  CALL allblo(tb ,'TB ')
111  CALL bief_allvec_in_block(tb,ntr,1,'TB ',ielmx,1,2,mesh)
112 !
113 ! BM1 AND BM2:
114 !
115  CALL bief_allmat(bm1,'BM1 ',ielmx,ielmx,cfg,'Q','Q',mesh)
116  CALL bief_allmat(bm2,'BM2 ',ielmx,ielmx,cfg,'Q','Q',mesh)
117  CALL bief_allvec(1,cv1,'CV1 ',ielmx,1,2,mesh)
118  CALL bief_allvec(1,cv2,'CV2 ',ielmx,1,2,mesh)
119  CALL bief_allvec(1,cv3,'CV3 ',ielmx,1,2,mesh)
120  CALL bief_allvec(1,cv4,'CV4 ',ielmx,1,2,mesh)
121 !
122 ! ALIAS FOR THE WORKING ARRAYS OF THE BLOCK: TB
123 !
124 ! FIRST 2 REQUIRED FOR THE CALL TO WRITE_MESH WITHIN OUTPUT_KHIONE
125  t1 =>tb%ADR( 1)%P
126  t2 =>tb%ADR( 2)%P
127 !
128 ! THESE 4 ARE USED TO COMPUTE VARIOUS ICE COVER ELEVATION
129  t3 =>tb%ADR( 3)%P
130  t4 =>tb%ADR( 4)%P
131  t5 =>tb%ADR( 5)%P
132  t6 =>tb%ADR( 6)%P
133 !
134 !-----------------------------------------------------------------------
135 !
136 ! ALLOCATE THE BLOCK WHICH CONNECTS A VARIABLE NAME TO ITS ARRAY
137 ! FOR GRAPHICAL OUTPUT
138 !
139  CALL allblo(varsor ,'VARSOR')
140 !
141 ! THERMAL BUDGET
142 !
143 ! 01 SOLAR RADIATION UNDER CLEAR SKY
144  CALL addblo(varsor,phcl)
145 ! 02 SOLAR RADIATION UNDER CLOUDY SKY
146  CALL addblo(varsor,phri)
147 ! 03 NET SOLAR RADIATION AFTER REFLECTION
148  CALL addblo(varsor,phps)
149 ! 04 EFFECTIVE BACK RADIATION
150  CALL addblo(varsor,phib)
151 ! 05 EVAPORATION HEAT FLUX
152  CALL addblo(varsor,phie)
153 ! 06 CONDUCTIVITY HEAT FLUX
154  CALL addblo(varsor,phih)
155 ! 07 PRECIPITATION HEAT FLUX
156  CALL addblo(varsor,phip)
157 !
158 ! ICE SHEET COVER
159 !
160 ! 08 PROBABILITY OF FRAZIL DEPOSITION - OPEN WATER
161  CALL addblo(varsor,theta0)
162 ! 09 PROBABILITY OF FRAZIL DEPOSITION - ICE COVER
163  CALL addblo(varsor,theta1)
164 ! 10 RATE OF REENTRAINMENT OF SURFACE PER UNIT AREA
165  CALL addblo(varsor,beta1)
166 ! 11 SETTLING VELOCITY OF FRAZIL ICE IN THE TURBULENT FLOW
167  CALL addblo(varsor,vbb)
168 ! 12 ICE CONCENTRATION AS COMPUTED FROM SURFACE ICE PARTICLES
169  CALL addblo(varsor,anfem)
170 ! 13 SOLID ICE THICKNESS
171  CALL addblo(varsor,thifems)
172 ! 14 FRAZIL ICE THICKNESS
173  CALL addblo(varsor,thifemf)
174 ! 15 UNDERCOVER ICE THICKNESS
175  CALL addblo(varsor,hun)
176 ! 16 COMPUTED ELEVATIONS WITHIN PRERES_KHIONE (WATER AND ICE COVER)
177 ! EQUIVALENT SURFACE ELEVATION
178  CALL addblo(varsor,t3)
179 ! 17 TOP OF THE ICE COVER
180  CALL addblo(varsor,t4)
181 ! 18 BOTTOM OF THE ICE COVER (ALSO THE FREE SURFACE))
182  CALL addblo(varsor,t5)
183 ! 19 TOTAL ICE THICKNESS
184  CALL addblo(varsor,thifem)
185 ! 20 ICE CHARACTERISATION
186  CALL addblo(varsor,icetype)
187 ! 21 NUMBER OF PARTICLES
188  CALL addblo(varsor,ntot)
189 ! 22 FRAZIL TOTAL CONCENTRATION
190  CALL addblo(varsor,ctot)
191 !
192  ilast = 22
193  IF(ilast.NE.varsor%N) THEN
194  WRITE(lu,*) 'MESSAGE TO DEVELOPPERS:'
195  WRITE(lu,*) 'CHANGE ILAST INTO ',varsor%N
196  WRITE(lu,*) 'IN POINT_KHIONE'
197  CALL plante(1)
198  stop
199  ENDIF
200 !
201 ! TELEMAC-2D TRACER VALUES
202 !
203  IF(thermal_budget) THEN
204  DO i=1,nc_fra
205  CALL addblo(varsor,frzl%ADR(i)%P)
206  ENDDO
207  DO i=1,nc_fra
208  CALL addblo(varsor,nbp%ADR(i)%P)
209  ENDDO
210  CALL addblo(varsor,temp)
211  CALL addblo(varsor,sal)
212  ENDIF
213 !
214 !-----------------------------------------------------------------------
215 !
216 ! DIFFERENTIATED VARIABLES
217 !
218  IF( nadvar.GT.0 ) THEN
219  j = varsor%N + 1
220  CALL allblo(advar ,'ADVAR ')
221  CALL bief_allvec_in_block(advar,nadvar,1,'AD ',ielmx,
222  & 1,2,mesh)
223  DO i = 1,nadvar
224  CALL ad_get_khione(i,advar%ADR(i)%P)
225 !
226  IF( j.GT.maxvar ) THEN
227  IF(lng.EQ.1) THEN
228  WRITE(lu,*) 'POINT : TROP DE DERIVEES A IMPRIMER'
229  ENDIF
230  IF(lng.EQ.2) THEN
231  WRITE(lu,*) 'POINT : TOO MANY DERIVATIVES TO PRINT OUT'
232  ENDIF
233  CALL plante(1)
234  stop
235  ENDIF
236 !
237  IF( sorleo(j).OR.sorimp(j) ) THEN
238  CALL addblo(varsor,advar%ADR(i)%P)
239  j = j + 1
240  ENDIF
241 !
242  ENDDO
243  ENDIF
244 !
245 !***********************************************************************
246 !
247 !-----------------------------------------------------------------------
248 !
249  RETURN
250  END
type(bief_obj), target epsgm
type(bief_obj), target bm1
type(bief_obj), pointer t2
subroutine point_khione(MESH, IELMX)
Definition: point_khione.f:7
type(bief_obj), target sumph_ice
type(bief_obj), target phib
type(bief_obj), target phcl
type(bief_obj), pointer t5
type(bief_obj), target alpgm
type(bief_obj), target cv1
subroutine allblo(BLO, NOM)
Definition: allblo.f:7
type(bief_obj), target cv3
type(bief_obj), target phih
type(bief_obj), target theta0
type(bief_obj), target phip
type(bief_obj), target bm2
type(bief_obj), target tmelt
type(bief_obj), target temp
type(bief_obj), target ntot
subroutine bief_allvec(NAT, VEC, NOM, IELM, DIM2, STATUT, MESH)
Definition: bief_allvec.f:7
type(bief_obj), target nutgm
type(bief_obj), target iceloc
subroutine bief_allvec_in_block(BLO, N, NAT, NOMGEN, IELM, NDIM, STATUT, MESH)
type(bief_obj), target sal
subroutine bief_allmat(MAT, NOM, IELM1, IELM2, CFG, TYPDIA, TYPEXT, MESH)
Definition: bief_allmat.f:7
type(bief_obj), target nbp
type(bief_obj), pointer t6
type(bief_obj), target hun
type(bief_obj), target icetype
subroutine ad_get_khione(IVAR, ADOBJ)
Definition: ad_get_khione.F:7
type(bief_obj), target theta1
type(bief_obj), target kgm
type(bief_obj), target msksec
type(bief_obj), target cv2
type(bief_obj), target it2
type(bief_obj), target cv4
type(bief_obj), target ctot
subroutine addblo(BLOC, OBJ)
Definition: addblo.f:7
type(bief_obj), pointer t1
type(bief_obj), target icetypep
logical, dimension(maxvar) sorleo
type(bief_obj), target seed
type(bief_obj), target sumph
type(bief_obj), target it1
type(bief_obj), target vbb
type(bief_obj), target vz
type(bief_obj), target phiw
type(bief_obj), target tb
type(bief_obj), target phri
type(bief_obj), target anfem
type(bief_obj), target beta1
type(bief_obj), target phie
type(bief_obj), target advar
type(bief_obj), target varsor
type(bief_obj), pointer t4
type(bief_obj), pointer t3
type(bief_obj), target thifemf
type(bief_obj), target icestr
type(bief_obj), target frzl
type(bief_obj), target tcr
type(bief_obj), target thifems
type(bief_obj), target phps
Definition: bief.f:3
logical, dimension(maxvar) sorimp
integer, parameter maxvar
type(bief_obj), target thifem