59
Shell und UNIX Typischer Datei-Baum unter UNIX / /bin /dev /tmp /usr usr/local /usr/users usr/local/bin /usr/local/bin/f95 /usr/users/wolfi /usr/users/heinz /usr/users/roger Benutzer.. Compiler.. /bin/sh /bin/ksh /bin/bash /bin/csh /bin/tcsh /bin/zsh Shells.. Kommandos /bin/man /bin/mv /bin/cp /lib /etc Die Shell ist der Kommandozeilen-Interpreter vom Betriebssystem UNIX. Sie ist ein (normales) Programm das dem Super-User (Administrator) geh¨ ort. Der Benutzer kann es nicht l¨ oschen! Je nach Installation hat der Benutzer nach dem einloggen eine Shell. Es gibt komfortable aber wenig verbreitete Shells wie zsh und tcsh. 1

Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Embed Size (px)

Citation preview

Page 1: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Shell und UNIX

Typischer Datei-Baum unter UNIX/

/bin /dev /tmp /usr

usr/local /usr/users

usr/local/bin/usr/local/bin/f95

/usr/users/wolfi

/usr/users/heinz

/usr/users/roger

Benutzer..Compiler..

/bin/sh/bin/ksh/bin/bash/bin/csh/bin/tcsh/bin/zsh

Shells..

Kommandos/bin/man/bin/mv/bin/cp

/lib/etc

Die Shell ist der Kommandozeilen-Interpreter vomBetriebssystem UNIX. Sie ist ein (normales) Programm dasdem Super-User (Administrator) gehort. Der Benutzer kann esnicht loschen! Je nach Installation hat der Benutzer nach demeinloggen eine Shell. Es gibt komfortable aber wenigverbreitete Shells wie zsh und tcsh.

1

Page 2: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Shell und UNIX

Verschiedene Shells: Merkmale

Bourne-Shell (S.R. Bourne): sh

• unkomfortabel: Tippfehler = neu tippen

• auf jedem UNIX System vorhanden !!

C-Shell: csh

• Eingabe komfortabler

• Kommandos angelehnt an C (vorwiegendKleinbuchstaben)

• aufwarts-kompatibel dazu ist Tenex-Shell: tcsh

Korn-Shell (Bolsky and Korn): ksh

• Mindestens so komfortable wie C-Shell

• absolut aufwarts-kompatibel zur sh

Bourne (borne) Again Shell: bash

• absolut aufwarts-kompatibel zur sh

• fast aufwarts-kompatibel zur ksh und csh

• Bei Suse Linux Standard; verbreitet sich rasend

2

Page 3: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Shell und UNIX

Shell Stammbaum

Linux überall MM5 ???Rechenzentren

ksh (93)

ksh (88)

sh

csh

tcsh

1977

1979

1988

1993

1995

1998

2004

bash

Ablauf wenn ich ein Terminal (Konsole) offne

Shell login-Shell nichtlogin-Shell

sh /etc/profile,$HOME/.profile

ksh /etc/profile,$HOME/.profile,ENV Datei

ENV Datei,ENV=datei gesetztin $HOME/.profile

bash /etc/profile,$HOME/.bash_profile,$HOME/.bash_login,$HOME/.profile

$HOME/.bashrc

csh $HOME/.cshrc,$HOME/.login

$HOME/.cshrc

tcsh /etc/csh.cshrc,/etc/csh.login,$HOME/.cshrc,$HOME/.login

/etc/csh.cshrc,~/.login, ~/.tcshrc,~/.tcshrc

3

Page 4: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Shell und UNIX

Anderungen wirksam machen

Ich habe Anderungen in .profile bzw .login gemacht undmochte dass diese sofort wirksam werden

• Ich habe sh, ksh oder bash:. .profile

• Ich habe csh oder tcsh:source .login

Ich habe sh, ksh, bash und mochte meine Anpassungen auf einseparates File schreiben:

# dies ist die letzte Zeile von .profile

. $HOME/.mysettings # in .mysettings sind meine Anpassungen

Typische Anpassung: Such-Pfad verlangern

PATH=$PATH:. # in .profile sh ksh bash

set path = ( $path . ) # in .login csh tcsh

4

Page 5: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Shell und UNIX

Der Anfang: einige UNIX Standard Kommandos:

Kommando Wirkung Beispiel

which welches Kommandowird benutzt ?

which f95

man Kurz-Referenz desKommandos

man man

ls Dateien und Rechtelisten

ls -alF

cp copy cp von nachmv umbenennen mv alt nachneurm loschen rm -i datei

echo Textausgabe echo "Text ausgeben",echo $HOME,echo $PATH

date Datum ausgeben date +%jchmod Datei-Attribute set-

zenchmod ugo+r

Shell-Skripts

In der Datei todo steht:

# ich bin ein shell-scriptecho "Compile and run demo.f90"f95 demo.f90ls -l a.outa.outecho "fertig"

Start in Sub-Shell

sh todoksh todocsh todobash todo

oder einfach fur den user (mich) ausfuhrbar machen:

chmod u+x todotodo

5

Page 6: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Shell und UNIX

Start auf gleicher Ebene

Start als Prozess auf gleicher Ebene . todo in sh, ksh, bashbzw. source todo in csh oder tcsh. Dies ist normalerweiseunerwunscht, da die aktuelle Umgebung beeinflusst wird,wohingegen der Kind-Prozess nur intern etwas an derUmgebung andert. Ausnahme: .profile bzw, .login

Pseudokommentar: Shell in der todo lauft bei Aufruf mitNamen durch Pseudokommentar erzwingen

#!/bin/bash

# laeuft unter Bourne-Again Shell falls mit todo gerufen

# sh todo oder ksh todo .... ignorieren diesen Kommentar

# ebenso Aufruf mit . todo

echo "Compile and run demo.f90"

...

Argumente an Skript ubergeben

#!/bin/sh

# filename: argumentef95 $3

a.out

echo "$1 Jahre w$2der"

echo "ende $0"

Aufruf etwa:argumente Alle ie demo.f90

6

Page 7: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Shell und UNIX

Metazeichen fur Dateinamen

Zeichen Bedeutung

* Wird zu einem oder mehreren beliebigenZeichen (auch leer) expandiert. Ausnah-me: . am Anfang, sog. versteckte Datei

? Wird zu 1 beliebigen Zeichen expandiert.[s] Wird mit einem Zeichen aus der Zeichen-

kette s ersetzt. ls t[mu]p listet tmp undtup

[!s] Wird mit einem Zeichen aus der Zeichen-kette ersetzt, das nicht in s enthalten ist.

[c1-cn] wird durch genau ein Zeichen aus c1-cn

