• No results found

ComsolScript 1.2 i kursen experimentella metoder

N/A
N/A
Protected

Academic year: 2022

Share "ComsolScript 1.2 i kursen experimentella metoder"

Copied!
138
0
0

Loading.... (view fulltext now)

Full text

(1)

ComsolScript 1.2 i kursen experimentella metoder

av Sten Hellman

Ovningsuppgifter av ¨

Elin Berge˚ as, Sten Hellman, Max Karlovini, Teresia M˚ anson, Jonas

Strandberg & Linda ¨ Ostman

(2)

3:e upplagan, Stockholm 2008.

c

Sten Hellman, Stockholms universitet.

(3)

Inneh˚ all

1 Inledning 1

1.1 Vad ¨ar ComsolScript? . . . 2

1.2 Konventioner . . . 2

2 Att komma ig˚ang 3 2.1 B¨orja jobba med datorn . . . 3

2.1.1 Logga in p˚a datorn. . . 3

2.1.2 Logga ut fr˚an datorn . . . 3

2.2 Att navigera p˚a datorn . . . 4

2.2.1 Minne och h˚arddisk p˚a en dator . . . 4

2.2.2 Skaffa mer diskutrymme . . . 5

2.2.3 Filnamn och S¨okv¨agar . . . 5

2.2.4 Fullst¨andiga filnamn . . . 6

2.2.5 Aktuell katalog . . . 7

2.2.6 Var skall jag spara filer . . . 7

2.3 Komma ig˚ang med ComsolScript . . . 8

2.3.1 ComsolScripts kommandof¨onster . . . 8

2.3.2 De f¨orsta stegen - ”Hello World” . . . 8

2.3.3 ComsolScripts hj¨alpfunktion . . . 9

2.3.4 Avsluta ComsolScript . . . 11

2.4 B¨orja R¨akna . . . 11

2.4.1 ComsolScript som en r¨aknedosa . . . 11

2.4.2 Operatorer . . . 11

2.4.3 Variabler . . . 11

2.4.4 Konstanter . . . 13

2.5 Milj¨on i ComsolScript . . . 14

2.5.1 St¨ada upp kommandof¨onstret: tyst input, forts¨attningsrader . . . 14

2.5.2 Format och avrundning . . . 14

2.5.3 ComsolScripts “Workspace” . . . 15

2.5.4 ”Play it again Sam”- att upprepa kommandon . . . 15

2.5.5 Att ˚aterkalla kommandon . . . 16

2.5.6 Var s¨oker ComsolScript efter filer . . . 16

2.6 M-filer . . . 17

2.6.1 Editera m-filer . . . 18

2.6.2 ComsolScripts inbyggda editor . . . 18

2.6.3 Att spara en m-fil p˚a disk . . . 18

2.6.4 L¨asa in och k¨ora en m-fil . . . 19

2.6.5 Kommentarer . . . 19

2.6.6 In- och utmatning av data till M-filer . . . 20

2.6.7 Paus i utskriften . . . 21

2.6.8 Namngivning av M-filer . . . 21 iii

(4)

2.7 Ovningsuppgifter . . . .¨ 22

3 Vektorer och matriser Inbyggda funktioner 23 3.1 Litet om vektorer . . . 23

3.1.1 Skapa vektorer . . . 23

3.1.2 R¨akna med vektorer . . . 24

3.1.3 Elementvisa operationer . . . 25

3.2 Litet om matriser . . . 25

3.2.1 R¨akna med matriser . . . 26

3.2.2 Matrisdivision . . . 27

3.3 Inbyggda funktioner . . . 27

3.3.1 Operationer p˚a skal¨arer . . . 27

3.3.2 Operationer p˚a vektorer . . . 28

3.3.3 Operationer p˚a matriser . . . 29

3.4 Ovningsuppgifter . . . .¨ 31

4 B¨orja programmera 33 4.1 Villkorssatser . . . 33

4.2 Slingor . . . 34

4.2.1 for-slingor . . . 35

4.2.2 while-slingor . . . 35

4.2.3 Att hoppa ut ur en slinga - kommandot break . . . 36

4.3 Funktioner . . . 37

4.3.1 Syntaxen f¨or funktioner . . . 37

4.3.2 help f¨or en funktion . . . 38

4.3.3 Testa antalet argument . . . 38

4.4 Ovningsuppgifter . . . .¨ 40

5 Ordbehandling med OpenOffice writer 41 5.1 OpenOffice . . . 41

5.2 Allm¨anna kommentarer . . . 41

5.3 Textbehandling . . . 42

5.3.1 Typsnitt . . . 43

5.3.2 Storlek p˚a texten . . . 43

5.3.3 Fet, kursiv och understruken text . . . 43

5.3.4 Att justera texten . . . 44

5.3.5 Att g¨ora en rubrik . . . 44

5.4 Egna formatmallar . . . 45

5.5 L¨agga till knappar till verktygsf¨altet . . . 46

5.6 Sidbrytning . . . 46

5.7 Sidnumrering . . . 46

5.8 Fotnoter . . . 47

5.9 Numrerade listor . . . 47

5.10 Tabeller . . . 48

5.10.1 Tabelltext . . . 49

5.10.2 Omvandla v¨arden fr˚an ComsolScript till en tabell i OpenOffice . . . . 49

5.11 Figurer . . . 51

5.11.1 Ankra bilder . . . 51

5.11.2 Figurtext . . . 51

5.11.3 Infoga figur fr˚an OpenOffice Draw . . . 51

5.12 Speciella symboler . . . 51

(5)

INNEH˚ALL v

5.13 Ekvationer . . . 52

5.13.1 Text i formler . . . 54

5.14 Spara dokument . . . 55

5.15 Spara i pdf-format . . . 55

5.16 ¨Ovningsuppgifter . . . 56

6 N¨ar det blir fel 57 7 2D-Grafik 61 7.1 Kurvor i tv˚a dimensioner . . . 61

7.1.1 Att v¨axla mellan f¨onster, och st¨ada i f¨onster. . . 62

7.1.2 plot-kommandot . . . 62

7.1.3 Styra utseendet p˚a grafiken . . . 63

7.1.4 Koordinataxlar . . . 64

7.1.5 Text . . . 65

7.2 Plotta punkter med fel . . . 65

7.3 Histogram . . . 66

7.3.1 Kommandot bar - stapeldiagram . . . 66

7.3.2 Kommandot hist - histogram . . . 66

7.3.3 Kommandot stairs - konturdiagram. . . 67

7.3.4 Kommandot stem - stolpdiagram. . . 67

7.4 Utskrifter av grafik . . . 67

7.5 Spara grafer och flytta till andra program . . . 67

7.5.1 L¨agga in bilder i OpenOffice dokument . . . 68

7.6 Fler Kurvor i samma graf - kommandot hold. . . 69

7.7 Fler grafer i samma f¨onster - kommandot subplot . . . 69

7.8 Rita i grafer . . . 69

7.9 Logaritm-skalor . . . 72

7.10 ¨Ovningsuppgifter . . . 73

8 Text-str¨angar, formattera text, mer om grafik 75 8.1 Text-str¨angar . . . 75

8.1.1 Manipulera textstr¨angar . . . 75

8.1.2 Delstr¨angar . . . 75

8.2 Formaterad in- och utmatning . . . 76

8.2.1 L¨as data och str¨angar fr˚an kommandof¨onstret - kommandot input. . . 76

8.2.2 Formatera str¨angar f¨or utmatning - Formatkoder och kommandot sprintf 77 8.3 Avancerad grafik . . . 78

8.3.1 Fler grafikf¨onster - kommandot figure . . . 79

8.3.2 Att redigera en graf interaktivt . . . 79

8.3.3 Handtags-grafik . . . 79

8.4 3-D grafik . . . 81

8.4.1 Kurvor i rymden - plot3 . . . 81

8.4.2 Funktionsytor - mesh och surf . . . 81

8.4.3 Att styra utseendet av en 3D-graf . . . 82

8.4.4 Konturplottar och projektioner . . . 83

8.5 Ovningsuppgifter . . . .¨ 84

(6)

9 Ber¨akningar och anpassningar 85

9.1 Enkel statistik . . . 85

9.2 Polynom . . . 85

9.2.1 Hitta r¨otter till polynom. . . 85

9.2.2 Finn polynomuttryck f¨or givna r¨otter . . . 86

9.2.3 V¨arden p˚a polynom . . . 86

9.2.4 Derivator av polynom . . . 86

9.2.5 Produkter och kvoter av polynom . . . 86

9.3 Matrisekvationer . . . 86

9.4 Minsta kvadratanpassning . . . 87

9.5 Minsta kvadratanpassning med matrismetod . . . 89

9.6 Ovningsuppgifter . . . .¨ 91

10 Programmering 93 10.1 Att programmera . . . 93

10.1.1 Design av programmet . . . 93

10.1.2 Dokumentation av programmet. . . 94

10.1.3 Goda vanor . . . 95

10.2 Mer om programmering och funktioner . . . 96

10.2.1 Linj¨ar korrelationskoefficient . . . 96

10.2.2 Viktad anpassning till r¨at linje . . . 98

10.2.3 Viktad anpassning och plottning av r¨at linje. . . 99

10.3 ¨Ovningsuppgifter . . . 102

A Syntax f¨or formler i OpenOffice 103 A.1 Unary and binary operators . . . 103

A.2 Relations . . . 104

A.3 Set symbols . . . 105

A.4 Functions . . . 106

A.5 Operators . . . 107

A.6 Attributes . . . 108

A.7 Others . . . 109

A.8 Brackets . . . 110

A.9 Formatting . . . 111

B ComsolScripts Debugger 113 B.1 Debuggning med breakpoints . . . 113

B.2 Ovningsuppgifter¨ . . . 117

C Svar och l¨osningar 119 C.2 Svar till kapitel 2 . . . 119

C.3 Svar till kapitel 3 . . . 119

C.4 Svar till kapitel 4 . . . 120

C.7 Svar till kapitel 7 . . . 121

C.9 Svar till kapitel 9 . . . 123

C.10 Svar till kapitel 10 . . . 124

C.11 Svar till Appendix B . . . 128

(7)

Kapitel 1

Inledning

Det h¨ar kompendiet ¨ar avsett att anv¨andas i kursen ”Experimentella metoder i fysiken” som ing˚ar i f¨orsta ˚arskursen i kandidatprogrammet i fysik vid Stockholms Universitet. Kom- pendiet ¨ar inte avsett att vara en komplett kurs i ComsolScript utan str¨avar efter att ge en introduktion till programmet, och mer detaljerade kunskaper inom de omr˚aden som

¨

ar n¨odv¨andiga f¨or kursen ”Experimentella metoder”. Tonvikten ligger inom tv˚a omr˚aden:

