MODEL PREPARATION PHASE 2
Compute ocean tide self-attraction and loading; retrieve tide data on active boundaries.
Keywords: OTSAL, Tide eff.potential, Active boundaries, Global ocean tide model = External Model processing.
In order to excite an ocean tide model, the tide effective potential must be computed. Also, active boundary data is usually required. This document presents the applicable routines.
Main program:
OTEQ/PROG/PREP/otem92.f
Instruction file input described below.
Aux. program OTEM92U.f recommended if the model geometry is to be updated
(change a few flags) and rerunning of OTEM92 would be too costly.
Doc.: c.f. OTEM92U.f
Prerequisits:
Area, 'Z'-flags and active boundary locations must be defined (from prep step 1).
The output (files 44 and 52) can be passed to -> otem16.f -> otemt1.f to execute TTEQ
or to otem01.f / otem02.f to execute LTEQDefining terms:
External model:
The data required to support the regional tide model is temporarily stored in named common blocks
/CCTMP/ and /CCTMP.
The original data is usually given on a spherical 1 by 1 degree grid.
O_o_area data:
"Out-of-(model)-area", a sea area inside which the tide is not solved. The associated tide is usually interpolated from the External model and held in a named common block
/COZ/
Purpose: Loading effects; validating the quality of the solution across open boundaries; supply open boundary data.
The active boundaries are part of the O_o_area, thus this data is absolutely needed at the solution stage of the tide model. The flag arrays contain storage reference numbers to /COZ/ (so-called Resolved flags).
Unresolved flags:
100,000 (O_o_area), 200,000 + pass.bound.cond.# on active boundaries.
Resolved flags:
(-1)*stor.ref.# (O_o_area)
200,000-stor.ref.# (active boundary)
Active boundaries:
Open sea connections to the world ocean. Elevation values on these boundaries are taken from external models. TTEQ accepts only elevation data. LTEQ can alternately accept currents. These boundaries provide an important driving term for the regional model. The data must be accurate.
The location of the boudaries are stored in Common
/CABOUN/
The data is part of the O_o_area information.
Preparation phase 2 tasks:
All phase-2 actions, i.e. those after having obtained the flag and bathymetry arrays, are contained in main program otem92.f. If a single-partial-tide model is to be solved, otem02 can be run after
otem92.
A partial tide model with an array of tide waves (an explicitly time-dependent model) requires third preparation phase, otem16. Before that, phase 2 must have been carried out for a set of basic tide constituents, usually
the eleven tides of Schwiderski. OTET.doc gives more information.
(1) Adding external tides. Luni-solar and solid earth tides
CALL SETZ0 (z...)
CALL COMBBT (z,..,'+') to obtain LS + SE tides
or
CALL OTEPRC (z,'0',z,z,...,'+')
or
CALL OTEPRC (z1,'>',z1,z2,...,'+') to add LS + SE tides
(2) Computing global ocean loading tides, effect on the model area.
Purpose of otem92.f
otem92 calls AGOTEP (otes92*.f) to compute the global effects. It calls
OOTEP (otes91*.f) to compute the effects of the sea zone outside the
model area but still within the regional, plain grid. Body tides can
optionally be added.
(2u) Recompute (2) for a slightly changed grid.
Use OTEM92u.f
If the Sea area of the model is increased due to an update of flags,
tide potential information is missing there. Rerun of OTEM92, however,
is costly. OTEM92u provides an entry for grid changes and recomputes
the potential at selected / updated places.
Introduce "Update-Sea" flags, value = 1001, in the 'Z'-grid flag array
to change Land to Sea. Introduce Passive boundary flags manually to
obtain a combatible array of 'M'-flags.
Places where Land nodes are to be injected require removal of tide
potential data from Packed Arrays only. Such situations are most easily
handled using the INCLUDE MYPROC-feature of OTEMT1.f (introduce Update-
Land flags, value = 1000, in the 'Z'-grid flag array and change 'M'-flags
accordingly).
(3) Retrieving tide elevation from a global ocean tide model.
Substitute
tides along an active boundary. Keyword: EM = External model
Use of otem92.f
Subroutines used are found in otes51*.f
PREM or PREMS to outline the retrieval area = o_o_area + grace margin
on the spherical grid of the global tide model.
REM to read the global tide data.
ITOZ to project (interpolate) the data on the plain grid's out-of-
area and active boundaries
(otes31I.f and otes31i2.f).
Interpolation procedures are found in otes312t.f and otes315.f
The global loading effect on the model area includes the area outside the model area (the o_o_area) but still within the regional, plane grid.
otem92 fills the o_o_area (at flags 'O' and 'A'), outputs this data with the 'F' (full) option, and continues to compute the loading effect of the 'O'-flagged cells.
Additional utilities:
MOVEMZ can be used to project all external model data into the
regional grid complex array, useful for plots and comparisons.
(otes52.f) otem51.f contains main program code.
MOVOZZ can be used to move o_o_area data into a complex array.
(oteu41.f)
Recent addition (May/June 1999):
REM (otes51lepr.f) accepts LeProvost and TPXO 1/4-degree models and inverts north-south scanning direction for faster file reading.
(otes51.f reads LeProvost north-to-south, which is opposite to the file's direction and therefore quite slow.)
(4) Ocean tide self-effects of the modelled tide:
Subroutine WOTSAL (otes61.f)
This routine is preferably called between successive stages of ocean tide model time stepping, after a reliable harmonic solution has been obtained.
WOTSAL needs initialisation: Loading Green's function's wave number transform, WNT, (GETGSP in oteu51.f). C.f. how otem02 calls GETGSP / WOTSAL.
Compute the WNT of a Green's function: Use otem67.f
Program otem64.f compares WOTSAL with the (more exact) method of explicit convolution (Subroutine IOTSAL, otes21.f).
(5) Retrieve global ocean current data for model excitation along active boundaries.
PC-programs: No current data presently existing. Computation of currents
from elevation (ABMFZ) is inaccurate and not recommended. UPDAB can
be used to supply current data "manually". Observe that the current
vectors are rotated (I have forgotten whether the program turns them
after UPDAB input; in this case, the user supplies East / North currents)
______________________________________________________________________________
otem92.f Operation instructions
Exec:
otem92 @ subdir/otem92.ins
______________________________________________________________________________
Instruction file otem92.ins:
(1) Namelist &PARAM input:
Parameter type meaning [default]
nlat i latitude rings to read. Only needed in the
c case of Schwiderski [168]
otm c ocean tide model ['Schwiderski]']
grace(4) i margin for retrieval of SAL, E N W S [4*4]
graceo(4) i margin for retrieval of o-o-area, E N W S [4*4]
c Units: external model grid units
global l .true.: do global ocean tides [.true.]
qdo_global_load l .true.: ... their loading effects [.true.]
c (if .false., PREMS is at least called
c to prepare global tide retrieval)
test l .true.: test case: Unity load at ... [.false.]
itest,jtest ! ... array position.
c
gfn c Green's fct. file name ['~/mc00ebgc']
ncomp c component, ['OTEP']
target c target flags ['SAa]']
qentire_area l avoid global loads in entire model area [.false.]
qload_all l loading inside model area and global [.false.]
ooarea l .true.: do "O"ut-of-area tides [.true.]
c = fill and output OOArea-buffer;
c resolve flags...
itoz_comp c 'Z' at 'O' and 'A'
c 'z' only at 'A', and ... ['Z']
itoz_upd_u i if =/= 4, read a file with update [4]
c instructions. Rewind if ...
qrwd_itoz_upd_u l .true. [.false.]
qtrc_itoz l .true.: trace in ITOZ, values on
c active bound. only, and only when
c the first model is processed.
c Further models: specify "TIZ+" on
c the model input line [.false.]
c
qabound_u2l l .true.: Change unresolved active boundary
c cell status to Land
c Use this option to bypass the test on succesful
c retrieval of active boundary information if there
c are no critical cases expected. An uncritical
c case is when an active boundary extends too
c far into land. A critical case would be if
c no value from global tide model can be found
c for a surely sea-flagged cell.
c (First use in BALTIC/ ) [.false.]
c
ooa_load l .true.: do loading eff on model area
c due to ooarea tides. [.true.]
qprflm l .true.: print flag array 'Z'. [.true.]
iamp i amplitude options for printer plot of
c active boundary data. [4*1,4*3,2*5,10*5]
packed_output l .true.: use Packed_Outzm for potential [.true.]
add_body_tide l .true.: add body tide to potential [.false.]
interpol_window(4) i corners of window for interpolation
c monitor. [1,madim,1,nadim]
flags_to_raw l if flag array on unit 31 is
c storage-resolved. [.false.]
iup i protocol unit (6 screen, 7 file, -1 none) [7]
iu_gself_in i input gself table [54]
iu_gself_out i output gself table [55]
c
q_display l the external model retrieval [.false.]
palfile c palette file and ['standard.pal']
npal i record number [99]
c
q_otemon l Monitor inside OOTEP with write_string [.false.]
iup_movemz l Monitor MOVEMZ to screen or, if 6, not [6]
gi_eps,gi_sigma,gi_weightc,gi_weighth,gi_neighbour, gi_quiet
Interpolation parameters = use internal defaults:
data gi_eps,gi_sigma,gi_weightc,gi_weighth/8*-9./
&, gi_neighbour/2*-9/, gi_quiet/2*.true./
&, gi_wu/6*-9./
gi_*(2) GI5x5 - interpolation parameters;
gi_*(1) for call from MOVEMZ
gi_*(2) ITOZ
Weightc = weight for centre cell w.r.t. 1.0
Weighth < 1e-10 switches hydrodyn. constraint off.
" > 1e-10 is the weight for the hydrodyn constr.
0.001 is a good value
C.f. math/afor/p/gi5x5.f for more details.
They are passed through common /cmy5x5/ and put into effect
when subroutine MY5x5 (my5x5.f) is called.
END NAMELIST &PARAM
______________________________________________________________________________
(2) File open block:
Unit Format I/O Data
07 ASCII O A printable file, protocol output.
21 ASCII I Update data for ITOZ (optional)
22 ASCII I Update data for REM (optional)
31 BIN I 'Z'-flags and AREA, input
34 BIN I ABOUND input (under option ooarea)
54 BIN I In-box self-loading factors input (optional)
55 BIN O In-box self-loading factors output (optional)
64 BIN I replaces 54 under option test
65 BIN O " 55 " " "
41 BIN O 'Z'-flags and area, output, now with storage references for
active boundaries and ooarea resolved.
42 BIN O CMPX array, global loading potential, packed or unpacked output.
44 BIN O OOAREA tide data, output (type=OUTOZ. Under option ooarea).
29 BIN O OOAREA moved with MOVOZZ_T and written with OUTZM
52 BIN O CMPX array, global + ooarea loading potential, packed or unpacked output.
_________________________________________________________________________________
(3) 'Keep_global_ocean' data:
v---- pos.1
N N lines of data following:
X_SW Y_SW X_NE Y_NE Exclude this area from the OOAREA, treat it global.
_________________________________________________________________________________
(4) Process a set of tides:
Otide-symbol*4 Tide-symbol*2 <ocean_model_path>] <UPD: options & other commands>
If the data line becomes too long,
Otide-symbol*4 Tide-symbol*2 <ocean_model_path> ///
<UPD options & other commands>
Example:
v---- pos.9
M2 M2 tide-models/netCDF/TPXO.7.2] OTM:TPXO.7.2 GIN:54 GOUT:-1 UPD:YYY
S2 S2 GIN:54 GOUT:-1
K1 K1
Fortran:
READ (4,Format) otide, tide, new_path, itoz_upd
if (index(itoz_upd,' ///').gt.0) read (4,'(a)') itoz_upd
Format is (a4,1x,a2,1x,a32,T1,a)
Path must start in column 9 and must be right-delimited by `]´ .
`UPD:´ and other commands may be coded anywhere on the line or all of them must be given on the following line.
Then, the Path line must contain ` ///´ .
Commands:
---------
OTM:model] model - char*16 - Model code, right-delimited by "]"
'SCHWIDERSKI]' 'SEILER]' 'FLATHER]'
'LEPROVOST]'
UPD:opt opt - char*3 - usually 'YYY'. Signals that a block of
boundary update information will be
included after this line.
OBS! at the moment this command is unsure. There is the alternative
to input update information from the file, unit Itoz_Upd_U (namelist)
Reading from the ins-file has been jumbling up the tide reading commands.
FU:[-]#un[ openfs-string]]
#un - integer - file unit number. The negative number indicates
that the file needs to be closed.
openfs-string - char*64 - A string to be submitted to OPENFS. "]" is the
right delimiter.
GIN:#un #un - integer - file unit number for GSELF input.
GOUT:#un #un - integer - file unit number for GSELF output.
Example 1:
----------
M2 M2 Bigdata/Otide/LEPR/lepr]
Mf Mf Bigdata/Otide/schw]
Mm Mm UPD:YYY
3
5,-1,(0.01,80.0) :R AP
6,-1,(1.0,-5.) :* AP
7,-1,(0.01,0.001) :+
Ssa Ss Bigdata/Otide/eqlt]
**
Explanations:
Line
1 - path, default UPD-option: no update
2 - path changed
3 - UPD-option: First "Y" = accept update ("I" for ignore) (*)
Second "Y" = monitor interpolation
Third "Y" = display profile
4 - Three data lines to read because of UPD option(1:1)
5 - At stor.ref 5, (amplitude,phase) due to "AP", ":R" indicates replace
6 - ":*" for multiply with (amplitude,phase)
7 - ":+" for add (real,imag) as "AP" is missing.
8 - path changed
9 - stop
Example 3 below will show an example where the same update rule
applies to a sequence of tides.
Example 2:
----------
! Comments in this example start after '!'. Text without '!' is original
! control data
¶m
nlat=168
global=.true.
ooarea=.true.
ooa_load=.true.
itoz_comp='Z'
grace=4,4,4,4
graceo=5,5,5,5
qprflm=.false.
interpol_window=1,64,1,48
gi_weighth=1.e-12,1.e-12
iamp=1,3,5,5,5,15*10
otm='LeProvost]'
&end
7 B MDL22h/otem92.prt
31 ^ MDL22h/FLZ.DAT ! 'Z'-flags unresolved
41 < MDL22h/FLZU.DAT ! 'Z'-flags out, resolved
34 ^ MDL22h/ABOUND.DAT ! Active boundaries
54 ^ MDL22/SOSGSELF.DAT ! GSELF input LEPR
56 < MDL22/SCHWGSELF.DAT ! GSELF input/output SCHW
52 < MDL22h/ATOTEP.DAT ! Result global + ooarea loading
44 < MDL22h/OOTIDES.DAT ! Result O-O-Area tides
29 < MDL22h/MOVOZ.DAT
Q
0 ! No OOArea global
M2 M2 Bigdata/Otide/lepr] GIN:54 GOUT:-1
S2 S2
K1 K1
O1 O1
N1 N2
P1 P1
K2 K2
Q1 Q1
Mf Mf Bigdata/Otide/schw] OTM:Schwiderski] GOUT:56
Mm Mm GIN:56 GOUT:-1
**
Explanations:
We already have a self-effect file SOSGSELF for LeProvost.
Mf is requested from Schwiderski. We cannot use the same SOSGSELF.
The file on GOUT is written under Mf and read under Mm.
The program will find out by itself that SOSGSELF.DAT is incompatible.
Example 3
---------
¶m
nlat=721 ! Perhaps needed for the TPXO.7.2
global=.true.
ooarea=.true.
ooa_load=.true.
itoz_comp='Z'
grace=6,4,4,4
graceo=7,5,5,5
qprflm=.false.
gi_weighth=1.e-12,1.e-12
iamp=1,3,5,5,5,15*10
otm='TPXO.7.2'
q_display=.false.
qtrc_itoz=.true.
itoz_upd_u=21 ! We'll provide update instructions
qrwd_itoz_upd_u=.true. ! the same for each tide
&end
7 B KATT/otem92a.prl ! protocol output
21 B KATT/itoz-upd.dat
31 ^ KATT/FLZ.DAT ! 'Z'-flags unresolved
41 < KATT/FLZU.DAT ! 'Z'-flags out, resolved
34 ^ KATT/ABOUND.DAT ! Active boundaries
55 < KATT/SOSGSELF.DAT ! GSELF output
52 < KATT/ATOTEP.DAT ! Result global + ooarea loading
44 < KATT/OOTIDES.DAT ! Result O-O-Area tides
29 < KATT/MOVOZ.DAT
Q
0 No OOArea global
M2 M2 Otide/netCDF/TPXO.7.2] OTM:TPXO.7.2 GOUT:55 UPD:YYY
S2 S2 GIN:55 GOUT:-1 UPD:YNN
K1 K1 UPD:YNN
O1 O1 UPD:YNN
N2 N2 UPD:YNN
P1 P1 UPD:YNN
K2 K2 UPD:YNN
Q1 Q1 UPD:YNN
Mf Mf UPD:YNN
Mm Mm UPD:YNN
Ssa Ss UPD:YNN
**
GIN: and GOUT: We generate a GSELF file for TPXO.7 and re-use it throughout.
The itoz-update file is here:
15
10 109 = 10 117
10 110 = 10 117
10 111 = 10 117
10 112 = 10 117
10 113 = 10 117
10 114 = 10 117
10 115 = 10 117
10 116 = 10 117
9 110 = 9 117
9 111 = 9 117
9 112 = 9 117
9 113 = 9 117
9 114 = 9 117
9 115 = 9 117
9 116 = 9 117
This simply copies two legal boundary values to places where
the external model rendered dry nodes.
Example 4
---------
Using FES2004 for Active boundaries and global loading
¶m
nlat=1441
global=.true.
ooarea=.true.
ooa_load=.true.
itoz_comp='Z'
grace=6,4,4,4
graceo=7,5,5,5
qprflm=.false.
gi_weighth=1.e-12,1.e-12
iamp=1,3,5,5,5,15*10
otm='FES2004]'
q_display=.false.
qtrc_itoz=.true.
itoz_upd_u=21
qrwd_itoz_upd_u=.true.
&end
7 B KATT/otem92f.prl protocol output
21 B KATT/itoz-upd.dat
31 ^ KATT/FLZ.DAT 'Z'-flags unresolved
41 < KATT/FLZUf.DAT 'Z'-flags out, resolved
34 ^ KATT/ABOUND.DAT Active boundaries
55 < KATT/SOSGSELFf.DAT GSELF output
52 < KATT/ATOTEPf.DAT Result global + ooarea loading
44 < KATT/OOTIDESf.DAT Result O-O-Area tides
29 < KATT/MOVOZf.DAT
Q
0 No OOArea global
M2 M2 Otide/netCDF/FES2004] OTM:FES2004] GOUT:55 UPD:YYY
S2 S2 GIN:55 GOUT:-1 UPD:YNN
2N2 2N UPD:YNN
Msqm MQ UPD:YNN
Mf MF UPD:YNN
Mm MM UPD:YNN
Mtm MT UPD:YNN
Ssa SS UPD:YNN
K1 K1 UPD:YNN
K2 K2 UPD:YNN
M4 M4 UPD:YNN
N2 N2 UPD:YNN
O1 O1 UPD:YNN
P1 P1 UPD:YNN
Q1 Q1 UPD:YNN
S1 S1 UPD:YNN
**
______________________________________________________________________________
Example 5
Remedy a problem when ITOZ cannot find sea-cells in the External Model to fill an active boundary
Study the log file (STDOUT). otem92 will stop prematurely when active boundary cells cannot be filled.
(The log file might not be sufficiently outspoken to easily identify where the trouble arises.)
In this example, the incriminating place has been marked (manually) with red %-signs.
<REM--->>> i j iz ->
<REM--->>> 30 31 1 -> <-
<REM--->>> 30 30 33 -> <-
<REM--->>> 30 29 65 -> <-
<REM--->>> 30 28 97 -> <-
<REM--->>> 30 27 129 -> <-
<REM--->>> 30 26 161 -> <-
<REM--->>> 30 25 193 -> <-
<REM--->>> 30 24 225 -> Q <-
<REM--->>> 30 23 257 -> ST <-
<REM--->>> 30 22 289 -> T TTTT <-
<REM--->>> 30 21 321 -> TTTTTTTTT <-
<REM--->>> 30 20 353 -> UTTTTTTTTT <-
<REM--->>> 30 19 385 -> UUUUUTTTTTTTT <-
<REM--->>> 30 18 417 -> VVUUUUUUUTTTTTTTU <-
<REM--->>> 30 17 449 ->WVVVUUUUUUUTTTTTUV <-
<REM--->>> 30 16 481 ->VVUUUUUUUU TTVXY <-
<REM--->>> 30 15 513 ->UUUUUUUUU X Y[\\ <-
<REM--->>> 30 14 545 ->TTTT%% \\]]^_`_ <-
<REM--->>> 30 13 577 ->SSRR%% ]]^_`dc`^ <-
<REM--->>> 30 12 609 ->RRQ _aeea_^] <-
<REM--->>> 30 11 641 ->QQP Y ]_cd`_]] <-
<REM--->>> 30 10 673 ->PPO YZ[\]] \ Z hi<-
<REM--->>> 30 9 705 ->OON XYZ[[ ] ]`eie<-
<REM--->>> 30 8 737 ->ONMM [[ YZ\ [\] `bbb<-
<REM--->>> 30 7 769 ->NMMLL [ ^a \]_``_____``<-
<REM--->>> 30 6 801 ->MMLLK ]^^^^____ [ ]^__^^^^^ _<-
<REM--->>> 30 5 833 ->LLKKKJ ^^___ \\\\\]]]]]]]]<-
<REM--->>> 30 4 865 ->LKKKJJJ ^^^_`_^]]\\\[ Z[[\\\]]<-
<REM--->>> 30 3 897 ->KKKJJJ a`_^] YYYZ[[\\\<-
<REM--->>> 30 2 929 ->KKJJJJ ed ZZ[[ <-
<REM--->>> 30 1 961 ->JJJJJ ZZ <-
The following file, KATT/em-upd.dat, has been prepared for input through file unit 22:
548,517 -> 549
549,518 -> 550
580 -> 581
581 -> 582
END
TPXO.7.2 has an outlandish concept of Jylland
Jylland's north-west around Hanstholm
IZ denotes the first storage location in row j. the em-upd data specifies which storage locations are used to fill a missing cell.
If more than one cell is specified to the left of `->´ , an arithmetic mean is computed.
_____________________________________________________________________________
Explanations to the program's operations
Part GLOBAL LOADING:
The semi-fast self-loading algorithm (AGOTEP) is used to compute the global
ocean loading effects (component OTEP) in a latitude zone slightly larger
than the one occupied by the regional tide model. The corner areas of the
regional model (OOAREA) can be included in the load part.
The result is on a spherical grid zone, stored in the EM (External model)
buffer with the model code according to parameter OTM. The EM buffer is
moved to the plane grid using interpolation (MOVEMZ).
AGOTEP isn't really easy to use, c.f. OTES92(s).f; sorry !
Part OUT-OF-AREA tides and loading:
The program calls ITOZ to fill the OOAREA with tide elevation, comprising
also the active boundaries. The option supplied to ITOZ is 'NYY' when the
first partial tide is processed, and 'NNY' thereafter. The first option 'N'
means that no manual updating is requested. The second option requests
monitoring of interpolation, the third printer plot of boundary profiles.
Suggested additions, OUT-OF-AREA tides:
In order to process user-supplied tide data, the code in OTEM92 must be
changed (ITOZ_OPT read from *.INS-file), and data must be provided. C.f.
ITOZ and ITOZ3 (OTES31i.f). A call to ITOZUN and/or a call openf (4) might
be added before the call to ITOZ if tide data is to be entered from
different files.
Loads in the OOAREA that are close to the regional model's active area
are treated using explicit convolution on the plane grid (OOTEP). The
routines used are: PREMS and REM to read the global tide data into the
EM-buffer (named 'Schwiderski]'; Flather's models are not adapted yet);
ITOZ to interpolate the data and move it to the OOAREA and the active
boundaries; OUTOZ to output this data; OOTEP to compute the loading effect.
Part BODY TIDE:
Solid earth and astronomical tides (body tide) can be added. This should
NOT be done if the output is to be passed to TTEQ. The data can still be
used by LTEQ if the call to COMBBT is issued in OTEM01.f or OTEM02.f.
Example OTEM92.INS:
for MED-model MDL12
____________________________ START EXAMPLE __________________________________
¶m
nlat=168
global=.true.
ooarea=.true.
test=.false.
grace=4,4,4,4
graceo=-30,5,5,0
qprflm=.false.
interpol_window=1,60,28,100
&end
31 B MDL12/FLZ.DAT 'Z'-flags unresolved
41 B MDl12/FLZU.DAT 'Z'-flags out, resolved
34 B MDL12/abound.dat Active boundaries
54 B MDL10/gself.dat Box self-eff., sphere
42 * MDL12/AGTEST.DAT Result global loading
52 B MDL12/ATOTEP.dat Result global + ooarea loading
44 B MDL12/OOTIDES.dat O-O-Area tides
55 * MDL12/sosgself.dat GSELF output for emergency
Q
1
-15.,38.,-.001,50.,T OOArea treated as global
M2 M2 Bigdata/Otide/schw]
S2 S2
K1 K1
O1 O1
N2 N2
P1 P1
K2 K2
Q1 Q1
Mf Mf
Mm Mm
** ! Case Ssa doesn't exist: STOP
Ssa Ss Bigdata/Otide/eqlt]
**
_______________________________ END EXAMPLE ___________________________________
Subroutine packages
(UNIX: file names are lower case, followed by ".f")
OTES31 Subr. ITOZ, interpolation of External model tides in o_o_area and
on active boundaries.
Subr. ABMFZ (currents from elevations in the frequency domain).
ITOZ uses GI5x5 interpolation. OTES31 itself is obsolete (moved
to OTEQ\RARE). The new OTES31.f has been broken up into four
files, OTES31I, OTES31I2, OTES32 and OTES32I:
OTES31I Subr. ITOZ; entries ITOZxx, convenience utilities to redirect
input/output, modify protocol print etc.
OTES31I2 contains ITOZ2 to ITOZ4 and CLRCOM, four subprograms. These are all
called automatically by ITOZ.
OTES32 Subr. UPDAB and MYAB, update routines for user supplied data.
OTES32I Subr. ABMFZ, currents from elevations in the frequency domain).
OTES315 Complex function ZINTPM, interpolation in nudged 2-D array, using
GI5x5 routines. Simple, linear interpolation can be obtained using
OTES312T (ZINTPL) instead (Obs! different call lists).
OTES316 Complex function ZINTPM, interpolation in nugged 2-D array, using
bilinear interpolation (May 1999).
OTES32 Subr. UPDAB, update act.boundaries by user-supplied function.
OTES51 Fill external model buffer (LeProvost, Schwiderski, Seiler, Flather),
REM. There is a more clever routine OTES51LEPR
OTES52 Move data EM -> Z-array
OTES53 Printer dump EM
OTES55 Fill external model buffer (alternative to REM).
OTES56 Parameter setting routines for global ocean tide model data,
before move data into named common block.
OTEU51 Utilities for external models: File access global sph.models.
OTEU52 File access Flather model, packed_getzm
OTEU521 File access Cartwright Ray model, packed_getzm
OTEU53 Conserve mass
OTEU54 Block data and enquire external model area
OTEU55 Make Global model mask (=flag array)
OTES61 Subr. WOTSAL, Wavenumber transform method to compute regional tide
loading self-effects.
OTES21 Subr. IOTSAL is (the CPU-time consuming) alternative to WOTSAL.
OTES91 Subr. OOTEP = o_o_area loading effects, explicit convolution.
OTES913 Subr. OTEP = global loading effects, explicit convolution. Use
OTES92.f, subr. AGOTEP instead.
OTES91g Subr. GOTML = loading effects at a number of grid nodes.
ZTIDE file reading.
OTES912 Subr. UOTEP = call GOTML for "Update-Sea" flagged nodes.
OTES911 Linear combination of potentials, add/subtract body tide
OTES92 Subr. AGOTEP, faster alternative to OTEP.
OTES92i obsolete
OTES92s Simple call list, 1x1 deg model
OTES921 Subroutines for AGOTEP
OTES922 Subroutines for AGOTEP
OTES923 Subroutines for AGOTEP
OTEU91 Keep_global_ocean areas in OTES91 OTES92
Summary of subprograms (not the latest version):
`s´ means called by system only, `(s)´ user may call this routine.
`U´ user level or main program level call.
otes31i.f
Interpolate tides in outer zone / on active boundaries
ITOZ subr. U The central routine.
ITOZPW ->ITOZ U Print window for interpolation monitor.
ITOZPU ->ITOZ U Printer file unit, monitor.
ITOZUN ->ITOZ3 U Update data, input file unit.
otes31i2.f
(1) Routines called by ITOZ:
ITOZ2 subr. s Called by ITOZ.
ITOZ3 subr. s Called by ITOZ.
ITOZ4 subr. s Called by ITOZ.
(2) Init
CLRCOM subr. U Reset common blocks /CABOUN/ or /COZ/
otes32i.f
ABMFZ subr. U Act.bound. currents from elevations in the
frequency domain.
otes315.f
ZINTPM c fct. s Interpolate in a sparse 2-D array, using
Generalized Inverse for polynomial coeff.
(Keyword: GI5x5 interpolation, c.f. \MATH)
otes32.f
UPDAB subr. U Update active boundary data with user-
coded function.
MYAB c fct. U Example.
otes51.f
otes51lepr.f
(1) External model data transfer into temporary buffer.
REM subr. U Read the model currently declared
RFM subr. s Called by REM to read Flather's model.
UFM ->RFM s File unit for Flather's model.
SFM ->RFM s Skip remainder, called by RFM.
otes56.f
(1) Utilities
IEMRR subr. U Reset region register before PREM(S).
IPEM i fct. (s)Buffer pointer function of location.
IEMBUF i->IPEM s Return max. buffer size.
IEMRSL (s)Return External Model resolution.
(2) Declaration of an external model
PREM subr. U Project o_o_area on the global grid to
determine individual areas for REM
PREMS subr. U Allow all model area for REM.
EXTEMC ->PREMS U Extend External Model buffer.
PREMB ->PREMS s Used by PREM.
otes52.f
Move External Model
MOVEMZ subr. U Move external model buffer into a complex
regional (plane) array (uses GI5x5 inter-
polation).
otes53.f
Utility for External Model
PRTEM subr. U Print external model values at specified
locations.
otes55.f
Fill External Model Buffer
FILLEM subr. U Fill external model common area from
complex array supplied in call list.
oteu51.f
(1) Utilities for Global ocean tide models
GETGOT subr. U Get global tide data into a complex array
(on the sphere).
POSTF subr. s Open partial tide file.
GOTD_PATH ->POSTF U Specify path to partial tide file.
oteu52.f
GETFLA subr. U Read Flather model into array
oteu521.f
GETCRT subr. U Cartwright and Ray model into array
oteu53.f
Conserve_Mass subr. U
oteu54.f
BRSAR block data /CRSAR/
ENQGOT subr. (s)Enquire global model area.
oteu55.f
Utility global models in array
GLMASK subr. U Make a flag array for the global tide
model (Land / Sea). Land value = 9.0
FLGFZ ->GLMASK U Test land with symbolic value from call
list.
otes61.f
(1) Fourier transform subprograms.
FFT2D subr. s Call FFT on a 2-D complex array.
QUDRNT subr. s Extract a quadrant from the WVN domain.
RMSZ r fct. s Return the RMS of an array row / column.
FOURV subr. s Fast Fourier Transform, vectors.
(2) Application to Mass self-attraction and -loading (OTSAL)
GETGSP subr. U Read a Green's function's WVN Transform.
SETGSP ->GETGSP U Extend blank common used by GETGSP.
GSPCMP ->GETGSP U Define observed component.
CVLVFD subr. (s)Apply Green's WVN-T to ocean tide WVN-T =
"convolve" (in Fourier domain).
(3) Options
SALMSK subr. U Land blanking on/off in WOTSAL / IOTSAL
SALMSQ ->SALMSK s Query land blanking ?
SALCRT ->SALMSK U Set significance criterion for update
w.r.t previous WOTSAL / IOTSAL
SALCRQ ->SALMSK s Query criterion ?
(4)
WOTSAL subr. U The central routine.
otes21.f
Ocean tide self-attraction and -loading by explicit convolution.
IOTSAL subr. U The central routine.
otes211.f
Box-integrated Green's function
BXSELF subr. s The effect of a box on itself.
otes91.f
(1) Out_of_area loading part of the tide generating potential
OOTEP subr. U Central routine, o_o_area effects.
(2) Required subroutines:
MAKGRT subr. s Expand Green's fct. logarithmic in common.
OTEMON subr. U Set CRT alive-message.
oteu91.f
Optional utilities for OTES91 and OTES92
GLOBAL_OCEAN l fct. s Include part of o_o_area in global step ?
GLOBAL_LAND l fct. s Blank an area in global step ?
KEEP_GLOBAL_OCEAN subr. U Define part of the o_o_area to be treated
in the global step (OTEP).
otes911.f
Combine potentials
OTEPRC subr. U Recycle tide potential; add body tide.
COMBBT ->OTEPRC U Add body tide
otes91g.f
Global loading effects
ZTIDE subr. s Read one latid.ring of the global model.
GOTML subr. us Global effects; called by OTEP.
Set_Otep_Tide subr. U Declare tide in lieu of common /COZ/;
applicable to OTEP (only ?).
otes912.f
Global effects at selected nodes (ISOFOR), max 1000.
UOTEP subr. U Calls GOTML for nodes with update flags.
otes913.f
Global ocean loading part of the tide generating potential,
explicit convolution method.
OTEP subr. U Central routine, global effects.
otes92.f
(1) Global ocean loading part of the tide generating potential,
semi-fast WVN method. Variable resolution, long call list.
AGOTEP subr. U Central routine.
otes92s.f
(1) Global ocean loading part of the tide generating potential,
semi-fast WVN method. 1x1 deg resolution, short call list.
AGOTEP subr. U Central routine.
otes921.f
(1) Subroutines for otes92
BSMEAN subr. s Integrate Green's function over near
cell or within field cell.
CAPSLF subr. s Integrate Green's fct. over polar cap.
DARSH r*8 fct s ARSINH(x)
otes922.f
(1) More subroutines for otes92
AGPARM subr. U Parameter setting
BGOTSA block data /CGOTSA/
otes923.f
(1) More subroutines for otes92
EXPGHY subr. s Green's function table, hyperbolic entry.
otes93.f
(1) GOTSAL subr. U Double precision global load convolution
global target area.