ersetzt, z.B. [a-z]

Weitere Metazeichen

Zeichen Bedeutung

$ Beginn einer Variablen, die substituiertwerden soll, z.B. echo $HOME oder echo $1

oder echo $PATH‘kommando‘ Wird durch die Ausgabe (stdout),

die kommando erzeugt ersetzt. Bsp.‘date +%j‘, auch ‘a.out‘

7

Page 8: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Shell und UNIX

Sonder-Bedeutung von Metazeichen

aufheben: Quoten

Quote-Zeichen Bedeutung

\ Zeichen rechts davon keine Sonder-Bedeutung

’ ’ Text innerhalb einfacher Anfuhrungszei-chen wird nicht verandert.

" " $ bleibt Sonderzeichen. Alle anderen ver-lieren innerhalb der Anfuhrungszeichenihre Bedeutung

Umlenkung von input output und error

Umlenkung von sh ksh bash csh tcsh

stdin < file < filestdout > file > filestderr 2> file nicht moglichstdout and stderr >file 2>&1 >& filegetrennte Umlen-kung stdout undstderr

>file 2>file1 nicht moglich

stdout and fileanhangen

>> file >> file

stdout und stderr anfile anhangen

>>file 2>&1 >>& file

8

Page 9: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Shell und UNIX

Konzept der Pipes

Kommando1 stdout stdin Kommando2 stdout

stderr

stderr|

Beispiele:

ls -lR | grep tm

cat demo.f90 | tr "[A-Z]" "[a-z]"

Gruppierung von Kommandos

Symbol Bedeutung

; trennt Kommandosk1 && k2 k2 wird ausgefuhrt wenn k1 den Ruck-

gabewert 0 liefert (=Erfolg)k1 || k2 k2 wird ausgefuhrt wenn k1 einen Ruck-

gabewert ungleich 0 liefert(kommando) kommando wird in einer Sub-Shell aus-

gefuhrt

Beispiele:

ls; cd ..; ls cd

ls && echo "ok"

ls /00 && echo "’ok"

pwd; (cd /tmp; pwd): pwd

sh exit

9

Page 10: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Shell und UNIX

Shell-Variablen

Variable Bedeutung

? Ruckgabewert des letzten Kommandos$ Prozess-Nummer der Shell* Alle Argumente die an die Shell ubergeben wur-

den als einzige Zeichenkette@ Alle Argumente die an die Shell ubergeben wur-

den als einzelne Zeichenkette# Enthalt die Anzahl der Argumente die an die

Shell ubergeben wurden als einzelne Zeichenket-te

HOME Pfad zum Home Verzeichnis de BenutzersPWD Enthalt das aktuelle ArbeitsverzeichnisPATH Suchpfad in dem nach Programmen gesucht wirdPS1 Steuerung der Eingabeaufforderung

Environment Variablen

wie Shell-Variablen mussen exportiert werden um in Sub-Shellsverfugbar zu sein (sonst sind sie nicht verfugbar).

# Lizenzinformation f95

LM_LICENSE_FILE=/usr/local/lib/NAGWare/NAG.demo; export LM_LICENSE_FILE # sh ksh bash

setenv LM_LICENSE_FILE /usr/local/lib/NAGWare/NAG.demo # csh

10

Page 11: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Shell und UNIX

Kontrollstrukturen (nur in Beispielen)

Bedingte Anweisung in sh (neue Zeilen konnen durch ; ersetztwerden)

if test $# -ne 1

thenecho "$0 falsche Anzahl von Parametern -- Abbruch"

exit 1 # Rueckgabewert

else

echo "Uebergeben wurde $1"

fi

..

alternativ fur test konnen eckige Klammern mit Leerzeichen (!)geschrieben werden

if [ $# -ne 1 ]; thenecho "$0 falsche Anzahl von Parametern -- Abbruch"

exit 1 # Rueckgabewert

fi

..

Die while Schleife

while [ -n "$1" ]; do # prueft ob "string" leer ist

echo "Argument: $1"

shift # jetzt ist $1 das zweite Argument

done

11

Page 12: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Shell und UNIX

Die for Schleife

for i in wolfi heinz roger 2 3; do

echo $i

done

Die case-Anweisung

echo "Ihre Anwort bitte: "

read ANSWER # belegt variable ANSWER

case $ANSWER in

[jJ]a|[yY]es)echo "Antwort war ja/Ja oder yes/Yes"

exit 0

;;

[nN]ein|[nN]o)

echo "Antwort war nein/Nein/ oder no/No"

exit 1;;

*)

echo "unpassende Antwort"

;;

esac

12

Page 13: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Shell und UNIX

Operatoren des Kommandos test

Operator Bedeutung

n1 -eq n2 wahr wenn Zahl n1 gleich Zahl n2n1 -lt n2 wahr wenn Zahl n1 kleiner als Zahl n2n1 -le n2 wahr wenn Zahl n1 kleiner gleich Zahl n2n1 -gt n2 wahr wenn Zahl n1 großer als Zahl n2n1 -ge n2 wahr wenn Zahl n1 großer gleich Zahl n2s1 = s2 wahr wenn Zeichenkette s1 gleich Zei-

chenkette s2s1 != s2 wahr wenn Zeichenkette s1 nicht gleich

Zeichenkette s2-z s1 wahr wenn Zeichenkette s1 null Zeichen

ist-n s1 wahr wenn Zeichenkette s1 großer null

Zeichen ist-e datei wahr wenn datei existiert-f datei wahr wenn datei eine normale datei ist

(kein Verzeichnis, kein Link)-r datei wahr wenn datei lesbar ist (Permission)-w datei wahr wenn datei beschreibbar ist (Per-

mission)-x datei wahr wenn datei ausfuhrbar ist (Permis-

sion)-s datei wahr wenn datei langer als Null Zeichen

ista1 -a a2 AND Verknupfung zweier Test-

Ausdrucke a1 a2a1 -o a2 OR Verknupfung zweier Test-Ausdrucke

a1 a2!a Negation, wahr wenn nicht a wahr ist

( a ) Klammerung zur Klarung von Prio-ritaten, wie ( a1 -o a2 ) -a a3 im Ge-gensatz zu a1 -o ( a2 -a a3 )

13

Page 14: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Shell und UNIX

Shell (Skript) Optionen

Option Wirkung

set -e Shell wird bei Fehler beendetset -f Dateinamenersetzung ausset -n Testlauf - keine Ausfuhrungset -v verbose zur Fehlersucheset -x jedes Kommando wird interpretiert ausgegeben

Nicht in der sh verfugbar sind:

set -o emacs Kommandozeile im emacs-Mode editierenset -o vi Kommandozeile im vi-Mode editieren