ber¨akningar f¨or att behandla m¨atv¨arden fr˚an laborationer och grafisk presentation av m¨atdata och resultat, fr¨amst d˚a 2D-grafik. Detta uppl¨agg inneb¨ar att en del omr˚aden n¨astan inte alls kommer att ber¨oras, som till exempel komplexa tal, 3D-grafik, mer avancerade matematik- till¨ampningar och modellering. Vi ¨ar dock f¨orvissade om att man efter att ha f¨oljt kursen har s˚a goda kunskaper i att anv¨anda ComsolScript att det skall vara relativt enkelt att p˚a egen hand l¨asa in andra omr˚aden vartefter behov av det uppst˚ar.

Programmet ComsolScript har en mycket v¨al utvecklad hj¨alpfunktion, men som med alla andra program kan det vara sv˚art att veta vad man skall be om hj¨alp med innan man har n˚att en viss kunskapsniv˚a. Dessutom kan det ibland vara besv¨arligt att vara h¨anvisad till engelska termer. F¨or att tr¨ana upp det interaktiva hj¨alps¨okandet anv¨ander kompendiet flitigt h¨anvisningar till ComsolScripts egen dokumentation.

Kompendiet ¨ar skrivet i avsikt att l¨asas i en f¨oljd, m˚anga avsnitt bygger direkt p˚a tidigare avsnitt, en hel del av de exempel som ges f¨oruts¨atter att f¨oreg˚aende exempel har k¨orts.

Kompendiet har vid det h¨ar laget en l˚ang historia. Tidigare har vi p˚a fysikum anv¨ant Matlab ist¨allet f¨or ComsolScript. ComsolScript ¨ar ett nyutvecklat program som anv¨ander samma syntax som Matlab. Har man l¨art sig ComsolScript ¨ar det allts˚a mycket enkelt att anv¨anda ocks˚a Matlab, och vice versa. Detta kompendium ¨ar d¨arf¨or i stort sett bara en ¨overs¨attning av den fj¨arde upplagan av motsvarande kompendium f¨or Matlab. Det g˚ar i sin tur tillbaka till ett kompendium av Hans M¨uhlen - “MATLAB” - som kom i flera upplagor under ˚aren 1987-93.

Sedan den f¨orsta versionen av Matlab-kompendiet producerades har m˚anga fel rensats ut och m˚anga f¨orb¨attringar gjorts med hj¨alp av de doktorander som arbetat som assistenter p˚a kursen: Elin Berge˚as, Annelie Ehlerding, Attila Hidv´egi, Max Karlovini, Teresia M˚ansson, Jonas Strandberg och Linda ¨Ostman. Bj¨orn Selld´en har bidragit med en m¨angd korrigeringar och f¨orb¨attringar. Tack f¨or hj¨alpen!

Avsnittet om ordbehandling skrevs ursprungligen av Jonas Strandberg f¨or Microsoft Word.

N¨ar vi v˚arterminen 2006 bytte ordbehandlingsprogram till OpenOffice s˚a har detta kapitel skrivits om av mig, men strukturen g˚ar tillbaks p˚a det ursprungliga kapitlet av Jonas. Elin Berge˚as och Linda ¨Ostman har bidragit med flera tips till detta avsnitt.

1

(8)

1.1 Vad ¨ ar ComsolScript?

ComsolScript ¨ar ett kommersiellt program, eller snarare programpaket, f¨or matematiska ber¨akningar och grafisk presentation. ComsolScript-paketet har en m¨angd utbyggnadsm¨ojlig- heter med f¨ardiga moduler och kan anv¨andas f¨or ett stort antal mer eller mindre specialiserade ber¨aknings- och simuleringsuppgifter.

I den h¨ar kursen, och ¨aven i ¨ovrigt h¨ar p˚a fysikum, anv¨ander vi oss av ComsolScript dels f¨or att skriva program f¨or att genomf¨ora ber¨akningar, till exempel f¨or att bearbeta lab-resultat, dels f¨or att presentera resultat i grafisk form.

Som alla andra program har ComsolScript sina styrkor och svagheter. Namnet MATLAB stod ursrpungligen f¨or MATrix LABoratory, och ¨aven om MATLAB-familjen (dit vi r¨aknar ComsolScript) har utvecklats enormt sedan det d¨optes s˚a ¨ar matrishanteringen fortfarande en av de starka sidorna hos ComsolScript, n˚agot som kommer att komma till stor anv¨andning under den h¨ar kursen. Rent allm¨ant ¨ar ComsolScript v¨aldigt f¨orl˚atande, man beh¨over till exempel inte - som i de flesta h¨ogniv˚aspr˚aken f¨or programmering - g¨ora skillnad mellan heltal och decimaltal. Man beh¨over inte heller i f¨orv¨ag tala om hur stora vektorer skall vara. Det finns gott st¨od f¨or att producera grafik, men det kan i b¨orjan k¨annas litet avigt att man inte enkelt kan plotta sin(x) mot x, utan f¨orst m˚aste man konstruera en vektor med x-v¨arden och en annan vektor med y-v¨arden och sedan plotta dem mot varandra.

Vi skall ocks˚a komma ih˚ag att ComsolScript ¨ar ett matematikprogram, inte ett ordbehand- lingsprogram. Vi kommer allts˚a att beh¨ova komplettera v˚ar arsenal med ett program som hanterar text och figurer f¨or att kunna producera dokumentationen av v˚ara experiment.

1.2 Konventioner

I detta kompendium anv¨ands endast ett f˚atal typografiska konventioner. En ¨ar n¨ar vi visar exakt hur det ser ut n¨ar man skriver in kommandon i ComsolScripts kommandof¨onster och f˚ar output tillbaks till det f¨onstret. S˚adana exempel visas inom en ram:

 Kommandot som skrivs in Respons fr˚an ComsolScript

Ibland refererar vi till kommandon och variabler i l¨opande text, och markerar d˚a detta genom att skriva variabelnamnet med s¨arskilt typsnitt a = sin(x).

Referenser till ComsolScripts hj¨alp-dokument skrivs med initialt ? och s¨arskilt typsnitt, t.ex.

?/COMSOL Script Basics/Using COMSOL Script/Starting COMSOL Script Hur man anv¨ander en s˚adan referens f¨or att s¨oka ett avsnitt i dokumentationen beskrivs i avsnitt 2.3.3.

Notera ocks˚a att ComsolScript anv¨ander den anglosaxiska konventionen d¨ar decimalkommat inte skrivs med komma utan med punkt. S˚aledes ¨ar 2,3 ett talpar medan 2.3 ¨ar ett decimaltal.

(9)

Kapitel 2

Att komma ig˚ ang

2.1 B¨ orja jobba med datorn

Efter det f¨orsta data¨ovningspasset skall du kunna:

• Logga in p˚a ditt studentkonto p˚a Fysikums datorer

• Starta ComsolScript

• Anv¨anda ComsolScript som en enkel mini-r¨aknare

• anv¨anda M-filer och spara dessa p˚a disk.

2.1.1 Logga in p˚a datorn.

Hur man loggar in p˚a datorerna p˚a ¨ovningslabbet kommer troligen att variera med tiden.

Det beror ocks˚a p˚a vilket operativsystem den dator du skall arbeta vid anv¨ander. H¨ar beskrivs hur det g˚ar till att logga in p˚a en dator som k¨or operativsystemet Windows under v˚arterminen 2008. Skulle du misslyckas att komma in p˚a det s¨att som beskrivs h¨ar kan det bero p˚a att f¨orh˚allandena ¨andrats, s˚a fr˚aga en assistent om du ¨ar tveksam.

I normalfallet kommer datorn att visa upp en inloggningsruta p˚a sk¨armen som litet schema- tiskt kan se ut p˚a de tv˚a s¨att som visas till h¨oger. Du kan v¨axla mellan de b¨agge utseen- dena genom att klicka p˚a

“options”-knappen l¨angst ned till h¨oger. Du skall logga in med sk¨armen i det l¨age som syns till h¨oger i bilden, med tre rader och pilarna till v¨anster om texten “options”. P˚a den understa av de tre raderna skall du v¨alja WINADSU. Skriv sedan in ditt anv¨andarnamn och l¨osenord f¨or ditt SU-konto. Om du inte kan se inloggningsrutan p˚a sk¨armen s˚a prova

“Ctrl-Alt-Delete”, dvs tryck samtidigt ned tangenterna “Ctrl”, “Alt” och “Delete”.

N¨ar du loggar in p˚a detta vis har du full tillg˚ang till dina mappar under SU-kontot. Din hu- vudkatalog p˚a ditt SU-konto kan du hitta under My Computer \ abcd1234 on win.su.se (d¨ar abcd1234 skall bytas ut mot ditt anv¨andarnamn p˚a SU-kontot)

2.1.2 Logga ut fr˚an datorn

N¨ar du har jobbat klart och skall l¨amna datorn trycker du p˚a Windows-symbolen l¨angst ned till v¨anster. L¨angst ned i den meny som kommer upp st˚ar “Shutdown. . . ”. Klicka d¨ar. I det

3

(10)

nya f¨onster som kommer upp skall du inte klicka direkt, utan ist¨allet ¨andra rullningslisten fr˚an “Shutdown” till “Log off abcd1234.”

2.2 Att navigera p˚ a datorn

Att h˚alla ordning p˚a alla filer som skapas under ett projekt, som till exempel en laboration eller en ComsolScript ¨ovning kr¨aver litet disciplin. Det ¨ar naturligtvis extra viktigt att man t¨anker sig f¨or i en milj¨o som den p˚a ¨ovningslab, d¨ar m˚anga anv¨andare anv¨ander samma dator. Innan vi g˚ar igenom hur man b¨or arbeta g¨or vi f¨orst en allm¨an genomg˚ang ¨over hur program p˚a en dator hanterar disk och minne.

2.2.1 Minne och h˚arddisk p˚a en dator

Ett program som k¨or p˚a en dator hanterar tv˚a typer av information, dels ”instruktioner” - det vi i dagligt tal kallar programmet, som styr datorn och p˚a l¨agsta niv˚an talar om f¨or datorn hur den skall utf¨ora olika kommandon, dels ”data” som ¨ar vad programmet opererar p˚a. Sett ur det h¨ar perspektivet h˚aller ett program som t.ex. ComsolScript reda p˚a tv˚a saker n¨ar vi till exempel skriver ”2 + 2” : dels vad instruktionen ”x + y” inneb¨ar och hur programmet skall genomf¨ora den operationen, denna information ¨ar det vi kallar instruktioner. Sedan m˚aste programmet ocks˚a h˚alla reda p˚a vad ”x” och ”y” ¨ar i just den aktuella ber¨akningen, och spara svaret n˚agonstans, den typen av information kallas ”data”. Den h¨ar informationslagringen kan ske p˚a tv˚a st¨allen, antingen p˚a h˚arddisken eller i datorns internminne. Det finns n˚agra skillnader i egenskap hos dessa tv˚a lagringsmedia: h˚arddisken ¨ar permanent, i betydelsen att s˚a l¨ange allting fungerar som det skall s˚a finns all information som lagras p˚a h˚arddisken kvar s˚a l¨ange som man inte uttryckligen raderar den1. Internminnet ˚a andra sidan ¨ar tempor¨art i tv˚a avseenden, dels s˚a ”¨overlever” ingen information i internminnet att datorn st¨angs av, dels

