My Project
FVCOMg01
mod_enkf.f90
Go to the documentation of this file.
1
2
3
4
5
6
7
8
9
10
11
12
!/===========================================================================/
13
! Copyright (c) 2007, The University of Massachusetts Dartmouth
14
! Produced at the School of Marine Science & Technology
15
! Marine Ecosystem Dynamics Modeling group
16
! All rights reserved.
17
!
18
! FVCOM has been developed by the joint UMASSD-WHOI research team. For
19
! details of authorship and attribution of credit please see the FVCOM
20
! technical manual or contact the MEDM group.
21
!
22
!
23
! This file is part of FVCOM. For details, see http://fvcom.smast.umassd.edu
24
! The full copyright notice is contained in the file COPYRIGHT located in the
25
! root directory of the FVCOM code. This original header must be maintained
26
! in all distributed versions.
27
!
28
! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
29
! AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
30
! THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
31
! PURPOSE ARE DISCLAIMED.
32
!
33
!/---------------------------------------------------------------------------/
34
! CVS VERSION INFORMATION
35
! $Id$
36
! $Name$
37
! $Revision$
38
!/===========================================================================/
39
40
MODULE
enkfval
41
END MODULE
enkfval
42
43
!=============================================
44
!MODULE MOD_STARTUP_MIMIC
45
!# if defined (ENKF)
46
! USE MOD_UTILS
47
! USE MOD_NCTOOLS
48
! USE MOD_INPUT
49
! USE ALL_VARS
50
! USE EQS_OF_STATE
51
! USE MOD_WD
52
! USE SINTER
53
!
54
!
55
!# if defined (ICE)
56
! USE MOD_ICE
57
! USE MOD_ICE2D
58
!# endif
59
!
60
!# if defined (WATER_QUALITY)
61
! USE MOD_WQM
62
!# endif
63
!
64
!# if defined (BioGen)
65
! USE MOD_BIO_3D
66
!# endif
67
!
68
!# if defined (NH)
69
! USE NON_HYDRO, ONLY: W4ZT, NHQDRX, NHQDRY, NHQDRZ, NHQ2DX, NHQ2DY
70
!# endif
71
!
72
! IMPLICIT NONE
73
!
74
! PRIVATE
75
!
76
! PUBLIC :: READ_SSH1
77
! PUBLIC :: READ_UV1
78
! PUBLIC :: READ_TURB1
79
! PUBLIC :: READ_TS1
80
! PUBLIC :: READ_WETDRY1
81
!
82
!
83
!CONTAINS
84
!!==============================================================================!
85
! SUBROUTINE READ_SSH1(NC_START)
86
!# if defined (SEDIMENT)
87
! USE MOD_SED, only : morpho_model,sed_hot_start
88
!# endif
89
! IMPLICIT NONE
90
! TYPE(NCFILE),POINTER :: NC_START
91
! TYPE(NCVAR), POINTER :: VAR
92
! TYPE(NCDIM), POINTER :: DIM
93
! LOGICAL :: FOUND
94
! INTEGER :: STKCNT
95
!
96
! IF(DBG_SET(DBG_SBR)) write(ipt,*) "Start: READ_SSH"
97
!
98
! STKCNT = NC_START%FTIME%PREV_STKCNT
99
!
100
! ! LOAD EL
101
! VAR => FIND_VAR(NC_START,'zeta',FOUND)
102
! IF(.not. FOUND) CALL FATAL_ERROR("COULD NOT FIND VARIABLE 'zeta'&
103
! & IN THE HOTSTART FILE OBJECT")
104
! CALL NC_CONNECT_AVAR(VAR, EL)
105
! CALL NC_READ_VAR(VAR,STKCNT)
106
!
107
! ! LOAD ET
108
! VAR => FIND_VAR(NC_START,'et',FOUND)
109
! IF(.not. FOUND) CALL FATAL_ERROR("COULD NOT FIND VARIABLE 'et'&
110
! & IN THE HOTSTART FILE OBJECT")
111
! CALL NC_CONNECT_AVAR(VAR, ET)
112
! CALL NC_READ_VAR(VAR,STKCNT)
113
!
114
! !----------------------------------------------------------------
115
! ! Read the most recent bathymetry if Morphodynamics is Active
116
! !----------------------------------------------------------------
117
!# if defined(SEDIMENT)
118
! IF(MORPHO_MODEL .and. SED_HOT_START)THEN
119
! VAR => FIND_VAR(NC_START,'h',FOUND)
120
! IF(.not. FOUND) CALL FATAL_ERROR("COULD NOT FIND VARIABLE 'h'&
121
! & IN THE HOTSTART FILE OBJECT")
122
! CALL NC_CONNECT_AVAR(VAR, h)
123
! CALL NC_READ_VAR(VAR,STKCNT)
124
! ENDIF
125
!# endif
126
!
127
!
128
! !----------------------------------------------------------------
129
! ! Given SSH and Bathy, Update the Bathymetry
130
! !----------------------------------------------------------------
131
! D = H + EL
132
! DT = H + ET
133
!
134
!
135
! CALL N2E2D(H,H1)
136
! CALL N2E2D(EL,EL1)
137
! CALL N2E2D(D,D1)
138
! CALL N2E2D(DT,DT1)
139
!
140
! IF(DBG_SET(DBG_SBR)) write(ipt,*) "Start: READ_SSH"
141
!
142
! END SUBROUTINE READ_SSH1
143
!!==============================================================================!
144
!!==============================================================================!
145
! SUBROUTINE READ_WETDRY1(NC_START)
146
! USE MOD_WD
147
! IMPLICIT NONE
148
! TYPE(NCFILE),POINTER :: NC_START
149
! TYPE(NCVAR), POINTER :: VAR
150
! TYPE(NCDIM), POINTER :: DIM
151
! LOGICAL :: FOUND
152
! INTEGER :: STKCNT
153
!
154
! IF(DBG_SET(DBG_SBR)) write(ipt,*) "Start: READ_WETDRY"
155
!
156
! STKCNT = NC_START%FTIME%PREV_STKCNT
157
!
158
! ! LOAD ISWETN
159
! VAR => FIND_VAR(NC_START,'wet_nodes',FOUND)
160
! IF(.not. FOUND) CALL FATAL_ERROR("COULD NOT FIND VARIABLE 'wet_nodes'&
161
! & IN THE HOTSTART FILE OBJECT")
162
! CALL NC_CONNECT_AVAR(VAR, ISWETN)
163
! CALL NC_READ_VAR(VAR,STKCNT)
164
!
165
! ! LOAD ISWETC
166
! VAR => FIND_VAR(NC_START,'wet_cells',FOUND)
167
! IF(.not. FOUND) CALL FATAL_ERROR("COULD NOT FIND VARIABLE 'wet_cells'&
168
! & IN THE HOTSTART FILE OBJECT")
169
! CALL NC_CONNECT_AVAR(VAR, ISWETC)
170
! CALL NC_READ_VAR(VAR,STKCNT)
171
!
172
!
173
! ! LOAD ISWETNT
174
! VAR => FIND_VAR(NC_START,'wet_nodes_prev_int',FOUND)
175
! IF(.not. FOUND) CALL FATAL_ERROR("COULD NOT FIND VARIABLE 'wet_nodes_prev_int'&
176
! & IN THE HOTSTART FILE OBJECT")
177
! CALL NC_CONNECT_AVAR(VAR, ISWETNT)
178
! CALL NC_READ_VAR(VAR,STKCNT)
179
!
180
! ! LOAD ISWETCT
181
! VAR => FIND_VAR(NC_START,'wet_cells_prev_int',FOUND)
182
! IF(.not. FOUND) CALL FATAL_ERROR("COULD NOT FIND VARIABLE 'wet_cells_prev_int'&
183
! & IN THE HOTSTART FILE OBJECT")
184
! CALL NC_CONNECT_AVAR(VAR, ISWETCT)
185
! CALL NC_READ_VAR(VAR,STKCNT)
186
!
187
! ! LOAD ISWETCE
188
! VAR => FIND_VAR(NC_START,'wet_cells_prev_ext',FOUND)
189
! IF(.not. FOUND) CALL FATAL_ERROR("COULD NOT FIND VARIABLE 'wet_cells_prev_ext'&
190
! & IN THE HOTSTART FILE OBJECT")
191
! CALL NC_CONNECT_AVAR(VAR, ISWETC)
192
! CALL NC_READ_VAR(VAR,STKCNT)
193
!
194
! IF(DBG_SET(DBG_SBR)) write(ipt,*) "End: READ_WETDRY"
195
!
196
! END SUBROUTINE READ_WETDRY1
197
!!==============================================================================!
198
! SUBROUTINE READ_TS1(NC_START)
199
! IMPLICIT NONE
200
! TYPE(NCFILE),POINTER :: NC_START
201
! TYPE(NCVAR), POINTER :: VAR
202
! TYPE(NCDIM), POINTER :: DIM
203
! LOGICAL :: FOUND
204
! INTEGER :: STKCNT, K
205
! REAL(SP), DIMENSION(0:MT,KB) :: PRESSURE
206
!
207
! IF(DBG_SET(DBG_SBR)) write(ipt,*) "Start: READ_TS"
208
!
209
! STKCNT = NC_START%FTIME%PREV_STKCNT
210
!
211
!
212
! ! LOAD TEMPERATURE
213
! VAR => FIND_VAR(NC_START,'temp',FOUND)
214
! IF(.not. FOUND) CALL FATAL_ERROR("COULD NOT FIND VARIABLE 'temp'&
215
! & IN THE HOTSTART FILE OBJECT")
216
! CALL NC_CONNECT_AVAR(VAR, T1)
217
! CALL NC_READ_VAR(VAR,STKCNT)
218
!
219
!
220
! ! LOAD MEAN INITIAL TEMPERATURE
221
! VAR => FIND_VAR(NC_START,'tmean1',FOUND)
222
! IF(.not. FOUND) CALL FATAL_ERROR("COULD NOT FIND VARIABLE 'tmean1'&
223
! & IN THE HOTSTART FILE OBJECT")
224
! CALL NC_CONNECT_AVAR(VAR, tmean1)
225
! CALL NC_READ_VAR(VAR)
226
!
227
! ! LOAD SALINITY
228
! VAR => FIND_VAR(NC_START,'salinity',FOUND)
229
! IF(.not. FOUND) CALL FATAL_ERROR("COULD NOT FIND VARIABLE 'saltinity'&
230
! & IN THE HOTSTART FILE OBJECT")
231
! CALL NC_CONNECT_AVAR(VAR, S1)
232
! CALL NC_READ_VAR(VAR,STKCNT)
233
!
234
! ! LOAD MEAN INITIAL SALINITY
235
! VAR => FIND_VAR(NC_START,'smean1',FOUND)
236
! IF(.not. FOUND) CALL FATAL_ERROR("COULD NOT FIND VARIABLE 'smean1'&
237
! & IN THE HOTSTART FILE OBJECT")
238
! CALL NC_CONNECT_AVAR(VAR, smean1)
239
! CALL NC_READ_VAR(VAR)
240
!
241
!
242
! ! LOAD DENSITY
243
! VAR => FIND_VAR(NC_START,'rho1',FOUND)
244
! IF(.not. FOUND) CALL FATAL_ERROR("COULD NOT FIND VARIABLE 'rho1'&
245
! & IN THE HOTSTART FILE OBJECT")
246
! CALL NC_CONNECT_AVAR(VAR, RHO1)
247
! CALL NC_READ_VAR(VAR,STKCNT)
248
!
249
! ! LOAD MEAN DENSITY
250
! VAR => FIND_VAR(NC_START,'rmean1',FOUND)
251
! IF(.not. FOUND) CALL FATAL_ERROR("COULD NOT FIND VARIABLE 'rmean1'&
252
! & IN THE HOTSTART FILE OBJECT")
253
! CALL NC_CONNECT_AVAR(VAR, rmean1)
254
! CALL NC_READ_VAR(VAR)
255
!
256
! ! AVERAGE FROM CELLS TO FACE CENTERS
257
!
258
!
259
!!JQI SELECT CASE(SEA_WATER_DENSITY_FUNCTION)
260
!!JQI CASE(SW_DENS1)
261
!
262
!!JQI ! SET MEAN DENSITY
263
!!JQI DO K=1,KBM1
264
!!JQI PRESSURE(:,K) = -GRAV_N*1.025_SP*(ZZ(:,K)*D(:))*0.1_SP
265
!!JQI END DO
266
!!JQI CALL FOFONOFF_MILLARD(SMEAN1,TMEAN1,PRESSURE,0.0_SP,RMEAN1)
267
!!JQI RMEAN1(0,:)=0.0_SP
268
!!JQI RMEAN1(:,KB)=0.0_SP
269
!
270
!!JQI ! SET REAL DENSITY
271
!!JQI CALL DENS1 ! GENERIC CALL TO FOFONOFF_MILLARD FOR S1,T1...
272
!
273
!!JQI CASE(SW_DENS2)
274
!!JQI ! SET MEAN DENSITY
275
!!JQI CALL DENS2G(SMEAN1,TMEAN1,RMEAN1)
276
!!JQI RMEAN1(0,:)=0.0_SP
277
!!JQI RMEAN1(:,KB)=0.0_SP
278
!
279
!!JQI ! SET REAL DENSITY
280
!!JQI CALL DENS2 ! GENERIC CALL TO DENS2G FOR S1,T1...
281
!
282
!!JQI CASE(SW_DENS3)
283
!
284
!!JQI ! SET MEAN DENSITY
285
!!JQI DO K=1,KBM1
286
!!JQI PRESSURE(:,K) = -GRAV_N*1.025_SP*(ZZ(:,K)*D(:))*0.1_SP
287
!!JQI END DO
288
!!JQI CALL JACKET_MCDOUGALL(SMEAN1,TMEAN1,PRESSURE,RMEAN1)
289
!!JQI RMEAN1(0,:)=0.0_SP
290
!!JQI RMEAN1(:,KB)=0.0_SP
291
!
292
!!JQI ! SET REAL DENSITY
293
!!JQI CALL DENS3 ! GENERIC CALL TO JACKET_MCDOUGALL FOR S1,T1.
294
!
295
!!JQI CASE DEFAULT
296
!!JQI CALL FATAL_ERROR("INVALID DENSITY FUNCTION SELECTED:",&
297
!!JQI & " "//TRIM(SEA_WATER_DENSITY_FUNCTION) )
298
!!JQI END SELECT
299
!
300
! CALL N2E3D(T1,T)
301
! CALL N2E3D(S1,S)
302
! CALL N2E3D(Tmean1,Tmean)
303
! CALL N2E3D(Smean1,Smean)
304
! CALL N2E3D(Rmean1,Rmean)
305
!
306
!
307
! IF(DBG_SET(DBG_SBR)) write(ipt,*) "End: READ_TS"
308
!
309
! END SUBROUTINE READ_TS1
310
!!==============================================================================!
311
!
312
! SUBROUTINE READ_UV1(NC_START)
313
! IMPLICIT NONE
314
! TYPE(NCFILE),POINTER :: NC_START
315
! TYPE(NCVAR), POINTER :: VAR
316
! TYPE(NCDIM), POINTER :: DIM
317
! LOGICAL :: FOUND
318
! INTEGER :: STKCNT
319
!
320
! IF(DBG_SET(DBG_SBR)) write(ipt,*) "START: READ_UV"
321
!
322
!
323
! STKCNT = NC_START%FTIME%PREV_STKCNT
324
!
325
! VAR => FIND_VAR(NC_START,'u',FOUND)
326
! IF(.not. FOUND) CALL FATAL_ERROR("COULD NOT FIND VARIABLE 'u'&
327
! & IN THE HOTSTART FILE OBJECT")
328
! CALL NC_CONNECT_AVAR(VAR, U)
329
! CALL NC_READ_VAR(VAR,STKCNT)
330
!
331
!
332
! VAR => FIND_VAR(NC_START,'v',FOUND)
333
! IF(.not. FOUND) CALL FATAL_ERROR("COULD NOT FIND VARIABLE 'v'&
334
! & IN THE HOTSTART FILE OBJECT")
335
! CALL NC_CONNECT_AVAR(VAR, V)
336
! CALL NC_READ_VAR(VAR,STKCNT)
337
!
338
! VAR => FIND_VAR(NC_START,'omega',FOUND)
339
! IF(FOUND) THEN
340
! CALL NC_CONNECT_AVAR(VAR, WTS)
341
! CALL NC_READ_VAR(VAR,STKCNT)
342
!
343
! CALL N2E3D(WTS,W)
344
! ELSE
345
! VAR => FIND_VAR(NC_START,'w',FOUND)
346
! IF(.not. FOUND) CALL FATAL_ERROR("COULD NOT FIND VARIABLE 'w' &
347
! & or 'omega' IN THE HOTSTART FILE OBJECT")
348
! CALL NC_CONNECT_AVAR(VAR, W)
349
! CALL NC_READ_VAR(VAR,STKCNT)
350
! END IF
351
!
352
! VAR => FIND_VAR(NC_START,'ua',FOUND)
353
! IF(.not. FOUND) CALL FATAL_ERROR("COULD NOT FIND VARIABLE 'ua'&
354
! & IN THE HOTSTART FILE OBJECT")
355
! CALL NC_CONNECT_AVAR(VAR, UA)
356
! CALL NC_READ_VAR(VAR,STKCNT)
357
!
358
! VAR => FIND_VAR(NC_START,'va',FOUND)
359
! IF(.not. FOUND) CALL FATAL_ERROR("COULD NOT FIND VARIABLE 'va'&
360
! & IN THE HOTSTART FILE OBJECT")
361
! CALL NC_CONNECT_AVAR(VAR, VA)
362
! CALL NC_READ_VAR(VAR,STKCNT)
363
!
364
! IF(DBG_SET(DBG_SBR)) write(ipt,*) "END: READ_UV"
365
!
366
! END SUBROUTINE READ_UV1
367
!!==============================================================================!
368
! SUBROUTINE READ_TURB1(NC_START)
369
! IMPLICIT NONE
370
! TYPE(NCFILE),POINTER :: NC_START
371
! TYPE(NCVAR), POINTER :: VAR
372
! TYPE(NCDIM), POINTER :: DIM
373
! LOGICAL :: FOUND
374
! INTEGER :: STKCNT
375
!
376
! IF(DBG_SET(DBG_SBR)) write(ipt,*) "START: READ_TURB"
377
!
378
! STKCNT = NC_START%FTIME%PREV_STKCNT
379
!
380
!# if defined (GOTM)
381
!
382
! VAR => FIND_VAR(NC_START,'tke',FOUND)
383
! IF(.not. FOUND) CALL FATAL_ERROR("COULD NOT FIND VARIABLE 'tke'&
384
! & IN THE HOTSTART FILE OBJECT")
385
! CALL NC_CONNECT_AVAR(VAR, TKE)
386
! CALL NC_READ_VAR(VAR,STKCNT)
387
!
388
! VAR => FIND_VAR(NC_START,'teps',FOUND)
389
! IF(.not. FOUND) CALL FATAL_ERROR("COULD NOT FIND VARIABLE 'teps'&
390
! & IN THE HOTSTART FILE OBJECT")
391
! CALL NC_CONNECT_AVAR(VAR, TEPS)
392
! CALL NC_READ_VAR(VAR,STKCNT)
393
!
394
! L = .001
395
! L(1:MT,2:KBM1) = (.5544**3)*TKE(1:MT,2:KBM1)**1.5/TEPS(1:MT,2:KBM1)
396
!
397
!# else
398
!
399
! VAR => FIND_VAR(NC_START,'q2',FOUND)
400
! IF(.not. FOUND) CALL FATAL_ERROR("COULD NOT FIND VARIABLE 'q2'&
401
! & IN THE HOTSTART FILE OBJECT")
402
! CALL NC_CONNECT_AVAR(VAR, Q2)
403
! CALL NC_READ_VAR(VAR,STKCNT)
404
!
405
! VAR => FIND_VAR(NC_START,'q2l',FOUND)
406
! IF(.not. FOUND) CALL FATAL_ERROR("COULD NOT FIND VARIABLE 'q2l'&
407
! & IN THE HOTSTART FILE OBJECT")
408
! CALL NC_CONNECT_AVAR(VAR, Q2L)
409
! CALL NC_READ_VAR(VAR,STKCNT)
410
!
411
! VAR => FIND_VAR(NC_START,'l',FOUND)
412
! IF(.not. FOUND) CALL FATAL_ERROR("COULD NOT FIND VARIABLE 'l'&
413
! & IN THE HOTSTART FILE OBJECT")
414
! CALL NC_CONNECT_AVAR(VAR, L)
415
! CALL NC_READ_VAR(VAR,STKCNT)
416
!
417
!# endif
418
!
419
! VAR => FIND_VAR(NC_START,'km',FOUND)
420
! IF(.not. FOUND) CALL FATAL_ERROR("COULD NOT FIND VARIABLE 'km'&
421
! & IN THE HOTSTART FILE OBJECT")
422
! CALL NC_CONNECT_AVAR(VAR, km)
423
! CALL NC_READ_VAR(VAR,STKCNT)
424
!
425
! VAR => FIND_VAR(NC_START,'kq',FOUND)
426
! IF(.not. FOUND) CALL FATAL_ERROR("COULD NOT FIND VARIABLE 'kq'&
427
! & IN THE HOTSTART FILE OBJECT")
428
! CALL NC_CONNECT_AVAR(VAR, KQ)
429
! CALL NC_READ_VAR(VAR,STKCNT)
430
!
431
! VAR => FIND_VAR(NC_START,'kh',FOUND)
432
! IF(.not. FOUND) CALL FATAL_ERROR("COULD NOT FIND VARIABLE 'kh'&
433
! & IN THE HOTSTART FILE OBJECT")
434
! CALL NC_CONNECT_AVAR(VAR, KH)
435
! CALL NC_READ_VAR(VAR,STKCNT)
436
!
437
!
438
! CALL N2E3D(KM,KM1)
439
!
440
! IF(DBG_SET(DBG_SBR)) write(ipt,*) "END: READ_TURB"
441
!
442
! END SUBROUTINE READ_TURB1
443
!!==============================================================================|
444
!# endif
445
!END MODULE MOD_STARTUP_MIMIC
446
447
MODULE
mod_enkf
448
USE
enkfval
449
USE
mod_ncdio
,
only
:
update_iodata
450
USE
mod_input
,
only
:
nc_start
451
USE
control
452
USE
mod_utils
453
USE
mod_nctools
454
IMPLICIT NONE
455
SAVE
456
457
458
LOGICAL
::
enkf_on
459
460
END MODULE
mod_enkf
461
mod_utils
Definition:
mod_utils.f90:40
mod_ncdio::update_iodata
subroutine update_iodata(NCF, NOW)
Definition:
mod_ncdio.f90:3913
control
Definition:
mod_main.f90:92
mod_ncdio
Definition:
mod_ncdio.f90:40
mod_enkf::enkf_on
logical enkf_on
Definition:
mod_enkf.f90:458
enkfval
Definition:
mod_enkf.f90:40
mod_enkf
Definition:
mod_enkf.f90:447
mod_nctools
Definition:
mod_nctools.f90:40
mod_input
Definition:
mod_input.f90:40
mod_input::nc_start
type(ncfile), pointer nc_start
Definition:
mod_input.f90:51
Generated by
1.8.15