14

Page 15: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Shell Beispiele

wolfi@ramses2:~/Shells> cat .bash_profile

#

# all created data are private#

umask 077 # remove permissions 0 4+2+1 4+2+1 4=-r 2=-w 1=-x

#

# on ramses only the old version ifc is available

#

case ‘uname -n‘ inramses)

alias ifort=ifc

;;

esac

wolfi@ramses2:~/Shells> cat findshort

#!/bin/sh

max=1000

for name in *do size=‘wc -c < $name‘ # count words

if [ $size -le $max ]

then echo "$name is a short file: $size characters"

fi

done

wolfi@ramses2:~/Shells> cat forloop

#!/bin/shingred=’apple berry cake dough’

for word in $ingred

do echo $word

done

15

Page 16: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Shell Beispiele

wolfi@ramses2:~/Shells> cat forset#!/bin/shset ‘ls‘for file

do echo $filedone

echo "This is equivalent.."

for file in *do echo $file

done

wolfi@ramses2:~/Shells> cat function## make available with . function#rename ()

echo "Current name: "read fileecho "new name: "read newmv $file $newecho "file $file has been renamed $new "

wolfi@ramses2:~/Shells> cat untilloop#!/bin/shi=1until i=‘expr $i - 1‘do echo Counter is $idone

wolfi@ramses2:~/Shells> cat whileloop#!/bin/shi=5while i=‘expr $i - 1‘ # Loop while truedo echo Counter is $idone

16

Page 17: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

GMT

Generic Mapping Tools Graphicshttp://gmt.soest.hawaii.edu

• Paul Wessel and Walter H.F. Smith

• follows UNIX command line philosophy not Windows

• why so popular - the price is right (free)

• output is postscript

Die -B Option (Eier legende Wollmilchsau)

3010 20

grid

frameanotation

17

Page 18: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

GMT

Postscript im Baukasten Prinzip

−O ommits header

−K ommits trailer

−O −K

HEADER

BODY−1

BODY−n

TRAILER

Das Koordinatensystem

default is Landscape

xoff=1 inch

yoff=1 inch

xoff

yoff

y

x

−X −Y

18

Page 19: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

GMT

Beispiel: pscontour

Struktur des input-files:

Chan and Williams vortex-250.00 -250.00 0.00-245.00 -250.00 0.00... ... ...-50.00 0.00 47.18-45.00 0.00 49.25-40.00 0.00 50.00... ... ...

MODULE VORTEXPROFILE

CONTAINS

ELEMENTAL SUBROUTINE ChanWilliamsVortex(v,r,vm,rm,b)

! elemental: subroutine may be called with conformal arrays! restricted to "pure" (=simple) subroutines without! if structures inside. Interface must be explicit,! e.g. module procedure.

REAL, INTENT(out) :: v ! azimuthal windREAL, INTENT(in) :: r ! radiusREAL, INTENT(in) :: vm ! max azimuthal windREAL, INTENT(in) :: rm ! radius of max windREAL, INTENT(in) :: b ! shape parameter use 1 or 2

REAL :: s; s=r/rm

v=vm*s*EXP((1.0-s**b)/b)

END SUBROUTINE ChanWilliamsVortex

END MODULE VORTEXPROFILE

19

Page 20: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

GMT

PROGRAM VortexDemo ! 3.12.2004USE VORTEXPROFILEINTEGER, PARAMETER :: NX=50, NY=50, iu=7REAL, PARAMETER :: dx=5.E3, dy=dx, rm=40.E3, vm=50.REAL, DIMENSION(-NX:NX,-NY:NY) :: wind, rREAL, DIMENSION(-NX:NX) :: xREAL, DIMENSION(-NY:NY) :: y

x=(/(i*dx,i=-NX,NX)/)y=(/(i*dy,i=-NY,NY)/)

xc=0.; yc=0. ! centre of vortex

DO j=-NY,NYDO i=-NX,NX

r(i,j)=SQRT((x(i)-xc)**2+(y(j)-yc)**2)ENDDO

ENDDO

b=2.CALL ChanWilliamsVortex(wind,r,vm,rm,b)CALL togmt(’CWvortex.xyz’)

CONTAINS

SUBROUTINE togmt(filename)CHARACTER(LEN=*) :: filenameOPEN(UNIT=iu,FILE=filename)WRITE(UNIT=iu,FMT="(A)") "Chan and Williams vortex"DO j=-NY,NY

DO i=-NX,NXWRITE(UNIT=iu,FMT="(2F10.2,F10.2)") &x(i)/1000.,y(j)/1000.,wind(i,j) ! x y z

ENDDOENDDOCLOSE(UNIT=iu)END SUBROUTINE togmt

END PROGRAM VortexDemo

20

Page 21: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

GMT

Demo-script: gmtscript.bash

#!/bin/bash######################################################################## bash script demo to plot xyz files# W.Ulrich 23.11.2004######################################################################### settings#set -e # stop on any errorgmtset PAPER_MEDIA A4 # A4 paperPSOUT=wind.ps # postscript outputXYZ=CWvortex.xyz # data file with structure x y zif test -e $PSOUT; then # if $PSOUT alreay exists delete it

rm $PSOUTfihead -1 $XYZ # display first line of $XYZminmax -H $XYZ # GMT: display minimum and maximum of dataLO=0; HI=60; INC=5 # contour settingsXWEST=-250; XEAST=250 # X-axisYSOUTH=-250; YNORTH=250 # Y-axisTITLE=’WIND SPEED’XTITLE=’WEST-EAST (km)’YTITLE=’SOUTH-NORTH (km)’XWIDTH=16c # size of diagram in cmYWIDTH=16c # use an even number, see belowXTICKS=a50f10g50 # aanotate fticks ggridYTICKS=a50f10g50COLOURPALETTE=rainbow # this is a recommended oneLABELS=1## write a colour table (rainbow sequence) to file palette.cpt#makecpt -C$COLOURPALETTE -T$LO/$HI/$INC > palette.cpt## colour shading#

21

Page 22: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

GMT

pscontour $XYZ -H \-I -Cpalette.cpt \-JX$XWIDTH/$YWIDTH \-R$XWEST/$XEAST/$YSOUTH/$YNORTH \-B$XTICKS:"$XTITLE":/$YTICKS:"$YTITLE"::."$TITLE":WeSn \-X4c -K > $PSOUT

## contour labels if LABELS=1#if test $LABELS -eq 1; then

pscontour $XYZ -H \-W -Cpalette.cpt \-JX \-R \-O -K >> $PSOUT

