An intermediate time step for currents is produced using a simplified momentum equation.
The currents at these steps are used in the computation of advection and eddy viscosity (and nonlinear friction?).
The simplification consists of
Purpose is to avoid instability of the equation system when the ordinary procedure involves nonlinear terms.
- starting with CIU, CVI the average of the currents of the previous two steps (tc', tc")
- propagating them ahead using the average of the elevations at the previous two steps (te', te") steps and the currents of the latest step t'
- without the terms for advection and eddy (but with nonlinear friction)
- Coriolis is also taken from CU, CV at t', which is the central time of the propagation step.
- This gives CIU and CVI at ti' , which are stored in the third segments of the arrays CU(i,j,3), CV(i,j,3).
- The interlacing computations are called into effect with CALL TTEQ_Interlace (.true.)
If the consequences of averaging and omission are too strong (frictionless case leaks mass, free oscillations die out fast, ...), a small change to the code can be made to mix the CIU,CIV currents CU,CV:
CU(i,j,3) = ( wi1*CU(i,j,IN3) + wi2*CU(i,j,IQ) ) / (wi1+wi2)
There was a failed attempt to simplify the interstitial propagation using virtual nodes for elevation, trying to get shorter code free from boundary conditions. The keyword was VPEL. Ignore the eventual remnants here.
There was an engineering version otes12h.f; ignore (update this page) if there are references/links to the abandoned production line.
Contents:
Notations:
{a,b} denotes a vector
with components a and b
Int denotes integral, Laplace the so named second derivative
partial differential operator
{ADU,ADV} = ({CU,CV}/HV * grad) {CU,CV}
where HV is depth and {CU,CV} vertically integrated current
vector.
If terms like (CU/HV * d/dx CU/HV) would be
integrated, we would formally get terms d/dx 1/HV. This
would imply depth-dependent current variations being advected.
This is certainly the case. However, discretization amplifies
small-scale signals, making the system unstable. Instead I have
decided to use
D/Dt Q = d/dt Q + ({u,v}*grad) Q
and Q equals Integral {u,v} dz in our case, and
{u,v} = {CU,CV}/HV
The gradients are computed using centred differences. One could
argue that down-wind gradients should be used. However, with the
typical velocities of metres per second, the grid constant on the
order of kilometres, and time steps on the order of 100 seconds or
below, the down-wind formulation doesn't make a significant
difference.
Delta_CU = ... + eddy_v Laplace (CU) Delta_t
eddy_v = const.
At present we use computationally costly formualation
Delta_CU = ... + eddy_v * Integral {Laplace (CU/HV)} dz
However, bottom topography might be too rough to expect stable results.
Advection, friction and eddy dissipation may create difficult
terms in some regions of the model. Procedures in OTEU12.f may be
used to regionally modify the model parameters.
Advection may be turned off in one region: Call
Area_No_Advection(...).
Model parameters may be redefined in one region: Call
Spec_Area(...).
The actual code of TTEQ (array PARSPA) determines the
meaning of the 10 parameters.
TEP: Tide-effective potential composed of astronomical and solid earth tide spectrum, optionally loading tides added.
ETD_SLOPE: Adding regional excitation signals to the
potential, explicitly time-dependent. In progress since
2017-08-14.
SAL: Internal self-attraction and -loading optionally by
parametrisation;
or by iteratively
adding harmonic solutions to TEP (tedious!)
APR: Sea-level air pressure fields
AB: Active Boundary tides
AB_Step: A planned step at an Active Boundary (not implemented
yet: selection of AB by name; AB-names exist already)
ntides=(index(CTIDE,' ')+1)/3
CALL Count_Packed
(FLZ,M,N,MPA)
CALL CNVCDS (ZSUM,ZSS,IWDIM,ntides+1)
NPA=1
CALL SETVER (Nsver)
FNorm=NRSUM/2.
do ih=1,ntides
j=ih*3-2
k=(ih-1)*IWDIM+1
kk=k+IWDIM
tidex=CTIDE(j:j+1)
CALL OUTZMN (41,ZSS(k),FN,MSUM,1,TYPE,TIDEX)
enddo
CALL OUTZMN
(iun,ZSS(NTIDES*IWDIM+1),FNorm,MPA,NPA,'Z','M4')
(Obsolete since the advent of solplot:) However, several procedures do not scan row number N-1 in 'Z'-arrays (e.g. ISOSCN), so either the array type should be 'M' or array dimensions MPA2=MPA+1; NPA2=2 must be used.
CTIDE - char*2 - Tides for harmonic
analysis. Specify e.g. 'M2 O1 '.
IUSAP - integer - Log.unit for retrieving tide
potential information
(OPEN done by routine).
PATH - char*32 - Path and file name for tide
potential.
NVU - integer - Number of partial
tides actually applied.
ZBUFF(NBUFF) - complex - Buffer for tide potential reading,
NBUFF = IWDIM >= number of 'S' & 'A'-cells.
H(M,N) - real - Bathymetry array.
FLZ(M,N),FLM(M,N) - integer - Flag arrays for 'Z' and 'M'
grid.
ZSUM(*) - complex - Packed CMPX array: harmonic
results for the tides specified
in
CTIDE
and,
in
addition,
the
first harmonic of the
first
tide
in
CTIDE.
More
about
ZSUM
below.
Size equal to (ntides
+1)*(number of Land + act.bound. nodes))
= (ntides +1)*IWDIM = (ntides +1)*NBUFF
where ntides = the
number of tides given in CTIDE.
NRSUM - integer - returned:
SOLVE-phase: Number of time steps used for ZSUM.
ZSUM must be divided by NRSUM/2. to yield ampli-
tudes in [m].
INIT-phases: Number of time steps to cover an integer
cycle of the basic tide (declared via Call INILTE).
ITEND - integer - SOLVE-phase: (Adjusted) time
step at end of integration.
INIT-D-phase: ... at time of dump.
INIT-0-phase: 0
In both cases:
Next time: suggested continuation at ITEnd + 1.
Call LTETIM (ITEnd+1, ITEnd+K*NCYC), where
NCYC <- NRSUM from the INIT-phase.
TGP(M,N,2) - real - Work array for tide potential, stepped in
time by
this routine.
EL(M,N,2),CU(),CV() - real - Work arrays for Finite
Difference Scheme:
Elevations, SE-, NE-currents.
ADUA(M,N), ADVA() - real - Work arrays to store advection
at interlace times.
EVWORK(4,IWDIM) - real - Work array for computation of
loading effects.
IWDIM >= Number of 'S'-cells.
SHOW(M,N) - real - 'M'-array, selectable grasol-show array
AUST(*) - real - Packed real
work array for Austausch coefficient.
Can be equivalenced with ZBUFF. Size >= IWDIM = NBUFF
TTEQ contains code for its own initialisation.
Before TTEQ can be called, preparatory calls are required
(code in otes01.f) in order to set model parameters
etc. TTEQ has two operating modes:
INIT (parameter preparation) and SOLVE.
INIT has two submodes:
INIT from scratch (INIT-0);
INIT from a dump (INIT-D).
During INIT-0 - and only there - the
time step length is determined.
INIT-D and INIT-0 return the tide cycle length and the previous
closing time step number (ITEnd) through the TTEQ call list
(variables NRSUM and IT).
SOLVE should continue at ITBeg := IT+1 and close
at ITEnd = IT+KCYC*NRSUM after INIT-D.
SOLVE should start at ITBeg = 0 and close at
KCYC*NRSUM after INIT-0.
Code is in otes12i.f
(alt 1) specify a measure for the subcriticality, a
factor on the critical time step. A subcritical step is shorter.
The closer the time step to criticality the more exact is the
solution (theoretically; this statement is only valid in the
deepest part of the model);
CALL INILTE
(0, Subcriticality_Factor, Basic_Tide_Symbol) ! for instance...
CALL INILTE
(0, 0.99, 'S2')
(alt 2) specify the number of time steps in one cycle of
the basic tide:
CALL INILTE
(N_steps, 0.0, Basic_Tide_Symbol)
(alt 3) a rounded alt. a fixed step length. In case
studies where complete harmonic cycles aren't an issue, the time
step can be rounded to integer seconds; or a fixed value can be
specified:
CALL TTEQ_ROUND_DT
(QRound_Dt, Fixed_Dt)
Qround_Dt .true. will take precedence, else Fixed_Dt
is accepted if > 0.
TTEQ differs from LTEQ on the part of the designation of
ITBegin and ITEnd. It is advantageous to use the S2 tide as
the basic tide, which determines the step length of the finite
difference scheme. The program can be made synchronous with a
UT-clock, thus generating output series for tide gauges and
CrustalDynamic Sites at exact hours.
Recipe: Run a first test (which you will abort)
with
DOUBLE PRECISION DT1, DT_LTE
...
CALL INILTE
(0, 0.999, 'S2')
CALL TTEQ
(...
DT1=DT_LTE ()
to obtain a near-critical time step, DT1. Abort the program,
and choose next time
CALL INILTE
(n, 0.0, 'S2')
where
n >~
IDINT(((12*3600)/DT1 + 1)/12)*12,
This gives a near critical time step which divides one hour integer.
However, the tide subjected to harmonic analysis
does not have to be the S2 tide. In that case, ITEnd =
IT+KCYC*NRSUM does not provide an integration interval that
covers complete tidal cycles, and the harmonic analysis result
would become perturbed. Therefore, use
CALL TTEQ_ADJT (.TRUE.)
to obtain a complete last cycle of the tide first stated in
the CTIDE string, so that its harmonic solution is as
accurate as possible.
The loading part requires a separate initiation (INIEVL_ETD).
The other packages engaged by TTEQ (like the tide generating
potential) allow/require parameter setting from the calling (the
main) program.
Index |
RGP |
QGP if (.true.) then ... |
IGP (no,
this is ISGN(index) in
otes18.f) |
|
1 |
Cut the phase
circle at this angle (degrees), used in graphics display and printed results of harmonic solutions |
Array selector for graphic trace 1) |
||
2 |
Scaling factor
for advection term; 1.0 means the
full effect. Default = 0.0 |
Harmonic
solutions are requested for Z-array |
Stop at this time step 2) | |
3 |
Effective
Coriolis is RGP(3)*FCORIO*DTN, 1.0 means the full effect. |
Harmonic
solutions are requested for M-arrays (mutually exlusive with QGP(2)) |
Upper-harmonic selector to show 2) | |
4 |
Scaling factor for advection term at coasts; a value less than -1.0 admits the open-sea parameter, RGP(2). Default = -999.0 | Harmonic
analysis is to include DC-level |
Revive / make GraSol prompt / at this time step 2) | |
5 |
Also analyse
the first upper harmonic |
Debug VPEL at this time step 2) 3) | ||
6 |
Compute
advection also at interlaced time steps |
Watchdog interval 2) | ||
7 |
Compute
advection also at passive boundaries |
Amount of fields to dump with OC %W 2) | ||
8 |
Compute austausch also at passive boundaries | |||
9 |
||||
10 |
Detect NaN's |
<TTEQ-->>> Trace 0: Fric_r
<TTEQ-->>> Trace 1: Cori_x 2: Cori_y 3: TGP_x 4: TGP_y
<TTEQ-->>> Trace 5: Adv_x 6: Adv_y 7: Eddy_x 8: Eddy_y
<TTEQ-->>> Trace 9: M_x 10: M_y 11: U 12: V
<TTEQ-->>> Trace 13: Fric_x 14: Fric_y 15: DM_x 16: DM_y
<TTEQ-->>> Trace 17: HrmAmp 18: HrmPha 19: n.u. 20: Depth
<TTEQ-->>> Trace 21: TGP 22: n.u. 23: M_x@.5 24: M_y@.5
tide
forcing
(otes17*.f)
tide gauge and crustal
loading
(oteu16*.f)
air pressure
forcing
(otes15*.f)
special areas (modified model
parameters) (oteu12.f)
user
interaction
(oteu18.f)
graphic
display
(otes18.f)
buoys
(otes19.f)
Several of these allow/require parameter-setting calls.
Execution
options:
Reset
ZSUM,
Graphics,
Write
state arrays
To be called before the iteration is started:
CALL LTEOPT (OPTION)
LTEOPT -
options:
OPTION - char*3 = 'rgw'
where
r
- 'Y' - reset ZSUM before LTEQ-time stepping,
'N' - don't ... '.' - unchanged. Default = 'N'.
g
-
'A'
'E'
'a'
or
'e' - graphic display of tide elevation on-line.
Capital letters for prompting
mode enable.
'A' 'P' 'a' or 'p' - graphic display of tide generating
potential.
Capital letters for prompting mode enable.
'N' - don't ... '.' - unchanged. Default = 'N'.
w
-
'Y'
-
save
state
arrays
on
file,
log.unit
2,
for later
resuming of iteration.
- 'O' - rewind the file before save.
- 'N' - don't save.
- '.' - unchanged. Default = 'N'.
Some parameters are stored in the dump; their values can
only be changed after the INIT-D calls and before the SOLVE call
to TTEQ.
(Mark = >D< )
Parameters which must be given before the SOLVE-call :
(Mark = >S<)
The friction parameters are not stored; thus CALL LTEFRI
must appear before SOLVE calls. Subsets of parameters can
be set by alternative calls.
CALL SETLTE (T_beg, T_end, FRIC, NF_cons, TF_relax,
NF_end, NRAMP,
I_mon, J_mon, OPTION)
LTETIM -
parameters:
>S<
T_beg, T_end - integer - Model start and end time;
preferably
T_end - T_beg. + 1 = K * (tide.period)/dt. C.f. above
"Start from an initial solution" how to obtain the
the integer value: (tide.period)/dt
CALL LTETIM (T_beg, T_end)
LTEFRI - parameters: Friction / damping and control: >S<
Run-in phase = damping. Uses parameters
FRIC(1), NF.cons, TF.relax, NF.end.
Physical friction model: FRIC(2..4);
dt = used time step [s], check protocol.
FRIC(1..4) - real, dimension=4. Values
must be >= 0 to be accepted.
Zero value switch the mechanism off.
FRIC(1) - Friction
coeff. for damping during start-up
dM/dt = p M abs(M)/Hmax. FRIC(1)= p dt = O(0.1)
FRIC(2) - Linear bottom
friction parameter.
dM/dt
=
-
r
M,
[r]
=
1/s.
Here
FRIC(2)
=
r dt, hence
FRIC(2) should be O(0.1)
FRIC(3) - Quadratic bottom
friction parameter.
dM/dt
=
-
q
M
abs(M)/H.
FRIC(3)=
q
dt,
e.g.
=
0.3
FRIC(4) - Eddy viscosity
parameter. Check the code in OTES12i.f
how eddy visc. is formulated (depth-dependent ?).
Reasonable values are between 1.e4 and 5.e5 m**2/s
dM/dt = + v Laplace M, FRIC(4) = v (!)
Feature is switched off if FRIC(4) < 1.e-4
NF_cons - integer - Time
step until which run-in damping is
kept constant.
TF_relax - real - Relaxation
time (model units of time) for
exponential decrease of FRIC(1).
NF_end - integer -
Time step after which FRIC(1) is 0.
CALL LTEFRI (FRIC, NF_cons,
TF_relax, NF_end)
LTERMP - parameter:
>S<
NRAMP -
integer - Duration of raised-cosine ramp. The driving
forces are turned on during the start-up phase using
a raised-cosine ramp. NRAMP is specified in model
dt-units. No default.
CALL LTERMP (NRAMP)
LTEMON - parameters:
>D<
I_mon, J_mon - integer - The position X and Y of a mesh
point at
which characteristic values will be printed during
time stepping. No defaults.
CALL LTEMON (I_mon, J_mon)
PARLTE - parameters
(p1,p2,p3,p4,Nonlin):
>D<
p1
- real - Hmin, the minimum depth for bathymetry. The
array H(i,j) will be adjusted. Default = 5.0 (meter).
p2
-
real
-
WDT_fric,
the
time
offset
inside
dt
at
which
the
friction terms are defined; counted from t+1 backward.
WDT_fric=0.0 <=> t+1,
WDT_fric=1.0 <=> t. Default = 1.0
which is also the "classical" definition.
p3
- real - G_fac, a factor multiplying gravity. It was
found
that
an
increase
of
g
->
1.1
*
g
improves
the
fit of the discrete dispersion relation w.r.t. the
continuous case. It's doubtful though. Default = 1.0
p4
- real - SLP = self loading parameter. Applied as
EL_eff = EL * (1-SLP). Default = 0.0
If a default value for p* is to be used, specify p* <=
-1.0
Nonlin - integer -
NONLIN-earities.
< -1 - default: shallow water
-1 - don't change
0 - linear
1 - shallow water (=default)
2 - advection
3 - 1 & 2
CALL PARLTE (Hmin, WDT_fric,
G_fac, SLP, NONLIN)
There is a character version for Nonlin:
CALL
PARLTE_NONLIN (string)
string - character*8 -
KEEP -
don't change the current setting
+S - shallow water
+AM - Advection (M grad M)/H
+AU - Advection (M grad U) (unavailable in this
version)
N_steps - integer -
Number of time steps per tidal cycle.
Default = 0, i.e. P.subcrit is used to determine the
time interval.
P_subcrit - dt = P * dt.crit is used;
dt will be further adjusted
downward such that the tidal cycle is divided into an
integer number of steps.
Default = 0.75
TIDE - char*2
- The tide that determines the fine-adjustment of
the time step.
CALL INILTE (N_steps, P_subcrit,
TIDE)
N.B.: INILTE resets the PARLTE - parameters.
General Parameters (special
extensions):
CALL SETLTE_QGP (i,qq)
CALL SETLTE_RGP (i,rr)
CALL SETLTE_IGP (i,kk) unused
in this version
where i has type integer, qq logical, rr real,
and kk integer.
Using the communication script OC %Z, a prompt will
appear where
these parameters can be altered.
Some SETLTE_*GP settings are ready to use:
______________________________________________________________
i Meaning of _QGP(i), qq
logical values
--------------------------------------------------------------
1 Use
a depth-dependent austausch coefficient
(qddaus in otes12h.f) Feature is presently
disabled
(commented out with 'ccc' ).
2 Accumulate harmonic from elevation field
3 Accumulate harmonic from current fields
4 Accumulate DC-level in
harmonic analysis
5 Accumulate upper harmonic of basic tide
Under time interlacing:
6 Include advection at
interstitial times
7 Include
advection at passive boundaries
8 Include austausch at
passive boundaries
______________________________________________________________
i Meaning of _RGP(i), floating-point
real values
--------------------------------------------------------------
1 phase cut (usually 0.,
could be 180.) for the harmonic
trace graphics showing the
phase field
2 factor on the
advection terms (should be 1.0)
3 effective Coriolis,
default = 1.0
______________________________________________________________
i Meaning of _IGP(i), integer values
--------------------------------------------------------------
unused
RTRLTE - parameters:
N_save - integer -
Resume with the N'th saved solution from file
on
log.unit
3.
If
the
file
contains
L
sets,
L
<
N,
the L'th will be taken.
N_cont - integer -
Number of time steps to continue. C.f. above
"RESUMING A PREVIOUS SOLUTION" for advice how to obtain
LTETIM parameters if an appropriate value is not known.
CALL RTRLTE (N_save, N_cont)
TTETEP -
parameter:
>?<
N_steps - integer - Update
interval (number of time steps) for the
tide effective potential. Linear interpolation between.
Default = 20
CALL TTETEP (N_steps)
LTETDS -
parameters:
>?<
N_steps - integer -
Interval between on-line display of elevation.
Default = 42
range -
real - The data range [m].
Default = 1.0
Inquiry:
= DT_LTE() - Real*8 entry DT_LTE()
returns the time step length [s]
CALL
EXTCTP
to extend common block space tide potential
CALL
EXTCTO
to extend common block space global load pot.
CALL
EXTCTA
to extend common block space active boundaries.
CALL
ETDSEL
to select partial tides for forcing
CALL ETD_NO_BODY_TIDE
CALL ETD_NO_LOAD_TIDE
CALL
ETD_ABZ_TIDE
(de-)select active boundary forcing
CALL
ETD_ABZ_Factor
to amplify active boundary tide
Tide forcing, parameter
setting (OTES161.f)
-------------------------------
CALL
ENABLE_PLAY_WITH_ETD to enable
code in subr. PLAY_WITH_ETD
Simulated air pressure forcing: (OTES15*.F)
-------------------------------
CALL
Pressure_Param
to define size and velocity of a model pressure system
CALL
Pressure_Stop
to stop simulation
CALL
EXTABP
to extend the buffer for act.boundary data.
To force
with actual met fields, use otemw1.f
Regional excitation:
(OTES17.F)
--------------------
CALL ETD_TGP_SLOPE (string) 'E:<four
parameters>'
for east-west geometry
'N:<four
parameters>'
for north-south "
'T:<three
parameters> [options]' for
timing, event ahead
'T!<two
parameters> [options]' for timing, launch event
now!
'.?'
inquire status
'RESET'
switch off
See details on parameters here.
The update interval for the TGP should be set at a small value;
without tides and loading, the computational burden is
negligible.
The namelist parameter in otemt1.f is IDTTEP , setting
the number
of diff-eq. time steps to lapse between calls to ETDCMP.
More on active boundaries: (OTES13.f)
--------------------------
CALL
FREEAB
to free the inner row of elevation boundary
CALL
ETD_ABZ_Step
to force model with unit step
CALL
ETD_ABZ_EAPR
to maintain inverse barometer at act.boundary.
Tide gauges (OTEU16.f)
-----------
CALL IUN_TIDE_GAUGE
CALL ADD_TIDE_GAUGE
CALL SAFE_TGG
CALL
IUN_TGP_SENSOR
to output time series of tide generating potential
CALL ADD_TGP_SENSOR
Crustal Dynamics Sites (Loading effects) (OTEU16.f)
----------------------------------------
Calls in that order:
CALL
ADD_EVL_SITE
add sites
CALL
IUN_EVLOAD
define output file unit
CALL
ISOFOR
define what boxes to be included in load scan
CALL
INIEVL_ETD
initialize load routines.
Buoys (OTES19.f)
-----
CALL
SET_BUOY
add buoys
CALL
IUN_BUOY
define output file
CALL SAFE_BUOY
CALL
DO_BUOY
activate time-stepping
Special_Areas (OTEU12.f; user interaction: OTEU18.f)
-------------
CALL AREA_NO_ADVECTION to avoid advection term in a limited area
CALL
SPEC_AREA
to define an area with alternate parameters
CALL
SPEC_AREA_PARAM
to set parameters
Use of Spec_Area parameters is flexible. Currently:
Parameter(1) factors
the bottom friction terms, P(2) the eddy term, P(3) is a
minimum depth.
Graphic display
---------------
CALL
GRASOL_DS
to display double size color pixels
CALL
GRASOL_SS
to display single size
The operator may interact with TTEQ. Notice: may. A good,
stable solution will rather be one that thrived without the
intervening hand of a person. However, some features have been
included which allow changing of parameters as the program steps
along.
There are two routes of intervention, from a console window
(this chapter), and the Graphic Display Prompter
at the graphic screen.
The graphic screens, especially the Trace
feature, allows mainly logistic interaction. For example, an
Active-Boundary step experiment can be initiated from the
graphics window.
When
numeric values are expected and you prefer a default value, hit
the Escape-key. The Return key will keep you in a loop. (The functions used are int_prompt_s18
and real_prompt_s18
.)
On the PC, the program scans the keyboard directly. On the UNIX
platform, however, the program reads a little communication file.
The user writes characters into this file using the OC command.
Use OC from another
terminal window or run TTEQ-SOLVE in the background; redirect
output for convenience.
Example OC ^M : do spell out the two
characters, "Caret M" instead of the composed key press CTRL+M on
the PC.
Since xterm under Cygwin on a reduced keyboard (laptop) frequently
loses the delayed-compose key `^´, a `%´
or a `\´ (backslash) can be used instead.
Unfortunately, the OC parameter must be
put inside quotation marks, e.g. OC '\E'
Code
^@
The date and time of
the next step are written to the protocol.
^1..^9 A
debug feature: prints 1 to 9 reports of the iteration of
currents.
Shows
the interlaced step (marked p- U- V-) and the ordinary (p+ U+
V+).
To understand what's
printed, check with
fgrep CDEBUG otes12i.f
^H
The table header is
printed on the protocol
^M
The program waits for entries that modify the Spec_Area. C.f.
oteu12.f and oteu18.f
^D
The depth array H(m,n)
can be updated.
^E Prompt
after the next display of the elevation array
^F The friction parameters FRIC(1..4) can be adjusted.
^V
The system asks for new
monitor node position (enter at text prompter
on
graphic screen).
^W
^X "when?" - the ending step will be
printed on the protocol and the
grasol
status line.
^X: Grasol will prompt (cannot display the status
then). Taken out of service
^W Write the three
arrays to file (E -> iun_save , Mu & Mv -> iun_save+1)
iun_save
is set with call tteq_save2unit(i) .
Default=91
The
arrays can be plotted using elplot
and uvplot
The number of saving instances is 1
by default. It can be modified at the display prompter
using c
7 #nsave
^S
The program stops after
writing the dump file.
^Z
Some general purpose
parameters.
Actual
parameters will be printed in the log-file.
New
parameters can be entered at the prompter in the graphic window
E.g.
parameter 1 means the phase cut parameter (phase is shown in
graphic trace of
harmonic
solutions.
Or to re-enact advection at
passive boundaries, enter Q 7 T (sets
QGP(7)=.true.).
See
otes12i.f at "^Z - special purpose"
^Q
The program stops immediately.
Other user interactions concern screen graphics and tracing.
^A Trace of active boundary data is initiated for the next time step.
^O Trace of etd-o-o-area data is initiated for the next time step.
Graphic displays can be modified in a number of ways. Irregardless how OPT(2:2) was declared at call time...
^G
The elevation array
will be displayed and prompt after display
will be
reactivated.
^P
The tide generating potential
will be shown and prompt after
display
will be reactivated.
^T
The graphic trace is
switched on and prompting after display
will be
reactivated. Time step for next graphics is set to 1.
^U
Like ^T, time step is unchanged, however.
A nice feature is that you can watch the harmonic solution as
they (hopefully) converge. Do the following:
From the outside, OC ^T
At the graphic prompter, enter first c
and 18 to select phase, then I
and e.g. 100 for the time increment to redraw,
finally G for go,
then watch.
If you want to show another constituent (provided it is enabled
through calling parameter CTIDE), do
^T
, enter # at the graphic prompter (not mentioned in the
menu) and type 1 for the second tide in
progress.
More details in the next chapter.
New features have been included in the OC
mechanism:
Control of model excitation
of the ETD_TGP_SLOPE kind.
Function UBR_FF (oteu18.f) will
interpret the 'c <command-string>' argument
and call ETD_TGP_SLOPE(string).
With blankspace between command symbol and
argument, the parameter to OC must be enclosed in
quotes.
Underlining is supposed to emphasize the
fact (we might change OC for more kindness to the user).
OC '@S <command-string>'
e.g. for an est-west slope centred on grid
index 145, height 1.0, half-wave length 350 units, tapered at
twice the length,
acting with a period of 30 hours, for the next
30 hours ahead (half-period but sine-squared!)
OC '@S E:1.,145.,350.,2.'
OC '@S T!30.,30.'
An aid for parameter specification is here: http://holt.oso.chalmers.se/hgs/OTEQ/etd_tgp_slope.nb
(Mathematica notebook; see png-image
(prefer to open it in a new tab/window)
OC '@E <file-unit,modulus>'(both must be given; a file must have been opened in the file-open block)
OC '@F <n>' - sets subtype n (meaningless now that we've abolished VPEL)In GraSol, the corresponding command keys are F, T and V and their lower-case versions.
OC @f - recalls subtype scanning.
OC '@T <flags>' - sets a new target string. If non-nil, sets it permanently (calls ISOFOR).
If nil, resumes with the flag set aside (default or a priori set with ISIFOR).
OC '@t <flags>' - sets a new target string for only the next instance of GraSol.
OC @RSet the monitoring node in TTEQ
OC '@V <i>,<j>'Set the Watchdog's barking threshold v (elevation)
OC '@B <v>'
In order to abort integration if the system turns out unstable,
this feature surveys the solutions and warns (protocol), reduces
the repeat interval of graphics to one step. When a severity
threshold is exceeded, it will stop the process. Code is in
oteu12.f . Watchdog options, CALL...
WATCHDOG_CLIP(xl) - essentially an illegal and worthless action: clips the array at these limits (-xl .. +xl)
WATCHDOG_MOD(n) - how often the array is observed (n = modulus of time step number; if zero, analyse)
WATCHDOG_BITE(xx) - stop when absolute value of any node value exceeds xx.
WATCHDOG_BARK(x) - warn when absolute value of any node value exceeds x.
WATCHDOG_POINT(q1,q2) - if q1 is .true., set immediate reactivation of graphics according to q2. Activated with "bark".
WATCHDOG_STOP(q) - if q is .true., the dog stops execution.
WATCHDOG_WHERE(i,j,q) - the node that caused the dog to bark. On return, q is .true. if the node indexes are non-zero.
Table
GRAPHIC TRACE -
Component numbers and the variable that is traced
To select the array, press the f or c
key at the graphic prompter and enter a number:
0 | Friction/damping scaling factor |
1 2 | Coriolis terms in U and V, respectively |
3 4 | Gradients of tide generating potentials along x and y directions, respectively |
5 6 | Advection terms along x and y directions, respectively |
7 8 | Eddy viscosity terms along x and y directions, respectively |
9 10 | Mass transport vector M = {U,V} |
11 12 | Current vector M/h |
13 14 | Friction force along x and y directions, respectively |
15 16 | dM/dt |
17 18 |
Harmonic solution, amplitude (17) or
phase (18). Select a specific constituent with the # key |
20 |
HV, the sea depth,
augmented with elevation under nonlin |
21 |
(not finalised yet;
called at the wrong place) Show the tide generating
potential (not the gradients). Problem is that the flag
array used is type M, the TGP array is type Z. |
n.u. |
|
23 24 |
Mass
transport vector at the interlaced steps |
| Return
to Displays | Return
to Displays grasol prompter |
The display and prompting occurs in subroutine GRASOL (/home/hgs/Oload/p/gra/otes18.f)
<CR> Pressing the Carriage-Return key satisfies the GDP. TTEQ will continue.
I Press "I" (Increment option) and define the number of time steps until the next display.
G
T
"Go" and "Text screen" modes are toggled modes (key "G"
or "T").
Go means that
the prompter is skipped. (Regain control by e.g.
sending OC ^G
from the outside.)
Text
screen
should
be
selected
if
graphic
mode
is
undesirable between consecutive maps.
S
Stop mode (S-option) implies skipping the display
routine; you can re-enable
the display mode by sending OC ^E, OC ^P, OC ^T or OC ^G, depending on
what you want to see.
Pressing "S" passes control to TTEQ.
d Dump the elevation array
to real-binary file. The system prompts for a file name.
Enter a file name containing
one `#´ character, and the dump will recur with
every array shown.
The `#´
character will be replaced by the step number.
(careful! Request only one
array variable for show!)
Enter a `.´
character to stop dumping.
r
The data range can be changed: Press "r" and enter a
new value. The data range
may
optionally
be
clipped
against
the
color
range;
this
option
is always prompted for
before you are asked to enter the range value(s). Press "R"
and redefine the
data
range
to
be
one-sided,
two-sided
or
general
(-1,
0,
+1). In the second case you need
to
enter
two
values,
for
the
lower
and the upper range, respectively.
Overrange colors are difficult to interpret. Lower-than-bottom is
shown by
mixing
black
and
a
base
color,
higher-than-top
by
mixing
base
colors that
are
two,
three,
...
intervals
apart.
The
color
numbers
are
derived with
the MOD function; thus, vastly-out-of-range data will still be
colored
quite similar to inside-the-range data, and is hard to discern.
After changing the data range, the map is
redrawn.
l h Press
l
to get low resolution, h to get
double size pixels.
1
2
Synonymes: 1
and 2. Larger numbers will draw larger cells;
maximum size is 7.
L H
Press L or H
to cause the screen to be refreshed while changing resolution.
a A Press a to redraw, A to refresh the screen.
V
Press V
to redefine the target symbols for display.
^C Pressing ^C at the GDP stops TTEQ; the routine requests confirmation before it will dive.
c f Press
`c´ to get prompted for one of 10 integer
parameters to set.
(Calling program uses the ISGN_GRASOL function to retrieve the
actual setting)
Press `f´ to set the first
parameter right-away. Parameter nr. ....
1 - ... select a component to show; cf Table GRAPHIC TRACE.
After `c´, entering ...
2 - to set the terminating time step of the the on-going
TTEQ cycle. The actual time step is shown in the purple status
bar.
3 ... unused.
4
- to revive the display at the time step specified at the
next prompt.
Selecting 17 or 18, a tide harmonic solution in the making, will
re-activate the graphic screen at every zero-crossing
of the imaginary part of the Fourier factor.
#
Press "#" after selection of
component 17 or 18 to request view of a specific harmonic
solution. You can
watch
the
convergence
of
the
solution.
In
the purple status bar you can check the exp(wt); if it is (1,0),
a
harmonic
cycle
for
the
wave
in
question is complete and the solution relatively well-determined.
Enter 1 for
CTIDE(1:2), 2 for CTIDE(4:5), ntides+1
for the double-frequency nonlinear tide belonging to 1.
If
you
e.g.
asked
for
two
harmonic
solutions, enter 3 and you'll see the
double-frequency solution of
CTIDE(1:2) (e.g. M4 if CTIDE = 'M2 O1 ') .
@
Press "@" to get
prompted for a halting time. At the halting time the graphic
display will be
revived and stay in prompt mode (ithalt_grasol()
function)
/
Plan an Active Boundary Step
experiment. Respond to the following prompts:
Start
and
end
of step: How many time steps ahead (end: default=indefinite)
Step
height
(default:
1.0) Press ESC for defaulting.
^S
Press "CTRL-S" to set
up a SPLASH test. System
prompts for location, strength, time and duration
Start from a zero state:
using SETLTE common using LTE***(1) Read arrays H, FLZ, FLM
(3) CALL SETLTE (0,-1, CALL LTETIM (0,-1)(4) CALL PARLTE (p1,p2,p3,p4,q1) optional
FRIC,NF_cons,TF_relax,NF_end, CALL LTEFRI (Fric,NF_cons,TF_relax,NF_end)
NRAMP, CALL LTERMP (NRAMP)
Imon,Jmon, CALL LTEMON (Imon,Jmon)
OPTION) CALL LTEOPT (OPTION)
(8)
ITBegin = 0
ITEnd =
K*NRSUM
! e.g. K = 6
CALL LTETIM (ITBegin, ITEnd) ! SOLVE call
CALL TTEQ (...)
______________________________________________________________________
Resuming a previous solution at t = T :
(1) Read arrays ZOTEP, H, FLZ, FLM
(2) CALL RTRLTE (N.save, NT.cont) ! INIT-D calls
CALL LTETIM
(0,-1)
!
CALL TTEQ
(...,IT,NRSUM,...) !
(3) ITBegin = IT+1
ITEnd =
IT+K*NRSUM
! e.g. K = 6
(4) CALL LTEFRI (...)
and, optionally, other LTE*** routines,
incl. PARLTE
(5) CALL LTETIM (ITBegin, ITEnd) ! SOLVE
call
CALL TTEQ (...)
______________________________________________________________________
Printed at every semi-cycle of the leading harmonic, t being the number of steps since the epoch (which may be large if a late start time has been specified).
<TTEQ-->>> Print every M2 semicycle: Elevation at test point ( 69,249), in packed array 13808 <TTEQ-->>> t = nnnnnn:: Elev. ....Cx.harm.sum... Harm.amp RMS RMS-harm.amp SNR(dB) DC-lvl. Clock ZMAE IQ IterFr <TTEQ-->>> <TTEQ-->>> t = 906868:: -0.055 -0.019 0.095 0.09660 0.14642 4.98E-02 5.8 -4.740E-02 18:46:20 TFFF FT 1 <TTEQ-->>> t = 906869:: -0.055 -0.019 0.095 0.09651 0.14637 4.99E-02 5.7 -4.740E-02 18:46:20 TFFF FT 0 <TTEQ-->>> t = 907769:: 0.014 -0.029 0.068 0.07431 0.10036 2.60E-02 9.1< -1.170E-02 19:40:49 TFFF FT 1 |
where the emphasized symbols designate:
Z - QABZ = excitation by elevations at active boundaries
M - QABM = excitation by currents " " "
A - QADVEC = application of advection term
E - QEDDY = application of momentum Austausch termI - QINTRMST = auxiliary current arrays are stepped at interstitial times
Q - QRIOF = quadratic bottom friction is applied (during run-in phase or beyond)IterFr = the maximum number of iterations of friction since the last message.
< after SNR: = appears at a complete harmonic cycle of the leading tide (reliable harmonic solution)
.bye