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
3:e upplagan, Stockholm 2008.
c
Sten Hellman, Stockholms universitet.
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
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
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
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
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
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.
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
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.
2N¨ar 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 m˚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
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.
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
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
”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.
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
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
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
3V¨ansterdivision 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.
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-
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.
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
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
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
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.
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.
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.