¨

ar det till och med s˚a att d˚a ett program avslutas s˚a raderas all information som programmet sparat i minnet. En annan skillnad mellan h˚arddisk och internminne ¨ar att det g˚ar mycket snabbare att komma ˚at data som finns i minnet (oftast talar man om internminnet som bara

”minnet”) ¨an p˚a disken.

Med det h¨ar som bakgrund kan vi nu f¨orst˚a litet b¨attre vad som h¨ander n¨ar vi k¨or ett program. Eftersom programmet m˚aste finnas kvar varje g˚ang vi startar datorn s˚a m˚aste sj¨alva programmet finnas lagrat p˚a h˚arddisken. Eftersom det tar l˚ang tid att h¨amta instruktioner som finns lagrade p˚a h˚arddisken s˚a vill man inte att programmet skall g˚a och h¨amta varje instruktion f¨or sig fr˚an h˚arddisken, det skulle dels g¨ora programmet mycket l˚angsamt och dels skulle datorns disk st˚a och surra hela tiden. Ett program som startar reserverar d¨arf¨or ett stycke minne f¨or instruktioner och kopierar in de mest centrala dit och l¨aser dem direkt d¨arifr˚an. Skulle programmet tr¨affa p˚a en instruktion som inte finns inkopierad till minnet s˚a g˚ar den ut p˚a h˚arddisken och l¨aser in denna instruktion, men inte bara en enstaka instruktion, utan ett block med instruktioner som ofta anv¨ands tillsammans. Ett v¨alkonstruerat program beh¨over d¨arf¨or inte g˚a ut och l¨asa fr˚an den l˚angsamma disken s¨arskilt ofta, utan h˚aller sig f¨or det mesta till den kopia av instruktionerna som finns i minnet. 2 Samtidigt reserverar programmet en annan del av minnet f¨or att lagra data.

1Kom ih˚ag dock att datorerna p˚a ¨ovningslabb regelbundet “st¨adas” och att alla anv¨andarfiler tas bort.

Det enda st¨alle d¨ar du kan vara s¨aker p˚a att spara dina filer ¨ar p˚a ditt afs-konto.

2ar vi l¨art oss det h¨ar om hur datorer fungerar kan vi f¨orst˚a tv˚a saker: Dels varf¨or vissa program ibland kan g˚a s˚a sagolikt l˚angsamt. Om minnet ”b¨orjar ta slut”, det vill s¨aga om det inte finns n˚agot ledigt minne kvar att reservera, vilket kan h¨anda n¨ar vi k¨or m˚anga program samtidigt, s˚a kan ett program inte reservera tillr¨ackligt stora delar av minnet f¨or att lagra s˚a m˚anga instruktioner s˚a att det kan k¨ora effektivt. Ist¨allet aste programmet ut och titt som t¨att l¨asa instruktioner fr˚an den l˚angsamma disken. Det h¨ar leder till ”sega”

program som svarar l˚angsamt p˚a v˚ara kommandon. Vi f¨orst˚ar nu ocks˚a varf¨or program ”kraschar”. I nio fall av tio (minst) beror det p˚a att program A (ofta tillverkat av Microsoft) har skrivit till exempel data i en del av minnet som program B reserverat f¨or sina instruktioner. I st¨allet f¨or instruktioner om hur programmet

(11)

2.2. ATT NAVIGERA P˚A DATORN 5 Eftersom instruktionerna bara ¨ar en kopia av det som finns lagrat p˚a h˚arddisken s˚a p˚averkas inte programmets funktion av en eventuell krasch med efterf¨oljande omstart, det ¨ar ju bara att skapa en ny kopia av instruktionerna fr˚an h˚arddisken. Data d¨aremot flyger all sin v¨ag. N¨ar programmet avslutas, frivilligt eller ofrivilligt, s˚a ¨ar all information som lagrats i workspace borta. Om man nu har lagrat priserna f¨or ett stort antal olika sorters godis i ComsolScripts workspace och r¨aknar med att beh¨ova anv¨anda den listan igen vid ett senare tillf¨alle s˚a vill man naturligtvis kunna spara listan ¨aven efter det att ComsolScript avslutats f¨or den h¨ar g˚angen. Det g˚ar att g¨ora, vi kan fr˚an ComsolScript spara inneh˚allet i workspace p˚a h˚arddisken, vi kan ocks˚a skapa separata filer med data och/eller ComsolScript-kommandon som sparas p˚a h˚arddisk och som vi sedan l¨aser tillbaks, sk M-filer. Detta kommer att bli det s¨att vi normalt arbetar med ComsolScript. Genom att spara allt p˚a h˚arddisk ¨ar det enkelt att g˚a tillbaks och g¨ora sm¨arre korrektioner och modifieringar och framf¨or allt: vi kommer att spara mycket arbete genom att vi kan ˚ateranv¨anda kod-snuttar fr˚an tidigare ¨ovningar.

2.2.2 Skaffa mer diskutrymme

Experimentella metoder ¨ar en mycket datororienterad kurs. Ganska snabbt kommer d¨arf¨or ditt tillg¨angliga diskutrymme att ta slut. Du kan enkelt g¨ora det st¨orre genom att logga in via webportalen “Mitt Universitet”. Du loggar in genom att ¨oppna en webbl¨asare och i adressf¨altet skriva in mitt.su.se. F¨orsta g˚angen du g¨or det h¨ar kan det h¨anda att du f˚ar upp varningsrutor om s¨akerhetscertifikatet. Godk¨ann alla certifikaten. Anv¨andarnamn och l¨osenord ¨ar samma som f¨or att logga in p˚a datorn.

N¨ar du loggat in klickar du p˚a fliken ”Min sida” i raden l¨angst upp. I den v¨anstra kolumnen finns en rubrik som heter ”Resurser” och under den st˚ar det ”Diskutrymme (i hemkatalog)”.

Klicka p˚a knappen ”Visa/ ¨Andra” i samma rad. ¨Andra ditt diskutrymme till exempelvis 200 MB.

2.2.3 Filnamn och S¨okv¨agar

Varje fil p˚a en dator m˚aste ha ett unikt namn som fungerar som en sorts adresslapp. Precis som n¨ar vi identifierar personer genom namn och en hierarki av adresser alltifr˚an gata med portnummer upp till st¨ader och l¨ander s˚a har en datoradress flera niv˚aer. P˚a den l¨agsta niv˚an talar vi om filnamn, som till exempel rapport2.text, laboration4.m osv. Varje fil m˚aste vara placerad i en katalog (engelskans directory, p˚a svenska kan vi ocks˚a kalla det ”mapp”).

Katalogen kan i sin tur vara inplacerad i en annan katalog, och s˚a vidare. Det ¨ar klokt att f¨ors¨oka organisera en tr¨adstruktur av kataloger som logiskt delar upp de filer man ¨ager i avgr¨ansade undergrupper som i exemplet nedan.

skall hantera ”x + y” st˚ar det n˚agonting helt annat, som programmet helt oskyldigt f¨ors¨oker genomf¨ora med resultatet att allting h¨anger sig. Ibland ¨ar program A och B identiska, ett program kan skriva ¨over sina egna instruktioner.

(12)

labbar

lab1 lab2 lab3

Rapport Rådata

utkast1

Rapport

utkast1

Vi ser hur det finns en textfil som heter ”utkast1” i katalogen ”rapport”. Katalogen ”rapport”

ligger i sin tur i katalogen ”lab1”, som ligger i katalogen ”labbar” och s˚a vidare. I en given katalog kan det bara finnas en fil med samma namn, vilket inte ¨ar s˚a konstigt, hur skulle datorsystemet annars f¨orst˚a t ex vilken fil vi ville skriva ut n¨ar vi ger ett print-kommando.

Men precis som brevb¨ararna inte bara kan hantera en ”Sven Andersson” utan kan h˚alla is¨ar Sven Andersson p˚a Linn´egatan fr˚an Sven Andersson p˚a Kungsgatan, och Sven Andersson p˚a Linn´egatan i G¨oteborg fr˚an Sven Andersson p˚a Linn´egatan i Stockholm s˚a kan datorn, om vi bara ger hela adressen, h˚alla is¨ar en fil som heter ”utkast1” i katalogen ”rapport” i katalogen ”lab2” fr˚an en fil som heter ”utkast1” i katalogen ”rapport” i katalogen ”lab1”.

F¨or att vara s¨akra p˚a att vi och datorn f¨orst˚ar varandra n¨ar vi refererar till filer s˚a m˚aste vi reda ut tv˚a saker. Dels hur man anger att det ¨ar filen utkast1 som finns i tr¨adet under ”lab1”

och inte filen med samma namn i tr¨adet under ”lab2”, det vill s¨aga hur b¨ar vi oss ˚at f¨or att skriva en fils fullst¨andiga namn, inklusive katalogtillh¨origheten (detta kallas p˚a engelska path). Den andra saken vi m˚aste f¨orst˚a ¨ar n˚agot som kallas ”den aktuella katalogen” och som avg¨or hur datorn tolkar v˚ara kommandon n¨ar vi bara ger filnamnet och ingen information om katalogtillh¨origheten.

2.2.4 Fullst¨andiga filnamn

Ett fullst¨andigt filnamn i operativsystemet Windows b¨orjar med namnet p˚a h˚arddisken. Den dator du arbetar p˚a kan n¨amligen ha mer ¨an en h˚arddisk, och det kan ocks˚a vara s˚a att du

¨

