My Project
mod_startup.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 
41  USE mod_utils
42  USE mod_nctools
43  USE mod_input
44  USE all_vars
45  USE eqs_of_state
46  USE mod_wd
47  USE sinter
48 
49 
50 
51 
52 
53 
54 
55  IMPLICIT NONE
56 
57  PRIVATE
58  PUBLIC :: read_ssh
59  PUBLIC :: read_uv
60  PUBLIC :: read_turb
61  PUBLIC :: read_ts
62  PUBLIC :: read_wetdry
63 
64  PUBLIC :: startup
65 !# if defined (DATA_ASSIM)
66 ! PUBLIC :: STARTUP_ASSIM
67 !# endif
68 CONTAINS
69 !==============================================================================!
70  SUBROUTINE startup
71  IMPLICIT NONE
72 
73  IF(dbg_set(dbg_sbr)) write(ipt,*) "Start: Startup"
74 
75  IF(dbg_set(dbg_log)) THEN
76  WRITE(ipt,* )'!'
77  WRITE(ipt,* )'! SETTING INITIAL CONDITIONS '
78  WRITE(ipt,* )'!'
79  END IF
80 
81  IF (ASSOCIATED(nc_start))THEN
82  IF(dbg_set(dbg_log)) write(ipt,*) "! NC_START FILE INFO:"
83  CALL print_file(nc_start)
84  END IF
85 
86 ! SET THE SEA SURFACE HEIGHT
87  if (dbg_set(dbg_log)) write(ipt,*) &
88  & "! INITIALIZING SEA SURFACE HEIGHT"
89  SELECT CASE(startup_type)
90 ! =================================================
91  CASE(startup_type_hotstart)
92 ! =================================================
93 
94  CALL read_ssh
95 
96  IF(wetting_drying_on) CALL read_wetdry
97 
98 
99 
100 
101 
102 ! ------- New: Karsten Lettmann, June 2016 -----------------------
103 ! ---------- end new --------------------------------------------
104 
105 ! if (dbg_set(dbg_log)) write(ipt,*) &
106 ! & "! INITIALIZING SEA ICE"
107 
108 
109 
110 ! if (dbg_set(dbg_log)) write(ipt,*) &
111 ! & "! INITIALIZING SEA ICE222"
112 
113 
114 
115 
116 
117 ! =================================================
118  CASE(startup_type_crashrestart)
119 ! =================================================
120  CALL read_ssh
121 
122  IF(wetting_drying_on) CALL read_wetdry
123 
124 
125 
126 
127 
128 ! ------- New: Karsten Lettmann, June 2016 -----------------------
129 ! ---------- end new --------------------------------------------
130 
131 
132 
133 
134 
135 
136 ! =================================================
137  CASE(startup_type_coldstart)
138 ! =================================================
139 
140  CALL set_water_depth
141  IF(wetting_drying_on) CALL set_wd_data
142 
143 ! =================================================
144  CASE DEFAULT
145 ! =================================================
146  CALL fatal_error("STARTUP: UNKNOWN STARTUP TYPE: "//trim(startup_type))
147  END SELECT
148 
149 
150  if (dbg_set(dbg_log)) write(ipt,*) &
151  & "! INITIALIZING VELOCITY FIELDS"
152 
153 ! SET STARTUP VALUES FOR VELOCITY
154  SELECT CASE (startup_uv_type)
155  CASE (startup_type_observed)
156  CALL fatal_error("I DON'T KNOW HOW TO DO THAT KIND OF STARTUP")
157  CASE(startup_type_linear)
158  CALL fatal_error("I DON'T KNOW HOW TO DO THAT KIND OF STARTUP")
159  CASE(startup_type_constant)
160  !CALL FATAL_ERROR("I DON'T KNOW HOW TO DO THAT KIND OF STARTUP")
161  CALL set_constant_uv
162  CASE(startup_type_default)
163  ! OKAY - it is zero
164  CASE(startup_type_setvalues)
165 
166  CALL read_uv
167 
168  CASE DEFAULT
169  CALL fatal_error("UNKNOWN STARTUP_UV_TYPE")
170  END SELECT
171 
172  if (dbg_set(dbg_log)) write(ipt,*) &
173  & "! INITIALIZING TURBULENCE FIELDS"
174 
175 ! SET STARTUP VALUES FOR TURBULENCE
176  SELECT CASE(startup_turb_type)
177  CASE(startup_type_observed)
178  CALL fatal_error("I DON'T KNOW HOW TO DO THAT KIND OF STARTUP")
179  CASE(startup_type_linear)
180  CALL fatal_error("I DON'T KNOW HOW TO DO THAT KIND OF STARTUP")
181  CASE(startup_type_constant)
182  CALL fatal_error("I DON'T KNOW HOW TO DO THAT KIND OF STARTUP")
183  CASE(startup_type_default)
184 
185  CALL set_default_turb
186 
187  CASE(startup_type_setvalues)
188 
189  CALL read_turb
190 
191  CASE DEFAULT
192  CALL fatal_error("UNKNOWN STARTUP_TURB_TYPE")
193  END SELECT
194 
195  if (dbg_set(dbg_log)) write(ipt,*) &
196  & "! INITIALIZING TEMPERATURE AND SALINITY"
197 
198 ! SET STARTUP VALUES FOR TEMPERATER AND SALINITY
199  SELECT CASE(startup_ts_type)
200  CASE(startup_type_observed)
201 
202  CALL set_observed_ts
203 
204  CASE(startup_type_linear)
205 
206  CALL set_linear_ts
207 
208  CASE(startup_type_constant)
209 
210  CALL set_constant_ts
211 
212  CASE(startup_type_default)
213  CALL fatal_error("There is no default startup for Temperature and Salinity")
214  CASE(startup_type_setvalues)
215 
216  CALL read_ts
217 
218  CASE DEFAULT
219  CALL fatal_error("UNKNOWN STARTUP_TS_TYPE")
220  END SELECT
221 
222 
223 
224  ! ONCE WE HAVE STARTED THE MODEL POINT THE START FILE OBJECT TO
225  ! ITS OWN OUTPUT TO RELOAD OLD TIME STATES
226  IF(.not. associated(nc_start,nc_rst)) THEN
227 
228  ! SOME START UPS DO NOT HAVE A START FILE
229  IF(Associated(nc_start)) CALL kill_file(nc_start)
230 
231  nc_start => nc_rst
232  END IF
233 
234  IF(dbg_set(dbg_sbr)) write(ipt,*) "End: Startup"
235 
236 
237  END SUBROUTINE startup
238 !==============================================================================!
239 
240 !# if defined (DATA_ASSIM)
241 !!==============================================================================!
242 ! SUBROUTINE STARTUP_ASSIM
243 !# if defined(SEDIMENT)
244 ! USE MOD_SED, ONLY: sed_hot_start
245 !# endif
246 ! IMPLICIT NONE
247 
248 ! IF(DBG_SET(DBG_SBR)) write(ipt,*) "Start: Startup_ASSIM"
249 
250 !! SET THE SEA SURFACE HEIGHT
251 ! if (dbg_set(dbg_log)) write(ipt,*) &
252 ! & "! INITIALIZING SEA SURFACE HEIGHT"
253 ! CALL READ_SSH
254 
255 ! IF(WETTING_DRYING_ON) CALL READ_WETDRY
256 
257 !# if defined (NH)
258 ! CALL READ_NH
259 !# endif
260 
261 !# if defined (ATMO_TIDE)
262 ! CALL READ_ATMO
263 !# endif
264 
265 !# if defined (EQUI_TIDE)
266 ! CALL READ_EQI
267 !# endif
268 
269 !# if defined (ICE)
270 ! CALL READ_ICE
271 ! CALL AGGREGATE !! ggao 07312008
272 !# endif
273 
274 !# if defined (SEDIMENT)
275 ! if(sed_hot_start)then
276 ! CALL READ_SED
277 ! endif
278 !# endif
279 
280 
281 ! CALL READ_UV
282 
283 ! CALL READ_TURB
284 
285 ! CALL READ_TS
286 ! if (dbg_set(dbg_log)) write(ipt,*) &
287 ! & "! INITIALIZING TS"
288 
289 
290 !# if defined (WATER_QUALITY)
291 
292 ! CALL READ_WQM
293 
294 !# endif
295 
296 !# if defined (BioGen)
297 
298 ! CALL READ_BIO
299 
300 !# endif
301 
302 
303 ! IF(DBG_SET(DBG_SBR)) write(ipt,*) "End: Startup_Assim"
304 
305 
306 
307 ! END SUBROUTINE STARTUP_ASSIM
308 !!==============================================================================!
309 !# endif
310 
311  SUBROUTINE read_ssh
312  IMPLICIT NONE
313  TYPE(ncvar), POINTER :: var
314  TYPE(ncdim), POINTER :: dim
315  LOGICAL :: found
316  INTEGER :: stkcnt
317 
318  IF(dbg_set(dbg_sbr)) write(ipt,*) "Start: READ_SSH"
319 
320  stkcnt = nc_start%FTIME%PREV_STKCNT
321 
322  ! LOAD EL
323  var => find_var(nc_start,'zeta',found)
324  IF(.not. found) CALL fatal_error("COULD NOT FIND VARIABLE 'zeta'&
325  & IN THE HOTSTART FILE OBJECT")
326  CALL nc_connect_avar(var, el)
327  CALL nc_read_var(var,stkcnt)
328 
329  ! LOAD ET
330  var => find_var(nc_start,'et',found)
331  IF(.not. found) CALL fatal_error("COULD NOT FIND VARIABLE 'et'&
332  & IN THE HOTSTART FILE OBJECT")
333  CALL nc_connect_avar(var, et)
334  CALL nc_read_var(var,stkcnt)
335 
336  !----------------------------------------------------------------
337  ! Read the most recent bathymetry if Morphodynamics is Active
338  !----------------------------------------------------------------
339 
340 
341  !----------------------------------------------------------------
342  ! Given SSH and Bathy, Update the Bathymetry
343  !----------------------------------------------------------------
344  d = h + el
345  dt = h + et
346 
347 
348  CALL n2e2d(h,h1)
349  CALL n2e2d(el,el1)
350  CALL n2e2d(d,d1)
351  CALL n2e2d(dt,dt1)
352 
353  IF(dbg_set(dbg_sbr)) write(ipt,*) "Start: READ_SSH"
354 
355  END SUBROUTINE read_ssh
356 !==============================================================================!
357 !==============================================================================!
358  SUBROUTINE read_wetdry
359  USE mod_wd
360  IMPLICIT NONE
361  TYPE(ncvar), POINTER :: var
362  TYPE(ncdim), POINTER :: dim
363  LOGICAL :: found
364  INTEGER :: stkcnt
365 
366  IF(dbg_set(dbg_sbr)) write(ipt,*) "Start: READ_WETDRY"
367 
368  stkcnt = nc_start%FTIME%PREV_STKCNT
369 
370  ! LOAD ISWETN
371  var => find_var(nc_start,'wet_nodes',found)
372  IF(.not. found) CALL fatal_error("COULD NOT FIND VARIABLE 'wet_nodes'&
373  & IN THE HOTSTART FILE OBJECT")
374  CALL nc_connect_avar(var, iswetn)
375  CALL nc_read_var(var,stkcnt)
376 
377  ! LOAD ISWETC
378  var => find_var(nc_start,'wet_cells',found)
379  IF(.not. found) CALL fatal_error("COULD NOT FIND VARIABLE 'wet_cells'&
380  & IN THE HOTSTART FILE OBJECT")
381  CALL nc_connect_avar(var, iswetc)
382  CALL nc_read_var(var,stkcnt)
383 
384 
385  ! LOAD ISWETNT
386  var => find_var(nc_start,'wet_nodes_prev_int',found)
387  IF(.not. found) CALL fatal_error("COULD NOT FIND VARIABLE 'wet_nodes_prev_int'&
388  & IN THE HOTSTART FILE OBJECT")
389  CALL nc_connect_avar(var, iswetnt)
390  CALL nc_read_var(var,stkcnt)
391 
392  ! LOAD ISWETCT
393  var => find_var(nc_start,'wet_cells_prev_int',found)
394  IF(.not. found) CALL fatal_error("COULD NOT FIND VARIABLE 'wet_cells_prev_int'&
395  & IN THE HOTSTART FILE OBJECT")
396  CALL nc_connect_avar(var, iswetct)
397  CALL nc_read_var(var,stkcnt)
398 
399  ! LOAD ISWETCE
400  var => find_var(nc_start,'wet_cells_prev_ext',found)
401  IF(.not. found) CALL fatal_error("COULD NOT FIND VARIABLE 'wet_cells_prev_ext'&
402  & IN THE HOTSTART FILE OBJECT")
403  ! ------ new: Karsten Lettmann, May 2016 -------------
404  !CALL NC_CONNECT_AVAR(VAR, ISWETC) ! original line
405  CALL nc_connect_avar(var, iswetce)
406  ! ------------- end new ------------------------------
407  CALL nc_read_var(var,stkcnt)
408 
409  IF(dbg_set(dbg_sbr)) write(ipt,*) "End: READ_WETDRY"
410 
411  END SUBROUTINE read_wetdry
412 !==============================================================================!
413 !==============================================================================!
414  SUBROUTINE read_atmo
415  IMPLICIT NONE
416  TYPE(ncvar), POINTER :: VAR
417  TYPE(ncdim), POINTER :: DIM
418  LOGICAL :: FOUND
419  INTEGER :: STKCNT
420 
421  IF(dbg_set(dbg_sbr)) write(ipt,*) "START: READ_ATMO"
422 
423  stkcnt = nc_start%FTIME%PREV_STKCNT
424 
425  ! LOAD ATMO
426  var => find_var(nc_start,'el_atmo',found)
427  IF(.not. found) CALL fatal_error&
428  &("COULD NOT FIND VARIABLE 'el_atmo' IN THE HOTSTART FILE OBJECT")
429  CALL nc_connect_avar(var, el_atmo)
430  CALL nc_read_var(var,stkcnt)
431 
432  IF(dbg_set(dbg_sbr)) write(ipt,*) "End: READ_ATMO"
433 
434  END SUBROUTINE read_atmo
435 !==============================================================================!
436  SUBROUTINE read_eqi
437  IMPLICIT NONE
438  TYPE(ncvar), POINTER :: VAR
439  TYPE(ncdim), POINTER :: DIM
440  LOGICAL :: FOUND
441  INTEGER :: STKCNT
442 
443  IF(dbg_set(dbg_sbr)) write(ipt,*) "Start: READ_EQI"
444 
445  stkcnt = nc_start%FTIME%PREV_STKCNT
446 
447  ! LOAD ATMO
448  var => find_var(nc_start,'el_eqi',found)
449  IF(.not. found) CALL fatal_error&
450  &("COULD NOT FIND VARIABLE 'el_eqi' IN THE HOTSTART FILE OBJECT")
451  CALL nc_connect_avar(var, el_eqi)
452  CALL nc_read_var(var,stkcnt)
453 
454  IF(dbg_set(dbg_sbr)) write(ipt,*) "End: READ_EQI"
455 
456  END SUBROUTINE read_eqi
457 !==============================================================================!
458 
459 ! ------- New: Karsten Lettmann, June 2016 -----------------------
460 ! ------------- end new ---------------------------------------------------------
461 
462 !==============================================================================!
463  SUBROUTINE read_ts
464  IMPLICIT NONE
465  TYPE(ncvar), POINTER :: var
466  TYPE(ncdim), POINTER :: dim
467  LOGICAL :: found
468  INTEGER :: stkcnt, k
469  REAL(sp), DIMENSION(0:MT,KB) :: pressure
470 
471  IF(dbg_set(dbg_sbr)) write(ipt,*) "Start: READ_TS"
472 
473  stkcnt = nc_start%FTIME%PREV_STKCNT
474 
475 
476  ! LOAD TEMPERATURE
477  var => find_var(nc_start,'temp',found)
478  IF(.not. found) CALL fatal_error("COULD NOT FIND VARIABLE 'temp'&
479  & IN THE HOTSTART FILE OBJECT")
480  CALL nc_connect_avar(var, t1)
481  CALL nc_read_var(var,stkcnt)
482 
483 
484  ! LOAD MEAN INITIAL TEMPERATURE
485  var => find_var(nc_start,'tmean1',found)
486  IF(.not. found) CALL fatal_error("COULD NOT FIND VARIABLE 'tmean1'&
487  & IN THE HOTSTART FILE OBJECT")
488  CALL nc_connect_avar(var, tmean1)
489  CALL nc_read_var(var)
490 
491  ! LOAD SALINITY
492  var => find_var(nc_start,'salinity',found)
493  IF(.not. found) CALL fatal_error("COULD NOT FIND VARIABLE 'saltinity'&
494  & IN THE HOTSTART FILE OBJECT")
495  CALL nc_connect_avar(var, s1)
496  CALL nc_read_var(var,stkcnt)
497 
498  ! LOAD MEAN INITIAL SALINITY
499  var => find_var(nc_start,'smean1',found)
500  IF(.not. found) CALL fatal_error("COULD NOT FIND VARIABLE 'smean1'&
501  & IN THE HOTSTART FILE OBJECT")
502  CALL nc_connect_avar(var, smean1)
503  CALL nc_read_var(var)
504 
505  ! LOAD DENSITY
506  var => find_var(nc_start,'rho1',found)
507  IF(.not. found) CALL fatal_error("COULD NOT FIND VARIABLE 'rho1'&
508  & IN THE HOTSTART FILE OBJECT")
509  CALL nc_connect_avar(var, rho1)
510  CALL nc_read_var(var,stkcnt)
511 
512  ! LOAD MEAN DENSITY
513  var => find_var(nc_start,'rmean1',found)
514  IF(.not. found) CALL fatal_error("COULD NOT FIND VARIABLE 'rmean1'&
515  & IN THE HOTSTART FILE OBJECT")
516  CALL nc_connect_avar(var, rmean1)
517  CALL nc_read_var(var)
518 
519 
520  ! AVERAGE FROM CELLS TO FACE CENTERS
521 
522 
523 !JQI SELECT CASE(SEA_WATER_DENSITY_FUNCTION)
524 !JQI CASE(SW_DENS1)
525 
526 !JQI ! SET MEAN DENSITY
527 !JQI DO K=1,KBM1
528 !JQI PRESSURE(:,K) = -GRAV_N*1.025_SP*(ZZ(:,K)*D(:))*0.1_SP
529 !JQI END DO
530 !JQI CALL FOFONOFF_MILLARD(SMEAN1,TMEAN1,PRESSURE,0.0_SP,RMEAN1)
531 !JQI RMEAN1(0,:)=0.0_SP
532 !JQI RMEAN1(:,KB)=0.0_SP
533 
534 !JQI ! SET REAL DENSITY
535 !JQI CALL DENS1 ! GENERIC CALL TO FOFONOFF_MILLARD FOR S1,T1...
536 
537 !JQI CASE(SW_DENS2)
538 !JQI ! SET MEAN DENSITY
539 !JQI CALL DENS2G(SMEAN1,TMEAN1,RMEAN1)
540 !JQI RMEAN1(0,:)=0.0_SP
541 !JQI RMEAN1(:,KB)=0.0_SP
542 
543 !JQI ! SET REAL DENSITY
544 !JQI CALL DENS2 ! GENERIC CALL TO DENS2G FOR S1,T1...
545 
546 !JQI CASE(SW_DENS3)
547 
548 !JQI ! SET MEAN DENSITY
549 !JQI DO K=1,KBM1
550 !JQI PRESSURE(:,K) = -GRAV_N*1.025_SP*(ZZ(:,K)*D(:))*0.01_SP
551 !JQI END DO
552 !JQI CALL JACKET_MCDOUGALL(SMEAN1,TMEAN1,PRESSURE,RMEAN1)
553 !JQI RMEAN1(0,:)=0.0_SP
554 !JQI RMEAN1(:,KB)=0.0_SP
555 
556 !JQI ! SET REAL DENSITY
557 !JQI CALL DENS3 ! GENERIC CALL TO JACKET_MCDOUGALL FOR S1,T1.
558 
559 !JQI CASE DEFAULT
560 !JQI CALL FATAL_ERROR("INVALID DENSITY FUNCTION SELECTED:",&
561 !JQI & " "//TRIM(SEA_WATER_DENSITY_FUNCTION) )
562 !JQI END SELECT
563 
564 !J. GE
565  t0=t1
566  s0=s1
567 !J. GE
568  CALL n2e3d(t1,t)
569  CALL n2e3d(s1,s)
570  CALL n2e3d(rho1,rho)
571  CALL n2e3d(tmean1,tmean)
572  CALL n2e3d(smean1,smean)
573  CALL n2e3d(rmean1,rmean)
574 
575 
576  IF(dbg_set(dbg_sbr)) write(ipt,*) "End: READ_TS"
577 
578  END SUBROUTINE read_ts
579 !==============================================================================!
580  SUBROUTINE set_observed_ts
581  IMPLICIT NONE
582  TYPE(ncvar), POINTER :: var
583  TYPE(ncdim), POINTER :: dim
584  LOGICAL :: found
585  INTEGER :: stkcnt
586  INTEGER ksl !!NUMBER OF STANDARD SEA LEVELS
587  REAL(sp), ALLOCATABLE, TARGET :: dpthsl(:) !!DEPTH AT STANDARD SEA LEVEL
588  REAL(sp), ALLOCATABLE, TARGET :: tsl(:,:),ssl(:,:) !!T/S AT STANDARD SEA LEVEL
589  REAL(sp),ALLOCATABLE :: ta(:),sa(:)
590 
591  REAL(sp),DIMENSION(KBM1) :: ti,si,zi
592  REAL(sp),DIMENSION(0:MT,KB) :: pressure
593  INTEGER :: k, i, ib, ierr
594  REAL(sp) :: scount, fac, rbuf
595 
596  IF(dbg_set(dbg_sbr)) write(ipt,*) "START: SET_OBSERVED_TS"
597 
598  ti = 0.0_sp
599  si = 0.0_sp
600  zi = 0.0_sp
601  pressure = 0.0_sp
602 
603  stkcnt = nc_start%FTIME%PREV_STKCNT
604 
605  dim => find_dim(nc_start,'ksl',found)
606  IF(.not. found) CALL fatal_error("COULD NOT FIND DIMENSION 'ksl'&
607  & IN THE STARTUP FILE OBJECT")
608 
609  ksl = dim%DIM
610  ! ALLOCATE SPACE
611  ALLOCATE(tsl(mt,ksl))
612  ALLOCATE(ssl(mt,ksl))
613  ALLOCATE(dpthsl(ksl))
614  tsl = 0.0_sp
615  ssl = 0.0_sp
616  dpthsl= 0.0_sp
617 
618  ! ALLOCATE SPACE FOR THE AVERAGE TEMPERATURE AT EACH DEPTH
619  ALLOCATE(ta(ksl),sa(ksl))
620  ta = 0.0_sp
621  sa = 0.0_sp
622 
623  ! READ THE DATA
624  var => find_var(nc_start,'tsl',found)
625  IF(.not. found) CALL fatal_error("COULD NOT FIND VARIABLE 'tsl'&
626  & IN THE STARTUP FILE OBJECT")
627  CALL nc_connect_avar(var, tsl)
628  CALL nc_read_var(var,stkcnt)
629  CALL nc_disconnect(var)
630 
631  var => find_var(nc_start,'ssl',found)
632  IF(.not. found) CALL fatal_error("COULD NOT FIND VARIABLE 'ssl'&
633  & IN THE STARTUP FILE OBJECT")
634  CALL nc_connect_avar(var, ssl)
635  CALL nc_read_var(var,stkcnt)
636  CALL nc_disconnect(var)
637 
638 
639  var => find_var(nc_start,'zsl',found)
640  IF(.not. found) CALL fatal_error("COULD NOT FIND VARIABLE 'zsl'&
641  & IN THE STARTUP FILE OBJECT")
642  CALL nc_connect_avar(var, dpthsl)
643  CALL nc_read_var(var)
644  CALL nc_disconnect(var)
645 
646 
647 !==============================================================================|
648 ! CALCULATE HORIZONTAL AVERAGE VALUES OF TEMPERATURE/SALINITY/DENSITY !
649 !==============================================================================|
650 
651  where(ssl <0.0_sp) ssl=0.0
652 
653  ! GET THE AVERAGE T/S AT EACH DEPTH ON STANDARD LEVELS
654  IF(serial)THEN
655  DO k = 1, ksl
656  scount = 0.0_sp
657  DO i = 1, mt
658  IF(-h(i) <= dpthsl(k)) THEN
659  scount = scount + 1.0_sp
660  ta(k) = ta(k) + tsl(i,k)
661  sa(k) = sa(k) + ssl(i,k)
662  END IF
663  END DO
664  IF(scount >= 1.0_sp)THEN
665  ta(k)=ta(k)/scount
666  sa(k)=sa(k)/scount
667  END IF
668  END DO
669  END IF
670 
671 
672 
673  ! NOW INTERPOLATE FROM STANDARD LEVELS TO THE VALUE AT EACH NODE
674  DO i=1,mt
675  DO k=1,kbm1
676  zi(k)=zz(i,k)*d(i)+el(i)
677  END DO
678 
679  ! LEVEL AVERAGE T AND S
680  CALL sinter_extrp_up(dpthsl,ta,zi,ti,ksl,kbm1)
681  CALL sinter_extrp_up(dpthsl,sa,zi,si,ksl,kbm1)
682 
683  tmean1(i,1:kbm1) = ti(:)
684  smean1(i,1:kbm1) = si(:)
685 
686  ! REAL T AND S
687  CALL sinter_extrp_up(dpthsl,tsl(i,:),zi,ti,ksl,kbm1)
688  CALL sinter_extrp_up(dpthsl,ssl(i,:),zi,si,ksl,kbm1)
689 
690  t1(i,1:kbm1) = ti(:)
691  s1(i,1:kbm1) = si(:)
692 !J. Ge
693  t0(i,1:kbm1) = ti(:)
694  s0(i,1:kbm1) = si(:)
695 !J. Ge
696  END DO
697 
698  where(s1<0.0_sp) s1=0.0
699 
700  IF(.NOT.barotropic)THEN
701  SELECT CASE(sea_water_density_function)
702  CASE(sw_dens1)
703 
704  ! SET MEAN DENSITY
705  DO k=1,kbm1
706  pressure(:,k) = -grav_n*1.025_sp*(zz(:,k)*d(:))*0.1_sp
707  END DO
708  CALL fofonoff_millard(smean1,tmean1,pressure,0.0_sp,rmean1)
709  rmean1(0,:)=0.0_sp
710  rmean1(:,kb)=0.0_sp
711 
712  ! SET REAL DENSITY
713  CALL dens1 ! GENERIC CALL TO FOFONOFF_MILLARD FOR S1,T1...
714 
715  CASE(sw_dens2)
716 
717  ! SET MEAN DENSITY
718  CALL dens2g(smean1,tmean1,rmean1)
719  rmean1(0,:)=0.0_sp
720  rmean1(:,kb)=0.0_sp
721 
722  ! SET REAL DENSITY
723  CALL dens2 ! GENERIC CALL TO DENS2G FOR S1,T1...
724 
725  CASE(sw_dens3)
726 
727  ! SET MEAN DENSITY
728  DO k=1,kbm1
729  pressure(:,k) = -grav_n*1.025_sp*(zz(:,k)*d(:))*0.01_sp
730  END DO
731  CALL jacket_mcdougall(smean1,tmean1,pressure,rmean1)
732  rmean1(0,:)=0.0_sp
733  rmean1(:,kb)=0.0_sp
734 
735  ! SET REAL DENSITY
736  CALL dens3 ! GENERIC CALL TO JACKET_MCDOUGALL FOR S1,T1.
737 
738  CASE DEFAULT
739  CALL fatal_error("INVALID DENSITY FUNCTION SELECTED:",&
740  & " "//trim(sea_water_density_function) )
741  END SELECT
742  ELSE
743  rho1 = 2.3e-2_sp
744  rho = 2.3e-2_sp
745  rmean1 = 2.3e-2_sp
746  END IF
747 
748 
749  CALL n2e3d(t1,t)
750  CALL n2e3d(s1,s)
751  CALL n2e3d(tmean1,tmean)
752  CALL n2e3d(smean1,smean)
753  CALL n2e3d(rmean1,rmean)
754  ! DENSITY IS ALREADY INTERPOLATED TO ELEMENTS FOR RHO IN DENSX
755 
756  DEALLOCATE(tsl,ssl,dpthsl)
757  DEALLOCATE(ta,sa)
758 
759 
760  IF(dbg_set(dbg_sbr)) write(ipt,*) "END: SET_OBSERVED_TS"
761 
762  END SUBROUTINE set_observed_ts
763 !==============================================================================!
764  SUBROUTINE set_linear_ts
765  IMPLICIT NONE
766 
767  ! BY DEFINITION OF LINEAR...
768  INTEGER, PARAMETER :: ksl =2
769 
770  REAL(sp), DIMENSION(KBM1) :: ti,si,zi
771  REAL(sp), DIMENSION(KSL) :: ta,sa,za
772  INTEGER :: k, i
773 
774  IF(dbg_set(dbg_sbr)) write(ipt,*) "START: SET_LINEAR_TS"
775 
776  za(1) = 0.0_sp
777  za(2) = startup_dmax
778 
779  ta(1) = startup_t_vals(1)
780  ta(2) = startup_t_vals(2)
781 
782  sa(1) = startup_s_vals(1)
783  sa(2) = startup_s_vals(2)
784 
785  ! THE HORIZONTAL AVERAGE VALUE IS ALSO THE TRUE VALUE SINCE THE
786  ! LINEAR EQUATION DOES NOT VARY WITH LOCATION
787 
788  DO i = 1, mt
789  DO k=1,kbm1
790  ! CALCULATE ZI relative to z=0
791  zi(k)=zz(i,k)*d(i)+el(i)
792  END DO
793 
794  CALL sinter_extrp_up(za,ta,zi,ti,ksl,kbm1)
795  CALL sinter_extrp_up(za,sa,zi,si,ksl,kbm1)
796 
797  t1(i,1:kbm1) = ti
798  s1(i,1:kbm1) = si
799 !J. Ge
800  t0(i,1:kbm1) = ti
801  s0(i,1:kbm1) = si
802 !J. Ge
803 
804  END DO
805 
806  IF(.NOT.barotropic)THEN
807  SELECT CASE(sea_water_density_function)
808  CASE(sw_dens1)
809  CALL dens1 ! USE GENERIC INTERFACE TO DENSX
810  CASE(sw_dens2)
811  CALL dens2
812  CASE(sw_dens3)
813  CALL dens3
814  CASE DEFAULT
815  CALL fatal_error("INVALID DENSITY FUNCTION SELECTED:",&
816  & " "//trim(sea_water_density_function) )
817  END SELECT
818  ELSE
819  rho1 = 2.3e-2_sp
820  rho = 2.3e-2_sp
821  END IF
822 
823  ! FOR LINEAR AND CONSTANT, THE MEAN IS EQUAL TO THE INITIAL VALUE
824 
825  tmean1=t1
826  smean1=s1
827  rmean1=rho1
828  rmean=rho
829  CALL n2e3d(t1,t)
830  CALL n2e3d(s1,s)
831  tmean=t
832  smean=s
833 
834  IF(dbg_set(dbg_sbr)) write(ipt,*) "END: SET_LINEAR_TS"
835 
836  END SUBROUTINE set_linear_ts
837 !==============================================================================!
838  SUBROUTINE set_constant_ts
839  IMPLICIT NONE
840 
841  IF(dbg_set(dbg_sbr)) write(ipt,*) "START: SET_CONSTANT_TS"
842 
843 
844  t1(:,1:kbm1) = startup_t_vals(1)
845  s1(:,1:kbm1) = startup_s_vals(1)
846 !J. Ge
847  t0(:,1:kbm1) = startup_t_vals(1)
848  s0(:,1:kbm1) = startup_s_vals(1)
849 !J. Ge
850 
851  IF(.NOT.barotropic)THEN
852  SELECT CASE(sea_water_density_function)
853  CASE(sw_dens1)
854  CALL dens1
855  CASE(sw_dens2)
856  CALL dens2
857  CASE(sw_dens3)
858  CALL dens3
859  CASE DEFAULT
860  CALL fatal_error("INVALID DENSITY FUNCTION SELECTED:",&
861  & " "//trim(sea_water_density_function) )
862  END SELECT
863  ELSE
864  rho1 = 2.3e-2_sp
865  rho = 2.3e-2_sp
866  END IF
867 
868  ! FOR LINEAR AND CONSTANT, THE MEAN IS EQUAL TO THE INITIAL VALUE
869 
870  tmean1=t1
871  smean1=s1
872  rmean1=rho1
873 
874  CALL n2e3d(t1,t)
875  CALL n2e3d(s1,s)
876 
877  tmean=t
878  rmean=rho
879  smean=s
880 
881  IF(dbg_set(dbg_sbr)) write(ipt,*) "END: SET_CONSTANT_TS"
882 
883  END SUBROUTINE set_constant_ts
884 !==============================================================================!
885 !==============================================================================!
886  SUBROUTINE set_constant_uv
887  IMPLICIT NONE
888 
889  IF(dbg_set(dbg_sbr)) write(ipt,*) "START: SET_CONSTANT_UV"
890 
891 
892  u(:,1:kbm1) = startup_u_vals
893  v(:,1:kbm1) = startup_v_vals
894  ua = startup_u_vals
895  va = startup_v_vals
896  wts = 0.0
897  w = 0.0
898 
899  IF(dbg_set(dbg_sbr)) write(ipt,*) "END: SET_CONSTANT_UV"
900 
901  END SUBROUTINE set_constant_uv
902 !==============================================================================!
903 
904  SUBROUTINE read_uv
905  IMPLICIT NONE
906  TYPE(ncvar), POINTER :: var
907  TYPE(ncdim), POINTER :: dim
908  LOGICAL :: found
909  INTEGER :: stkcnt
910 
911  IF(dbg_set(dbg_sbr)) write(ipt,*) "START: READ_UV"
912 
913 
914  stkcnt = nc_start%FTIME%PREV_STKCNT
915 
916  var => find_var(nc_start,'u',found)
917  IF(.not. found) CALL fatal_error("COULD NOT FIND VARIABLE 'u'&
918  & IN THE HOTSTART FILE OBJECT")
919  CALL nc_connect_avar(var, u)
920  CALL nc_read_var(var,stkcnt)
921 
922 
923  var => find_var(nc_start,'v',found)
924  IF(.not. found) CALL fatal_error("COULD NOT FIND VARIABLE 'v'&
925  & IN THE HOTSTART FILE OBJECT")
926  CALL nc_connect_avar(var, v)
927  CALL nc_read_var(var,stkcnt)
928 
929  var => find_var(nc_start,'omega',found)
930  IF(found) THEN
931  CALL nc_connect_avar(var, wts)
932  CALL nc_read_var(var,stkcnt)
933 
934  CALL n2e3d(wts,w)
935  ELSE
936  var => find_var(nc_start,'w',found)
937  IF(.not. found) CALL fatal_error("COULD NOT FIND VARIABLE 'w' &
938  & or 'omega' IN THE HOTSTART FILE OBJECT")
939  CALL nc_connect_avar(var, w)
940  CALL nc_read_var(var,stkcnt)
941  END IF
942 
943  var => find_var(nc_start,'ua',found)
944  IF(.not. found) CALL fatal_error("COULD NOT FIND VARIABLE 'ua'&
945  & IN THE HOTSTART FILE OBJECT")
946  CALL nc_connect_avar(var, ua)
947  CALL nc_read_var(var,stkcnt)
948 
949  var => find_var(nc_start,'va',found)
950  IF(.not. found) CALL fatal_error("COULD NOT FIND VARIABLE 'va'&
951  & IN THE HOTSTART FILE OBJECT")
952  CALL nc_connect_avar(var, va)
953  CALL nc_read_var(var,stkcnt)
954 
955  IF(dbg_set(dbg_sbr)) write(ipt,*) "END: READ_UV"
956 
957  END SUBROUTINE read_uv
958 !==============================================================================!
959  SUBROUTINE read_turb
960  IMPLICIT NONE
961  TYPE(ncvar), POINTER :: var
962  TYPE(ncdim), POINTER :: dim
963  LOGICAL :: found
964  INTEGER :: stkcnt
965 
966  IF(dbg_set(dbg_sbr)) write(ipt,*) "START: READ_TURB"
967 
968  stkcnt = nc_start%FTIME%PREV_STKCNT
969 
970 
971  var => find_var(nc_start,'q2',found)
972  IF(.not. found) CALL fatal_error("COULD NOT FIND VARIABLE 'q2'&
973  & IN THE HOTSTART FILE OBJECT")
974  CALL nc_connect_avar(var, q2)
975  CALL nc_read_var(var,stkcnt)
976 
977  var => find_var(nc_start,'q2l',found)
978  IF(.not. found) CALL fatal_error("COULD NOT FIND VARIABLE 'q2l'&
979  & IN THE HOTSTART FILE OBJECT")
980  CALL nc_connect_avar(var, q2l)
981  CALL nc_read_var(var,stkcnt)
982 
983  var => find_var(nc_start,'l',found)
984  IF(.not. found) CALL fatal_error("COULD NOT FIND VARIABLE 'l'&
985  & IN THE HOTSTART FILE OBJECT")
986  CALL nc_connect_avar(var, l)
987  CALL nc_read_var(var,stkcnt)
988 
989 
990  var => find_var(nc_start,'km',found)
991  IF(.not. found) CALL fatal_error("COULD NOT FIND VARIABLE 'km'&
992  & IN THE HOTSTART FILE OBJECT")
993  CALL nc_connect_avar(var, km)
994  CALL nc_read_var(var,stkcnt)
995 
996  var => find_var(nc_start,'kq',found)
997  IF(.not. found) CALL fatal_error("COULD NOT FIND VARIABLE 'kq'&
998  & IN THE HOTSTART FILE OBJECT")
999  CALL nc_connect_avar(var, kq)
1000  CALL nc_read_var(var,stkcnt)
1001 
1002  var => find_var(nc_start,'kh',found)
1003  IF(.not. found) CALL fatal_error("COULD NOT FIND VARIABLE 'kh'&
1004  & IN THE HOTSTART FILE OBJECT")
1005  CALL nc_connect_avar(var, kh)
1006  CALL nc_read_var(var,stkcnt)
1007 
1008 
1009  CALL n2e3d(km,km1)
1010 
1011  IF(dbg_set(dbg_sbr)) write(ipt,*) "END: READ_TURB"
1012 
1013  END SUBROUTINE read_turb
1014 !==============================================================================|
1015  SUBROUTINE set_default_turb
1016 !==============================================================================|
1017 ! Initialize Turbulent Kinetic Energy and Length Scale |
1018 !==============================================================================|
1019  IMPLICIT NONE
1020  INTEGER :: i,k
1021 !==============================================================================|
1022  IF(dbg_set(dbg_sbr)) write(ipt,*) "START: SET_DEFAULT_TURB"
1023 
1024  DO k=1,kbm1
1025  aam(:,k) = nn_hvc(:)
1026  END DO
1027 
1028 !
1029 !------------------------BOUNDARY VALUES---------------------------------------!
1030 !
1031 
1032  DO i = 1, mt
1033  km(i,1) = 0.0_sp
1034  km(i,kb) = 0.0_sp
1035  kh(i,1) = 0.0_sp
1036  kh(i,kb) = 0.0_sp
1037  kq(i,1) = 0.0_sp
1038  kq(i,kb) = 0.0_sp
1039  l(i,1) = 0.0_sp
1040  l(i,kb) = 0.0_sp
1041  q2(i,1) = 0.0_sp
1042  q2(i,kb) = 0.0_sp
1043  q2l(i,1) = 0.0_sp
1044  q2l(i,kb) = 0.0_sp
1045  END DO
1046 
1047 
1048 !
1049 !------------------------INTERNAL VALUES---------------------------------------!
1050 !
1051  DO k = 2, kbm1
1052  DO i = 1, mt
1053  IF (d(i) > 0.0_sp) THEN
1054  q2(i,k) = 1.e-8
1055  q2l(i,k) = 1.e-8
1056  l(i,k) = 1.
1057  km(i,k) = 2.*umol
1058  kq(i,k) = 2.*umol
1059  kh(i,k) = 2.*umol / vprnu
1060  END IF
1061  END DO
1062  END DO
1063  CALL n2e3d(km,km1)
1064 
1065  IF(dbg_set(dbg_sbr)) write(ipt,*) "END: SET_DEFAULT_TURB"
1066 
1067  END SUBROUTINE set_default_turb
1068 !==============================================================================|
1069 
1070 !==============================================================================|
1071 ! READ IN STATIC WATER DEPTH AND CALCULATE RELATED QUANTITIES |
1072 ! |
1073 ! INPUTS: H(NNODE) BATHYMETRIC DEPTH AT NODES |
1074 ! INITIALIZES: D(NNODE) DEPTH AT NODES |
1075 ! INITIALIZES: DT(NNODE) ??? |
1076 ! INITIALIZES: H1(NNODE) BATHYMETRIC DEPTH AT ELEMENTS |
1077 ! INITIALIZES: D1(NNODE) DEPTH AT NODES |
1078 ! INITIALIZES: DT1(NNODE) ?? |
1079 !==============================================================================|
1080 
1081  SUBROUTINE set_water_depth
1082 !------------------------------------------------------------------------------|
1083  USE mod_obcs
1084  USE mod_nesting
1085  IMPLICIT NONE
1086  REAL(sp) :: temp
1087  INTEGER :: i,k,j1,j2
1088 !------------------------------------------------------------------------------|
1089  IF(dbg_set(dbg_sbr)) write(ipt,*) "START: SET_WATER_DEPTH"
1090 
1091 
1092 !
1093 ! ADJUST STATIC HEIGHT AND CALCULATE DYNAMIC DEPTHS (D) AND (DT)
1094 !
1095  h = h + static_ssh_adj
1096  d = h + el
1097  dt = h + et
1098 
1099 !
1100 ! ADJUST SIGMA VALUES ON OUTER BOUNDARY
1101 !
1102 
1103  IF(iobcn > 0 .AND. obc_depth_control_on) THEN
1104  IF(.NOT. nesting_on)THEN
1105  DO i = 1,iobcn
1106  j1 = i_obc_n(i)
1107  j2 = next_obc(i)
1108  h(j1) = h(j2)
1109  d(j1) = d(j2)
1110  dt(j1) = dt(j2)
1111 
1112  DO k = 1,kb
1113  z(j1,k) = z(j2,k)
1114  zz(j1,k) = zz(j2,k)
1115  dz(j1,k) = dz(j2,k)
1116  dzz(j1,k) = dzz(j2,k)
1117  END DO
1118  END DO
1119  END IF
1120  END IF
1121 
1122 !
1123 ! CALCULATE FACE-CENTERED VALUES OF BATHYMETRY AND DEPTH
1124 !
1125  DO i=1,nt
1126  h1(i) = (h(nv(i,1))+h(nv(i,2))+h(nv(i,3)))/3.0_sp
1127  d1(i) = h1(i)+el1(i)
1128  dt1(i) = h1(i)+et1(i)
1129 
1130  DO k = 1,kb
1131  z1(i,k)=(z(nv(i,1),k)+z(nv(i,2),k)+z(nv(i,3),k))/3.0_sp
1132  END DO
1133  END DO
1134 
1135 !-----AFTER MODIFYING BOUNDARY SIGMA VALUES ------------------------------------!
1136 !-----RECOMPUTE SIGMA DERIVATIVES AND INTRA SIGMA LEVELS AGAIN ON CELL----------!
1137 
1138  DO k=1,kb-1
1139  DO i=1,nt
1140  dz1(i,k) = z1(i,k)-z1(i,k+1)
1141  zz1(i,k) = .5_sp*(z1(i,k)+z1(i,k+1))
1142  END DO
1143  END DO
1144 
1145  DO i=1,nt
1146  zz1(i,kb) = 2.0_sp*zz1(i,kb-1)-zz1(i,kb-2)
1147  END DO
1148 
1149  DO k=1,kbm2
1150  DO i=1,nt
1151  dzz1(i,k) = zz1(i,k)-zz1(i,k+1)
1152  END DO
1153  END DO
1154 
1155  dzz1(:,kbm1) = 0.0_sp
1156  dz1(:,kb) = 0.0_sp
1157 
1158  IF(dbg_set(dbg_sbr)) write(ipt,*) "END: SET_WATER_DEPTH"
1159  RETURN
1160  END SUBROUTINE set_water_depth
1161 !==============================================================================|
1162 
1163 
1164 
1165 
1166 
1167 
1168 
1169 
1170 END MODULE mod_startup
real(sp), dimension(:,:), allocatable, target q2
Definition: mod_main.f90:1290
real(sp), dimension(:,:), allocatable, target km
Definition: mod_main.f90:1293
real(sp), dimension(:), allocatable, target va
Definition: mod_main.f90:1104
real(sp), dimension(:), allocatable, target d
Definition: mod_main.f90:1132
real(sp), dimension(:), allocatable, target d1
Definition: mod_main.f90:1116
integer, dimension(:), allocatable iswetce
Definition: mod_wd.f90:55
subroutine read_atmo
real(sp), dimension(:,:), allocatable, target s
Definition: mod_main.f90:1288
real(sp), dimension(:), allocatable, target h
Definition: mod_main.f90:1131
subroutine, public read_uv
subroutine nc_disconnect(VAR)
real(sp), dimension(:), allocatable, target el
Definition: mod_main.f90:1134
real(sp), dimension(:,:), allocatable, target v
Definition: mod_main.f90:1269
logical function dbg_set(vrb)
Definition: mod_utils.f90:182
real(sp), dimension(:,:), allocatable, target rho1
Definition: mod_main.f90:1309
real(sp), dimension(:,:), allocatable, target t1
Definition: mod_main.f90:1307
real(sp), dimension(:,:), allocatable, target w
Definition: mod_main.f90:1279
real(sp), dimension(:,:), allocatable, target dzz1
Definition: mod_main.f90:1097
real(sp), dimension(:,:), allocatable, target rho
Definition: mod_main.f90:1284
integer, dimension(:), allocatable iswetct
Definition: mod_wd.f90:54
real(sp), dimension(:,:), allocatable, target q2l
Definition: mod_main.f90:1292
real(sp), dimension(:), allocatable, target el_eqi
Definition: mod_main.f90:1147
real(sp), dimension(:,:), allocatable, target tmean1
Definition: mod_main.f90:1318
subroutine nc_read_var(VAR, STKCNT, STKRNG, IOSTART, IOCOUNT, IOSTRIDE, DEALERID, PARALLEL)
real(sp), dimension(:,:), allocatable, target u
Definition: mod_main.f90:1268
logical nesting_on
real(sp), dimension(:,:), allocatable, target s1
Definition: mod_main.f90:1308
subroutine set_wd_data
Definition: mod_wd.f90:95
subroutine, public read_ts
integer, dimension(:), allocatable next_obc
Definition: mod_obcs.f90:78
real(sp), dimension(:,:), allocatable, target smean1
Definition: mod_main.f90:1319
real(sp), dimension(:), allocatable, target el1
Definition: mod_main.f90:1118
real(sp), dimension(:), allocatable, target et
Definition: mod_main.f90:1135
subroutine, public startup
Definition: mod_startup.f90:71
subroutine dens2
subroutine sinter_extrp_up(X, A, Y, B, M1, N1)
Definition: sinter.f90:60
real(sp), dimension(:), allocatable nn_hvc
Definition: mod_main.f90:1303
integer, dimension(:,:), allocatable, target nv
Definition: mod_main.f90:1018
subroutine, public read_ssh
real(sp), dimension(:,:), allocatable, target zz1
Definition: mod_main.f90:1095
real(sp), dimension(:,:), allocatable, target dzz
Definition: mod_main.f90:1093
real(sp), dimension(:,:), allocatable, target aam
Definition: mod_main.f90:1296
real(sp), dimension(:), allocatable, target ua
Definition: mod_main.f90:1103
subroutine n2e2d(NVAR, EVAR)
Definition: mod_main.f90:1390
real(sp), dimension(:,:), allocatable, target tmean
Definition: mod_main.f90:1287
real(sp), dimension(:,:), allocatable, target dz
Definition: mod_main.f90:1092
real(sp), dimension(:,:), allocatable, target l
Definition: mod_main.f90:1291
integer, dimension(:), allocatable iswetnt
Definition: mod_wd.f90:53
real(sp), dimension(:,:), allocatable, target kh
Definition: mod_main.f90:1294
subroutine dens3
integer, dimension(:), allocatable iswetc
Definition: mod_wd.f90:52
real(sp), dimension(:), allocatable, target dt1
Definition: mod_main.f90:1117
real(sp), dimension(:,:), allocatable, target z
Definition: mod_main.f90:1090
subroutine fatal_error(ER1, ER2, ER3, ER4)
Definition: mod_utils.f90:230
real(sp), dimension(:), allocatable, target h1
Definition: mod_main.f90:1115
real(sp), dimension(:,:), allocatable, target dz1
Definition: mod_main.f90:1096
real(sp), dimension(:,:), allocatable, target t0
Definition: mod_main.f90:1313
subroutine dens1
real(sp), dimension(:,:), allocatable, target z1
Definition: mod_main.f90:1094
real(sp), dimension(:), allocatable, target grav_n
Definition: mod_main.f90:1013
real(sp), dimension(:), allocatable, target el_atmo
Definition: mod_main.f90:1154
subroutine n2e3d(NVAR, EVAR)
Definition: mod_main.f90:1370
real(sp), dimension(:,:), allocatable, target smean
Definition: mod_main.f90:1289
real(sp), dimension(:,:), allocatable, target wts
Definition: mod_main.f90:1321
real(sp), dimension(:,:), allocatable, target t
Definition: mod_main.f90:1286
integer, parameter dbg_sbr
Definition: mod_utils.f90:69
subroutine, public read_wetdry
real(sp), dimension(:,:), allocatable, target km1
Definition: mod_main.f90:1299
subroutine, public read_turb
real(sp), dimension(:,:), allocatable, target s0
Definition: mod_main.f90:1315
type(ncfile), pointer nc_rst
Definition: mod_input.f90:50
real(sp), dimension(:,:), allocatable, target zz
Definition: mod_main.f90:1091
real(sp), dimension(:), allocatable, target et1
Definition: mod_main.f90:1119
real(sp), dimension(:,:), allocatable, target kq
Definition: mod_main.f90:1295
real(sp), dimension(:,:), allocatable, target rmean
Definition: mod_main.f90:1285
real(sp), dimension(:), allocatable, target dt
Definition: mod_main.f90:1133
real(sp), dimension(:,:), allocatable, target rmean1
Definition: mod_main.f90:1320
integer, parameter dbg_log
Definition: mod_utils.f90:65
integer, dimension(:), allocatable iswetn
Definition: mod_wd.f90:51
type(ncfile), pointer nc_start
Definition: mod_input.f90:51