fi## colour bar finishes figure#XPOS=‘expr $XWIDTH%c + 2‘cYPOS=‘expr $YWIDTH%c / 2‘cecho "XPOS=$XPOS YPOS=$YPOS"LENGTH=$YWIDTHif test ‘expr 2 \* $YPOS%c‘ -ne $YWIDTH%cthen

LENGTH=‘expr $YWIDTH%c - 1‘cfiWIDTH=1cUNITS=’ms@+-1@+’psscale -Cpalette.cpt \

-D$XPOS/$YPOS/$LENGTH/$WIDTH \-Ba$INC::/:$UNITS: \-O -U >> $PSOUT

## display $PSOUT with postscript viewer gv#gv -landscape $PSOUT

22

Page 23: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

GMT

GMT - gmtscript.bash

-250

-200

-150

-100

-50

0

50

100

150

200

250

SO

UT

H-N

OR

TH

(km

)

-250 -200 -150 -100 -50 0 50 100 150 200 250

WEST-EAST (km)

WIND SPEED

5

5

5

5

10

10

10

15

15

15

20

20

2025 25

30

30

35

35

3540

40

40

45

45

2004 Dec 4 11:19:25

0

5

10

15

20

25

30

35

40

45

50

55

60ms-1

23

Page 24: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

GMT

Leicht zu erstellen: x-y-plot

#

# axes ticks and label texts

#

psbasemap -JX$XWIDTH/$YWIDTH \

-R$XLEFT/$XRIGHT/$YBOT/$YTOP \

-B$XTICKS:"$XTITLE":/$YTICKS:"$YTITLE"::."$TITLE":WeSn \-K > $PSOUT

#

# use e.g. default thick thicker fat fatter

#

psxy $XY -H -JX -R -B -Wthicker,red -O >> $PSOUT

0

10

20

30

40

50

V (

m/s

)

0 50 100 150 200 250 300

RADIUS (km)

0

10

20

30

40

50

V (

m/s

)

0 50 100 150 200 250 300

RADIUS (km)

24

Page 25: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Gnuplot

Gnuplothttp://www.gnuplot.info

Gnuplot is a portable command-line driven interactive datafile(text or binary) and function plotting utility for UNIX, IBMOS/2, MS Windows, DOS, Apple Macintosh, VMS, Atari andmany other platforms. The software is copyrighted but freelydistributed (i.e., you don’t have to pay for it). It was originallyintended as graphical program which would allow scientists andstudents to visualize mathematical functions and data. It doesthis job pretty well, and in addition it serves as non-interactiveplotting engine for miscellaneous portable third-partyapplications, like Octave. Gnuplot is developed and supportedsince 1986, and having its scripts and commands easy tounderstand text files, it is time-portable as well.

Demonstration mit dem input-file: p_th_TK.dat

# p (hPa) theta (K) TK(k)

100.0 353.4 183.2

200.0 339.2 214.2

300.0 330.1 234.1400.0 323.3 248.9

500.0 317.9 260.8

600.0 313.3 270.8

700.0 309.4 279.4

800.0 305.9 287.0

900.0 302.8 293.81000.0 300.0 300.0

Das # wird als Kommentarzeile interpretiert.

25

Page 26: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Gnuplot

Gnuplot besitzt eine einfache (Script-)Sprache

> cat theta_p.gpi # Ausgabe## gnuplot input#set terminal postscript eps enh color solid "Times-Roman" 24set output "th_p.eps"set size ratio 0.6set title "constant N^2 profile"set xlabel "/Symbol q in K"set ylabel "p in hPa"set autoscale xset yrange [1000:100]set key right bottomplot "p_th_TK.dat" using 2:1 title "[/Symbol q(p)]_N^2=const" \w l lt 1 lw 5pause 1!gv th_p.eps &

100

200

300

400

500

600

700

800

900

1000 300 310 320 330 340 350 360

p in

hPa

θ in K

constant N2 profile

[θ(p)]N2=const

Ergebnis von load "theta_p.gpi"

26

Page 27: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Gnuplot

Qualitat hangt stark vom terminal ab

> cat theta_p.pnggpi## gnuplot input#set terminal png color mediumset output "th_p.png"set size ratio 0.6set title "constant N^2 profile"set xlabel "/Symbol q in K"set ylabel "p in hPa"set autoscale xset yrange [1000:100]set key right bottomplot "p_th_TK.dat" using 2:1 title "/Symbol q" w l lt 1 lw 5pause 1!xv th_p.png &

Ergebnis von load "theta_p.pnggpi"

27

Page 28: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Gnuplot

Starke: Automatische Wahl derAchsenbeschriftung

> cat theta_TK_p.gpi## gnuplot input#set terminal postscript eps enh color solid "Times-Roman" 24set output "th_TK_p.eps"set size ratio 0.6set title "constant N^2 profiles"set xlabel "/Symbol q and T_K in K"set ylabel "p in hPa"set autoscale xset yrange [1000:100]set key topplot "p_th_TK.dat" using 2:1 title "[/Symbol q(p)]_N^2=const" \w l lt 1 lw5, \

"" using 3:1 title "[T_K(p)]_N^2=const" w lp lt 3 lw 1pause 1!gv th_TK_p.eps &

100

200

300

400

500

600

700

800

900

1000 180 200 220 240 260 280 300 320 340 360

p in

hPa

θ and TK in K

constant N2 profiles

[θ(p)]N2=const[TK(p)]N2=const

Ergebnis von load "theta_TK_p.gpi"

28

Page 29: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

GrADS

GrADShttp://grads.iges.org/grads/grads.html

The Grid Analysis and Display System (GrADS) is aninteractive desktop tool that is used for easy access,manipulation, and visualization of earth science data. Theformat of the data may be either binary, GRIB, NetCDF, orHDF-SDS (Scientific Data Sets). GrADS has beenimplemented worldwide on a variety of commonly usedoperating systems and is freely distributed over the Internet.

• GrADS uses a 4-Dimensional data environment: longitude,latitude, vertical level, and time

z(=3.DIM)

x(=1.DIM)

y(=2.DIM)

t(=4.DIM)

t=2

t=3

t=1

• Data sets are placed within the 4-D space by use of adata descriptor file

• Data from different data sets may be graphically overlaid,with correct spatial and time registration

• Operations are executed interactively by enteringFORTRAN-like expressions at the command line

• GrADS has a programmable interface (scripting language)that allows for sophisticated analysis and displayapplications

29

Page 30: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

GrADS

Example Descriptor file example.ctl

