hydrografiske vertikalsnitt SECTN/KDS-HR og SNITT/HR
,,1. i
Nr. 11
NORSK OSEANOGRAFISK DATASENTER (NOD)
To programmer for plotting av hydrografiske vertikalsnitt
SECTN/KDS-HR og SNITT/HR
April 1976
Cand.mag Halvor Røyset har utført dette arbeidet i forbindelse med opparbeidelse av data i Det Norske Kyststrøprosjekt.
Norges Almenvitenskapelige Forskningsråd (NAVF) har gitt Økono- misk støtte t i l prosjektet.
Reidar LeinebØ
FISKERIDIREKTORATETS HAVFORSKNINGSINSTITUTT BERGEN
SECTN/KDS-HR:
Brukar-rettleing Eksempel på plot Prinsippdiagram
Flytdiagram for innlesingsdelen Programbeskrivelse
MAP-instruksjonar Subrutinebeskrivelse:
SNITT/HR:
AKSER, SKALER SIGMAT,DISTR F_IXR, INTRPL DINTR2
CO NT UN
Side
l 2 3 4 5
8
9 lO 11 12 13
Brukar-rettleing 15
Eksempel på plot 17
Progråmbeskrivelse 18
MAP-instruksjonar 20
Flydiagram:
Lesedel 21
Behandling av data 22
Plotte-del 23
Kort algoritme 24
Subrutinebeskrivelse:
SNITTPLOT 26
AKSER,BOBLESORT 27
DEKODOVERPUNCH,OVERPUNCHll, SIGMAT 28
b,c,d
- l -
BRUKAR-RETTLEING FOR SECTN/KDS-HR:
Program: Absoluttelement av programmet har elementnamnet .SECTN/KDS-HR.
Data:
Resursbehov:
Priori tet: I, total tid < 4 min.
Sider utskrift:
<
25 Puncha kort: <. 20 000 Programrestriksjonar:-Stasjonar med mindre enn 4 observasjonar blir ignorert.
-Maksimum 30 djuptekort pr. stasjon vert lesne.
- Maksimum 50 stasjonar i snittet.
-Manglar djupte t i l botnen på eit masterkort, så vert denne sett lik største observerte djup på sta- sjonen + 5 meter.
-større djupter enn 1500 meter vert ikkje plotta.
-Stasjonane vert ordna frå vest mot aust, såleis at vest blir t i l venstre på plottet.
l.kort - format 3I4:
l.parameter: Grense for lavaste stasjonsnr. i snittet.
2.parameter: Grense for hØgste stasjonsnr. i snittet.
3.parameter Observasjonsår.
Data som ikkje ligg innanfor desse grensene vert ignorerte.
2.kort- format 2A6:
Namn på snittet inntil 12 karakterar.
Kan også vere eit blankt kort.
Dersom dette er lik 'INGEN TEKST', så blir det ikkje plotta namne-rubrikk.
3.kort - format 2F3.0:
l.parameter: Skalafaktor for X-aksen i KM/CM.
2.parameter: Skalafaktor for Y-aksen i M/CM.
Dersom desse faktorane gir for stort plett, så beregnar programmet nye fak- torar. Platt-størrelsen er sett t i l maksimum A3-format.
Derfor: 001001 vil gi automatisk skaler- ing.
Neste kort - format ICES:
"EOF
Oseanografiske data, vanlegvis leste frå datafil ved hjelp av "ADD <datafil "7 •
Denne datafilen kan innehalde fleire stasjonar enn dei som tilhØyrer snittet.
Stasjonsnr.-grensene avgjer i så fall kva som skal takast med. ' Dette er imid- lertid ein tidskrevjande prosess. Red- user derfor datafilen t i l kun å omfatte snittet!
må avslutte data.
Eksempel på run-opplegg
"RUN,I/R ---,---/---,---,4,25,20000 . NN
"ASG,AX Programfil
"ASG,AX Datafil
~XQT Programfil.SECTN/KDS-HR
111122221976 (Stasjonsnr. llll-2222,år 1976) SNITT-NN
001001
"ADD
"EOF
"$.?!"'$. PRICE
"FIN
(X- og Y-skala lik l. gir automatisk skalering)
Datafil. (element)
-lJ 1---l
:;::lJ
z
o
--lC~ l fil
;:o ( ] ::1J
]J C!
:::::s
r
. " JJ Cf) (fl c
rn
Clz
1 Cl en
- j 3
z
fil'---. ---l ::.:-'\ Cl
o o
filCf)
l ;l ø I JJ
[ -~~ :::s; 1--1 3
r OSL lldnro
. ~ ~
CD ---1
z
~
fil o
,-
::::::s:o
f---1
·-u
lz
filCD
z :::-tJ
filTI JJ :::::0
~l (,)
c--
fil:AJ
z
D
N
(Jj
f---J (_ ~
CD
c· o
--J z w
Ul f---1 p
. __J
m
- 2b -
o os
- 175
1----'
CJ o ::D
<--
(fl --j
;>
:::D
'..o~z
o-
1711 ~1---l
!----':::...-~-
CH___i,
C)
;>'
1,('
v(l
f.J
(')(, o
o - 16~.1
;>
>,;'
'le> 'l,
-er .
_ 1 SGC)
'OJc~~' 't~
o
N
l l
n
R \r
C:: Tc
!\ 1 11 c TcY SQ }QQ • l V
I~l~\1_y§' J?.;-1~~~,
, o"-> ) l ro~ . l r.l'o"' ' ) ~ ~_::i C<1yU .-.::_;"<: ~:;.~.;:_:
N ·n
L:,
C>
C.fl_j <'('
C) l '
o
CJ c_
c
\ J
--{
3:
NOO-BERGEN 23a03c76
SRL_TINNHRLO,. JUNI SKLINNR 1975
INTERPOLRSJONSMETODE~
RKIMP
PROGRAM~
SECTN/KOS-HR
-lJ ::::tJ
o
~)
·;-{)
TI
~..::s ,,
Cll Ill C!
---l
z
~
~'\
CJ
Cf) l I
::u
l l
V'l
f---J
z
·--J fil ::::n
t )
r o
:I) Cf) '--
CJ
z
(fl 3
fil
---j C)
~, L~
rTJ
"p
:::;s;; TI
1---l
- " 7
---"'
TI
Ul
UJ z
;s:;
1---Jo
l
CJ o
f - - j ~ • l
z
.TICD z
lITl
TI --j :::::tJ
rn Q
z
N CD
~-__:, L tJ
CD c o
---J
z w
CJl
f----l p.--._J
m
- 2d -
- 175
f - '
CJ o
.TI
<-
,,
) (/.)l )0;:;-1 p)
:0
---;7/~.L_
.. ·,;w- .
170J .., ' •)
,;·,\~
·~) ~ 1 l/_"' ',IL.,~·-
-cP.a:
CJv '~ -
'" vv")
'v
_l(Jl]
_160
Cl
l ~'<l : 1:-.-c: '·
V(_"'
t..J,? VV'JV(\~~
~.-"~
\.\..'1 '-'l\, v
'i,
PRINSIPPDIAGRAM FOR SECTN/KDS-HR
'Velclcv-a_sJ 'o hav- er:;
. l.. ( . .
t-11 ra c,-5evt,hy
$ ' . }
u,,
dæl-~0'-
~f>qt·>'l•rv 1
Ordna,- :;.-let_-
t;J
O' li Ct.-tre c.'l N kkr../,·.(qc
l ._, J
uc.•;t--·,> (UfS\·
'""""'"
I''H/-( 'F:n.J'D i1ctr-lY l}
?J,fn=JL
Ot·c(t;f!.•-c{/<t,pk
/ f·rrl e:·>.{ ff,'~~y·,.
J (', er.!).(', -.-• f-:Jc'rN<n~
cfuM,_:/u, let r~
~-- .34/n-c.ch'nc
-;r-·zx'i(
.6<.-ha, ~';i(.~"_.
O"'Y r /':>f.v1.<::..f1
~- ~ r~.<Jil /. -c:;;o•1
.
":;)IST1?
4 _ W1'011 tl· ,_ cw.JI,.,. ri
-i>-- ,'{u i' u el-t '11 c I.VT1?"PL
4-
//-/(.( i•1c,. ei.,/{',•·-on(.t\f,! t~t-~f.:.JJ·,-r{,
+-
$v.6•-ccfcJ?(Sl:~?i~MT 6ct('f·, J 1 rt ... J, ·~i l,·:.""-.
4 -
..
o'-1).--
e
tiLC,(,J•i>Jpl,, (./c ro l-c i1,{ r•
4-
-t::========::t
r
l l l
l
l l l
r
Flytdiagram l
Vd071
xv
l( !J" <- 1'-'td { • -;;;':.<.'-It' ...,~/(};';(;'1'\':'1- hr.-,-
lu.Y- n,/(},<tl.
•D 1 -~-
""CI-C:Jf1(Vr- C(C'I' .Bo.6tc.d {i;('
"./l .:C 1V r!\ 2
"'n/.c 'i/> a lcrl<:.
,:_(1c'tc~~~ '-• J ~ lt"-t <t;f'. ~ ~r~:J
Jillcl-t,!)ol·o·c , ...
bolh len' ·l((,_ ·
·"'·'l
x·s.o r
~ - S.w'TN<..;.,/,r :INTi\'?i..
~?t'.::.ri·~._ ... , t;: '1'.1 l."·
~ (/- - . ' ', . , · ' Il)(/(>;;(
Sa&tcclcltc
tz)N /'":(/,V
DETALJ-DIAGRAM FOR
LESEDELE I SECTN/KDS-HR
r_:}:( {(.!;:; 0,'(',·1'' J,.,
~l.:o .-,·'c.;(>,!-:~,_ el 1--...-e---lj,y;cff~ 'Z)Z3-ttf~
s
tu-< t: r;r
;:?.(! F'·"f Nei.-t;>--
-~--
- 4 -
8.ubrc.L+c'n<
f::IX'l?
.L'"-<: •-J>l a....\''-
,,,
'
o-t "(.,_ .... l=;.. f.t~~, .... i!
Flytdiagram 2
1 - - 4-
-
'VJck!Pc{rn {( s l{'!-~-;()
rf
1 - -
\r
-tie~·
Nec'
J?ROGRAMBESKRIVELSE FOR SECTN/I<DS-HR:,
Dette programmet er ei omarbeidd utgåve av programmet SECTN/INDIA- INK som var skrive av Kim David Saunders, ved Geofysisk Institutt i 1973~
Dokumentasjonen t i l det opprinnelege programmet var svært mangelfull, noko som også vil setje sitt preg på denne dokumentasjonen. Ein kan derfor ikkje fullstendig sjå bort frå at feil framleis kan forekomme.
Eg vil derfor be brukarane om å rapportere desse.
Endringar som er gjorde:
Bergen, februar 1976 Halvor RØyset
- Subrutinen CONTU2 er fjerna. Denne rutinen gav sjikt-teikning av snittet på linje-printar, men desse teikningane gav liten informasjon.
- Feil i bruken av avstandsfunksjonen DISTR er retta.
- Programdelen som teikna akserammer og plasserte origo er om- arbeidd. Derfor kan ein no lese inn skalafaktorane for aksane frå data-kort.
- Subrutinene TIC,SPLINE og RECT er fjerna sidan dei no ikkje trengs i programmet.
Dessutan er fleire overflØdige setningar og parameterar fjerna på forskjellige plassar og nye kommentarar er innsette, såleis at eg no vonar at programmet skal vere leseleg.
Når det gjeld prinsippet for programmet, så viser eg t i l Flytdiagram l. Detalj-diagram for lese-delen er å finne på Flydiagram 2.
- 6 -
Endringar som kan gjerast:
Maksimal plett-størrelse:
Maksimal plottstørrelse er sett t i l A3-format, men dette kan endrast i avsnittet "INITIALlZE THE PLOT ---".
MAXX er maks. lengde og MAXY er maks hØgde av plottet.
Parameterar t i l kontur-rutinen:
Dei viktigaste parameterane får verdiar i avsnittet
"CHOOSE THE VARIABLE TO BE CONTOURED".
AR(l): Intervall mellom kvar kontur.
AR ( 2) :. Minimumsverdi for konturane som blir plotta.
AR(3): Maksimumsverdi for konturane som blir plotta.
Desse parameterane kan det ofte vere aktuelt å forandre.
Standardverdiar sette i programmet:
AR(l) AR ( 2) AR ( 3)
Temp 0.5°C -2. 0°C 15.0°C
/Salt 0.10 0/00 32.0 0/00 38.0 0/00
Sigma-t 0.10 23.0 28.5
NB! Urimeleg stor avstand mellom AR(2) og AR(3) gir unødvendig stort tidsforbruk i rutinen CONTUN.
Ekstrapolasjon av data:
For å oppnå rimel~_g:e konturar nær botnen, vert det ekstrapolert 10 datapunkt under botn-konturen. (sjå avsnittet "COMPUTE THE INPUT MATRIX").
Metode:
La E vere ein forventa ekstremalverdi for den observerte størrelsen. I programmet har ein brukt fØlgjande verdier:
Temp: E=-1.2°C, salt: E=34.8 0/00, sigma-t: E=28.2 La T vere observasjonen nærast botnen på ein stasjon.
Ekstrapolerer så verdiane T(I) ved hjelp av formelen.
T(I)=(T-E)~EXP(-D*I)+E der I=l(l)lO
D er -e-iri·-beregna størrelse avhengig av djupta såleis at O.OS<D<l. T(I) avtek såleis eksponentielt motE.
Andre rimelege ekstrapolasjonsmetodar skulle kunne nyttast.
Interpolasjon av data:
Interpolasjonsmetode: Akima, subrutine INTRPL (sjå subrutine be- skrivelse). Denne rutinen kan uten vidare byttast ut med ei vilkårleg.standard interpolasjonsmetode (f.eks. henta frå MATH- -PACK-rutinene). Dette skulle enkelt la seg realisere ved:
SUBROUTINE INTRPL(IU,N,X,Y,M,U,V) IU=6
<
parametertilpassing mellom ny og gammel rutine/CALL standard rutine (parameterliste)
<
parametertilpassing for ut-data>RE TURN END
Subrutinen DINTR2 er eit interpolasjonsskjema som bygger på INTRPL og er spesielt tilpassa plotterutinen CONTUN.
Kontur-rutine:
Rutinen CONTUN er ei såkalt "masked" -kontur-rutine.
Ved hjelp av ein "mask"-vektor FSMSK (og ein vektor FS definert i CONTUN) unngår ein å tegne konturar under botn-konturen.
FSMSK er intialisert i avsnittet "COMPUTE THE MASK FOR CONTUN".
Ved eit eventuelt bytte av kontur-rutine skal ein vere oppmerk- som på at CONTUN legg plottar-origo i nedste, venstre hjØrnet og referer alle djupter t i l dette. Input matrisen TT er også til- passa dette origo (sjå DINTR2).
RekkefØlge av stasjonane:
I avsnittet "ORDER DATA BY ---" blir stasjonane ordna etter lengdegrad i rekkefØlge frå vest mot aust. Derfor blir alltid vestlegaste stasjon t i l venstre på plottet.
- 8 -
Metode: "Boble-sortering" med fysisk omplassering av alle data.
Det er relativt enkelt å forandre sorteringsrekkefØlgen, f.eks.
til sør - nord ved å bruke breiddegrader i staden for lengde- grader som sorteringsgrunnlag.
MAP-instruksjonar
Fullstendig MAP-element ligg på elementet MAPSECTN/KDS-HR Det skal innehalde fØlgande instruksjonar:
IN P.SECTN/KDS-HR,.DISTR/KDS,.DINTR2/KDS
IN P.INTRPL/KDS,.FIXR/KDS,.CONTUN/KDS,.AKSER/SECTN IN P.SIGMAT/KDS,.SKALER/HR
LIB UIB$*CALCMP.
END
Eventuelle endringar bØr lagast som nye versjonar av programmet, såleis at originalutgåva alltid er intakt.
' • -
Subrutinebeskrivelse:
AKSER: Symbolsk elementnamn: ;AKSER/SECTN
Rutine som teiknar eit aksekors, plasserer plottar origo på optimal plass, set korrekt enhet på aksane og skriv tekst.
Rutinen er spesielt tilpassa SECTN:
Aksekorset har origo i øverste venstre hjørnet, mens origo t i l plottaren er sett til nederste venstre hjØrnet.
Kallesekvens: AKSER(MAXX,MAXY,SKALAX,SKALAY,XTEKST,YTEKST, FIGTXl,FIGTX2)
Paramet.erar:
MAXX-REAL MAXY-REAL SKALAX-REAL SKAL Y-REAL XTEKST YTEKST FIGTXl FIGTX2
Max. lengde t i l plottet.
Max. breidde t i l plottet.
Skala pr. cm. for x-aksen.
Skala pr. cm. for y-aksen.
Tekst på X-aksen, inntil 12 karakterar.
Tekst på Y-aksen, inntil 12 karakterar.
Figurtekst på plottet, inntil 12 karakterar.
li 11 11 11 11 11 11
Dersom FIGTXl
=
'INGEN TEKST' blir det ikkje sett namnerubrikk på plottet.SKALER: Symbolsk elementnamn: .SKALER/HR
Rutine som rundar av eit tal oppover t i l næraste tal av forma 1.,2.,4.,5. eller ~-~lO**N.
Kallesekvens: CALL SKALER(S)
Parameter: S-REAL: Tall som skal avrundast (både inn- og ut- parameter) .
Subrutinen kan f.eks. brukast t i l avrunding av skalafatorar.
- lO -
SIGMAT: Symbolsk elementnamn: SIGMAT/KDS
Rutine som beregner sigma-t verdiar etter standard formlar.
Kallesekvens: CALL SIGMAT(TEMP,SALT,XSO,SIGMA) Parameterar:
DISTR:
TEMP-REAL SALT-REAL XSO-REAL SIGMA-REAL
Temperatur (innparameter) Saltinnhald " 11
Sigma-o (~~
0
) (utparameter) Si gma- t ( ·.<l t) 11 11Symbolsk elementnamn: .DISTR/KDS
Funksjon som beregnar avstanden mellom to posisjonar i km langs ein stor sirkel.
Kallesekvens: ... =DISTR(LONGl,LATl,LONG2,LAT2) Parameter:
LONGl-REAL LAT l-REAL LONG2-REAL LAT2-REAL
Lengdegrad for l. posisjon.
Breiddegrad for l. posisjon.
Lengdegrad for .. 2. posisjon.
Breiddegrad for 2. posisjon.
Posisjonane må vere gitt i hundredels grader i staden for minutt.
Vestleg lengde og sØrleg breidde blir markerte med negativt 'for- tegn. Eksempel: 105°30" Vest blir LONG
=
-105.50Metode:
l
Beregnar den eksakte vinkelen v mellom dei to posisjonane, og reknar så ~t le~gda av bogen s mellom stasjonane. Tar hensyn t i l at jord-kloden er svakt eliptisk.
La (Ll,Bl) og (L2,B2) vere dei to posisjonane. ' Kan vise at:
cosV=sinBlsinB2+cosBlcosB2cos(Ll-L2)
*V=arccos( 11 11
Dersom jorda er kuleforma blir s=R~V
Reknar vi jorda eliptisk med halvaksan A og B, kan vi beregne ein midlare jord- radius:
FIXR:
l
R-~====~~========~
-
v(c~sB) 2 +
(si;:s)2
der B
= i (B~l+B2)
På grunn av at beregningsmetoden for vinkelen v er Ømfinteleg for feil, arbeider rutinen med dobbelpresisjon i trigonometriske funksjonar.
Symolsk element: .FIXR/KDS Assembly-rutine som finn og fjernar overpunch.
Kallesekvens: CALL FIXR(FDATA,I,CODE) Parameterar:
FDATA-FIELDATA STRENG: Data beståande av 6 karakterar plassert i eit INTEGER-ord ved hjelp av format A6.
(Inn/ut-parameter).
I-INTEGER: Nummer O - 5 på karakter som skal dekodast.
( Innparameter) .
CODE-INTEGER: Kode for type overpunch (utparameter) . Det foreligg ingen nærare dokumentasjon av denne rutinen, så interesserte brukarar må studere anven- delsen i SECTN og ICESRPP.
INTRPL: Symbolsk element: .INTRPL/KDS
Interpolasjonsrutinen for ein funksjon i ein variabel.
Kallesekvens: CALL INTRPL(IU,N,X,Y,M,U,V) Innparameterar:
IU-INTEGER: Standard utskrift enhet for feilmeldingar.
Vanlegvis IU=6.
N -INTEGER: Antal datapunkt.
X -REAL Vektor av dimensjon N som inneheld X-verdiane der funksjonen er gittli stigande rekkefØlgje.
Y -REAL Vektor av dimensjon N som inneheld funksjons- verdiane Y (X) •
- 12 -
M -INTEGER: Antal punkt der funksjonen skal interpolerast.
U -REAL Vektor av dimensjon M som inneheld X-verdiane t i l interpolasjonspunkta i stigande rekkefØlge.
Ut-parameter:
V -REAL Vektor av dimensjon M som inneheld interpola- sjonsverdiane Y(U).
Denne algorutinen er publisert i COMM. ACM. lS(lO)OCT 1972
Forfatter: Hiroshi Akima, Institute of Telecomunications Science, Boulder Colo.
DINTR2:
Symbolsk element: .DINTR2/KDS
Rutine som ved bruk av INTRPL foretar interpolasjon av hydro- grafiske data både i horisontale og vertikale plan.
Kallesekvens: CALL DINTR2(DATA,AVST,DJUPTE,OBSANT,STANT,NN,~~'
XMIN,XMAX,YMIN,YMAX,TT,XX,YY) Innparameterar:
DATA-REAL AVST-REAL DJUPTE-REAL OBSANT-INTEGER STANT-INTEGER NN,MM-INTEGER XMIN,XMAX-REAL YMIN,YMAX-REAL
Datamatrise (salt temp, sigma-t, etc) + ekstrapolerte data på kvar stasjon Vektor som inneheld avstandane fra vest- legaste stasjon t i l aktuell stasjon;
Matrise som inneheld observasjonsdjuptene på kvar stasjon.
Vektor som inneheld observasjonsantal +10 ekstrapolasjonar på kvar stasjon.
Antal stasjonar i snittet.
Antal interpolasjonspunkt i horisontale og vertikale plan. I SECTN set lik 100.
Min. og maks. avstand på snittet.
Min. og maks. djupte på snittet.
Utparameterar:
TT-REAL
XX-REAL YY-REAL
(NN+l)*(MM+l) - matrise som inneheld
alle dei interpolerte data. Denne matrisa er grunnlaget for kontur-rutinen
CONTUN og spesielt tilpassa denne rutinen.
Vektor som inneheld avstanden t i l alle vertikale interpolasjons-sjikt.
Vektor som inneheld djupta t i l alle hori- sontale interpolasjons-sjikt.
Først blir det interpolert nye verdiar for ca. kvar 15 m frå O - 1500 m på kvar stasjon.
Ut frå desse data vert det så interpolert nye data i 100 verti- kale sjikt mellom stasjonane.
Til slutt vert matrisa TT snudd "opp-~ed". Dette for å tilpasse data t i l rutinen CONTUN~
CONTUN: Symbolsk elementnamn: .CONTUN/KDS
Rutine som tegnar konturar på grunnlag av matrisen TT(IMAX,J~~X).
Kallesekvens CALL CONTUN(TT,IMAX,JMAX,FS,AR,MODE,SCALEI,SCALEJ, THETA,NONO,SIZE,FSMSK,NOGT)
Parameterar:
TT-REAL
IMAX,JMAX-INTEGER FS,FSMSK -INTEGER MODE-INTEGER
IMAX~MAX - matrise som inneheld kontur- data.
Dimensjon t i l matrisen.
Maske-vektorar av ukjent konstruksjon.
Sjå hovedprogram.
Rutinen kan brukast i 5 ulike mod!i (sjå program-listing). I SECTN er MODE
=
4. Då erAR(l) AR ( 2) AR ( 3)
Intervall mellom kvar kontur.
Minimums-kontur.
Maksimums-kontur.
- 14 -
SCALEI,SCALEJ-REAL: Plott-punkt pr. cm.
THETA-REAL NONO-INTEGER
SIZE-REAL NOGT-INTEGER
Vinkel som etiketten på konturane ·vert skriven i.
Kontrollparameter. Dersom NONO
<
O blir det ikkje skrive etikett på kon~tur ane
HØgde i cm. på etiketten.
ANTAL desimalar i etiketten som skal skrivast. Dersom NOGT
<
O så blir ein rimeleg verdi beregna.Rutinen teiknar ikkje akseramme eller set origo.
Plottar - origo er i ~edste, ventre hjørnet.
BRUKARRETTLEING FOR SNITT/HR:
Resurskrav:
Priori tet: I, tidskrav< 4 min.
Utskrift 25 sider
Puncha kort: ca. 3000 kort pr. plett.
Oseanografiske data:
Datafilen må berre innehalde dei data som hØyrer t i l snittet.
Eksempel på run-opplegg:
"RUN, I/R--- ,_--- /---,---,4, 25,2000 O • NN
"ASG,AX Programfil
"ASG,AX Datafil
"XQT PROGRAMFIL .SNITT/HR DIMENSIONSKORT:
FORMAT:2I3
l. Parameter: .maksimumsgrense for antal· stasjonar i snittet 2. Parameter: maksimumsgrense for antal observasjonar på ein
stasjon.
OSEANOGRAFISKE DATA:
FORl"vlAT: ICES.
Alle datakort som skal plottast. Vanlegvis henta fra datafil ved hjelp av "ADD DATA. (Elementnavn)
NB! Datakort(-fil) må avsluttast med "EOF NAMNEKORT:
FORMAT: Sl2
Namn på snittet. ·Inntil 12 karakterar.
Dersom dette er lik 1 INGEN TEKST 1 , så blir det ikkje sett namnerubrikk på plottet.
SKALERINGSKORT:
FORMAT:2I3
l . Parameter: Skala t i l X-aksen i km/cm.
2. Parameter: Skala t i l Y-aksen i m/cm.
Dersom disse skalaverdiane ikkje er akseptable, så vil pro- grammet beregne nye verdiar.
Derfor: 001001 vil normalt gi·automatisk skalering.
Anbefalt verdi: 005025
- 16 -
SORTERINGS-KRITERIUM:
FORMAT: Sl
Avgjer kva som skal vere t i l venstre på plottet. Tillatne
verdiar: 'NORD' ,'SOER' ,'AUST' eller 'VEST'. (Berre fØrste karak- ter er signifikant) .
PLOTT-TYPER:
FORMAT:S2
Eitt kort for kvart plett. Tillatne typer:
'TEMP' ,'SALT' eller 'SIGMA-T'.
er signi~ikante).
(Berre dei 2 fØrste karakterane
"$+$.PRICE
"FIN
Tolking av resultat:
'?'
t i l venstre for observasjonspunktet betyr usikker djupte.'?'
t i l hØgre for observasjonsverdien betyr usikre data.o
u c...,
c: '"O 1-3
trj H
:s:
~
(:.J G'l
~)
G
G:---1
o
w
..._.]
-=.:l
l
-l
l07 ·p·r
... .;.-[\...
+ g7 < 4)i'1
+ .!.? .. 4~5
+ 2'7 -455 +2_7 .. 455
+ 2? -4'3S
+ 2" -5' 4
7 2: .. ss::;
+2"7 ... S'j7
2'7 C"'7''
+ , ... ;;; . .::::_
_,_ 27-590
+ 27 -GGS
+ 2? -G35
25 F
7 , ... C"•'<' J~...>L l ' 1)7 c-'C':':J:21 ~s~r + 2? -SG3
+ 2? .SGB
+27-5l2
+ 27-520
+ 27 .. 52'1
+ i~
+ 2: -SC4
+2.'? -Sll
~ 27 -!324-
---~
-
''·,,l
AVSTAND I KM:
27.64B
50
j 27~4~~-L t")~ C: r·~)
+
27:sti1
+27-.SHJ +2? .. 452
+2:.sos +27-C7
+27-514 +27-.SQQ
~27 ... 515 +2? .. 513
+ -'?. + 2? , .. SL'3
+2'? .. srs +27 .. sss
+ 2'? ~S7S + 27-575
+2?.fl:J1 + 27-591
+ 2? -62L +2? -G8l
+27 -GS!
+ 27 -S34
+ 2? .')? ~-
+ ?
l
l
75 100
l
2L5G; 2r! -459 2.7 .. 408.L l l l l ~ l l l l l
-!-27 _,.." 1
+
2'<4~,-0-- + 21 -.3:.;2+ 27 .463 + 2~ .4':\4 + 27 •. J'5<:
+27 ~.52~ +27 .cc +27-.<;.~7
+ 27 ~.S2S + 21' .. 473 +21 -OS
+27 .. S2.S +2?-47S + 27 -4'1-2
_,_ 27.540 + 2" -4·BE +27 -4-54-
+2'1 -542 + 2'7 .. 534- + 27 .. s !9
+27 -576 +2'; -548- + 27 .s++
+27 .. s~s ..L. l).., C: C"---:
• '- • .... J·:::>v + 27 .. 547
+ 27 ~595 ~2'? ~SIJ.:J + 2.? ... ~jSS"
..:- 2? .. !)13 +2:~S'7C + 21 .. 570
·+2? .. S?S +2'? .. ~B4- +27 .5?3
+2.?.'3-::'l + 2? .594-
125
tilX'
00
3 CD
"d CD l-'
"d PJo
"d l-' o
eT
l-' -...l
PROGRAMBESKRIVELSE FOR SNITT/HR:
- 18 -
Til Fortran-programmerarar og andre uvitande:
Hovedprogrammet og dei fleste subrutinene er skrivne i NU ALGOL.
Motiveringa for det var å prøve å skape eit oversikteleg program som langt på veg er sjØlv-dokumenterande. Men for at innbarka FORTRAN- brukarar skal kunne lese programmet, trengs det ein viss kjenskap t i l grunnbegrepa i Algol. For ein fullstendig beskrivelse viser eg t i l Conradi & .Kvitsand: "Programmering med hovedvekt på NU ALGOL" og til UP-7884: "NU ALGOL Programmer Reference".
Nokre grunnbeg~ep skal eg likevel ta med:
Det er likegyldig kva kollonne ein startar å skrive i. Ei setning blir alltid avslutta med semikolon (;) eller dollar ($). Ei setning kan derfor gå over fleire linjerteller ein kan ha fleire setningar på ei linje ..
Eit variabelnamn kan bestå av inntil 72 alfa-numeriske tegn, men berre dei 12 første er signifikante. Alle variabelnamn må deklare- rast. Deklarasjon av indekserte variable har forma:<type;> ARRAY
<namn~(il:i2) der i l er nedre grense for indeksen (gjerne negativ) og i2erøvre grense. Også namna på eksterne subrutiner (prosedyrer) må deklarerast i EXTERNAL PROCEDURE.
DO-lØkker: Dei mest brukte do-lØkkene i Nu-Algol har forma:
FOR variabelnamn :=(nl,S,n2)DO ...
eller: FOR variabelnamn :=aritm.utrykk WHILE logisk utr. DO ...
der nl er nedre grense, S er steglengde og n2 er øvre grense.
Det viktigste begrepet-i Algol er blokk-begrepet og samansette set- ningar. Ved hjelp av desse kan ein så godt som fullstendig unngå bruk av GO TO.
Samansett setning:
BEGIN s1;s2;s3; ... ;sn END kommentar; der 81,---,sn er enkle algol- setningar. Logisk sett er no alt mellom BEGIN og END å oppfatte som ei algol-setning.
Blokk:
BEGIN deklarasjonar;s1; •.. ;sn END kommentar;
Her kan ein deklarere nye variable midt inne i programmet, og disse variable er lokale t i l blokka, dvs. at utanfor blokka er namna
ukjende eller kan re-deklarerast.
Initialisering av variable deklarert i ei blokk:
Ved inngangen t i l ei blokk vil alle variable som er deklarerte i blokka bli nullstilt (logisk variable blir sett lik FALSE). Vil ein unngå dette, så kan ein plassere OWN foran deklarasjonen. I så fall vil dei bli sett lik den verdien dei hadde sist dei var refererte
(tilsvarer Fortran-variable).
Algol-syntaksen er svært fleksibel. Stort sett gjeld at "Har du lyst, har du lov", men ein bØr også tenke l i t t på tidsforbruk ved konstruksjon av "elegante" setningar.
Så vil eg berre ønske alle nysgjerrige lykke til~
Bergen, februar 1976 Halvor RØyset
- 20 -
Kompilering og mapping:
Algol kompilatoren:
Spesielle opsjonar: Ved kompilering av eksterne prosedyrar må ein bruke E-opsjon.
R-opsjon:
Y-opsjon:
Denne opsjonen fjernar alle testar som undersøker indek- sar ligg innanfor det tillatne område. BØr ikkje bru- kast under test-kØyring, men bØr brukast ved produksjons- kØyring fordi den gir raskare koder.
Fjernar "warningar". Kompilatoren gir enkelte misvisande
"warningar".
Z-opsjon: Gir ingeh linjenummer ved "run-time" feilmeldingar.
· Liksom R-opsjon bØr denne også brukast t i l produksjons- kØyring.
RYZ-opsjonar er brukt ved kompilering av alle programmene i SNITT/HR.
Fortran kompilator~
Nu-Algol er enno (febr. 1976) ikkje oppdatert for Fortran-T serien.
Ein må derfor inntil vidare benytte Fortran-lOA kompilatoren. Kompi-
latorsetni~ga blir derfor:
"UIB$-fFORlOA.FOR,opsjonar
Tilsvarande må ein også bruke FORlOA.-versjonen av plotterutinene.
Map prosessor:
På grunn av FORlOA., må ein også i mappingen legge inn nokre ekstra instruksjonar.
Det symbolske map-elementet har namnet .SNITT/MAP Det inneheld fØlgjande _instruksjonar:
IN P.SNITT/HR,.DEKODER/HR,.OVERPUNCHll/HR IN BOBLESORT/HR, .AKSER/HR,.SNITTPLOT/HR
IN P. DISTR/FORlOA, . INTRPL/FORlOA, .• SIGMAT/FORlOA IN P.SKALER/FORlOA
LIB UIB$*CALCMP10A.
LIB UIB$*RBIB$10A.
LIB UIB$*FOR10A.
END
Skulle RBIB og FORlOA vere "unloaded", så må ein fØrst ta "ASG,AX"på desse system-filane.
FLYTDIAGRAM FOR SNITT/HR.
c SNIT<)
.j
FLYTDIAGRAM l.
LESEDEL.
1 - - - < 1 · · - - - ·---·-···
les &s-ecuuJ- fj rC< ;/1~<!./ce c:/.o. .f,x.,
'- M a{; /o--Jco rf::
'2
-:~>--
--<OI-
S lcric.J'
cj~Z;-fmcld ( 't~EJ - - - · · .. :\>-··· ..
l l
!i
ll l
A
ll
ll l
l
l
l-.. J
l
~
Ne/'' V 1 J
1---~--·-··•"·-·-.. -· ... ____ " ___ "_ ... -·-·-··-·-~---· .. ---·--J
SNITT/HR.
T ·Ir l
l
Å•
l l
ll_
-4- 22 -
.' :N!a.119kr
).;;.y,l-r'
.;.d (:,(/{It'Z ,
l.e6 tJ-~-J,ld i'fj)-
1-,/!c u:. c u' 1 ,
Ordna.t"
s+(Å.zi~hCÅ/'Jo(' .u.l-
·/l·l del/-< k•t'- -/vncr!:
13.1.-/<~:J )1(uv~
Ctt/.S ·la..ncl<' 1·1
IlJe l(()~<, Sf(Q -
FLYTDIAGRAM 2
BEHANDLING AV DATA.
+-
J-ro·-:::r~-fl.-·~7;;_1;;,:-"'d'·c:DL.S.
rt?.
be1J'H~~ c~cr-J-.J'.
---K---·--
SNITT/HR
ve o "F
.at.a....
vt--111/·---1>·--···---·
FLYTDIAGRAM 3 . PLOTTE-DEL.
---1(
STOpy:-)
+
-;;.;~:f:~ll~---r(-<.fr~J(S.l6i /v/;J.
r
- 24 -
SNITT/HR
Programmet finst også i ein versjon SNITT/INTERAKTIV for bruk frå interaktiv terminal. Denne versjonen er
brukar-rettleing skulle vere overflØdig.
filane, må ein. rekne med ventetid på ca.
Algoritme for programmet.
konverserande og ekstra På grunn av I/O~tida t i l 2 min. pr. plot.
l. Les inn data, behandlar overpunch og feil. Skriv feil- meldingar.
2. Undersøker om djupte til botn manglar på nokon av master- korta. Set i så fall djupte lik største observasjonsdjup på stasjonen + 10 meter.
4. Les. inn ordningskriterium og sorter stasjonane ut frå dette.
Metode: Boblesortering med peikar-vektor.
5. Beregn avstanden mellom stasjonane ved hjelp av funksjonen DISTR.
6. Les forslag t i l skalafaktorar og undersøk om desse er aksep- table, eventuelt beregn nye.
7. Les inn plot-typer og beregn sigma-t· dersom det er naudsynt.
Utfør plot.
9. Stopp.
Oversikt over variable m.m.
Elementet SNITT/DOKUMENT inneheld m.a. oversikt over subrutinar og hovudvariable i programmet.
Feil i data:
Programmet behandlar feil som kan forekome i data.
Kort med uleselege data blir ignorerte og feilmeldingar utskrivne.
Programmet undersøker ikkje om det forekjem dubliseringar av kort.
Overpunch:
Behandlar kun overpunch i djupte, salt og temperatur på hydro-master- kort. All informasjon blir teken vare på. Usikker-hetsoverpunch vert markert ved å addere t i l 10000 i vedkomande data. Ved listing
på plottar vert dette markert med
'?'.
Usikkerhet i djupte vert markert med'?'
t i l venstre for punktet, medan usikkerhet i data vert markert med'?'
t i l hØgre for observasjonsverdien.Plott-format:
Maksimum plott-format er sett t i l 60 x 80 cm.
Dette kan forandrast ved å endre XMAX og YMAX i plottedelen av pro- grammet.
Andre oseanografiske variable:
Beregning og listing av andre variable basert på observasjon av salt og temperatur, kan enklast skje ved å bytte ut sigma-t rutinen med den nye rutinen.
- 26 -
Subrutine - Spesifikasjon:
Symbolsk elementnamn i parantes:
Nu Algol prosedyrer:
SNITTPLOT: ( SNITTPLOT /HR) •
Prosedyre som gir listing av vertikalsnittet på plottar.
Kallesekvens:
SNITTPLOT(SKALA,MAX,PEIK,STNR,XKOORD,YKOORD,OBSV,DEC,STASJANT, OBSANT,TEKSTl,TEKST2)
Parameterar:
SKALA-REAL:
MAX-REAL:
PEIK-INTEGER:
STNR-STRING:
XKOORD-REAL:
YKOORD-INTEGER:
Vektor som inneheld h.h.v. skala for:X- og Y-aksen.
Vektor som inneheld h.h.v. maks.lengde for X- og Y-aksen.
Vektor som inneheld den ordna rekkefØlgen på stasjonane.
Vektor som inneheld stasjonsnummera.
Vektor som inneheld avstandane mellom sta- sjonane.
Matrise som inneheld observasjonsdjuptene på kvar stasjon.
OBSV-REAL: Matrise som inneheld alle observasjonsverdiane som skal plottast.
DEC-INTEGER: Antal desimaler som skal skrivast.
STASJANT-INTEGER: Antal stasjonar i snittet.
• , (
OBSANT-INTEGER: Vektor som inneheld ~ntal observasjonar på kvar stasjon.
TEKSTl,TEKST2-STRING: Figurtekst.
Dersom TEKST2
=
'INGEN TEKST' blir det ikkje sett namnerubrikk på plottet. Prosedyren plottar ikkje botn-data.Prosedyren brukar den eksterne prosedyren AKSER.
AKSER: (AKSER/HR) .
Prosedyre som plasserar origo t i l plottaren på optimal plass og teiknar eit aksekors med tekst og enheter på aksane. Origo i øver- ste)venstre hjØrnet.
Kallesekvens:
AKSER(MAX,SKALA,XTEKST,YTEKST) Parameterar:
MAX-REAL:
SKALA-REAL:
Vektor som inneheld lengde av h.h.v. X- og Y-aksen.
Vektor som inneheld skala for h.h.v. X- og Y-aksen.
XTEKST,YTEKST-STRING: Tekst som blir plassert midt på aksane.
' -
Aksane får korrekte enheter berre når FACTOR
=
l.BOBLESORT: (BOBLESORT/HR).
Prosedyre som utfører boblesortering i stigande eller avtakande rekkefØlgje ved bruk av ein peikar-vektor.
Kallesekvens:
BOBLESORT(A,PEIK,N,TYPE) Parameterar:
A-REAL:
PEIK-INTEGER:
N-INTEGER:
TYPE-STRING:
Vektor som skal sorterast.
Vektor som inneheld den ordna rekkefØlgjen etter sortering (Utparameter) .
Antal element i A.
Kan vere 'STIGANDE' eller 'AVTAKANDE'.
Avgjer om A skal ordnast i stigande eller avtakande rekkefØlgje.
Ved eventuelle feil i TYPE, så får ein alltid stigande rekkefØlgje.
- 28 -
DEKODEOVERPUNCH: (DEKODER/HR) .
Prosedyren som behandlar overpunch i kolonne 28-40 på eit hydro- djupte-kort.
Kallesekvens:
DEKODEOVERPUNCH(KORT,DJUPTE,TEMP,SALT,PUNCHEFEIL) Innparameter:
KORT-STRING:
Utparameterar: ·
DJUPTE-INTEGER:
Innhaldet av eit hydro-djupte kort.
Observasjonsdjupte.
SALT,TEMP-REAL: Observasjonsverdiar for salt og temperatur.
PUNCHEFEIL-BOOLEAN: Logisk variable ~om vert sett lik TRUE der- som kortet inneheld feil.
Usikkerhets-overpunch vert markert ved å addere t i l 10000 i vedkom- mande observasjon.
Bruker den eksterne prosedyren OVERPUNCHll.
OVERPUNCHll: (OVERPUNCHll/HR) .
Prosedyre som fjernar ein 11-overpunch frå ein karakter.
Kallesekvens:
OVERPUNCHll(KARAKTER) Inn/Utparameter:
KARAKTER-STRING: Karakteren som inneheld overpunch.
Fortran-rutiner:
·siGMAT: (SIGMAT/HR).
Rutine som beregnar sigma-t. Spesielt tilpassa SNITT/HR.
Ka11esekvens:
SIG111AT(TEMP,SALT,SIG111A) Innparameterar:
TEMP,SALT-REAL: Temperatur og sa1tobservasjon.
Utparameter:
SIGMA-REAL: Beregna sigma-t verdi.
DISTR,INTRPL og SKALER:
Sjå'beskrive1se under SECTN/KDS-HR side 9 - 11.