over n¨atverket kan ha tillg˚ang till h˚arddiskar som inte fysiskt finns p˚a just den datorn du arbetar vid, som till exempel de filer du lagrar ”p˚a ditt AFS-konto”. N¨ar du loggat in p˚a ditt AFS-konto (se intstruktioner p˚a http://www.physto.se/afs/konton windows.html) s˚a kommer det att se ut som om de filer du lagrat d¨ar ligger p˚a en disk p˚a den dator du jobbar vid med namnet Z. (Observera att vilken bokstav som AFS-disken f˚ar kan variera fr˚an g˚ang till g˚ang, beroende p˚a “historien” p˚a den dator d¨ar du jobbar). I filnamnet f¨oljs disknamnet av kolon, d¨arefter \ (”backslash”) och sedan namnen p˚a katalogerna, separerade med back- slash. Om vi till exempel antar att katalogen ”Sten” ligger i en katalog ”USERS” som inte har n˚agon katalog ¨over sig p˚a Z-disken s˚a blir den fullst¨andiga adressen till filen utkast1:

Z:\USERS\Sten\Expkursen\labbar\lab1\rapport\utkast1 . ¨Aven kataloger kan adresseras p˚a detta s¨att, katalogen f¨or lab1 har adressen Z:\USERS\Sten\ Expkursen\labbar\lab1 . Det kan vara klokt att inte anv¨anda de m¨ojligheter som bjuds i Windows-systemet att t ex anv¨anda svenska bokst¨aver i filnamn, eftersom det kan skapa sv˚arigheter n¨ar man vill komma

(13)

2.2. ATT NAVIGERA P˚A DATORN 7

˚at filer via mitt.su. H˚all dig till samma regler som f¨or variabelnamn i ComsolScript, dvs inga svenska tecken och inga mellanslag.

2.2.5 Aktuell katalog

Varje g˚ang vi vill spara en fil fr˚an ett program s˚a finns det ett f¨orstahandsalternativ, en katalog d¨ar programmet vi arbetar i sparar filer om inte anv¨andaren aktivt v¨aljer en annan katalog. Denna katalog kallas ”aktuell katalog” (engelska ”current directory”). Det ¨ar allts˚a h¨ar filer hamnar om vi inte aktivt anger en annan katalog. Exakt vilken katalog som ¨ar den aktuella kan variera fr˚an fall till fall. De flesta program har en katalog n˚agonstans i den katalogstruktur som h¨or till programmet som anv¨ands i standardfallet. ¨Oppnar vi Microsoft Word och skapar ett nytt textdokument s˚a sparas det i en katalog som h¨or till programmet, snarare ¨an i en katalog som h¨or till dig som anv¨andare. Om vi d¨aremot ¨oppnar ett redan ex- isterande dokument genom att dubbelklicka p˚a det, g¨or n˚agra ¨andringar och sparar det under ett nytt namn s˚a hamnar det i samma katalog som det ursprungliga dokumentet l˚ag. Oftast bereder det oss inte n˚agon st¨orre m¨oda att h˚alla r¨att p˚a detta, n¨ar vi sparar ett dokument s˚a ¨oppnas ju en dialogruta d¨ar vi tydligt kan se i vilken katalog dokumentet hamnar, och vi kan v¨alja en annan katalog. Det finns ett antal kommandon som har med kataloghantering att g¨ora. Vi kan finna vilken katalog som ¨ar “aktuell” genom att i kommandof¨onstret skriva pwd . Vi kan se vilka filer som finns i det aktuella katalogen genom att skriva ls . F¨or att ¨andra “aktuell katalog” ger vi kommandot cd katalognamn . N¨ar vi g¨or det kan vi anv¨anda tv˚a konventioner, antingen ger vi katalognamn som den absoluta adressen, dvs en adress av typen Z:\Expkursen\labbar\lab1, en adress som b¨orjar med namnet p˚a disken och sedan forts¨atter hela v¨agen ned till den katalog eller fil vi ¨ar intresserade av. Alternativt kan vi ge den relativa adressen, det vill s¨aga adressen relativt det som ¨ar aktuell katalog.

Om den aktuella katalogen ¨ar Z:\Expkursen s˚a kan vi ge den relativa adressen till samma katalog som ovan genom att skriva cd labbar\lab1. Ger vi en relativ adress s˚a m˚aste den b¨orja med en katalog som ligger i det som f¨or tillf¨allet ¨ar den aktuella katalogen. En speciell variant av en relativ adress ¨ar “..” (tv˚a punkter efter varandra) som pekar p˚a den katalog n¨armast h¨ogre upp i strukturen. Om den aktuella katalogen ¨ar Z:\Sten\ Expkursen\labbar s˚a kommer kommandot cd .. att ¨andra den aktuella katalogen till Z:\Sten\Expkursen 2.2.6 Var skall jag spara filer

Eftersom vi arbetar p˚a datorer som anv¨ands av m˚anga personer m˚aste vi vara noggranna med var p˚a h˚arddisken vi sparar data s˚a att vi inte l¨amnar efter oss en massa ”skr¨ap” som andra inte ¨ar intresserade av. Likaledes ¨ar det kanske inte s¨arskilt attraktivt att beh¨ova

˚aterv¨anda till exakt samma dator vid n¨asta arbetspass. Det finns egentligen bara tv˚a areor som inte ¨ar ”allm¨anna”, det vill s¨aga som anv¨ands av alla som anv¨ander datorn. Den ena ¨ar kataloger p˚a arbetsdisken. Arbetsdisken komer normalt att vara D-disken, och de kataloger som anv¨ands f¨or tempor¨ara filer heter antingen katalogen D:\Users, D:\Users\Students eller D:\Students. F¨or tillf¨alligt sparande av personliga filer kan man skapa en underkatalog till denna katalog med sitt eget namn. Men kom ih˚ag att denna katalog bara kan ses p˚a just denna dator. Anv¨and d¨arf¨or den katalogen bara f¨or tempor¨ar lagring under ett arbetspass.

Filer som man vill spara f¨or l¨angre tid och kunna komma ˚at oavsett vilken dator man sitter vid skall sparas p˚a den diskarea som h¨or till ditt SU-konto.

F¨or att ha en rimlig chans att hitta sina sparade data b¨or man ha en tydlig indelning i olika kataloger som var och en h¨or samman med ett tydligt ”delprojekt”. S˚a till exempel b¨or du antagligen ha en katalog f¨or varje kurs du f¨oljer. N¨ar vi kommit ig˚ang med labbandet

¨

ar det antagligen bekv¨amt att ha en katalog som heter ”Laboration1” exempelvis med un- derkataloger ”data”, ”m-filer”, ”rapport” mm. Under ¨ovandet med ComsolScript b¨or man d¨arf¨or skaffa sig kataloger som t.ex ”pass1” och sedan l¨agga dem i en katalog som kallas

(14)

”ComsolScriptovningar”. Namn p˚a katalogerna ¨ar givetvis helt fritt att v¨alja, men det b¨or vara en logisk struktur d¨ar alla filer i en given katalog ”h¨or ihop”, och har namn som g¨or att man f¨orst˚ar vad det ¨ar f¨or fil utan att beh¨ova ¨oppna den och titta efter.

Vartefter som du b¨orjar bygga upp ett bibliotek av standardfiler (t ex s˚adana som ber¨aknar normalf¨ordelningen) som du tror att du kan komma att anv¨anda i olika projekt s˚a b¨or du kanske spara dessa i en ”bibliotekskatalog” som inte ¨ar direkt associerad med en specifik kurs eller laboration.

Observera att alla filer som sparas p˚a ”allm¨anna” omr˚aden riskerar att raderas, antingen av misstag av n˚agon av dina kollegor, eller ocks˚a av systemansvariga n¨ar de st¨adar upp p˚a datorns h˚arddisk.

2.3 Komma ig˚ ang med ComsolScript

N¨ar du ¨ar inloggad kan du se ett antal sm˚a bilder - ”ikoner” - p˚a sk¨armen. Varje ikon ¨ar en symbol f¨or ett objekt som finns i datorn. Det kan vara en fil, en mapp (katalog) eller ett program. Vad som h¨ander n¨ar du dubbelklickar p˚a en ikon beror p˚a vad ikonen ¨ar en symbol f¨or, ¨ar det t ex en symbol f¨or en fil skapad i programmet Microsoft Word kommer programmet Microsoft Word att starta och ¨oppna filen. P˚a din sk¨arm kommer du

att ha en ikon som visar ComsolScripts symbol. Den ikonen ¨ar l¨ankad direkt till programmet ComsolScript, s˚a genom att dubbelklicka p˚a den startar ComsolScript.

En alternativ metod att starta ComsolScript ¨ar att klicka p˚a den lilla fyrkanten l¨angst ned, m¨arkt med Windows-symbolen och ordet ”Start”. D˚a ¨oppnas en meny med ett antal alter- nativ varav ett ¨ar ”Program ”. Klickar du p˚a den raden s˚a ¨oppnas en mindre meny (det

¨

ar inneb¨orden av symbolen ”.”), d¨ar v¨aljer du ”COMSOL 3.3a . ” och i den meny som d˚a kommer upp v¨aljer du ˚ater ”ComsolScript 1.1a”.

(om ComsolScript 1.1 inte syns s˚a klicka p˚a symbolen i botten av menyn s˚a ¨oppnas fler alternativ) och p˚a den meny som d˚a ¨oppnas klickar du ˚aterigen ”ComsolScript 1.1”.

2.3.1 ComsolScripts kommandof¨onster

N¨ar ComsolScript har startat ¨oppnas ett nytt f¨onster p˚a din dator som kan se litet olika ut beroende p˚a vilka inst¨allningar som har sparats, men det blir i alla fall en version av det som kallas ComsolScripts skrivbord. Skrivbordet ¨ar uppdelad i flera mindre delar, den ¨ovre delen

¨

ar ComsolScripts kommandof¨onster (Command Prompt). Kommandof¨onstret ¨ar det f¨onster genom vilket vi och ComsolScript kommunicerar med varandra, d¨ar skriver vi in kommandon och ComsolScript skriver ut resultat.

2.3.2 De f¨orsta stegen - ”Hello World”

Det finns en slags ”tradition” inom litteraturen om datorprogram och programmeringsspr˚ak enligt vilken den f¨orsta uppgiften man skall l¨osa n¨ar man ger sig i kast med ett nytt program eller spr˚ak ¨ar att f˚a programmet att skriva ”Hello World” p˚a sk¨armen. Det h¨ar kan verka litet f˚anigt, men det ¨ar faktiskt inte s˚a dumt. Visserligen ¨ar det vi kr¨aver av sj¨alva programmet t¨amligen trivialt, men f¨or att det hela skall fungera m˚aste vi kunna en hel del saker om den milj¨o i vilket programmet fungerar: vi m˚aste kunna logga in p˚a den dator d¨ar programmet skall k¨oras, hitta och starta programmet, f˚a programmet att acceptera v˚ara instruktioner om vad som skall utf¨oras, k¨ora programmet och till sist f˚a programmet att kommunicera ett resultat, vanligtvis via en bildsk¨arm. Kan vi klara av alla dessa uppgifter s˚a kan vi i forts¨attningen koncentrera oss p˚a att f˚a programmet att l¨osa mer och mer komplicerade uppgifter.

(15)

2.3. KOMMA IG˚ANG MED COMSOLSCRIPT 9 S˚a har vi ¨antligen kommit fram till den punkt d˚a vi ¨ar redo att s¨aga hall˚a v¨arlden. Det som ˚aterst˚ar ¨ar att instruera ComsolScript att skriva ut ”Hello World” p˚a sk¨armen. Det finns fler s¨att att f˚a ComsolScript att utf¨ora kommandon, det enklaste som vi skall anv¨anda f¨orst ¨ar att skriva in kommandot i kommandof¨onstret. N¨ar vi skriver ett kommando i kom- mandof¨onstret och trycker p˚a ”return” s˚a kontrolleras f¨orst att kommandot har en korrekt syntax, dvs att kommandot ¨ar skrivet enligt de regler som g¨aller f¨or ComsolScripts komman- dospr˚ak s˚a att programmet kan tolka instruktionen. Om kommandot vi skrivit in ¨ar korrekt utf¨ors det och eventuella resultat visas i kommandof¨onstret. Det kommando vi skall anv¨anda f¨or att s¨aga hall˚a heter disp() efter engelskans ”display”. Kommandot betyder helt enkelt att ComsolScript skall visa det som st˚ar inom parantesen (argumentet) i kommandof¨onstret p˚a sk¨armen. Det som st˚ar inom parantesen kan vara en m¨angd olika storheter, men just nu ¨ar vi intresserade av n˚agot som kallas f¨or textstr¨ang. En textstr¨ang ¨ar en str¨ang av tecken, omgiven av enkla citationstecken: ( ’ ’). ComsolScript behandlar en textstr¨ang som en liten l˚ada som man inte, i alla fall inte utan en del m¨oda, kan g¨ora n˚agot annat med ¨an att spara och ta fram vid behov. Genom att ge textstr¨angen ’Hello World’ som argument till kommandot disp instruerar vi ComsolScript att skriva ut str¨angen p˚a sk¨armen. Det sista steget blir allts˚a att ge kommandot disp(’Hello World’) i kommandof¨onstret, som svar kommer ComsolScript att skriva ”Hello World” i kommandof¨onstret, och vi har klarat av v˚ar f¨orsta ComsolScript-uppgift.

C  disp(’Hello World’) Hello World

2.3.3 ComsolScripts hj¨alpfunktion

ComsolScript har en mycket omfattande on-linedokumentation, och kraftfullt st¨od f¨or hj¨alp- funktionen. Det finns fler s¨att att hitta information p˚a, s˚a vi kommer under kursens g˚ang att l¨ara oss fler olika metoder att f˚a hj¨alp. Den f¨orsta metoden vi skall anv¨anda ¨ar att ¨oppna och anv¨anda on-linedokumentationen. Det g¨or du genom att i ComsolScripts menyer g˚a in i

“Help”, och d¨ar klicka p˚a “Help Desk (HTML/PDF)”. N¨ar du g¨or det kommer huvudsidan i ComsolScripts dokumentation att ¨oppnas i din web-browser (om du inte redan har startat en browser s˚a g¨ors det automatiskt). P˚a den web-sida som kommer upp -kallad “COMSOL Documentation” - kan du v¨alja dels vilken del av dokumentationen du vill titta i, dels i vilket format. Du kan antingen klicka dig fram i en web-browser, eller ¨oppna en pdf-fil.

Om du vill skriva ut n˚agot avsnitt p˚a papper kan det vara bekv¨amt att anv¨anda pdf-filen (men t¨ank p˚a skogen, skriv inte ut hela manualen!), men f¨or att snabbt bara s¨oka ett svar p˚a n˚agot best¨amt problem ¨ar i allm¨anhet web-browsern en snabbare och bekv¨amare metod.

I detta kompendium kommer jag om det inte speciellt anges referera till html-metoden.

F¨or ComsolScript har vi tv˚a avdelningar av dokumentationen att v¨alja p˚a: User’s Guide och Command Reference. Users’s Guide ¨ar den sektion vi oftast kommer att h¨anvisa till, d¨ar finns beskrivningar av hur programmet fungerar uppdelat p˚a ett antal olika ¨amnen, den andra avdelningen, Command Reference, ¨ar en lista p˚a alla kommandon du kan ge i ComsolScript, vad de g¨or och vilka argument du kan ge. Denna avdelning kan vara anv¨andbar om man t ex minns vad ett kommando heter, men inte kan minnas med vilka argument man kallar det (men minns man namnet p˚a kommandot s˚a ¨ar det alltid snabbare att bara skriva help kommandonamn i ComsolScripts kommandof¨onster). Klicka nu p˚a “HTML” p˚a raden Users’s Guide! Du kommer d˚a in i ComsolScripts dokumentation. Den visas hela tiden i ett f¨onster uppdelat i tv˚a spalter. Den v¨anstra spalten anv¨ands f¨or att hitta r¨att bland dokumentationen, i den h¨ogra spalten visas hj¨alptexten. L˚at oss b¨orja med att titta p˚a v¨anstersidan. Vi kan

(16)

v¨alja tre olika s¨att att leta information genom att v¨alja en av de tre knapparna l¨angst upp i v¨ansterspalten:

contents

ger oss en inneh˚allsf¨orteckning d¨ar ¨amnena ¨ar grupperade i kapitel och underkapitel i olika niv˚aer ner till enstaka sidor.

index

ger oss tillg˚ang till ett alfabetiskt ¨amnesregister d¨ar vi kan s¨oka om vi vet namnet p˚a det kommando eller det begrepp vi vill veta mer om.

search

ger oss m¨ojlighet att s¨oka i den samlade dokumentationen. S¨okningen kan vara efter s˚av¨al enstaka ord som hela fraser.

L˚at oss nu ta en n¨armare titt p˚a vad som m¨oter oss under fliken ”contents”. Schema- tiskt ser spalten under ”contents” ut s˚a h¨ar: De sm˚a boksymbolerna betecknar avsnitt i hj¨alpkatalogen. Genom att klicka p˚a n˚agon av dem ¨oppnas n¨asta niv˚a av inneh˚allsf¨or- teckningen. Klicka p˚a “COMSOL Script Basics”! D˚a ¨oppnas n¨asta niv˚a “Using COMSOL Script” som ¨aven den symboliseras av en liten bok. Det betyder att vi kan klicka p˚a den f¨or att komma en niv˚a djupare ned i dokumentationen. G¨or vi det ser vi i n¨asta niv˚a en symbol f¨or en textsida. Detta visar den l¨agsta niv˚an i hj¨alpsystemet. Klickar vi p˚a en av dem (eller texten brevid symbolen) s˚a visas den hj¨alptext som h¨or till detta avsnitt i det h¨ogra f¨onstret.

En underavdelning som ¨ar ¨oppnad kan st¨angas igen: klicka bara p˚a boksymbolen s˚a st¨angs motsvarande niv˚a. I det h¨ar kompendiet anv¨ands en speciell syntax f¨or att beskriva hur du skall navigera fram till givna avsnitt i hj¨alpdokumentationen. L˚at oss t ex b¨orja med att hitta det avsnitt i dokumentationen som beskriver ComsolScripts hj¨alpfunktion. Till den sidan n˚ar du genom att klicka p˚a f¨oljande titlar:

COMSOL Script Basics Using COMSOL Script Getting Help

F¨or att spara utrymme kommer vi i det h¨ar kompendiet att skriva

?/COMSOL Script Basics / Using COMSOL Script / Getting Help f¨or klick-serien ovan.

N¨ar vi har l¨ast f¨ardigt i hj¨alpf¨onstret s˚a kan det vara bekv¨amt att g¨ora sig av med det s˚a att vi l¨attare kan se kommandof¨onstret.Det g¨or vi enklast genom att

anv¨anda oss av en av symbolerna som visas h¨ogst upp till h¨oger i varje f¨onster (allts˚a inte bara ComsolScripts) som visas p˚a datorn.

De tre symbolerna anv¨ands f¨or att hantera f¨onster i Windowsmilj¨on. Symbolen till v¨anster anv¨ands f¨or att f¨orminska f¨onstret till en ”ikon”. Prova att klicka p˚a den, och du ser att f¨onstret f¨orsvinner och att vi obehindrat kan se de f¨onster som tidigare var dolda bakom hj¨alpf¨onstret. Det fina i kr˚aks˚angen ¨ar att f¨onstret finns kvar i skepnad av en liten symbol

”@Help” p˚a listen l¨angst ned p˚a datorsk¨armen. Genom att klicka p˚a den symbolen ˚aterst¨alls f¨onstret genast. Det h¨ar ¨ar ett bekv¨amt s¨att att g¨ora det enklare att hitta bland alla sina

¨

oppna f¨onster, de som inte anv¨ands f¨or tillf¨allet minimerar man bara och de finns fortfarande l¨att tillg¨angliga. Krysset l¨angst till h¨oger st¨anger det aktuella f¨onstret. Om detta ¨ar ”topp- f¨onstret” avslutas det program som ¨oppnat f¨onstret. Klickar vi d¨ar i hj¨alpfunktionen s˚a avslutas webbl¨asaren och vi f˚ar b¨orja om fr˚an b¨orjan och g˚a till hj¨alpmenyn om vi vill ha mer hj¨alp. Den mittersta symbolen slutligen anv¨ands f¨or att maximera ett f¨onsters storlek, klickar vi p˚a den s˚a f¨orstoras f¨onstret s˚a att det t¨acker hela datorsk¨armen. Det h¨ar kan vara bekv¨amt om man till exempel vill kunna l¨asa en hel sida i dokumentationen p˚a sk¨armen utan att beh¨ova bl¨addra upp och ner p˚a sk¨armen. N¨ar vi ¨ar klara klickar vi bara en g˚ang till p˚a

(17)

2.4. B ¨ORJA R ¨AKNA 11 samma symbol och f¨onstret ˚atertar sin ursprungliga storlek. Ett annat s¨att att f˚a hj¨alp ¨ar att i kommandof¨onstret skriva help kommando , d¨ar ”kommando” byts ut mot namnet p˚a det kommando man s¨oker hj¨alp om. Detta leder ofta snabbare fram till den information man s¨oker ¨an att s¨oka i dokumentationen. Sv˚arigheten ¨ar bara att man m˚aste ha en f¨orsta id´e om vad det ¨ar man vill ha hj¨alp med s˚a att man har n˚agot vettigt att skriva in i st¨allet f¨or

”kommando”.

2.3.4 Avsluta ComsolScript

Det finns tre s¨att att avsluta ComsolScript. Du kan antingen g˚a in i menyn ”File” och d¨ar v¨alja ”Exit COMSOL” eller ocks˚a trycka p˚a ”ctrl Q” (trycker samtidigt ner tangenten ”ctrl”

i nedre v¨anstra h¨ornet av tangentbordet och tangenten ”Q”). Det tredje s¨attet att sluta ¨ar att skriva “Exit” i ComsolScripts kommandof¨onster.

2.4 B¨ orja R¨ akna

2.4.1 ComsolScript som en r¨aknedosa

Enklare matematiska operationer g¨ors precis som p˚a en vanlig r¨aknedosa (med normal, dvs ej omv¨and polsk notation `a la HP-r¨aknare) med den lilla skillnaden att vi trycker p˚a return i st¨allet f¨or ”=” n¨ar vi vill ber¨akna resultatet. Pr¨ova t ex att ber¨akna 2+2:

C  2 + 2 ans = 4

2.4.2 Operatorer

F¨or aritmetik har ComsolScript de vanliga operatorerna (och en litet ovanlig ):

+ Addition - Subtraktion

? Multiplikation / Division

\ V¨ansterdivision3

∧ Exponentiering, till exempel x∧2 = x2

’ Komplex konjugering och transponering ( ) Paranteser f¨or att definiera prioritetsordning

Prioritetsordningen mellan operatorerna ¨ar den normala s˚a att n¨ar man till exempel skriver 3 * 4 + 3*2 ∧3 s˚a ber¨aknas f¨orst, 23, d¨arefter de b¨agge produkterna och sedan summan.4 2.4.3 Variabler

I ComsolScript kan man liksom i alla h¨ogniv˚aspr˚ak definiera variabler, och tilldela dessa v¨arden. Dels underl¨attar det arbetet genom att man inte beh¨over upprepa inmatning av samma v¨arde fler g˚anger, dels g¨or det instruktionerna enklare att f¨olja och f¨orst˚a - ˚atminstone om man v¨aljer namn p˚a konstanterna som ¨ar begripliga. Antag som ett exempel att en l¨askeblask kostar 10 kronor, en varmkorv 12 och en kaffe 4. Om d˚a Kalle k¨oper en korv och

3ansterdivision f¨orklaras i avsnitt 3.2.2

4Notera att ComsolScript ignorerar mellanslag i alla uttryck. Det spelar allts˚a ingen roll om vi skriver 2+3+4*5 eller 2 + 3 + 4*5 eller 2 + 3 + 4 * 5. F¨or att det skall bli enklare att f¨olja uttrycken s˚a ¨ar det mellersta s¨attet att skriva (som ansluter till prioritetsordningen) att f¨oredra.

(18)

fyra kaffe, Lisa en l¨askeblask och tv˚a korvar och Ludde tre korvar och tv˚a l¨askeblask, s˚a kan vi r¨akna ut vad var och en fick betala p˚a f¨oljande s¨att (minns att varje rad m˚aste avslutas med return f¨or att ComsolScript skall utf¨ora kommandot):

C  laskeblask = 10 laskeblask = 10

C  korv = 12 korv = 12 C  kaffe = 4

kaffe = 4

C  Kalle = 2*korv + 4*kaffe Kalle =

40

C  Lisa = laskeblask + korv Lisa =

22

C  Ludde = 3*korv + 2 *laskeblask Ludde =

56

I exemplet ovan ¨ar laskeblask, korv, kaffe, Kalle, Lisa och Ludde alla variabler. Variabler kan allts˚a tilldelas v¨arden antingen explicit (uttryckligen) genom t ex korv = 12, eller genom en ber¨akning som t ex Kalle = 2*korv + 4*kaffe.

Observera att man som alltid m˚aste vara noga med syntaxen, eller programmeringsspr˚akets grammatik. Det g˚ar inte att skriva

C  Dyrt = 3 korv

Prova! Du kommer att f˚a ett prov p˚a hur ComsolScript v¨anligt, men inte s¨arskilt diskret hj¨alper en tillr¨atta n¨ar man f˚ar syntaxen fel. Gl¨ommer man bort vad en l¨ask kostar kan vi fr˚aga ComsolScript:

C  laskeblask laskeblask = 10

En fallgrop man f˚ar akta sig f¨or ¨ar att variabler vars v¨arde ber¨aknas, som t ex Kalle ovan beh˚aller det v¨arde som variabeln tilldelats senaste g˚angen den ber¨aknas, ¨aven om en av de variabler som ing˚ar n¨ar man ber¨aknar variabelns v¨arde ¨andras. Ett exempel:

C  korv = 14 korv = 14 C Ludde

Ludde = 56

V¨ardet p˚a variabeln Ludde ¨andras allts˚a inte n¨ar v¨ardet p˚a korv ¨andras, n¨ar v¨ardet p˚a Ludde ber¨aknades g¨allde det gamla v¨ardet p˚a korv och v¨ardet p˚a Ludde f¨orblir of¨or¨andrat s˚a l¨ange vi inte r¨aknar om det med

C  Ludde = 3 * korv + 2 * laskeblask Ludde =

62

Variabelnamn i ComsolScript m˚aste b¨orja med en bokstav, f¨oljd av en godtycklig kombi-

(19)

2.4. B ¨ORJA R ¨AKNA 13 nation av bokst¨aver (ej ˚a, ¨a eller ¨o), siffror eller understrykning ( ), ett variabelnamn kan allts˚a inte inneh˚alla mellanslag. ComsolScript ser skillnad p˚a stor och liten bokstav, ALLA, Alla och alla ¨ar allts˚a tre olika variabler. Om man vill skapa variabelnamn som ¨ar sam- mans¨attningar av mer ¨an ett ord finns tv˚a konventioner: antingen binder man ihop med ett understrykningstecken, eller ocks˚a skriver man med sm˚a bokst¨aver, men inleder nya ord med versal. Allts˚a antingen lagsta strom eller LagstaStrom. Vilket du v¨aljer att g¨ora ¨ar godtyckligt, men det ¨ar bra om man f¨ors¨oker att h˚alla sig till ett s¨att att skriva. Det ¨ar ju enkelt att komma ih˚ag att variabeln ¨ar ”l¨agsta str¨om”, men om man p˚a vissa st¨allen skriver lagsta strom och p˚a andra LagstaStrom s˚a kommer man att h¨anvisa till olika variabler p˚a olika st¨allen i sin kod. Man b¨or d¨arf¨or best¨amma sig f¨or en konvention och sedan h˚alla sig till den. Det kan ocks˚a vara bra att undvika de svenska bokst¨averna ¨aven om det program man arbetar med st¨oder dessa. N¨ar man skriver m˚anga program skaffar man sig vanor, och det ¨ar bra om vanorna fungerar i s˚a m˚anga olika sammanhang som m¨ojligt.

2.4.4 Konstanter

ComsolScript har ett antal inbyggda konstanter:

pi konstanten π = 3.14159265...

i roten ur -1.

j samma som i.

eps 2−52 den minsta relativa skillnaden mellan tv˚a rationella tal,

eller uttryckt p˚a annat s¨att: det minsta tal man kan addera till 1 och f˚a ett tal som ¨ar st¨orre ¨an 1.

realmin 2−1022, det minsta reella talet som kan representeras p˚a datorn.

realmax 21024-1, det st¨orsta reella talet som kan representeras p˚a datorn.

Inf O¨andligheten som resultat av en v¨al definierad matematisk operation, t ex 10/0.

NaN Icke definierat (Not a Number), t ex resultatet av en operation d¨ar resultatet inte ¨ar definierat, t ex 0/0 eller Inf - Inf.

ans Resultatet av det senaste kommandot.

Av dessa kommer vi kanske inte att anv¨anda mer ¨an pi (och m¨ojligen ans) i den h¨ar kursen, men det ¨ar bra att veta att de finns, i vissa l¨agen kan ComsolScript komma att anv¨anda dem i felmeddelanden och d˚a ¨ar det bra att veta vad till exempel NaN st˚ar f¨or.

Vi har h¨ar valt att kalla dessa tal f¨or ”konstanter” eftersom det ¨ar s˚a vi betraktar och anv¨ander dem. Rent tekniskt ¨ar de dock implementerade som inbyggda funktioner vilket har som en konsekvens att man kan definiera om dem:

C  pi pi = 3.1415 C  pi = 4.75

pi = 4.7500

De ¨ar dock litet mer stabila ¨an vanliga variabler av typ Kalle som vi sj¨alva definierar. En variabel vi har definierat kan tas bort s˚a att ComsolScript inte l¨angre minns n˚agot om dem genom att ge commandot clear:

C  clear Kalle

G¨or vi samma sak med en av ”konstanterna” i tabellen ovan s˚a ˚aterst¨alls v¨ardet till det f¨ordefinierade som visas i tabellen.

(20)

2.5 Milj¨ on i ComsolScript

2.5.1 St¨ada upp kommandof¨onstret: tyst input, forts¨attningsrader

N¨ar man b¨orjar komma ig˚ang litet med att anv¨anda ComsolScript tycker man ofta att kom- mandof¨onstret blir litet ostrukturerat, alla kommandon man ger upprepas slaviskt, vissa v¨arden ges utan decimaler, andra med en l˚ang rad nollor p˚a slutet. Det finns ett antal kommandon som hj¨alper en att skr¨addarsy vad vi ser i kommandof¨onstret.

F¨or att st¨anga av ekot, det vill s¨aga f¨or att f˚a ComsolScript att avst˚a fr˚an att rapportera resultatet av varje kommando vi skriver in r¨acker det med att avsluta raden med semikolon.

Egentligen ¨ar det inte raden, utan kommandot som avslutas med semikolon. Distinktionen ¨ar viktig, eftersom anv¨andandet av semikolon g¨or det m¨ojligt att skriva mer ¨an ett kommando p˚a varje rad. Denna finess b¨or anv¨andas med omd¨ome, driver man det f¨or l˚angt kan det bli n¨astan om¨ojligt att se vad man gjort, men r¨att anv¨ant kan det ist¨allet g¨ora det l¨attare att f¨olja med:

C  laskeblask = 10; korv = 12; kaffe = 4;

C  Kalle = 2*korv + 4*kaffe Kalle =

40

ser mycket b¨attre ut ¨an f¨orra g˚angen vi r¨aknade ut Kalles utgifter.

Man b¨or f¨ors¨oka undvika alltf¨or l˚anga kommandon, men ibland kan man beh¨ova skriva kommandon som inte f˚ar plats p˚a en rad, som till exempel:

Y = ((3.5*(laskeblask+korv)-kaffe)+sin(pi-2.75*Kalle)/korv∧2 +(45-kaffe)∧3 Om vi beh¨over dela upp ett kommando p˚a fler rader kan vi g¨ora det: F¨or att tala om f¨or ComsolScript att kommandot inte ¨ar slut n¨ar raden ¨ar slut, vilket ¨ar vad ComsolScript normalt antar, s˚a m˚aste den rad som har en forts¨attning avslutas med tre punkter omedelbart f¨oljda av return:

C  Y = ((3.5*(laskeblask+korv)-kaffe)+...

sin(pi-2.75*Kalle)/korv∧2+(45-kaffe)∧ 3))

¨

ar allts˚a ett kommando ¨aven om det str¨acker sig ¨over mer ¨an en rad. F¨or att denna finess skall fungera m˚aste man se till att det som st˚ar f¨ore “. . . ” inte ¨ar ett korrekt, avslutat kommando:

C  Y = 8+...

3

fungerar, medan C  Y = 8...

+ 3 inte fungerar.

2.5.2 Format och avrundning

I exemplen vi sett s˚a h¨ar l˚angt har ComsolScript genomg˚aende skrivit ut heltal utan decimaler och decimaltal med fyra decimaler. Det senare g¨aller s˚av¨al i de fall d¨ar vi har definierat en variabel genom att skriva in bara en decimal som t ex 0.5, som i de fall d˚a ComsolScript visar ett tal med o¨andligt l˚ang decimalutveckling som pi eller 1/3. N¨ar vi kommer till mycket stora eller mycket sm˚a tal sl˚ar ComsolScript om till att anv¨anda ”scientific notation”, d¨ar tal representeras som ett decimaltal multiplicerat med en l¨amplig tiopotens. I denna notation skrivs till exempel 1.602·10−19 som 1.602e-19.

Hur ComsolScript skall formattera de tal som visas kan p˚averkas genom kommandot format.

F¨or att se vilka alternativ som finns kan vi g˚a till help f¨onstret och s¨oka p˚a

(21)

2.5. MILJ ¨ON I COMSOLSCRIPT 15

?/COMSOL Script Basics/Using COMSOL Script/Numbers and Arithmetics /Output Formats

Eller enklare genom att bara skriva C  help format

L¨agg s¨arskilt m¨arke till kommandot format compact som tar bort alla dessa blanka rader som ComsolScript spottar ur sig. I forts¨attningen kommer vi att anv¨anda detta format i det h¨ar kompendiet.

2.5.3 ComsolScripts “Workspace”

Vi har nu sett hur variabler som vi definierar, till exempel laskeblask i avsnitt 2.4.3, ”lever kvar”. L˚angt efter det att vi definierat dem kan vi anv¨anda dem i nya uttryck, och vi kan se vilka v¨arden de har genom att skriva deras namn i kommandof¨onstret. Det st¨alle d¨ar dessa variabler lever ¨ar en del av datorminnet som ComsolScript reserverar f¨or variabler och som kallas ”workspace”. Under l˚anga ComsolScript-sessioner kan ComsolScripts workspace bli ganska t¨atbefolkad, man kan l¨att samla p˚a sig en stor m¨angd variabler. Som vi snart kommer att se kan ett variabelnamn beteckna inte bara tal, utan vektorer och matriser med hundratals element.

Ett s¨att att se vad som finns i workspace ¨ar att i kommandof¨onstret ge kommandot whos.

Ett annat s¨att att se vad som finns i ComsolScripts workspace ¨ar att i nedre delen av Desktop klicka p˚a fliken “Work Space”. Du f˚ar d˚a upp samma information, plus v¨ardet f¨or de variabler som ¨ar skal¨arer.

Vi f¨orst˚ar nu vad kommandot clear g¨or: genom att skriva clear Kalle tar vi bort vari- abeln Kalle fr˚an ComsolScripts workspace, vilket g¨or att ComsolScript helt “gl¨ommer bort”

att Kalle existerat. Du kan prova detta genom att skriva clear xxx i kommandof¨onstret f¨or n˚agon av de variabler som syns i workspace-f¨onstret och se vad som h¨ander.

2.5.4 ”Play it again Sam”- att upprepa kommandon

I ”Kalle Ankas Julafton” finns en film som visar en husvagnstur med Kalle Anka, Musse Pigg och L˚angben. I en av scenerna sitter L˚angben och ¨ater en majskolv. N¨ar han g¨or det f¨or han munnen ¨over majskolven, varvid det h¨ors ett konstigt knattrande ljud. N¨ar han kommit till slutet av majskolven h¨ors ett pling, varvid han flyttar huvudet till andra sidan av majskolven och proceduren b¨orjar om. N¨ar mina barn ser det h¨ar skrattar dom, men dom har ingen aning om vad det hela anspelar p˚a: f¨orr i tiden fanns det skrivmaskiner!

N¨ar f¨orfattaren var ung var skrivmaskiner n˚anting ganska h¨aftigt. Med ganska mycket m¨oda kunde man f˚a ett brev eller ett dokument att se j¨atteproffsigt ut. Kruxet var bara att skrivmaskiner var fullkomligt skoningsl¨osa - skrev man fel var det bara att riva ut pappret och b¨orja om (p˚a hemma-niv˚a kunde man f¨orst˚as backa och kryssa ¨over med ett antal ”XXXX”, men det f¨ortog ganska mycket av effekten). Det fanns speciella suddgummin f¨or skrivmaskier, stenh˚arda skivor som antingen rev s¨onder pappret i sm˚abitar eller smetade ut skriften ¨over hela pappret. S˚a sm˚aningom kom ”TipEx”, en vit f¨arg man kunde m˚ala ¨over sina misstag med, och sedan skriva ny text ovanp˚a. Det blev med ens m¨ojligt att hyfsa till dokument om man gjorde n˚agot enstaka fel, men riktigt proffssnyggt blev det inte, och man kunde inte heller ¨andra hela stycken mitt i ett f¨ardigt dokument.

De av oss som har upplevt denna period kan till fullo uppskatta vad ankomsten av sm˚a billiga datorer betytt f¨or ordbehandlingen: ¨andringar blir triviala, felstavningar korrigeras enkelt (ibland till och med automatiskt), man kan ˚ateranv¨anda gamla dokument, byta ut stycken helt godtyckligt - aldrig tidigare har s˚a mycket text kunnat produceras med s˚a liten m¨oda!

Det vore naturligtvis sk¨ont att kunna f˚a en ”r¨aknebehandlare” som har alla dessa f¨oretr¨aden.

Har man v¨al skrivit in

(22)

Y = ((3.5*(a+b)-c)+sin(phi-2.75*D)/epsil∧2+(455-abba∧3)/ (cos(4+pi)-2.75) bara f¨or att komma p˚a att det borde ha varit

Y = ((3.5*(a+b)-c)+sin(phi-2.75*B)/epsil∧2+(455-abba∧3)/ (cos(4+pi)-2.75) s˚a kan man bli litet tr¨ott, och ¨onska sig att ComsolScript bar sig ˚at som en ordbehandlare.

Om man sedan kommer tillbaks en vecka senare f¨or att r¨akna om n˚agot p˚a en lab-rapport man f˚att ˚ater p˚a s˚a ¨onskar man verkligen att man kunde trolla tillbaks vad man gjorde f¨orra veckan. ComsolScript, och andra moderna ber¨akningsprogram, svarar upp till dessa f¨orv¨antningar. Dels kan man kan ˚aterkalla sina tidigare kommandon och redigera dessa i kommandof¨onstret innan man exekverar dem igen. Dessutom kan man spara hela sekvenser av kommandon i s˚a kallade ”M-filer” som man sedan kan ˚aterkalla, eventuellt redigera, och k¨ora igen.

2.5.5 Att ˚aterkalla kommandon

Det enklaste s¨attet att f˚a chansen att g¨ora om n˚agot vi gjort nyligen ¨ar att trycka p˚a upp-pilen p˚a tangentbordet. N¨ar vi g¨or det visas det senast utf¨orda kommandot i kommandof¨onstret.

Trycker vi p˚a pilen en g˚ang till kommer kommandot innan dess och s˚a vidare. N¨ar vi knappat oss fram till det kommando vi vill g¨ora om s˚a ¨ar det bara att trycka p˚a return s˚a utf¨ors kommandot en g˚ang till. Oftast s˚a ˚aterkallar man ju ett kommando f¨or att man gjort n˚agot sm¨arre fel som man vill korrigera, vilket ¨ar l¨att gjort. N¨ar man bl¨addrat fram det kommando man vill g¨ora om kan man flytta sig in i raden genom att trycka p˚a v¨anster-pil. N¨ar man g¨or det r¨or sig pekaren in ¨over raden, n¨ar den st˚ar till h¨oger om det man vill ¨andra kan man radera ut delar av kommandot genom att trycka p˚a delete-knappen. N¨ar man suddat det som ¨ar fel ¨ar det bara att skriva in vad som skall st˚a i st¨allet. N¨ar man ¨ar n¨ojd ¨ar det sedan bara att trycka p˚a return. Oavsett om pekaren st˚ar mitt i raden s˚a kommer ComsolScript att utf¨ora kommandot som st˚ar p˚a hela raden.

Man kan ocks˚a ta sig in i raden genom att bara flytta pekaren till n˚agot st¨alle i raden genom att klicka. Prova genom att t ex skriva

C  y = sin (2 * pi)

och sedan ˚aterkalla kommandot och till exempel ¨andra 2 till 3 eller sin till cos.

2.5.6 Var s¨oker ComsolScript efter filer

ComsolScript har ett antal kommandon som inneb¨ar att programmet skall ladda in inneh˚allet i en fil till workspace. Man kan till exempel genom att skriva load filnamn l¨asa in hela inneh˚allet i filen med namn filnamn in i ComsolScripts workspace, man kan ocks˚a genom att bara skriva filnamn instruera ComsolScript att l¨asa in och utf¨ora de kommandon som finns sparade i filen filnamn.m . F¨or att detta skall fungera kr¨avs givetvis att ComsolScript hittar filen i fr˚aga. Det fungerar om den fil vi anger ligger i den aktuella katalogen, men dessutom har ComsolScript en lista med kataloger d¨ar den s¨oker efter de filer vi anger i v˚ara kommandon. En s˚adan lista kallas s¨okv¨ag (eng. search path). N¨ar vi skriver in ett filnamn s˚a kommer ComsolScript att f¨orst leta efter filen i den aktuella katalogen, d¨arefter s¨oks filen i alla kataloger som finns med i s¨okv¨agen, i den ordning som katalogerna st˚ar i s¨okv¨agen. Det kan allts˚a vara viktigt i vilken ordning katalogerna ¨ar listade i s¨okv¨agen, om det finns flera filer med samma namn. F¨or att arbeta med s¨okv¨agen anv¨ander vi kommandot path. Om vi bara ger kommandot path listas vilka kataloger som f¨or n¨arvarande ing˚ar i s¨okv¨agen.

Skriver vi ett filnamn kommer ComsolScript att s¨oka efter filnamn.m i de kataloger som listas i s¨okv¨agen i den ordning de listas d¨ar. Vi kan f¨or¨andra listan ¨over s¨okv¨agar p˚a tv˚a s¨att, antingen genom att ge kommandot path(STR¨ANG1), d¨ar STR ¨ANG1 ¨ar en textstr¨ang som anger ett antal kataloger, separerade med antingen “;” (i Windows), eller “:” (i alla andra operativsystem). Vi kan ocks˚a ge kommandot path(STR¨ANG1, STR¨ANG2) vilket resulterar i

(23)

2.6. M-FILER 17 att s¨okv¨agen ges av unionen av STR ¨ANG1 och STR ¨ANG2. Ett viktigt specialfall ¨ar n¨ar en av str¨angarna ¨ar “path” vilket anger de redan existerande s¨okv¨agarna, addpath(STR¨ANG1) l¨agger till STR ¨ANG1 f¨ore de s¨okv¨agar som redan existerar. Du kommer s¨akert att finna att det oftast ¨ar v¨aldigt bekv¨amt att se till att ditt SU-konto finns i den definierade s¨okv¨agen.

Ett annat s¨att att se hur s¨okv¨agen ser ut ¨ar att klicka p˚a fliken “Path” l¨angst ned i ComsolScripts desktop. D¨ar ser du alla kataloger som finns med i s¨okv¨agen och i vilken ordning. Om du vill ¨andra p˚a ordningen s˚a klicka p˚a en katalog i f¨onstret. Genom att klicka p˚a antingen “Move Up” eller “Move Down” kan du sedan flytta den givna katalogen upp eller ner i s¨okv¨agen. Klickar du p˚a “Save” sparas den aktuella inst¨allningen s˚a att ComsolScript automatiskt l¨aser in den n¨asta g˚ang programmet startar. Det h¨ar fungerar dock bara s˚a l¨ange som man arbetar p˚a samma dator, om man byter till en annan dator s˚a finns inte l¨angre dessa inst¨allningar tillg¨angliga. Man kan komma runt detta genom att skapa en m-fil, setmypath.m som s¨atter alla de s¨okv¨agar man vill ha. Exempel p˚a hur denna fil kan se ut:

% setmypath.m

% S¨atter s¨okv¨agen till dina filer.

% S¨att s¨okv¨agarna

path(’Z:\expmet\funktionsfiler’,path);

path(’Z:\expmet\labb1’,path);

path(’Z:\expmet\labb2’,path);

path(’Z:\expmet\datorovningar’,path);

%Skriv ut s¨okv¨agarna p˚a sk¨armen path

Byt ut funktionsfiler, labb1, etc mot namnen p˚a dina kataloger. Spara filen i din topp- katalog (allts˚a precis under abcd1234 ). S¨att s¨okv¨agen till dina filer genom att skriva i Com- solScrips prompt:

cd Z:\

setmypath

2.6 M-filer

Det absolut smidigaste s¨attet att anv¨anda ComsolScript ¨ar att konsekvent jobba med s˚a kallade ”m-filer”. I en m-fil kan man skriva in alla kommandon man kan skriva i ComsolScripts kommandof¨onster och spara dessa till h˚arddisken. N¨ar man sedan skriver namnet p˚a m-filen i ComsolScripts kommandof¨onster s˚a utf¨ors alla kommandon som st˚ar i filen och resultatet visas i ComsolScripts kommandof¨onster. Genom att utnyttja m-filer kan vi spara en otrolig m¨angd arbete. Vi kan till exempel skriva in alla r˚adata fr˚an en laboration i en m-fil, sedan steg f¨or steg skriva in alla operationer f¨or att g¨ora m¨atv¨ardesbehandling p˚a laborationen.

D¨arefter skriver vi in de kommandon som kr¨avs f¨or att producera de grafer vi skall redovisa i laborationsredog¨orelsen. Vi kan n¨ar som helst i den h¨ar processen ta paus, spara filen till disk och forts¨atta vid ett senare tillf¨alle. Det ¨ar ocks˚a enkelt att ¨andra ett enstaka kommando om man har f˚att n˚agon formel om bakfoten, eller om man vill ¨andra n˚agon detalj i ett histogram.

Det b¨asta man kan g¨ora som student ¨ar att bygga upp ett f¨orr˚ad av sm˚a m-filer som g¨or avgr¨ansade uppgifter, till exempel en anpassning till en andragradskurva eller en ber¨akning av chi-kvadrat. Eftersom en m-fil kan inneh˚alla kod-avsnitt som kallar en annan m-fil kan filer som utf¨or klart definierade uppgifter enkelt ˚ateranv¨andas n¨ar liknande problem skall l¨osas.

(24)

2.6.1 Editera m-filer

Det finns inget som s¨ager att du m˚aste skapa de m-filer du kommer att anv¨anda inne i ComsolScript. I princip kan du starta vilken editor som helst och i den skapa en m-fil som du sedan sparar p˚a disk, i text-format. Du kan sedan k¨ora den inifr˚an ComsolScript, f¨orutsatt att filen sparas n˚agonstans i ComsolScripts s¨okv¨ag. Oftast ¨ar det naturligtvis enklast att starta editeringen inifr˚an ComsolScript. Detta kan g¨oras p˚a tv˚a s¨att, antingen genom att i kommandof¨onstret skriva edit, eller genom att i menyn File v¨alja “New Editor”. I b¨agge fallen ¨oppnas ett editor-f¨onster h¨ogst upp i ComsolScripts desktop (om du bara ser en rad och inte ett helt f¨onster s˚a klicka p˚a “f¨onstersymbolen” l¨angst till h¨oger p˚a raden).

2.6.2 ComsolScripts inbyggda editor

Den inbyggda editorn fungerar p˚a ungef¨ar samma s¨att som de flesta andra editorer. I “Edit”- menyn har du tillg˚ang till kommandona “cut”, “copy” and “paste” som har de vanliga funktionerna av att klippa ut, kopiera och klistra in. Du kan ocks˚a s¨oka och byta ut text. I menyn “File” kan du sedan v¨alja mellan

• New - ¨oppnar ett nytt tomt editorf¨onster

• Open - ¨oppnar en redan existerande fil i ett nytt editorf¨onster.

• Close - st¨anger editorf¨onstret.

• Save - sparar inneh˚allet i editorf¨onstret till en fil p˚a disken.

• Save As - sparar inneh˚allet i editor-f¨onstret till en nyd¨opt fil p˚a disken.

• Save all -sparar alla ¨oppna editor-f¨onster i varsin fil.

• Print - skriver ut inneh˚allet i editor-f¨onstret.

F¨or att t ex skapa en fil som s¨ager hej till oss n¨ar vi k¨or den skriver vi edit. Du f˚ar d˚a upp ett nytt f¨onster med titeln “Untitled”.

Du kan nu b¨orja skriva in din ComsolScript-kod i f¨onstret, skriv t ex disp(‘Hello World’) och sedan spara filen som Hej.m.

2.6.3 Att spara en m-fil p˚a disk

Hela po¨angen med att skapa en m-fil ¨ar ju att den skall sparas p˚a h˚arddisk. F¨or att g¨ora det g˚ar vi, oavsett vilken editor vi arbetar i, in i ”File” menyn och v¨aljer ”Save”. Om filen vi vill spara ¨ar nyskapad och inte har n˚agot namn s˚a kommer editorn att ¨oppna en dialogruta d¨ar vi kan ange filens namn och i vilken katalog den skall ligga. Har vi ¨andrat i en redan existerande fil s˚a sparas den ¨andrade versionen med samma namn som den ursprungliga.

Observera att det h¨ar inneb¨ar att den ursprungliga versionen ¨ar f¨orlorad f¨or gott. Det kan d¨arf¨or vara klokt, s¨arskilt om man vill ¨andra i en komplicerad redan fungerande fil, att ist¨allet f¨or att spara den med samma namn som tidigare spara en kopia med ett annat namn s˚a att den ursprungliga, of¨or¨andrade versionen av filen finns kvar p˚a h˚arddisken. Detta g¨or man genom att ist¨allet f¨or att ange ”Save” v¨aljer ”Save as...” under ”File”-menyn. Vi f˚ar ¨aven i det h¨ar fallet upp dialogrutan d¨ar vi kan v¨alja namn och katalog f¨or filen. N¨ar man v¨al har introducerat alla ¨andringar och f˚att dem att fungera som man ¨onskar kan man sl¨anga den gamla filen och d¨opa om den nya till det gamla namnet om man s˚a ¨onskar.

(25)

2.6. M-FILER 19 2.6.4 L¨asa in och k¨ora en m-fil

Enklaste s¨attet att k¨ora en m-fil ¨ar att bara skriva dess namn i kommandof¨onstret. Om filen finns antingen i den aktuella katalogen eller i n˚agon katalog i s¨okv¨agen (se avsnitt 2.2.3)5 s˚a kommer de kommandon som finns i filen att utf¨oras. Prova:

C Hej

Hello World

2.6.5 Kommentarer

I princip ¨ar det ingen skillnad p˚a hur ComsolScript hanterar kommandon som skrivs in i kommandof¨onstret och kommandon som l¨ases in via en m-fil. Det finns ¨and˚a ett antal kommandon som man knappast anv¨ander i kommandof¨onstret men som spelar en stor roll n¨ar vi jobbar med m-filer. Viktigast av dessa ¨ar kommentarer.

Kommentarer inleds med ett procenttecken ”%” och f¨oljs av godtycklig text. N¨ar ComsolScript utf¨or kommandon ignorerar programmet procenttecknet och vad som f¨oljer efter det. Syftet med kommentarer ¨ar att g¨ora det enklare att titta i en m-fil och kunna f¨olja med vad pro- grammet g¨or, och hur. Detta ¨ar anv¨andbart b˚ade om man anv¨ander program skrivna av andra, men ocks˚a n¨ar man ett ˚ar senare (kom ih˚ag att ni skall spara alla era gamla m-filer!)

˚aterv¨ander till filer man sj¨alv har skrivit, det kan vara nog s˚a sv˚art att minnas vad man sj¨alv t¨ankt och gjort! Kommentarer anv¨ands

1. som en varudeklaration i b¨orjan av ett program (i det h¨ar sammanhanget ¨ar en m-fil att betrakta som ett program) f¨or att beskriva vad programmet g¨or, vad det heter, vem som har skrivit det och n¨ar, samt om programmet beh¨over n˚agon speciell typ av indata eller levererar n˚agon speciell typ av ut-data.

2. f¨or att beskriva vad de viktigaste variablerna st˚ar f¨or

3. vad de olika programstegen utf¨or

Det g˚ar n¨astan alltid att med ett snabbt ¨ogonkast skilja ett program skrivet av en van pro- grammerare fr˚an ett skrivet av en nyb¨orjare, ¨aven om man inte begriper ett skvatt av vad programmet g¨or. Eftersom en av skillnaderna ofta ¨ar m¨angden kommentarer - en duktig programmerare skriver mycket kommentarer - s˚a kan man ibland frestas att skriva en kom- mentar ¨aven f¨or triviala steg, vilket inte underl¨attar l¨asningen. Exakt hur mycket och vilka avsnitt som skall kommenteras kan vara en smaksak, men ett exempel som f¨orfattaren tycker

¨

ar rimligt kan vara:

5Om det finns fler filer med samma namn i olika kataloger som finns i s¨okv¨agen s˚a v¨aljer ComsolScript den som kommer f¨orst. Om resultatet inte blir vad man t¨ankt sig kan det bero p˚a att det finns en namne till den fil vi egentligen vill k¨ora, och att den hamnar f¨ore i k¨on.

References

Related documents

Han beskriver att den inre arbetsmodellen av anknytningsfiguren/objektet kan uppfattas på två skilda sätt. Redogör kort för dessa två uppfattningar

Titta på linjalen till höger då du löser uppgifterna 1-4.. Gör en lika lång

Riksdagen ställer sig bakom det som anförs i motionen om att möjliggöra för staten att avslå ansökningar om befrielse från medborgarskap om det föreligger en risk för att

När du sparar kommer du tillbaka till den vanliga rutan för insatser. Tryck på plustecknet

På grund av detta bör man beakta att om vi istället hade valt en skola i en småstads- eller glesbygdsregion kanske ungdomarna hade fört annorlunda resonemang kring hur man kan nå

Slutligen fastslår kammarrätten i en dom från 2012 att avdrag medges när det är en kostnad för att förvärva och bibehålla inkomst, samt när kostnaden är nödvändig

Genom att säkerställa en god tillgänglighet till lokaler och anläggningar, och ett utbud som passar personer i olika åldrar och med olika förutsättningar, ska även äldre

Sex av medarbetarna lyfter att det har varit viktigt för förändringen att man har varit samlade, det handlar både om att vara under en gemensam chef och att sitta samlade