DSET ^gridded_data_sample.datTITLE Gridded Data SampleUNDEF -9.99E33XDEF 180 LINEAR 0.0 2.0YDEF 90 LINEAR -90 2.0ZDEF 10 LEVELS 1000 850 700 500 400 300 250 200 150 100TDEF 4 LINEAR 0Z10apr1991 12hrVARS 4slp 0 99 sea level pressurehgt 10 99 heightstemp 10 99 temperatureshum 6 99 specific humidityENDVARS

Eine kleine function auf dem file myd.gs im selben Verzeichniskann mit dem Aufruf myd ps den Bodendruck mit Farbe unduberlagerten Isolinien darstellen.

function myd(var)******************************************** merkwuerdig, die 1. function auf dem file* darf nur 1 Argument haben*******************************************’set gxout shaded’’d ’varcbarn’set gxout contour’’d ’varreturn

Hinweis: Soll die function so einfach bleiben ist ein execvorzuziehen, das keine ’ ’ braucht.

set gxout shadedd &0cbarnset gxout contourd &0

30

Page 31: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

GrADS

Erganzungen zum GrADS Tutorial

Eine einfache Moglichkeit der Animation

function stepit(var)

* animate time evolution of varrc = gsfallow("on")

t=1

’set t ’t

_tmax=gettmax()

while(t <= tmax)_t=t

sho(var)

prompt ’[[f][b][q]]<RETURN> ’

pull ans

if(ans="q"); return; endif

if(ans="b"); inc=-1; endifif(ans="f"); inc=1; endif

if(t=_tmax); inc=-1; endif

if(t=1); inc=1; endif

t=t+inc

’set t ’t

endwhile

return

function sho(var)

*----------------

c’set gxout shaded’

’d ’var

cbarn

’set gxout contour’

’d ’var

’draw title t=’_t’ date=’getdate()return

31

Page 32: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

GrADS

im Verzeichnis auf das die Umgebungsvariable GASCRP (in.profile) zeigt stehen getdate.gsf

function getdate()

*----------------

’q dims’

line=sublin(result,5)

return subwrd(line,6)

und gettmax.gsf

function gettmax()

******************

* get final t *******************

’q file’

line=sublin(result,5)

tmax=subwrd(line,12)

return tmax

die haufiger in Skripten (vom Benutzer) verwendet werden. DerAnschluss erfolgt mit der Zeile rc = gsfallow("on"). Die beidenfunctions konnten aber auf dem file stehen.

32

Page 33: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

GrADS

GrADS Datenfile erzeugen

...

CONTAINS

SUBROUTINE toGrADS(filename)INTEGER, SAVE :: RECORD=0

CHARACTER(LEN=*) :: filename

! binary write like a C-Program

!------------------------------

NWORDS=(2*NX+1)*(2*NY+1)

NBYTES=NWORDS*4OPEN(UNIT=iu,FILE=filename,ACCESS=’direct’,FORM=’unformatted’,&

STATUS=’replace’,RECL=NBYTES)

RECORD=RECORD+1

WRITE(UNIT=iu,REC=RECORD) wind(-NX:NX,-NY:NY)

CLOSE(UNIT=iu)

END SUBROUTINE toGrADS

Das zugehorige Descriptor file

DSET ^CWvortex.grads

TITLE Chan and Williams vortexUNDEF -9.99E33

XDEF 101 LINEAR -250 5

YDEF 101 LINEAR -250 5

ZDEF 1 LEVELS 1000

TDEF 1 LINEAR 0Z10apr1991 12hr

VARS 1wind 0 99 wind speed

ENDVARS

33

Page 34: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

GrADS

Das zugehorige exec script

open CWvortex.ctlset vpage 0.0 11.0 0.0 8.5set parea 1.5 7.5 1.5 7.5set mproj offset gxout shadedset xlint -50set ylint -50d windcbarnset gxout contourd winddraw xlab X(km)draw ylab Y(km)draw title Chan and Williams vortex

34

Page 35: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Advektion

Advektion

Dt= 0 ⇒ ρt + uρx + vρy + ωρp = 0 (1)

mit: ux + vy + ωp = 0 ⇒

ρt + (uρ)x + (vρ)y + (ωρ)p︸ ︷︷ ︸∮ ∮ ∮

...dxdydp=0

= 0 (2)

Advektion von ρ in einer Dimension: ρt + uρx = 0. Mitu = c0 = const ergibt sich die lineare Advektionsgleichung

ρt + c0ρx = 0 c0 = const (3)

auch als simplest wave equation bezeichnet. Losung ist:ρ = f(x − c0t), f(x) beliebig !! Dies ist ein idealer Testfall umeine numerische Losung mit der analytischen zu vergleichen !Hoffnung: was linear gut ist ist auch sonst gut. Wie sieht dienichtlineare Losung aus? Wir betrachten

ρt + c(ρ)ρx = 0. (4)

auch als quasi-lineare Gleichung bezeichnet. Wichtig: DasSuperpositionsprinzip linearer Gleichungen gilt nicht mehr! Wirgehen in die (x,t)-Ebene und schreiben

Dx

Dt= c(ρ) (5)

Dt=

∂ρ

∂t+

Dx

Dt

∂ρ

∂x= 0 (6)

(5) bedeutet eine Steigung einer Kurve in der (x,t) Ebene und(6) sagt aus, dass ρ entlang dieser Kurve konstant bleibt, alsoist die Kurve eine Gerade fur ein bestimmtes ρ. Man nennt dieKurven die Charakteristiken der quasi-linearen Gleichung. Beianderen Gleichungen bleibt die Eigenschaft ρ nicht konstant.

35

Page 36: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Advektion

Wir suchen eine spezifische Losung:

t = 0, ρ = f(x), −∞ < x < ∞ (7)

x

t

ρ

ρ

tB

ξΒSei bei t = 0 : x = ξ ⇒ ρ = f(ξ) auf einer Kurve. Die Steigungist dann F (ξ) := c(f(ξ)) entlang der Kurve. Integration von (5)liefert die Kurven-Gleichung:

x = ξ + F (ξ)t (8)

Wir lassen ξ variieren und erhalten

ρ = f(ξ), c = F (ξ) = c(f(ξ)) auf x = ξ + F (ξ)t (9)

somit ist ρ implizit gegeben mit ξ = ξ(x, t) Differentiation vonρ = f(ξ) nach t und nach x ergibt:

ρt = f ′(ξ)ξt, ρx = f ′(ξ)ξx. (10)

Differentiation nach t und x von (8) liefert

0 = F (ξ) +(1 + F ′(ξ)t

)ξt, 1 =

(1 + F ′(ξ)t

)ξx (11)

Elimination von ξt und ξx und Einsetzen in (10) ergibt dieLosung von (4)

ρt = − F (ξ)f ′(ξ)

1 + F ′(ξ)t, ρx =

