ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º 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 compiles the applicable routines. Main program: 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 Defining terms: =============== External model: The data required to support the regional tide model is temporarily stored in named common blocks /xCTMP/. 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 multi-partial-tide model (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. Use 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 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 model 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 (GETGSP in OTEU51.f). C.f. how OTEM02 calls GETGSP/WOTSAL. Compute the WNT of a Green's function: Use OTEM67.f Program OTEM64 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 ______________________________________________________________________________ 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; set 1 for call from MOVEMZ " 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\GI5x5.f for more details. They are passed thru common /cmy5x5/ and put into effect when subroutine MY5x5 (OTEM92.f) is called. END NAMELIST &PARAM ______________________________________________________________________________ (2) File open block: Unit Data 07 A printable file, protocol output. 31 'Z'-flags and AREA, input 34 ABOUND input (under option ooarea) 54 In-box self-loading factors input (optional) 55 In-box self-loading factors output (optional) 64 replaces 54 under option test 65 " 55 " " " 41 'Z'-flags and area, output, now with storage references for active boundaries and ooarea resolved. 42 CMPX array, global loading potential, packed or unpacked output. 44 OOAREA tide data, output (type=OUTOZ. Under option ooarea). 52 CMPX array, global + ooarea loading potential, packed or unpacked output. ______________________________________________________________________________ ______________________________________________________________________________ (3) 'Keep_global_ocean' data: 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 If the data line becomes too long, Otide-symbol*4 Tide-symbol*2 ocean_model_path /// UPD options and other commands 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 #un - integer - file unit number. The negative number indicates that the file needs to be closed. FU:text] text - 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 ** ______________________________________________________________________________ ______________________________________________________________________________ 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 _____________________________________________________________________________ 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: 's' means called by system only, '(s)' user may call this routine. 'U' user / 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 nugged 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.