You are here

ELCIRC - 5.4c User Manual

  1. Input files:

    1. Important symbols used in this manual
    2. Horizontal grid (hgrid.gr3)
    3. Vertical grid (
    4. Parameter input (
    5. Initial condition for salinity and temperature (salt.ic and temp.ic)
    6. Bottom drag (drag.bp)
    7. wind (
    8. Time history input ( etc.)
    9. obe.out
    10. ndelt.gr3
    11. adv.gr3
    12. Lat/long coordinates (hgrid.ll)
    13. Heat exchange (sflux/)
    14. Conservation check files (fluxflag.gr3 and hcheck.gr3)
    15. vvd.dat,, and hvd.tran
    16. Amplitudes and phases of boundary forcings
    17. Nodal factor and equilibrium arguments
    18. Hot start input (
    19. Nudging inputs
    20. Bed deformation (bdef.gr3)
  2. Output files:

    1. Global output
    2. Warning and fatal messages
    3. Run info output (mirror.out)

Input files

Important symbols

"!" is used to add comments after actual input;

np: # of nodes in the horizontal grid;

ne: # of elements in the horizontal grid;

ns: # of sides in the horizontal grid;

nvrt: # of levels in the vertical grid

go back

Horizontal grid (hgrid.gr3)

In xmgredit grid format.

Below is a sample: 

fort_12062002.14 : alphanumeric description

55880 30001 :  # of elements and nodes in the horizontal grid

(Coordinate part):

1 386380.409604 286208.187634 5.122  : node #, x,y, depth
2 386460.352736 285995.038877 9.167
3 386687.720000 286213.590000 1.000
4 386460.076848 286367.779818 2.209
5 386678.380000 286483.440000 1.614
6 386180.219063 286405.956765 4.627
7 386409.007263 286563.660632 2.629
8 386186.575437 286680.225393 4.195
9 385958.392423 286604.196847 4.177


(Connectivity part)

1 4 1 2 3 5 : element #, element type (triangle or quadangle), node 1, node 2, node 3, node 4
2 3 3 4 1
3 3 3 5 4
4 3 1 4 6
5 3 4 7 6


(Boundary condition part)

3 : Number of open boundaries
95 : Total number of open boundary nodes
85 : Number of nodes for open boundary 1
15185 : first node


25 = number of land boundaries
4079 = Total number of land boundary nodes
1452 0 = Number of nodes for land boundary 1
19947  : first node


Note: the boundary condition (b.c.) part can be generated with xmgredit5/GridDEM/Create open/land boundaries.

go back

Vertical grid (

43 4825.1 :  total # of vertical levels, z-coordinate of MSL (mean sea level)
1 3667.00 3667.00 : level #, layer thickness, z-coordinate of level line
2 1000.00 4667.00
3 100.00 4767.00
4 10.00 4777.00
5 9.40 4786.40
6 5.00 4791.40
7 5.00 4796.40
8 3.00 4799.40
9 2.00 4801.40
10 2.00 4803.40
11 1.50 4804.90
12 1.00 4805.90
13 0.80 4806.70
14 0.80 4807.50
15 0.80 4808.30
16 0.80 4809.10
17 0.80 4809.90
18 0.80 4810.70
19 0.80 4811.50
20 0.70 4812.20
21 0.70 4812.90
22 0.70 4813.60
23 0.70 4814.30
24 0.70 4815.00
25 0.70 4815.70
26 0.70 4816.40
27 0.70 4817.10
28 0.70 4817.80
29 0.70 4818.50
30 0.70 4819.20
31 0.70 4819.90
32 0.70 4820.60



  1. Origin of z is a point below deepest depth and therefore ZMSL > max(depth);
  2. Thickness is from previous level to current level;
  3. Global output is from the bottom to max. level (e.g., 43 in this case).

go back

Parameter input (

Explanation of each line:

  1. 48-character string description of the version.

  2. 48-character start time info string, e.g., 04/23/2002 00:00:00 PST

  3. ipre: pre-processing flag.

    =1: code will output centers.bp, sidecenters.bp and obe.out (centers build point, sidcenters build point, and list of open boundary elements), and stop. =0: normal run.

  4. nscreen = screen output on/off switch (0: off; 1: on). In either case, mirror output messages will be directed into mirror.out.  

  5. iwrite: writing destination option for COIRE system. Default: 0.

  6. imm: tsunami option. Default: 0 (no bed deformation); 1: with bed deformation (needs bdef.gr3)

  7. ihot = hot start flag. If ihot=0, cold start; if ihot/=0, hot start from If ihot=1 (forecast option), the time and time step are reset to zero, and outputs start from T=0 accordingly. If ihot=2 (hindcast option), the run (and output) will continue from the time specified in

  8. ics = coordinate frame flag. If ics=1, Cartesian coordinates are used; if ics=2, degrees latitude/longitude are used.

  9. slam0, sfea0 = centers of projection used to convert lat/long to Cartesian coordinates. These are only used for ics=2, or a variable Coriolis parameter is employed (ncor=2).

  10. theta0 = implicitness parameter (between 0.5 and 1).

  11. ibcc, ibtp = barotropic/baroclinic flags. If ibcc=0, a baroclinic model is used and regardless of the value for ibtp, the transport equation is solved. If ibcc=1, a barotropic model is used, and the transport equation may (when ibtp=1) or may not (when ibtp=0) be solved; in the former case, S and T are treated as passive tracers.  

  12. If ibcc=0, the next line is: nrampbc, drampbc: ramp option flag and ramp-up period (in days). If nrampbc=0, drampbc is not used. A hyperbolic tangent function is used for ramp-up.

  13. This line inactive (put anything or nothing).

  14. rnday = total # of run days.

  15. nramp, dramp = ramp option for the tides, and ramp-up period in days (not used if nramp=0).

  16. dt = external time step(in sec) for momentum and continuity equations.

  17. nsubfl = 0, 1, or 2: flag to determine how the number of subdivisions in backtracking is computed. For nsubfl=0, a constant value, specified below, is used throughout the domain; for nsubfl=1, the number of subdivisions is read in from ndelt.gr3; for nsubfl=2, the number of subdivisions is automatically calculated in the code based on the local velocity gradient, subject to the max. and min. specified below.  

  18. If nsubfl=0, the next line is: ndelt = constant number of subdivisions.

    If nsubfl=2, the next line is: ndeltmin, ndeltmax: minimum and maximum number of subdivisions allowable.  

  19. nadv = advection on/off switch. If nadv=1, advection is on for the whole domain (and this is the default). If nadv=0, advection is selectively turned off based on the input file adv.gr3.  

  20. h0 = minimum depth (in m) (recommended value: 1cm). When the total depth is less than h0, the corresponding sides/elements are considered as dry; it also controls the minimum layer thickness. This should always be positive to prevent underflow.

  21. ntau = bottom friction option. If ntau=0, a constant drag coefficient is used for bottom friction parameterization. If ntau=1, a logarithmic law is applied to the parameterization, and rough.bp is needed in which the bottom roughness (in meters) is specified at each node. If ntau=2, the drag coefficients are read in from drag.bp.  

  22. If ntau=0, the next line is: Cd0 = constant drag coefficient.  

  23. ncor = Coriolis option. If ncor=0 or -1, a constant Coriolis parameter is used. If ncor=2, a variable Coriolis parameter, based on a beta-plane approximation, is used, with the lat/long. coordinates of the grid read in from hgrid.ll. In this case, the center of CPP projection must be correctly specified (see above).  

  24. If ncor=0, the next line is: cori = constant Coriolis parameter. If ncor=-1, the next line is the reference lattitude in degrees.

  25. nws, wtiminc = wind forcing options and the interval (in seconds) with which the wind input is read in. If nws=0, no wind is applied (and wtiminc becomes immaterial). If nws=1, constant wind is applied to the whole domain at any given time, and the time history of wind is input from If nws=2, spatially and temporally variable wind is applied and the input consists of a number of hdf files in the directory hdf/.  

  26. If nws>0, the next line is: nrampwind, drampwind = ramp option and period (in days) for wind.  

  27. ihconsv, isconsv = heat budget and salt conservation models flags (the latter is inactive at the moment). If ihconsv=0, the heat budget model is not used. If ihconsv=1, a heat budget model is invoked, and a number of hdf files for radiation flux input are read in from he directory hdf/.  

  28. itur = turbulence closure model selection. If itur=0, constant diffusivities are used for momentum and transport (and the values are specified in the next line). If itur=2, the zero-equation Pacanowski and Philander closure is used. If itur=3, then the two-equation closure schemes (Mellor-Yamada-Galperin, K-epsilon, Umlauf and Burchard etc.) are used. If itur=-1, horizontally homogeneous but vertically varying diffusivities are used, which are read in from vvd.dat. If itur=-2, vertically homogeneous but horizontally varying diffusivities are used, which are read in from hvd.tran.  

  29. If itur=0, the next line is: vdiff, tdiff = constant diffusivities for momentum and transport.   If itur=2, the next line is: tdiff_min, hestu_pp, vdmax1, vdmin1, hcont_pp, vdmax2, vdmin2. Eddy viscosity is computed as: vdiff=vdiff_max/(1+rich)^2+vdiff_min, and diffusivity tdiff=vdiff_max/(1+rich)^2+tdiff_min, where rich is a Richardson number. The limits (vdiff_max & vdiff_min) vary linearly with depth between depths hestu_pp and hcont_pp. If itur=3, the next two lines are:  mid,stab: choice of model description ("MY"-Mellor & Yamada, "KL"-GLS as k-kl, "KE"-GLS as k-epsilon, "KW"-GLS as k-omega, or "UB"-Umlauf & Burchard's optimal), and stability function ("GA"-Galperin's, or "KC"-Kantha & Clayson's for GLS models). hestu_my, diffmax_est, diffmin_est, hcont_my, diffmax_sea, diffmin_sea (cut-off depths for estuary and open sea and associated maximum and minimum diffusivities). The local minimum diffusivity  varies linearly with depth, i.e., \nu_min= diffmin_est for h<hest_my;  \nu_min= diffmin_sea for h>hcont_my; \nu_min= diffmin_est + (diffmin_sea - diffmin_est)  * (h-hest_my)/(hcont_my-hest_my) for hest_my <= h<=  hcont_my (h is the local depth). Local maximum diffusivity can be computed in a similar way.
  30. ihorcon,  horcon: horizontal diffusion option for momentum equation. If ihorcon=0, a constant diffusion coefficient (horcon) is used. If ihorcon=1, Smagorinsky paramertization is used and horcon is the dimensionless constant used in the scheme.

  31. Next 2 lines are not active at the moment. Input 0 here.

  32. Input 0. 0. here. 

  33. ictemp, icsalt = options for specifying initial temperature and salinity field. If ictemp (or icsalt)=1, a vertically homogeneous but horizontally varying initial temperature (or salinity) field is contained in temp.ic (or salt.ic). If ictemp (or icsalt)=2, a horizontally homogeneous but vertically varying initial temperature (or salinity) field is contained in temp.ic (or salt.ic).  

  34. Inactive. Input 0 here.

  35. ntip, tip_dp = total # of tidal potential forcing frequencies, and cut-off depth for applying tidal potential forcing (i.e., the forcing is applied only when h>=tip_dp).  

  36. For k=1, ntip 

         talpha(k) = tidal constituent name;

         jspc(k), tamp(k), tfreq(k), tnf(k), tear(k) = tidal species # (0: declinational; 1: diurnal; 2: semi-diurnal), amplitude constants, frequency, nodal factor, earth equilibrium argument (in degrees);

    end for;  

  37. nbfr = total # of tidal boundary forcing frequencies.  

  38. For k=1, nbfr

         alpha(k) = tidal constituent name;

         amig(k), ff(k), face(k) = forcing frequency, nodal factor, earth equilibrium argument (in degrees) for constituents forced on the open ocean boundary;

    end for;  

    Next part requires info from obe.out:

  39. For j=1, nope  

    netaelem(j), iettype(j), ifltype(j), itetype(j), isatype(j) = # of elements on the open boundary segment j, b.c. flags for elevation, normal velocity, temperature, and salinity;

         if (iettype(j) == 1) !time history of elevation on this boundary

            no input in this file; time history of elevation is read in from;

      &nnbsp;  else if (iettype(j) == 2)  !this boundary is forced by a constant elevation

            ethconst: constant elevation

         else if (iettype(j) == 3) !this boundary is forced by tides

            for k=1, nbfr

                  alpha(k) = tidal constituent name;  

                  for i=1, netaelem(j)

                     emo(ietaelem(j,i),k), efa(ietaelem(j,i),k) !amplitude and phase for each element on this open boundary;  

                  end for

            end for;

         else if (iettype(j) == -1)  !radiation b.c.

            no input in this file; elevations are computed as average of surrounding elevations.


         if (ifltype(j) == 0)  !nornal vel. not specified

              no input needed

         else if (abs(ifltype(j)) == 1) !time history of discharge on this boundary or Flather's obc

              no input in this file; time history of discharge is read in from;

         else if (abs(ifltype(j)) == 2)  !this boundary is forced by a constant discharge or Flather's obc

              vthconst: constant discharge (<0)


        Note: when Flather's obc is selected (i.e., ifltype(j)=-1 or -2), iettype must be set to 0.

         if (itetype(j) == 0)  !temperature not specified

              no input needed

         else if (itetype(j) == 1) !time history of temperature on  this boundary

              no input in this file; time history of temperature is read in from;

         else if (itetype(j) == 2)  !this boundary is forced by a constant temperature

              tthconst = constant temperature

          else if (itetype(j) == 3) !keep initial temperature profile

              no input is needed

        else if(itetype(j) == -1) !open b.c.

             tthconst: imposed temperature for inflow


                Salintiy b.c. is similar to temperature:

        if (isatype(j) == 0)  !salinity not specified  



  40. nspool, ihfskip: Global output skips. Output is done every nspool steps, and a new output file is opened every ihfskip steps (and in addition, a hotstart file is output at the same time if the flag nhstar is turned on below). Therefore the outputs are named as [1,2,3,...]_salt.63 etc.

  41. next 20 lines are global output options. They share the same structure, and thus only the first line is detailed here.  

    1. noutge = global elevation output control. If noutge=0, no global elevation is recorded. If noutge= 1, global elevation for each node  in the grid is recorded in n_elev.61 in binary format. The output is either starting from scratch or appended to existing ones depending on ihot.

    2. output options for atmospheric pressure (pres.61).

    3. output options for air temperature (airt.61).

    4. output options for specific humidity (shum.61).

    5. output options for solar radiation (srad.61).

    6. output options for short wave radiation (flsu.61).

    7. output options for long wave radiation (fllu.61).

    8. output options for upward heat flux (radu.61).

    9. output options for downward flux (radd.61).

    10. output options for total flux (flux.61).

    11. output options for wind speed (wind.62).

    12. output options for wind stresses (wist.62).

    13. output options for horizontal velocity (hvel.64).

    14. output options for vertical velocity (vert.63).

    15. output options for temperature (temp.63).

    16. output options for salinity (salt.63).

    17. output options for density (conc.63).

    18. output options for diffusivity (tdff.63).

    19. output options for turbulent kinetic energy (kine.63).

    20. output options for macroscale mixing length (mixl.63).

    21. output options for test variable (test.60). The user may choose any internal variable by modifying the source code

  42. nhstar= hot start output control parameter. If nhstar=0, no hot start output (it_hotstart) is generated. If nhstar=1, hot start output is spooled to it_hotstart every ihfskip time steps, where it is the corresponding time iteration number. If a run needs to be hot started from step it, the user can create a symbolic link of to it_hotstart as the code expects the hot start input file to be the former.

  43. isolver, itmax1, iremove, zeta, tol = ITPACK solver control parameters.

    ·        If isolver=1, the Jacobian Conjugate Gradient Method is used (recommended);

    ·        If isolver=2, the Jacobian Semi-Iteration Method is used;

    ·        If isolver=3, the Successive Over-relaxation Conjugate Gradient Method is used;

    ·        If isolver=4, the Successive Over-relaxation Semi-Iteration Method is used;

    Recommended values: isolver=1, itmax1=1000, iremove=0, zeta=5.e-6, tol=1.e-13.

  44. iflux, ihcheck = parameter for checking volume, heat and salt budget balances. If turned on (=1), the conservation will be checked in a region specified, respectively, by fluxflag.gr3 and hcheck.gr3.

  45. Inactive. Input 1 here.

  46. Inactive.

  47. ieqstate: choice for equation of state. =0: default nonlinear form of ISE80 standard; =1: linearized. 

  48. inu_t, inu_s, step_nu: nudging option parameters. If inu_t (or inu_s) =0, no nudging is done for temperature (salinity); if =1, T (S) is  continuously nudged to the values in ( The time interval used in those nudging inputs is step_nu (e.g., 86400 for every day). The relaxation constants are input from t_nudge.gr3 (s_nudge.gr3) (same format as hgrid.gr3 with depth being the relaxation constants).

  49. iupwind_t, iupwind_s: upwind option for temperature and salinity equations. Upwind option is turned on with the flag =1.

go back

Initial condition for S,T

Depending on the values of icsalt and ictemp (see parameter input file):

  • If icsalt = 1, salt.ic takes the following build point format:


    33 to 0 from outh to TP. !file description
    30001  !# of nodes;
    1 386380.409604 286208.187634 0.000000   !node #,  x, y, initial salinity
    2 386460.352736 285995.038877 0.000000
    3 386687.720000 286213.590000 0.000000
    4 386460.076848 286367.779818 0.000000
    5 386678.380000 286483.440000 0.000000

  • If icsalt = 2, salt.ic takes the following format:

    43 !total # of vertical levels;
    1 10. !level #, initial salinity
    2 10.
    3 10.
    4 10.
    5 10.

go back

Bottom drag (drag.bp)

If ntau=2 in, this input is needed. It takes the form of a build point file:

0.0025 to 0.0045 from TP to Woody  !file decription
27918  !total # of nodes
1 386738.500000 285939.060000 0.004500 !node #, x, y, drag coefficient
2 386687.720000 286213.590000 0.004500
3 386421.090000 286172.160000 0.004500
4 386471.720000 286376.030000 0.004500
5 386678.380000 286483.440000 0.004500
6 386140.190000 286439.220000 0.004500
7 386387.280000 286557.310000 0.004500
8 386209.840000 286676.470000 0.004500

go back

wind (

If nws=1 in, a time history of wind speed must be specified in this file:

 5. 8.660254  ! x and y components of wind speed @ 0*wtiminc
 5. 8.660254  
 5. 8.660254


Note that the speed varies linearly in time, and the time interval is specified in

go back

Time history input:

This includes,,,, which share same structure. Below is a sample

300. -1613.05005 -6186.60156 !time (in sec), discharge at the 1st boundary with ifltype=1, discharge at the 2nd boundary with ifltype=1
600. -1611.37854 -6208.62549
900. -1609.39612 -6232.22314
1200. -1607.42651 -6254.24707
1500. -1605.45703 -6276.27148
1800. -1603.48743 -6298.2959
2100. -1601.3772 -6321.89307
2400. -1599.40772 -6343.91748
2700. -1597.43811 -6365.94141
3000. -1595.46863 -6387.96582
3300. -1593.49902 -6409.99023
3600. -1591.38879 -6433.5874
3900. -1589.41931 -6452.94287
4200. -1587.2959 -6472.29834


go back


This file is generated with the pre-processing flag in, and info contained here is needed in (e.g., # of open boundary elements) and  in calculating tidal amplitudes and phases. 

3 # of open bnd
Element list:
251 bnd # 1
1 31587
2 31588
3 31589
4 31590
5 31592
6 31595
7 31601
8 31603
9 31605
10 31606


4 bnd # 2
1 31583
2 31584
3 31585
4 31586

go back


This is needed when nsubfl=1. It is the same as hgrid.gr3 except the depth indicates the # of subdivisions used in backtracking.

go back


If nadv=0, the advection on/off flags are the "depths" (0: off; 1: on) in this grid file, which is otherwise similar to hgrid.gr3.

go back

Lat/long coordinates (hgrid.ll)

This file is identical to hgrid.gr3 except the x,y coordinates are replaced by lattitudes and longitudes.

go back

Heat exchange

This consists of a suite of input for wind and radiation fluxes found in a sub-directory sflux/. When nws=2, the wind speed and atmospheric pressure are read in from this directory; when ihconsv=1, various fluxes are read in from it as well. The netcdf files for various periods have been pre-computed by Mike Zulauf and deposited in a data base. Running his script inside run/ generates links to this data base for specified period:

/home/workspace/ccalmr/mazulauf/amb10xx/netcdf/cvs_stuff/forecasts/bin/atmos_nc/scripts/make_sflux_links.csh <model #>
<start year> <mm> <dd> <end year> <mm> <dd>

run it without arguments to see the options for atmospheric models (NAM/ETA; NARR etc).

go back

Conservation check files (fluxflag.gr3 and hcheck.gr3)

  1. Mass conservation (fluxflag.gr3)

    The "depths" of this grid file divide the whole domain into 3 regions: 0, 1 and 2, where regions "1" and "2" must be adjacent to each other. The total volume and various fluxes in regions "1" and "2" are computed.

  2. Heat and salt budget: (hcheck.gr3)

    The "depth" (either 0 or 1) indicates the region of interest. Heat and salt budgets are checked inside region 1.

go back

vvd.dat,, and hvd.tran

  1. vvd.dat ( format):

    43 !total # of vertical levels;
    1 1.e-2 1.e-4 !level #, viscosity, diffusivity
    2 1.e-2 1.e-4
    3 1.e-2 1.e-4

  2. & hvd.tran (build point format)  !file decription
    27918  !total # of nodes
    1 386738.500000 285939.060000 0.0045 !node #, x, y, viscosity/diffusivity
    2 386687.720000 286213.590000 0.004 

go back

Amplitudes and phases of boundary forcings

To generate amplitudes and phases for each element on a particular open boundary , follow these steps (scripts and sample input can be found in amb24:~yinglong/ElcircScripts/TIDES/):

  1. Generate obe.out and save the open element list for this boundary as ocean.elem;
  2. Get the x,y,depth part of centers.bp only (i.e., delete the first 2 lines and  all leading spaces);
  3. Run, with input (in order): centers.bp, centers.ll, 2, 1, 8, 1, 3601, wo, 2;
  4. Put the deleted 2 lines of centers.bp to centers.ll (to make it a build point file);
  5. Make sure centers.ll is inside edpac2xy.gr3 (with gredit);
  6. Run ecpbp.f to get centers.nos8;
  7. Generate centers.sta with genbcs.f;
  8. Run intel_deg.f to get amplitudes/phases of all frequencies. Input (in order): edpac2xy.gr3, centers.sta, teanl.tct, ap.dat. Locate relevant constituents in ap.dat by matching frequencies.

go back

Nodal factor and equilibrium arguments

Scripts (tid_e) and sample input ( can be found in amb24:~yinglong/ElcircScripts/TIDES/NodalFactor/. There is also a README there.

To generate nodal factor and equilibrium argument at a particular time, first change the time in the first line of; e.g., for April 30, 2001:

0830040120 !Hour (PST), Day, Month, Year(1995 -> 9519) ; note the 8 hrs difference between 00GMT and 00PST

Then run the script on amb24 as: tid_e < > out, and the file out contains nodal factors and arguments for all constituents.

go back

Hotstart input

This file is always in direct-access binary format, and all integers (i.e., those beginning with i-n) occupy nbyte=4 bytes, and all real variables are in double precision (8 bytes).  Depending on the value of the turbulence closure flag itur, it assumes 2 different forms:

If itur=3:

Total record length ihot_len=nbyte*(3+4*ne+2*ne*(nvrt+1)+4*ns*(nvrt+1)+4*ns*nvrt+3*np+7*np*(nvrt+1)+8*np*nvrt+4*ns*(nvrt+1)+1)+12

The variables in order are:

time,iths,(eta1(i),eta2(i), (we(i,j),j=0,nvrt),i=1,ne), ((vn2(i,j),vt2(i,j),j=0,nvrt),(tsd(i,j),ssd(i,j),j=1,nvrt),i=1,ns) ,(peta(i),ibad(i),(uu1(i,j),vv1(i,j),ww1(i,j),nosm(i,j),j=0,nvrt), 
(tnd(i,j),snd(i,j),tem0(i,j),sal0(i,j),j=1,nvrt),i=1,np),((q2(i,j),xl(i,j),j=0,nvrt), i=1,ns),ifile,ifile_char

where (eta1(i),eta2(i), (we(i,j),j=0,nvrt),i=1,ne)  is equivalent to:

do i=1,ne



 do j=0,nvrt





and ifile_char is a 12-character string corresponding to ifile.

If itur/=3:

Delete q2 and xl in the list, i.e., ((q2(i,j),xl(i,j),j=0,nvrt), i=1,ns). The total record length ihot_len is reduced by nbyte*4*ns*(nvrt+1).

go back

Nudging input ( and

This file is always in direct-access binary format, and all integers and real numbers occupy nbyte=4 bytes.

nrec_nu=nbyte*(1+np*nvrt) !single precision

do it=0,ndays !ndays is determined by step_nu



go back

Bed deformation (bdef.gr3)

This input has the same format as hgrid.gr3 except the depth indicates the bed deformation (positive for uplift).

go back

Output files

Global output

There are 4 types of output in Elcirc4.01, which correspond to the following 4 types of suffixes:

  1. *.61: 2D scalar - no vertical structure (elevation and 9 other variables used in the heat exchange model);
  2. *.62: 2D vector - no vertical structure: wind speed (u,v) and stress (tauxz,tauyz);
  3. *.63: 3D scalar - has vertical structure (vertical vel., temperature, salinity, density, diffusivity, turbulent kinetic energy and mixing length);
  4. *.64: 3D vector - has vertical structure: horizontal vel.

All output variables are defined on hgrid.gr3, i.e. nodes and in  binary format. The header part contains grid and other useful info:

  1. Data format description (char*48): e.g., 'DataFormat v2'
  2. version (char*48): version of Elcirc;
  3. start_time (char*48): start time of the run;
  4. variable_nm (char*48): variable description;
  5. variable_dim (char*48): '2D(3D) scalar(vector)'
  6. # of output time steps (int), output time step (real), skip (int), ivs (=1 or 2 for scalar or vector), i23d (=2 or 3 for
    2D or 3D), vpos (=0, 0.5, 1 meaning no vertical structure, at half level or whole level);

Vertical grid part:

  1. zmsl (real): z-cor of MSL;
  2. nvrt: toatal # of vertical levels;
  3. do k=1,nvrt
         z-coordinates of each (whole) level;

Horizontal grid part:

  1. np: # of nodes;
  2. ne: # of elements;
  3. do m=1,np
      h(m) (depth)
      kbp(m) (bottom index)
  4. do m=1,ne
      i34: element type 
      do mm=1,i34  
        nm(m,mm): node #


The header is followed by time iteration part:

do it=1,nt

  1. time (real);
  2. it: iteration #;
  3. do i=1,np
      kfp(i): surface index of node i;
  4. do i=1,np
      if(i23d=2) then !2D output
         if(ivs.eq.1) out1
         if(ivs.eq.2) out1,out2
      else !i23d=3 !3D output
         do k=kbp(i),nvrt
               if(ivs.eq.1) out1
               if(ivs.eq.2) out1,out2
         enddo !k
    enddo !i

enddo !it

go back

Warning and fatal messages

Warning message (fort.12) contains non-fatal warnings, while fatal message file (fort.11) is useful for debugging.

go back

Run info output (mirror.out)

This is a mirror image of screen output and is particularly useful when the latter is suppressed with nscreen=0. Below is a sample:

There are 85902 sides in the grid...
done computing geometry...
done classifying boundaries...
You are using baroclinic model
Check slam0 and sfea0 as variable Coriolis is used
Warning: you have chosen a heat conservation model
which assumes start time at 0:00 PST!
Last parameter in is mnosm= 0
done reading grids...
done initializing outputs
done initializing cold start
hot start at time= 0.00000000000000D+000 0

calculating grid weightings for wind_file_1

calculating grid weightings for wind_file_2

wind file starting Julian date: 127.000000000000 
wind file assumed UTC starting time: 8.00000000000000 
done initializing variables...
time stepping begins... 1 2016
done computing initial levels...
Total # of faces= 1914122
done computing initial nodal vel...
done computing initial density...

calculating grid weightings for rad fluxes

rad fluxes file starting Julian date: 127.000000000000 
rad fluxes file assumed UTC starting time: 8.00000000000000 


go back