f ′(ξ)

1 + F ′(ξ)t(12)

36

Page 37: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Advektion

Auf jeder Charakteristik mit F ′(ξ) < 0 tritt Brechen auf, falls

t = − 1

F ′(ξ). (13)

Das erste Brechen tritt auf fur t = tB:

F ′(ξ) minimal ⇒ tB = − 1

F ′(ξB). (14)

Abhangigkeit von der Anfangsbedingung

f(x) =

ρ1, x > 0ρ2, x < 0. F (x) =

c1 = c(ρ1), x > 0c2 = c(ρ2), x < 0

(15)

Fur c2 > c1 tritt sofort Brechen auf.

Fur c2 < c1 gilt aber fur die Kurven-Familie (8):

c = F, x = Ft ⇒ c =x

t, c2 < F < c1 (16)

Die Losung ist dann

c =

c1, c1 < x

t,

xt, c2 < x

t< c1,

c2,xt

< c2.(17)

Der Fall c2 < c1 ist im Gegensatz zu c2 > c1 eine physikalischeLosung.

37

Page 38: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Advektion

Kompression c2 > c1

x

x

t

c=c2 c=c1

ρ

ρ2

ρ1

x=c1

x=c2 t

t

Expansion c2 < c1

x

x

t

c=c2 c=c1

ρ

ρ1

ρ2

38

Page 39: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Advektion

Flussform

Sei ρ(x, t) eine Dichte pro Langeneinheit und q(x, t) ein Flusspro Zeiteinheit. Dann ist eine Geschwindigkeit v(x, t)

v =q

ρ. (18)

Materielle Erhaltung

D

Dt

∫ x1

x2

ρ(x, t)dx + q(x1, t)− q(x2, t) = 0. (19)

Mit x1 → x2 erhalt man die Erhaltungsgleichung

∂ρ

∂t+

∂q

∂x= 0 (20)

Sei q = Q(ρ) ⇒ ρt + c(ρ)ρx = 0 mit c(ρ) = Q′(ρ).

Beispiele:

• ρ(x, t): Autos pro Langeneinheitq(x, t): Autos die x im Zeitintervall kreuzen.

• ρ(x, t): Kanal-Querschnittq(x, t): Volumenfluss durch Querschnitt q = Q(A).

• ρ(x, t): Dicke von Gletscher-Eisq(x, t): Vorbeifluss bei x.

39

Page 40: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Advektion

Schock (Brechen)

Es gelte q = Q(ρ) und die Erhaltung (19). Sei ein Sprung(Schock) da: x2 < s(t) < x1 (Konvention in dieser Literatur).Aus (19) folgt

q(x2, t) − q(x1, t) =D

Dt

∫ s(t)

x2

ρ(x, t)dx +D

Dt

∫ x1

s(t)

ρ(x, t)dx

= ρ(s−, t)s − ρ(s+, t)s +

∫ s(t)

x2

ρt(x, t)dx +

∫ x1

s(t)

ρt(x, t)dx (21)

Mit s = DsDt

. Fur x1 → s+ und x2 → s− verschwinden die beidenletzten Integrale weil ρt begrenzt. Somit

q(s−, t)− q(s+, t)︸ ︷︷ ︸

q2−q1

= s(ρ(s−, t) − ρ(s+, t)

)

︸ ︷︷ ︸U(ρ2−ρ1)

(22)

oder mit[..] als Symbol fur den Sprung

−U [ρ]︸ ︷︷ ︸

→ ∂ρ

∂t

+ [q]︸︷︷︸

→ ∂q

∂x

= 0 (23)

Wo q = Q(ρ) erfullt ist gilt also

U =q2 − q1

ρ2 − ρ1

=Q(ρ2) − Q(ρ1)

ρ2 − ρ1

(24)

Wir machen den Fall c2 > c1 physikalisch:

ρ =

ρ1, x > Utρ2, x < Ut (25)

In Schock-relativen Koordinaten:

q1 − Uρ1 = q2 − Uρ2 (26)

40

Page 41: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Advektion

q=q1

ρ=ρ1ρ=ρ2

2q=q

ρ=ρ1ρ=ρ2

ρ2 ρ1

U

2 q=q1q=q −U −U

moving relative

Schock-Struktur

(Physikalischer) Ansatz:

q = Q(ρ) − νρx, ν = const. (27)

eingesetzt in (20):

ρt + c(ρ)ρx = νρxx, c(ρ) = Q′(ρ) (28)

Anmerkung: Die Losung von

ρt = νρxx (29)

ist

ρ = ρ2 +ρ1 − ρ2√

π

∫ x/√

4νt

−∞exp(−ζ2)dζ. (30)

Losungsansatz fur (28):

ρ = ρ(X), X = x − Ut, U = const. (31)

Eingesetzt

(c (ρ) − U) ρX = νρXX. (32)

41

Page 42: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Advektion

Integriert nach ρ:

Q(ρ) − Uρ + A = νρX (33)

Gesucht: ρ → ρ1 fur X → ∞, ρ → ρ2 fur X → −∞. Sei auchρX → 0 fur X → ±∞.

Q(ρ1) − Uρ1 + A = Q(ρ2) − Uρ2 + A = 0 (34)

⇒ U =Q(ρ2) − Q(ρ1)

ρ2 − ρ1

(35)

Dies ist gerade die (richtige) Schock-Bedingung! Man kann mitdρ = ρXdX (33) umformen zu

X

ν=

∫dρ

Q(ρ) − Uρ + A(36)

Fur bestimmte Q(ρ) z.B. Q(ρ) = αρ2 + βρ + γ ist diesintegrierbar. U und A folgen aus (34). Dafur

X =ν

α(ρ2 − ρ1)log

ρ2 − ρ

ρ − ρ1

(37)

Ein Maß fur die Breite der Ubergangszone ist

ν

α(ρ2 − ρ1)(38)

ρ=ρ1

ρ=ρ2

x

ρ

∼ ν

42

Page 43: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Advektion

Numerische Losung der Advektionsgleichung

Die Erhaltungsform

∂ρ

∂t+

∂F (ρ)

∂x= 0, F (ρ) = vρ (39)

• umgesetzt in ein (versetztes) Gitter

ρt+∆ti = ρt

i −

(F t

i+12

− F ti−1

2

∆x

)

∆t. (40)

i−1 i i+1i+1/2i− 1/2

• umgesetzt in zentrierte finite Differenzen

F ti+1

2

=F t

i+1 + F ti

2⇒ ρt+∆t

i = ρti −(

F ti+1 − F t

i−1

2∆x

)

∆t. (41)

Diese Form ist numerisch instabil! (Beweis mitNeumannscher Stabilitatsanalyse)

