MAIN PROGRAM OTEM92
                        

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 LTEQ

Defining 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
 &param
 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
---------
 &param
 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

 &param
 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 __________________________________
 &param
 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.