SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
mode_glt_init.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 !GLT_LIC The GELATO model is a seaice model used in stand-alone or embedded mode.
6 !GLT_LIC It has been developed by Meteo-France. The holder of GELATO is Meteo-France.
7 !GLT_LIC
8 !GLT_LIC This software is governed by the CeCILL-C license under French law and biding
9 !GLT_LIC by the rules of distribution of free software. See the CeCILL-C_V1-en.txt
10 !GLT_LIC (English) and CeCILL-C_V1-fr.txt (French) for details. The CeCILL is a free
11 !GLT_LIC software license, explicitly compatible with the GNU GPL
12 !GLT_LIC (see http://www.gnu.org/licenses/license-list.en.html#CeCILL)
13 !GLT_LIC
14 !GLT_LIC The CeCILL-C licence agreement grants users the right to modify and re-use the
15 !GLT_LIC software governed by this free software license. The exercising of this right
16 !GLT_LIC is conditional upon the obligation to make available to the community the
17 !GLT_LIC modifications made to the source code of the software so as to contribute to
18 !GLT_LIC its evolution.
19 !GLT_LIC
20 !GLT_LIC In consideration of access to the source code and the rights to copy, modify
21 !GLT_LIC and redistribute granted by the license, users are provided only with a limited
22 !GLT_LIC warranty and the software's author, the holder of the economic rights, and the
23 !GLT_LIC successive licensors only have limited liability. In this respect, the risks
24 !GLT_LIC associated with loading, using, modifying and/or developing or reproducing the
25 !GLT_LIC software by the user are brought to the user's attention, given its Free
26 !GLT_LIC Software status, which may make it complicated to use, with the result that its
27 !GLT_LIC use is reserved for developers and experienced professionals having in-depth
28 !GLT_LIC computer knowledge. Users are therefore encouraged to load and test the
29 !GLT_LIC suitability of the software as regards their requirements in conditions enabling
30 !GLT_LIC the security of their systems and/or data to be ensured and, more generally, to
31 !GLT_LIC use and operate it in the same conditions of security.
32 !GLT_LIC
33 !GLT_LIC The GELATO sofware is cureently distibuted with the SURFEX software, available at
34 !GLT_LIC http://www.cnrm.meteo.fr/surfex. The fact that you download the software deemed that
35 !GLT_LIC you had knowledge of the CeCILL-C license and that you accept its terms.
36 !GLT_LIC Attempts to use this software in a way not complying with CeCILL-C license
37 !GLT_LIC may lead to prosecution.
38 !GLT_LIC
39 ! =======================================================================
40 ! ========================== MODULE mode_glt_init ===========================
41 ! =======================================================================
42 !
43 !
44 ! This module contains subroutines that are used to implement all
45 ! necessary initial conditions in Gelato model: domain, ice state and
46 ! superficial ocean conditions. It also manages forcing fields,
47 ! initial surface fluxes, initial salinity and results storage.
48 !
49 ! Modified: 2012/05 (D. Salas y Melia)
50 ! Change in dimensions / multi-tasking
51 !
52 ! ----------------------- BEGIN MODULE mode_glt_init ------------------------
53 
55 INTERFACE
56 
57 #if ! defined in_surfex
58 SUBROUTINE inidmn(tpglt)
59  USE modd_types_glt
60  TYPE(t_glt), INTENT(inout) :: &
61  tpglt
62 END SUBROUTINE inidmn
63 #endif
64 
65 SUBROUTINE initfl(tptfl)
66  USE modd_types_glt
67  USE modd_glt_param
68  TYPE(t_tfl), DIMENSION(nx,ny), INTENT(inout) :: &
69  tptfl
70 END SUBROUTINE initfl
71 
72 SUBROUTINE inisal &
73  ( tpdom,tpmxl,tpsit )
74  USE modd_types_glt
75  USE modd_glt_param
76  TYPE(t_dom), DIMENSION(nx,ny), INTENT(in) :: &
77  tpdom
78  TYPE(t_mxl), DIMENSION(nx,ny), INTENT(in) :: &
79  tpmxl
80  TYPE(t_sit), DIMENSION(nt,nx,ny), INTENT(inout) :: &
81  tpsit
82 END SUBROUTINE inisal
83 
84 SUBROUTINE inidia(tpind,tpdia,pcumdia0,pcumdia)
85  USE modd_types_glt
86  USE modd_glt_param
87  TYPE(t_ind), INTENT(in) :: &
88  tpind
89  TYPE(t_dia), DIMENSION(nx,ny), INTENT(inout) :: &
90  tpdia
91  REAL, DIMENSION(ndiamax,1,1), INTENT(out) :: &
92  pcumdia0
93  REAL, DIMENSION(ndiamax,nx,ny), INTENT(out) :: &
94  pcumdia
95 END SUBROUTINE inidia
96 
97 SUBROUTINE init_timers
98 END SUBROUTINE init_timers
99 
100 END INTERFACE
101 END MODULE mode_glt_init
102 
103 ! ------------------------ END MODULE mode_glt_init -------------------------
104 
105 
106 #if ! defined in_surfex
107 ! -----------------------------------------------------------------------
108 ! ------------------------- SUBROUTINE INIDMN ---------------------------
109 !
110 ! The mesh is read in this routine, and scattered. This routine could
111 ! be replaced with anything else that does the same.
112 ! Note that bnddmn must be called after, to be sure boundaries are
113 ! well-defined.
114 !
115 SUBROUTINE inidmn( tpglt )
116 !
117  USE modd_types_glt
118  USE modd_glt_param
120  USE mode_gltools_mpi
121  USE modi_gltools_mskerr
122  IMPLICIT NONE
123 !
124  TYPE(t_glt), INTENT(inout) :: &
125  tpglt
126 !
127  CHARACTER(80) :: &
128  yfname,yword
129  INTEGER, DIMENSION(SIZE(tpglt%dom,1),SIZE(tpglt%dom,2)) :: &
130  iwork2_p
131  INTEGER, DIMENSION(nxglo,nyglo) :: &
132  iwork2
133  REAL, DIMENSION(SIZE(tpglt%dom,1),SIZE(tpglt%dom,2)) :: &
134  zwork2_p
135  REAL, DIMENSION(nxglo,nyglo) :: &
136  zwork2
137 !
138 !
139 !
140 ! 1. Initializations
141 ! ===================
142 !
143 ! .. Welcome message
144 !
145  IF (lwg) THEN
146  WRITE(noutlu,*) ' '
147  WRITE(noutlu,*) ' *** LEVEL 3 - SUBROUTINE INIDMN'
148  WRITE(noutlu,*) ' '
149 !
150 ! .. Written confirmation
151 !
152  WRITE(noutlu,*) ' The grid we use is : '//cn_grdname
153  ENDIF
154 !
155 !
156 !
157 ! 2. Read grid definitions
158 ! =========================
159 !
160 ! This should be done on all gelato's processors, since tdom_p must be known
161 ! by all processors
162 !
163 ! * Read the land-sea mask (= 1 if ocean, 0 if land)
164 !
165  yfname = 'opamesh.asc'
166 !
167  IF (lwg) THEN
168  WRITE(noutlu,'("Processor ",I5," : read grid from ",A)') &
169  gelato_myrank,yfname
170  WRITE(noutlu,*) ' '
171  ENDIF
172 
173 ! * Read land-sea T-mask.
174 !
175  OPEN(unit=ngrdlu,file=yfname,form='FORMATTED')
176  READ(ngrdlu,*) yword
177  CALL gltools_mskerr( 'TMK',yfname,yword )
178  READ(ngrdlu,*) iwork2(:,:)
179 !
180 ! iwork2(120,9)=0
181 ! iwork2(120,9)=1
182  CALL scatter2d( iwork2,iwork2_p )
183  tpglt%dom(:,:)%tmk = iwork2_p(:,:)
184 !
185 ! * Read land-sea U-mask. This is to comply the current opamesh.asc
186 ! format. This information is actually not used.
187 !
188  READ(ngrdlu,*) yword
189  READ(ngrdlu,*) iwork2
190 !
191 ! * Read land-sea V-mask. This is to comply the current opamesh.asc
192 ! format. This information is actually not used.
193 !
194  READ(ngrdlu,*) yword
195  READ(ngrdlu,*) iwork2
196 !
197 ! * Read grid points latitude, in degrees and convert to radians.
198 !
199  READ(ngrdlu,*) yword
200  CALL gltools_mskerr( 'TLA',yfname,yword )
201  READ(ngrdlu,*) zwork2
202  zwork2(:,:) = zwork2(:,:) * pi / 180.
203  CALL scatter2d( zwork2,zwork2_p )
204  tpglt%dom(:,:)%lat = zwork2_p(:,:)
205 !
206 ! * Read grid points longitude, in degrees and convert to radians.
207 !
208  READ(ngrdlu,*) yword
209  CALL gltools_mskerr( 'TLO',yfname,yword )
210  READ(ngrdlu,*) zwork2
211  zwork2(:,:) = zwork2(:,:) * pi / 180.
212  CALL scatter2d( zwork2,zwork2_p )
213  tpglt%dom(:,:)%lon = zwork2_p(:,:)
214 !
215 ! * Read grid cell dimensions (m) in the X and Y directions.
216 !
217  READ(ngrdlu,*) yword
218  CALL gltools_mskerr( 'TSX',yfname,yword )
219  READ(ngrdlu,*) zwork2
220  CALL scatter2d( zwork2,zwork2_p )
221  tpglt%dom(:,:)%dxc = zwork2_p(:,:)
222 !
223  READ(ngrdlu,*) yword
224  CALL gltools_mskerr( 'TSY',yfname,yword )
225  READ(ngrdlu,*) zwork2
226  CALL scatter2d( zwork2,zwork2_p )
227  tpglt%dom(:,:)%dyc = zwork2_p(:,:)
228 !
229 !
230 ! *** Close file
231 !
232  CLOSE(ngrdlu)
233 !
234 ! .. Farewell message
235 !
236  IF (lwg) THEN
237  WRITE(noutlu,*) ' '
238  WRITE(noutlu,*) ' *** LEVEL 3 - END SUBROUTINE INIDMN'
239  WRITE(noutlu,*) ' '
240  ENDIF
241 !
242 END SUBROUTINE inidmn
243 !
244 ! ----------------------- END SUBROUTINE INIDMN -------------------------
245 ! -----------------------------------------------------------------------
246 !
247 ! -----------------------------------------------------------------------
248 ! ------------------------- SUBROUTINE BNDMN ---------------------------
249 !
250 SUBROUTINE bnddmn( tpglt )
251 !
252  USE dom_oce
253  USE modd_types_glt
254  USE modd_glt_param
256  USE mode_gltools_bound
257  USE lib_mpp
258  IMPLICIT NONE
259 !
260  TYPE(t_glt), INTENT(inout) :: &
261  tpglt
262 !
263  INTEGER :: &
264  ji,jj
265  INTEGER, DIMENSION(SIZE(tpglt%dom,1),SIZE(tpglt%dom,2)) :: &
266  iwork2_p
267  REAL, DIMENSION(SIZE(tpglt%dom,1),SIZE(tpglt%dom,2)) :: &
268  zwork2_p
269 !
270 !
271 !
272 ! 1. Initializations
273 ! ===================
274 !
275 ! .. Welcome message
276 !
277  IF (lwg) THEN
278  WRITE(noutlu,*) ' '
279  WRITE(noutlu,*) ' *** LEVEL 3 - SUBROUTINE BNDDMN'
280  WRITE(noutlu,*) ' '
281  ENDIF
282 !
283 !
284 !
285 ! 2. Define new fields and gltools_bound
286 ! ===============================
287 !
288 ! * Land-sea T-mask.
289 !
290  zwork2_p(:,:) = float( tpglt%dom(:,:)%tmk )
291  CALL gltools_bound( 'T','scalar',zwork2_p )
292  tpglt%dom(:,:)%tmk = int( zwork2_p(:,:) )
293 !
294 ! * Interior T-mask (ghost points are masked)
295  iwork2_p(:,:) = tpglt%dom(:,:)%tmk
296  iwork2_p(1:jpreci,:) = 0
297  iwork2_p(nlci-jpreci+1:nx,:) = 0
298  iwork2_p(:,1:jprecj) = 0
299  iwork2_p(:,nlcj-jprecj+1:ny) = 0
300  tpglt%dom(:,:)%imk = iwork2_p(:,:)
301 !
302 ! * i and j index in global grid. This is a particular case. The global
303 ! array has to be defined in this routine, not in glt_init, since
304 ! glt_init is not defined within NEMO. However, in principle, the
305 ! subdomain array could probably be defined directly.
306 !
307  DO jj=1,ny
308  DO ji=1,nx
309  tpglt%dom(ji,jj)%indi = nimpp+ji-nldi
310  tpglt%dom(ji,jj)%indj = njmpp+jj-nldj
311  END DO
312  END DO
313  zwork2_p(:,:) = float( tpglt%dom(:,:)%indi )
314  CALL gltools_bound( 'T','scalar',zwork2_p )
315  tpglt%dom(:,:)%indi = int( zwork2_p(:,:) )
316  zwork2_p(:,:) = float( tpglt%dom(:,:)%indj )
317  CALL gltools_bound( 'T','scalar',zwork2_p )
318  tpglt%dom(:,:)%indj = int( zwork2_p(:,:) )
319 !
320 ! * Land-sea U-mask
321 !
322  iwork2_p(:,:) = 0
323 !
324  DO jj=2,ny-1
325  DO ji=2,nx-1
326  iwork2_p(ji,jj) = tpglt%dom(ji+1,jj)%tmk * tpglt%dom(ji,jj)%tmk
327  END DO
328  END DO
329 !
330  zwork2_p(:,:) = float( iwork2_p(:,:) )
331  CALL gltools_bound( 'U','scalar',zwork2_p )
332  tpglt%dom(:,:)%umk = int( zwork2_p(:,:) )
333 !
334 ! * Land-sea V-mask
335 !
336  iwork2_p(:,:) = 0
337 !
338  DO jj=2,ny-1
339  DO ji=2,nx-1
340  iwork2_p(ji,jj) = tpglt%dom(ji,jj+1)%tmk * tpglt%dom(ji,jj)%tmk
341  END DO
342  END DO
343 !
344  zwork2_p(:,:) = float( iwork2_p(:,:) )
345  CALL gltools_bound( 'V','scalar',zwork2_p )
346  tpglt%dom(:,:)%vmk = int( zwork2_p(:,:) )
347 !
348 ! * Grid points latitudes
349 !
350  zwork2_p(:,:) = tpglt%dom(:,:)%lat
351  CALL gltools_bound( 'T','scalar',zwork2_p )
352  tpglt%dom(:,:)%lat = zwork2_p(:,:)
353 !
354 ! * Grid points longitudes
355 !
356  zwork2_p(:,:) = tpglt%dom(:,:)%lon
357  CALL gltools_bound( 'T','scalar',zwork2_p )
358  tpglt%dom(:,:)%lon = zwork2_p(:,:)
359 !
360 ! * Grid cell dimensions (m) in the X direction
361 !
362  zwork2_p(:,:) = tpglt%dom(:,:)%dxc
363  CALL gltools_bound( 'T','scafac',zwork2_p )
364  tpglt%dom(:,:)%dxc = zwork2_p(:,:)
365 !
366 ! * Grid cell dimensions (m) in the Y direction
367 !
368  zwork2_p(:,:) = tpglt%dom(:,:)%dyc
369  CALL gltools_bound( 'T','scafac',zwork2_p )
370  tpglt%dom(:,:)%dyc = zwork2_p(:,:)
371 !
372 ! * Compute grid cell area (m2) - to avoid computing it many times
373 ! in different parts of the code
374 !
375  zwork2_p(:,:) = tpglt%dom(:,:)%dxc*tpglt%dom(:,:)%dyc
376  zwork2_p(1,:) = 0.
377  zwork2_p(nx,:) = 0.
378  zwork2_p(:,1) = 0.
379  zwork2_p(:,ny) = 0.
380  tpglt%dom(:,:)%srf = zwork2_p(:,:)
381 !
382 ! * Surface of local ocean domain (ghost points are masked out)
383 !
384 ! Note this one cannot change from one time step to the other.
385 ! In contrast, the reduced grid changes at every time step. Hence,
386 ! the reduced grid surface xdomsrf_r has to be re-computed every time
387 ! this reduced grid is redefined (in thermo.f90)
388  xdomsrf = sum( tpglt%dom(:,:)%srf, mask=(tpglt%dom(:,:)%tmk==1) )
389 !
390 ! * Total surface of the ocean domain (ghost points are masked out)
391  xdomsrf_g = xdomsrf
392  CALL mpp_sum(xdomsrf_g)
393 !
394 ! *** Close file
395 !
396 ! .. Farewell message
397 !
398  IF (lwg) THEN
399  WRITE(noutlu,*) ' '
400  WRITE(noutlu,*) ' *** LEVEL 3 - END SUBROUTINE BNDDMN'
401  WRITE(noutlu,*) ' '
402  ENDIF
403 !
404 END SUBROUTINE bnddmn
405 !
406 ! ----------------------- END SUBROUTINE BNDDMN -------------------------
407 ! -----------------------------------------------------------------------
408 #endif
409 
410 ! -----------------------------------------------------------------------
411 ! ------------------------- SUBROUTINE INITFL ---------------------------
412 !
413 SUBROUTINE initfl(tptfl)
414  USE modd_types_glt
415  USE modd_glt_param
416  IMPLICIT NONE
417 !
418  TYPE(t_tfl), DIMENSION(nx,ny), INTENT(inout) :: &
419  tptfl
420 !
421 !
422 ! * Initialize fluxes transmitted by sea ice and water
423 !
424  tptfl(:,:)%lio = 0.
425  tptfl(:,:)%llo = 0.
426  tptfl(:,:)%tio = 0.
427  tptfl(:,:)%tlo = 0.
428  tptfl(:,:)%sio = 0.
429  tptfl(:,:)%cio = 0.
430  tptfl(:,:)%wio = 0.
431  tptfl(:,:)%wlo = 0.
432  tptfl(:,:)%xio = 0.
433  tptfl(:,:)%yio = 0.
434 !
435 END SUBROUTINE initfl
436 !
437 ! ----------------------- END SUBROUTINE INITFL -------------------------
438 ! -----------------------------------------------------------------------
439 
440 
441 ! -----------------------------------------------------------------------
442 ! ------------------------- SUBROUTINE INISAL ---------------------------
443 !
444 SUBROUTINE inisal &
445  ( tpdom,tpmxl,tpsit )
446 !
447  USE modd_types_glt
448  USE modd_glt_param
450  IMPLICIT NONE
451 !
452  TYPE(t_dom), DIMENSION(nx,ny), INTENT(in) :: &
453  tpdom
454  TYPE(t_mxl), DIMENSION(nx,ny), INTENT(in) :: &
455  tpmxl
456  TYPE(t_sit), DIMENSION(nt,nx,ny), INTENT(inout) :: &
457  tpsit
458 !
459  INTEGER :: &
460  jk
461 !
462 !
463 !
464 ! 1. Initialize sea ice salinity
465 ! ===============================
466 !
467 ! .. If a negative salinity is encountered, it means it was not
468 ! initialized
469 !
470  IF ( any( tpsit(:,:,:)%ssi < -0.5 ) ) THEN
471  IF ( nicesal==1 ) THEN
472  DO jk=1,nt
473  tpsit(jk,:,:)%ssi = &
474  ssinew / ssw0 * tpmxl(:,:)%sml * float( tpdom(:,:)%tmk )
475  END DO
476  ELSE
477  tpsit(:,:,:)%ssi = sice
478  ENDIF
479  ENDIF
480 !
481 END SUBROUTINE inisal
482 
483 ! ----------------------- END SUBROUTINE INISAL -------------------------
484 ! -----------------------------------------------------------------------
485 
486 
487 ! -----------------------------------------------------------------------
488 ! ------------------------- SUBROUTINE INIDIA ---------------------------
489 !
490 SUBROUTINE inidia(tpind,tpdia,pcumdia0,pcumdia)
491  USE modd_types_glt
492  USE modd_glt_param
493  IMPLICIT NONE
494 !
495  TYPE(t_ind), INTENT(inout) :: &
496  tpind
497  TYPE(t_dia), DIMENSION(nx,ny), INTENT(inout) :: &
498  tpdia
499  REAL, DIMENSION(ndiamax,1,1), INTENT(out) :: &
500  pcumdia0
501  REAL, DIMENSION(ndiamax,nx,ny), INTENT(out) :: &
502  pcumdia
503 !
504 !
505 ! * Initialize diagnostic fields (see definitions in dmod_types.f90)
506 !
507  tpdia(:,:)%uvl = 0.
508  tpdia(:,:)%vvl = 0.
509  tpdia(:,:)%asi = 0.
510  tpdia(:,:)%amp = 0.
511  tpdia(:,:)%asn = 0.
512  tpdia(:,:)%cgl = 0.
513  tpdia(:,:)%dsa = 0.
514  tpdia(:,:)%dds = 0.
515  tpdia(:,:)%dsn = 0.
516  tpdia(:,:)%ddn = 0.
517  tpdia(:,:)%dsi = 0.
518  tpdia(:,:)%ddi = 0.
519  tpdia(:,:)%dci = 0.
520  tpdia(:,:)%cst = 0.
521  tpdia(:,:)%dwi = 0.
522  tpdia(:,:)%lip = 0.
523  tpdia(:,:)%lsi = 0.
524  tpdia(:,:)%mrb = 0.
525  tpdia(:,:)%mrt = 0.
526  tpdia(:,:)%mrl = 0.
527  tpdia(:,:)%sie = 0.
528  tpdia(:,:)%sne = 0.
529  tpdia(:,:)%sni = 0.
530  tpdia(:,:)%snm = 0.
531  tpdia(:,:)%snml = 0.
532  tpdia(:,:)%sop = 0.
533  tpdia(:,:)%the = 0.
534  tpdia(:,:)%tin = 0.
535  tpdia(:,:)%qoi = 0.
536  tpdia(:,:)%xtr = 0.
537  tpdia(:,:)%ytr = 0.
538  tpdia(:,:)%sp1 = 0.
539  tpdia(:,:)%sp2 = 0.
540  tpdia(:,:)%sui = 0.
541  tpdia(:,:)%sut = 0.
542  tpdia(:,:)%sus = 0.
543  tpdia(:,:)%suw = 0.
544  tpdia(:,:)%sul = 0.
545  tpdia(:,:)%s_pr = 0.
546  tpdia(:,:)%s_prsn = 0.
547  tpdia(:,:)%o_pr = 0.
548  tpdia(:,:)%o_prsn = 0.
549  tpdia(:,:)%l_prsn = 0.
550  tpdia(:,:)%subcio = 0.
551  tpdia(:,:)%snicio = 0.
552  tpdia(:,:)%hsicio = 0.
553  tpdia(:,:)%lmlcio = 0.
554  tpdia(:,:)%salcio = 0.
555  tpdia(:,:)%dmp = 0.
556 ! Accumulated diagnostic: initialization at first time step only
557 ! The condition may change if diagnostic frequency is other than
558 ! time-step frequency or once per run, the only options in Gelato 6
559  IF( tpind%cur==tpind%beg ) THEN
560  tpdia(:,:)%aiw = 0.
561  tpdia(:,:)%sic = 0.
562  tpdia(:,:)%sit = 0.
563  tpdia(:,:)%snd = 0.
564  tpdia(:,:)%tiw = 0.
565  tpind%nts = 0
566  pcumdia0(:,:,:) = 0.
567  pcumdia(:,:,:) = 0.
568  ENDIF
569 ! - Note that tpdia%ifw, %swi, %sww were already initialized in glt_getatmf,
570 ! so they must not be set to zero here ! (DOES NOT HOLD ANYMORE HERE: NO
571 ! DANGER TO DO SO AS inidia IS NOW INVOKED BEFORE GETATMF...)
572 ! - Note that tpdia%atx, %aty, %otx, %oty need not be initialized here
573 ! as they will be defined at the end of the code (sndmlrf)
574 !
575 END SUBROUTINE inidia
576 !
577 ! ----------------------- END SUBROUTINE INIDIA -------------------------
578 ! -----------------------------------------------------------------------
579 !
580 !
581 ! -----------------------------------------------------------------------
582 ! ----------------------- SUBROUTINE INIT_TIMERS ------------------------
583 SUBROUTINE init_timers
584  USE modd_glt_param
585 !
586  IF ( ntimers==1 ) THEN
587  CALL cpu_time( xtime )
588  clabel = 'FIRST000'
589  ntimnum = 1
590  ENDIF
591 END SUBROUTINE init_timers
592 ! --------------------- END SUBROUTINE INIT_TIMERS ----------------------
593 ! -----------------------------------------------------------------------
subroutine init_timers
subroutine initfl(tptfl)
subroutine inidia(tpind, tpdia, pcumdia0, pcumdia)
subroutine bnddmn(tpglt)
subroutine gltools_mskerr(href, hfile, hword)
subroutine inisal(tpdom, tpmxl, tpsit)
subroutine inidmn(tpglt)