Mathematisches Musterbeispiel: Lax-Wendroff

1. Ausgangspunkt: Taylor-Entwicklung

ρ(x, t + ∆t) = ρ(x, t) +∂ρ

∂t∆t +

∂2ρ

∂t2∆t2

2+O(∆t3) (42)

2. Ersetze Zeitableitung durch Ortsableitung. Ort und Zeitsind also nicht unabhangig!

ρ(x, t + ∆t) = ρ(x, t) − ∂F

∂x∆t +

∂x

(∂F

∂ρ

∂F

∂ρ

∂ρ

∂x

)∆t2

2+O(∆t3)(43)

43

Page 44: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Advektion

• mit zentrierten Differenzen erhalt man

ρt+∆tn = ρt

n −(

F ti+1 − F t

i−1

2∆x

)

∆t +v∆t2

2

(F t

i+1 − 2F ti + F t

i−1

∆x2

)

,(44)

• oder in Erhaltungsform:

F ti+1

2

=1

2

(F t

i+1 + F ti

)−(F t

i+1 − F ti

) v∆t

2∆x(45)

• Fur diese Formen gilt das Courant-Friedrichs-Lewy (CFL)Stabilitatskriterium v∆t/∆x ≤ 1.

Upwind Methoden: Der Natur nachempfunden

1. Ordnung:

F ti+1

2

=

F t

i v > 0F t

i+1 v < 0 (46)

Das Schema ist monoton (erzeugt keine falschlichen Extrema).Godunov (1959) zeigt: Lineare monotone finite Differenzen sindnur 1. Ordnung genau (=sehr diffusiv). Ausweg: NichtlineareSchemen, z.B basierend auf Total Variation Diminishing:

TV D =

N∑

i=1

|uti+1 − ut

i|. (47)

TVD ist ein Maß fur Oszillationen. Kriterium fur TVD istTV (ut+∆t) ≤ TV (ut). Zentrales Element ist der sog. Limiter.

F = F1 + C(. . .)F2 (48)

44

Page 45: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Advektion

Flux-corrected Transport

φn+1i − φn

i

∆t+

(Fi+1

2− Fi−1

2

∆x

)

= 0 (49)

• F Li±1

2

=monoton und diffusiv (Donor Cell)

• F Hi±1

2

=hohere Ordnung

• Ai+12= F H

i+12

− F Li+1

2

=Anti-diffusive Flusse

• φtdi = φn

i − ∆t∆x

δxF L=transported+diffused

• ACi+1

2

= Ci+12Ai=1

20 ≤ C ≤ 1=Limter C

• C so gewahlt, dass keine falschlichen Extrema generiertwerden konnen.

• φn+1i = φtd

i − ∆t∆x

δxAC=verbesserte Losung

Noch verstandlich: Der Limiter von Boris und Book (1973)

ACi+1

2

= Si+12 0, MIN

[|Ai+1

2|,

Si+12

(φtd

i+2 − φtdi+1

)∆x∆t

,

Si+12

(φtd

i − φtdi−1

)∆x∆t

](50)

mit S = A/|A|.

45

Page 46: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Advektion

-20

0

20

40

60

80

100

120

0 10 20 30 40 50 60 70 80 90 100

AM

PLIT

UD

E

GRIDPOINT

CFL=0.40 (steps=250)

initFL

Low order

-20

0

20

40

60

80

100

120

0 10 20 30 40 50 60 70 80 90 100

AM

PLIT

UD

E

GRIDPOINT

CFL=0.40 (steps=250)

initFH

High order

-20

0

20

40

60

80

100

120

0 10 20 30 40 50 60 70 80 90 100

AM

PLIT

UD

E

GRIDPOINT

CFL=0.40 (steps=250)

initFCT

Limited

46

Page 47: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Advektion

Zeitintegration 3. Ordnung

• Adams-Bashforth

ρn+1i = ρn

i +∆t

12

(23δiF

n − 16δiFn−1 + 5δiF

n−2)

(51)

• Runge-Kutta

ρ∗i = ρn

i − ∆t

3δiF

n (52)

ρ∗∗i = ρn

i − ∆t

2δiF

∗ (53)

ρn+1i = ρn

i − ∆tδiF∗∗. (54)

Zweidimensionaler Rotationstest

∂ρ

∂t= −∂F

∂x− ∂G

∂y(55)

Testfeld

u = −Ω(y − y0), v = −Ω(x − x0) (56)

47

Page 48: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Advektion

48

Page 49: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Advektion

49

Page 50: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Advektion

50

Page 51: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Dammbruch

Dammbruch-Problem mitFlachwasser-Gleichungen

Flachwasser-Gleichungen 1-D:

∂u

∂t+ u

∂u

∂x+ g

∂h

∂x= 0 (57)

∂h

∂t+

∂x(uh) = 0 (58)

mit c2 = gh ergibt sich(

∂t+ (u ± c)

∂x

)

(u ± 2c) = 0. (59)

In der x-t-Ebene gilt auf den Charakteristiken DxDt

= u ± c fur dieRiemannsche Invariante u ± 2c=const. Das System isthyperbolisch. Wir betrachten den Anfangszustand:

h =

h0, x ≤ 0,0, sonst (60)

Fur t < 0, x < 0 gilt fur die Charakteristiken u = 0,DxDt

= ±c0 =√

gh0. Die Chrakteristiken sind Geraden:x = ±c0t + const.

• Front x > 0: u = 2c0 folgt aus u + 2c = 2c0 mit c = 0(wegen h = 0). Integriert: x = 2c0t.

• Ruhezone x < 0: DxDt

= −c0 folgt aus u = 0. Integriert:x = −c0t

51

Page 52: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Dammbruch

Der Bereich −c0t < x < 2c0t heisst centered simple wave. Aufeiner negativen Charakteristik gilt dann: Dx

Dt= u − c = x/t. Aus

u + 2c = 2c0 und u − c = x/t folgt die Losung fur c und u:

c =1

3(2c0 − x

t) (61)

u =2

3(c0 +

x

t) (62)

Die Losung fur h ist dann:

c =√

gh =

c0 =√

gh0, −∞ < x ≤ −t√

gh0

13

(2c0 − x

t

), −t

√gh0 ≤ x ≤ 2t

√gh0

0, 2t√

gh0 < x < ∞(63)

Bemerkung: Bei x = 0 gilt h = 49h0 und u = c.

0

0.2

0.4

0.6

0.8

1

1.2

-10 -5 0 5 10

h

x

dam break h0=1.00 g=1.00

t=0t=1t=2t=3t=4

52

Page 53: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Dammbruch

Erhaltungs-Gleichungen fur Flachwasser

∂tP (u, h) +

∂xQ(u, h) = 0 (64)

Man kann immer neue Erhaltungsformen generieren falls:

Qu = uPu + hPh, Qh = gPu + uPh (65)

Die ersten sind:

Erhaltung P QImpuls/Einheitsmasse u 1

2u2 + gh

Masse h uhImpuls uh u2h + 1

2gh2

Energie 12u2 + 1

2gh2 1

2u3h + ugh2

Namenlos 13u3h + ugh2 1

3u4h + 3

2u2gh2 + 1

3g2h3

Bei einem Schock bleibt die Energie nicht erhalten! DieSchock-Bedingungen fur Masse und Impuls sind:

−U [uh] +

[

u2h +1

2gh2

]

= 0 (66)

−U [h] + [uh] = 0 (67)

Hier z.B. tritt sofort Shock auf auf mit U = const.

Damm

h1

h0

x

Es ist u0 = 0, somit wird z.B aus (67)

−U(h0 − h2) + u0h0 = 0 (68)

53

Page 54: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Dammbruch

Dammbruch mit Schock

Es gibt mehr Unbekannte als Gleichungen, man kannberechnen:

u2

c0

=U

c0

− c0

4U

(

1 +

1 + 8

(U

c0

)2

)

,c2

c0

=

√√√√1

2

(√

1 + 8

(U

c0

)2

)

(69)

h0

t=t0

x=−c1tx=(u2−c2)t x=Ut

x

x

t

h1

h2

(1) (3) (2) (0)

Aus u + 2c = const folgt in Gebiet (3) wegen u1 = 0:

u + 2c = 2c1, u + 2c = u2 + 2c2 ⇒ u2 + 2c2 = 2c1 (70)

Die Losung von (70) fur U als Funktion von (h1/h0) mußgrafisch oder iterativ erfolgen.

In Gebiet (3) gilt wieder

Dx

Dt= u − c = 2c1 − 3c =

3

2u − c1 (71)

und die Losung in (3) ist

c2 =1

9

(

2c1 − x

t

)2

u =2

3

(

c1 +x

t

)

(72)

54

Page 55: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Dammbruch

0

0.5

1

1.5

2

2.5

1 1.5 2 2.5 3 3.5

U/c0

dam break with shock

h0/h1=0.1384

u2/c0=1.79

U/c0=2.60

u2/c0c2/c0h0/h1u/c0

• Losung (72) ist in Gebiet (3) eine Parabel. Sie hat keinehorizontale Tangente zu Gebiet (1) und (2)!

• Fur u2 > c2 liegt x = 0 in Gebiet (3). Es gilt h = 49h1 und

u = 23c1 und somit der Durchfluss uh unabhangig von t

und von h0. Es gilt auch c = u, somit kann keineInformation stromauf wandern.

• u2 = c2 ⇒ h0/h1 = 0.1384.

• Fur h0/h1 < 0.1384 liegt x = 0 im Gebiet (2). Auch hierist der Durchfluss unabhangig von t weil u2 = const, aberabhangig von h0.

55

Page 56: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Dammbruch

Durchfluss

0

0.05

0.1

0.15

0.2

0.25

0.3

0.35

0 0.2 0.4 0.6 0.8 1

h0/h1

(dQ/dt)/(h1 c1)

h0/h1=0.138

dQ/dt=0.29 h1 c1

Schockfront

0

0.05

0.1

0.15

0.2

0.25

0.3

0.35

0 0.2 0.4 0.6 0.8 1

h0/h1

(h2-h0)/h1

h0/h1=0.176

h2-h0=0.32 h1

56

Page 57: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Dammbruch

Die Grenzfalle fur h0/h1

t=t0x=−c1t

x=Utx=+c1t

h0

t=t0

x=Ut

h2 h0

x=−c1t

x

x

h1

t

(0)(2)(3)(1)

x

x

t

h1

(1) (3) (2) (0)

x=2c1t

Zusammenfssung der Losung

h(x, t) =

h1 x < −c1t,19g

(2c1 − x/t)2 −c1t < x < (u2 − c2)t,

h2 (u2 − c2)t < x < Ut,0 Ut < x,

(73)

u(x, t) =

0 x < −c1t,23(c1 + x/t) −c1t < x < (u2 − c2)t,

u2 (u2 − c2)t < x < Ut,0 Ut < x,

(74)

u2 = U − gh0

4U

[

1 +

(

1 +8U2

gh0

)12

]

, (75)

c2 =

gh0

2

[(

1 +8U2

gh0

)12

− 1

]12

, (76)

h2 = c22/g, (77)

u2 = 2(gh1)12 − 2c2. (78)

57

Page 58: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Dammbruch

Bewegter Damm mit U0

Es gelte 0 < U0 < 2c1.

3/2U0−c1

c1

U0

x

h1

Fur x + c1t > 0 haben wir die Invariante u + 2c = 2c1. Fur den

bewegten Damm gilt x = U0t . Aus der Invariante folgt:

U0 + 2c = 2c1 ⇒ c = c1 − 12U0. Die Verbindungsbedingung

zwischen Front und Parabel ergibt sich aus der negativenCharakteristik:

u = U0, c = c1 − 1

2U0 ⇒ Dx

Dt= u − c =

3

2U0 − c1, (79)

⇒ x =

(3

2U0 − c1

)

t (80)

Die Losung ist somit

c = (gh)12 =

c1 x < −c1t,13(2c1 − x/t) −c1t < x <

(32U0 − c1

)t,

c1 − 12U0

(32U0 − c1

)t < x < U0t,

0 x > U0t,

(81)

u =

0 x < −c1t,23(c1 − x/t) −c1t < x <

(32U0 − c1

)t,

U0

(32U0 − c1

)t < x < U0t,

0 x > U0t

(82)

58

Page 59: Shell und UNIX - Meteorologie - LMU Münchenwolfi/Modellbaukasten/... · Shell und UNIX Shell Stammbaum überall Linux Rechenzentren MM5 ??? ksh (93) ksh (88) sh csh tcsh 1977 1979

Dammbruch

Vergleiche mit Wasserkanal

Dammbruch-Losung unrealistisch. Realistischer Ansatz:

uf = k(g∗hf)12 , g∗ = g∆ρ/ρ, k ≈ 1. Damit

uf =2kc1

2 + k(83)

hf = h1

(2

2 + k

)2

(84)

Unser Wasserkanal: h1=15 cm, beobachtete Dicke derDichtestromung hf ≈ 2.2 cm. Bemerkung: Passtnicht-Erklarungsbedarf!

Zu den numerischen Modellen gibt es eine Beilage!

59