Systeem Documentatie IPW (Interactieve Preprocessor...

44
Systeemdocumentatie IPW (Interactieve Preprocessor WAQUA) SIMONA rapport nr. 2005-xx

Transcript of Systeem Documentatie IPW (Interactieve Preprocessor...

Page 1: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

SysteemdocumentatieIPW (Interactieve Preprocessor WAQUA)

SIMONA rapport nr. 2005-xx

Page 2: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Version : 1.2, september 2008Maintenance : see www.helpdeskwater.nl/waquaCopyright : Rijkswaterstaat

SysteemdocumentatieIPW

Dit rapport beschrijft de opzet en samenhang van deInteractieve Preprocessor Waqua (IPW)

Page 3: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW Voorwoord

Versie 1.2, september 2008 i

Voorwoord

In het voorliggende document wordt aangegeven hoe deverschillende onderdelen van de IPW zijn opgebouwd. Er isaandacht voor de verschillende componenten die een rol spelen,voor de data (waar komen de data vandaan en waar worden zeopgeslagen) en voor de verschillende groepen routines (welkeroutines, met welke naamgeving, werken met elkaar samen omwelke opties uit te voeren).

In de gebruikershandleiding van de IPW staat aangegeven welkeknoppen in het IPW-hoofdscherm corresponderen met welketaken: deze zijn sterk gerelateerd aan de hoofdkeywoorden uitde Simona Waqpre-invoerbeschrijving. Daarnaast kent deapplicatie voor speciale taken (visualisatie, creëren submodel,taken Domeindecompositie) corresponderende menu-items.

Op basis van de gebruikershandleiding en dit document moet hetmogelijk zijn in combinatie met het commentaar in de routinesde weg te vinden in de broncode van de IPW.

Page 4: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW Inhoudsopgave

Versie 1.2, september 2008 iii

Inhoudsopgave

Voorwoord ...................................................................................... i

1 Technische specificaties ............................................................... 51.1 Gebruik van het document ....................................................... 51.2 Systeemnaam .......................................................................... 51.3 Doel van het systeem............................................................... 51.4 Theorestische achtergrond ....................................................... 61.5 Hardware- en software-omgeving ............................................ 61.6 Installatie van het systeem ....................................................... 7

2 Systeemstructuur ........................................................................ 82.1 Inleiding ................................................................................. 82.2 De context .............................................................................. 92.3 De interne opslagstructuur ...................................................... 92.4 De processen: inlezen, controleren en opslaan ........................ 112.5 Het wijzigen/uitbreiden via de schermen ................................ 122.6 De communicatie van de gebruiker via een scherm ................. 132.7 Speciale schermen: Areamap en Controlescherm .................... 142.8 Gegevensstromen en manipulatie ........................................... 152.9 Het op correcte wijze uitvoeren van de gegevens .................... 15

3 De IPW file-organisatie ............................................................. 163.1 Inleiding ............................................................................... 163.2 De interface bestanden waipw<xxx>.i ................................... 163.3 De callback routines waipwCB ............................................. 193.4 De tekenroutines, file waipwDraw ......................................... 193.5 De algemene organisatie, file waipwGeneral .......................... 203.6 Lezen en schrijven waipwIn... resp waipwOut... .................... 203.7 De UI-routines: de files beginnend met waipwUi .................... 20

4 Aanpassingen aan de programmatuur ...................................... 214.1 Aanpassen Userinterface ....................................................... 214.2 Aanpassingen nodig in de Interne Structuur ........................... 21

5 Kruistabellen ............................................................................. 22

6 Testdocumentatie ...................................................................... 396.1 Inleiding ............................................................................... 396.2 Testbankprocedures en testresultaten ..................................... 39

6.2.1 Test 1 ............................................................................ 406.2.2 Test 2 ............................................................................ 406.2.3 Test 3 ............................................................................ 41

7 Literatuur .................................................................................. 43

Page 5: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW Inhoudsopgave

Versie 1.2, september 2008 iv

Page 6: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 5

1 Technische specificaties

1.1 Gebruik van het document

De IPW systeemdocumentatie is bedoeld om een enigszinservaren ontwikkelaar en/of programmeur zoveel informatie teverschaffen dat hij eenvoudig zijn weg zal weten te vinden in deIPW programmatuur en deze programmatuur zo nodig kanuitbreiden en/of verbeteren. Vanwege die reden zal vooral destructuur van de IPW beschreven worden omdat hierin enpassant inhoud en methodiek van de verschillende onderdelenaan de orde komen en hun onderlinge relatie. Er kunnen in hetgeval van de IPW geen delen van de systeemdocumentatieautomatisch uit de broncode worden gegenereerd. De broncodeis vrijwel volledig in C geprogrammeerd. Op veel plaatsen is decode van commentaar voorzien. In de code lezend kan mededankzij de naamgeving van de diverse files en de sterke relatiemet de lokale data structuur van WAQUA_in_SIMONA snelworden gezien welke taak het betreft en op welke wijze dezetaak wordt uitgevoerd.

1.2 Systeemnaam

Het beschreven systeem is de IPW. De afkorting IPW staat voorInteractieve Preprocessor Waqua.

1.3 Doel van het systeem

Het doel van de IPW is een bestaande correcte SIMINP invoer-file (zie hiervoor de WAQUA Users Guide) in te slikken, eengebruiker de gelegenheid te bieden interactief allerlei waardenen vlaggen aan te passen en uiteindelijk een nieuwe correcteSIMINP file, voorzien van de genoemde aanpassingen, te latengenereren.

De IPW is daarnaast een controle medium: via een Gebieds-scherm kan het gebied waarop het rekenrooster is gedefinieerdgetoond worden en daarbij kan dan tevens gekeken worden ofde inhoud van de SIMINP file, bijvoorbeeld qua locaties engrootheden, overeenkomt met datgene wat de gebruiker wenst.In de Gebruikershandleiding Interactieve Preprocessor Waqua(Simona-rapport 2001-02) kan alle benodigde informatie overhet gebruik van de IPW gevonden worden.

Page 7: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 6

1.4 Theorestische achtergrond

In de IPW is niet van een wetenschappelijke methode of ietsvergelijkbaars sprake. Er worden in de IPW slechts enkeleeenvoudige interpolatie technieken en logische deductiemethoden gebruikt.

1.5 Hardware- en software-omgeving

De IPW is oorspronkelijk als X-Windows applicatie ontwikkeldonder UNIX op HP. Daarbij is gebruik gemaakt van OSF/Motifals Windows Manager (GUI-toolkit) en agX/Toolmaster alsondersteunende bibliotheek met grafische functies en ‘ready-to-use’ Motif-widgets. Voor het ontwerp en het bouwen van hetuser-interface is in eerste aanleg UIM/X als interface-buildertoegepast. Met dit hulpmiddel zijn de verschillende schermenqua lay-out (knoppen, invulvelden, menubalken, boxes, etc.)ingevuld en aansluitend met de bijbehorende uxcgen-compileromgezet naar c-broncode, inclusief header-files. Voor kleineaanpassingen in het interface kan de ervaren ontwikkelaarvolstaan met het aanpassen van de door UIM/X gegenereerde .i-files, om deze vervolgens wederom met uxcgen te converterentot .c- en .h-files. In de praktijk is gebleken dat deze werkwijzevoldoet zolang geen grootscheepse wijzigingen in het interfacevan de IPW hoeven te worden aangebracht.

In de periode november 2003 – juni 2004 is naast de UNIX-variant ook een PC-versie van de IPW gerealiseerd. Behalve vanagX/Toolmaaster maakt deze versie ook gebruik van de ExceedXDK Motif emulator. Met ingang van Simona Export 2005-01(mei 2005) is de IPW alleen nog maar beschikbaar alsuitlevering voor Windows 2000 en Windows XP; de UNIX-versie is daarmee formeel opgehouden te bestaan.

PC-ontwikkelomgeving IPW

Voor het ontwikkelen en genereren van de IPW is op PC devolgende software-omgeving benodigd:· AVS agX/Toolmaster v. 7.3, inclusief Motif Widget bibliotheek;· Hummingbird Exceed X Development Kit (XDK) v. 7.1;· XPM: bibliotheek voor XPixMap-images (voor het

weergeven van de bedrijfslogo’s);· Microsoft Visual Studio met Visual C/C++ v. 6.0 en Visual

Fortran v. 6.6C;· Simona-omgeving met naast de broncode van waqipw ook

de bibliotheken: blas, tools, couple, waqgen en waqpre.PC-runtime omgeving IPW

Page 8: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 7

Voor het draaien van de IPW is op PC de volgende software-omgeving benodigd:· besturingssysteem: Windows 2000 of Windows XP;· X-emulator, zoals bv. Hummingbird Exceed v. 7.1 (of

hoger) of WRQ Reflection X v. 12.0 (of hoger) of XMing(wordt meegeleverd met de Simona CD).

Hardware IPW

Zowel voor het ontwikkelen als runnen van de IPW volstaat inbeginsel een ‘standaard’ Windows PC. Voor een goedeperformance, ook bij het verwerken van grote modelinvoeren, iseen Pentium 4 - 3.0 GHz processor en een intern geheugen vanminimaal 512 MB aan te bevelen.

1.6 Installatie van het systeem

IPW wordt (net zoals de meeste andere applicaties)meegeleverd met de Simona Release. Gebruik daarom demeegeleverde Simona Installer om IPW mee te installeren.Standaard installeert de Simona Installer de gratis verkrijgbareX-Emulator XMing, dit kan eventueel worden uitgeschakeld.Zodra Simona in combinatie met XMing is geïnstalleerd is hetniet meer nodig om extra handelingen voor IPW te verichten.

Voor het gebruik van andere X-Emulators moet mogelijk desettings file worden aangepast. Zie hiervoor het keywordXSERVEREXE in de SIMONA/etc/win32/Settings.inc.

Page 9: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 8

2 Systeemstructuur

2.1 Inleiding

In dit hoofdstuk wordt aandacht gegeven aan de wijze waaropde IPW is opgebouwd en de wegen waarlangs de, in de IPWingelezen, gecontroleerde en opgeslagen data:

· aan de gebruiker worden getoond;

· door de gebruiker kunnen worden verwijderd, aangepast ofuitgebreid;

· in een nieuwe SIMONA input file kunnen wordenopgeslagen.

In de achtereenvolgende secties van dit hoofdstuk wordt globaalaangegeven in welke verzameling files (met daarin vaak veelroutines) welke taken worden verricht. In hoofdstuk 5 wordtlater ook nog eens per file aangegeven wat in de routines vandie file wordt gedaan. In dit hoofdstuk wordt dus een niveauhoger gekeken. In de beschrijving wordt uitgelegd hoe denomenclatuur is binnen de IPW. Alhoewel de IPW een groteverzameling files is en een enorme hoeveelheid statementsvertegenwoordigt, is het via de speciale naamgeving tochmogelijk accuraat en doeltreffend dat stuk van de broncode tezoeken en te vinden dat de gezochte taak uitvoert.

Voor de goede orde, zie voor meer informatie de IPWgebruikershandleiding, zij vermeld dat de IPW, na het startendoor dubbelklikken op het IPW-icoon, achtereenvolgens:

· start met de, niet op het scherm zichtbare, opbouw van eenaantal grafische interfaces en vervolgens één van die inter-faces, het Hoofdmenu, op het scherm zet;

· voortgaat, na aanklikken in dat Hoofdmenu van het veldOpen File en de selectie van de te behandelen SIMONAinvoerfile, met het inlezen van die geselecteerde SIMONAinvoerfile en de waarden opslaat in een C-structuur genaamdpSi(mona);

· de gelegenheid biedt de ingelezen gegevens uit die geselec-teerde file te manipuleren;

· opties geeft om “nieuwe” SIMONA inputfiles met degewijzigde gegevens te creëren, te vullen en te bewaren;

· speciale opties heeft voor i) verfijningen van deelmodellen(zie SubModel optie) en ii) creatie van hulpfiles in het gevalvan DomeinDecompositie (zie DD optie).

Page 10: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 9

2.2 De context

Om de grote lijn aan te geven van de werking van de IPW wordtgestart met het aangeven van de context waarbinnen de IPWwerkzaam is.

Tijdens het processen met de IPW wordt een verzamelinggegevens, gegevens die op zich voldoende zijn om eenWAQUA/TRIWAQ run te laten uitvoeren, aangepast,veranderd en uitgebreid om vervolgens als nieuwe verzamelingte worden weggeschreven. Tijdens dit proces zijn driebelangrijke subprocessen te onderscheiden:

1. het inlezen, controleren en opslaan in de C-structuur metpointer pSi(mona), van de startverzameling gegevens (deInputfile);

2. het controleren en interactief wijzigen/uitbreiden van deingelezen gegevens;

3. het uitvoeren in de vorm van een nieuwe (door Waqpregeaccepteerde) Inputfile van de verzameling van “nieuwe”gegevens.

Voor alle processen zijn veel routines en interfaces nodig. Dezezijn stuk voor stuk op basis van hun naam qua taak te plaatsen.Verderop in dit hoofdstuk wordt hier, voor elk van de teonderscheiden taken, op ingegaan. In hoofdstuk 5 wordtbovendien nog eens een opsomming van alle files met hun“eigenschappen” en verbanden gegeven.

2.3 De interne opslagstructuur

De structuur in de IPW bestaat uit een pointer pSi (pointerSimona) die wijst naar een structuur met daarin posities voor inde eerste plaats alle hoofdkeywoorden van WAQUA/TRIWAQ.Zoals bekend zijn deze keywoorden:

IDENTIFICATIONDEPTH_CONTROLRESTARTMESHGENERALFLOWTRANSPORTDENSITIESTURBULENCE_MODELDISPLAYSSDS OUTPUTPRINTOUTPUTIGNORE

Page 11: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 10

Aan de pointer pSi hangen subpointers die ieder op zich vooreen keyword aangeven of dat keyword voorkomt of niet. Zodrazo’n subkeyword voorkomt herhaalt het proces zich metsub(sub)pointers enz net zo lang totdat er aangekomen wordt bijeen keyword dat geen subkeywoorden meer heeft maar gevolgdwordt door

- hetzij een integer of real waarde;

- hetzij een character string;

- hetzij een Boolean i.e. TRUE/FALSE indicatie.

Van een aantal keywoorden (zie in de WAQUA Users Guide bijde sequential keywoorden) is het niet a priori duidelijk hoeveelmaal zij voor zullen komen en in een aantal gevallen is het zelfsmogelijk, denk bijvoorbeeld aan punten en/of lijnen waarin ofwaarlangs berekeningsresultaten worden gevraagd, om nieuwerealisaties van dat betreffende type toe te voegen. In debasisstructuur van de IPW is hier rekening mee gehouden. In datgeval wordt er met een lijst gewerkt: iedere positie in de lijstwijst naar een plek elders waar de essentiële gegevens van derealisatie staan opgeslagen. Bijvoorbeeld worden, in het gevalvan punten, de coördinaten en de naam van het betreffende punt(station) opgeslagen. De lengte van de lijst hoeft dus niet apriori vast te liggen. Dit betekent ook dat de lijst uitgebreid kanworden tijdens een IPW-sessie. (Bijvoorbeeld als een nieuwpunt door de gebruiker wordt toegevoegd.)

De opbouw van de interne structuur pSi die, zoals gezegd, sterkgerelateerd is aan de hoofdkeywoorden structuur van WAQUAen dus aan de LDS van WAQUA, is ook te volgen door hetbestuderen van de files waipwTypes.h (hierin staan allemogelijkheden en alle structuren aangegeven) en de filewaipwInoutCreate.c (hierin staat hoe alle substructuren, reedsgedefinieerd in waipwTypes.h, worden gecreëerd en gevuld).Zodra voor WAQUA_in_SIMONA nieuwe keywoordenworden gedefinieerd zullen in waipwTypes.h enwaipwInoutCreate.c de nodige extra hulpstukken moetenworden aangebracht. Voor de goede orde: inwaipwInoutDelete.c staat hoe alle substructuren weer wordenvrijgegeven. Ook deze routines zullen, in geval van hettoevoegen van nieuwe keywoorden, uitgebreid moeten worden.Het is belangrijk om van deze routines gebruik te maken omdatzij ervoor zorgen dat éénmaal gealloceerd geheugen weer wordtvrijgegeven. In het geval dat diverse inputfiles na elkaar wordengeopend en bewerkt, wat in de IPW mogelijk is, is het belangrijkdat de Delete routines alle keywoorden behandelen. Immers alsdit niet wordt gedaan zal het geheugen langzaam volledigvollopen omdat in eerste instantie wel ruimte is gealloceerdmaar deze ruimte daarna nooit meer is vrijgegeven.

Page 12: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 11

2.4 De processen: inlezen, controleren en opslaan

Het inlezen, controleren en opslaan van de gegevens gebeurtaan de hand van de WAQUA preprocessor WAQPRE. Na hetstarten van de IPW kan de gebruiker (via File → Open...) een teopenen file selecteren. De door de gebruiker geselecteerdeSIMONA invoerfile wordt op standaardwijze verwerkt doorWAQPRE. Zoals bekend (zie de WAQUA users Guide) slaatWAQPRE bij de controle en de verwerking van de invoer degegevens op in een aantal arrays, en deze arrays worden door deIPW gebruikt om de basisstructuur pSi van de IPW te vullen.Een nadeel van deze werkwijze is dat er geen incomplete offoute invoerfiles aan de IPW mogen worden aangeboden, omdatWAQPRE daar direct, uiteraard via een SIMONA foutmelding,op stuk zal lopen.

Omdat WAQPRE een FORTRAN77 programma is en IPW uitC-routines bestaat, is er een link gemaakt tussen de WAQPREroutines en de IPW zodat in de processing toch van deFORTRAN routines gebruik gemaakt kan worden. De routinesdie deze link mogelijk maken staan in de C-file met de naamwaipwInoutInterface.(ch) Daarom dient de bibliotheek waarinde WAQPRE FORTRAN routines staan bij het maken van deexecutable meegelinkt te worden.

In de routine WaIpwRead worden al de keywoorden (hoofd- ensubkeywoorden) achtereenvolgens behandeld, dat wil zeggendat per keyword de gegevens uit de Simona invoerfile gelezenworden en vervolgens in pSi gezet.

Bijvoorbeeld:

Identification via waipwInoutIdentification.c,Restart via waipwInoutRestart.cMesh via waipwInMesh.c.

Dit procédé geldt in elk geval voor alle hoofdkeywoorden.

In de files met naam Inout staan ook schrijfopdrachten voor hetvullen van nieuw te maken inputfiles voor het betreffendehoofdkeywoord. Het mag duidelijk zijn dat het lezen van(onderdelen van) inputfiles en het aanmaken van (onderdelenvan) inputfiles veel met elkaar te maken zal hebben.

Indien het broncodebestand, behorend bij een hoofdkeywoord tegroot is, zijn de stukken In en Out echter uit elkaar gehaald.(Dit is zo bij de keywoorden Mesh, Flow en Transport.) Aan denaamgeving is dus direct te herkennen van welke routines enwelk hoofdkeywoord er sprake is.

Steeds wordt in de “In-routines” gekeken of het betreffendekeywoord in de invoer voorkomt en zo ja dan worden allesubkeywoorden doorlopen en de uiteindelijke waarden verwerkt

Page 13: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 12

in de SIMONA structuur pSi, uiteraard steeds op een volgend(dieper) niveau.

In de SIMONA basisstructuur kunnen ook defaults voorkomenen in een aantal gevallen wordt door de preprocessor WAQPREeen defaultwaarde toegevoegd als de gebruiker niets heeftopgegeven. Als voorbeeld kan dienen dat de gebruiker de naamvan een station op kan geven, echter als dit achterwege wordtgelaten dan creëert de IPW zelf de naam P(m,n) waarbij met men n de werkelijke WAQUA-coördinaten worden toegevoegd.

2.5 Het wijzigen/uitbreiden via de schermen

Nadat de basisstructuur is gevuld biedt de IPW mogelijkhedenom de structuur met andere waarden te hervullen, met anderewoorden te overschrijven, uit te breiden en in sommige gevallen,bijvoorbeeld in het geval van een lijst met lijnen, te verkleinen.Bij het veranderen van waarden in de basisstructuur wordtzwaar geleund op de systematiek van de LDS. In hethoofdmenu worden de hoofdkeywoorden in de van WAQUAbekende volgorde aangegeven en door klikken op debetreffende button zorgt de gebruiker ervoor dat een schermwordt getoond waarin de specifieke subkeywoorden van hetbetreffende hoofdkeywoord worden getoond.

De aan te klikken hoofdkeywoorden (zie par. 2.3) zijn1. Identification2. Depth_control3. Restart4. Mesh5. General6. Flow7. Transport8. Densities9. Turbulence_Model10. Displays11. SDS Output12. Printoutput13. Ignore

Het te creëren scherm wordt een widget genoemd en de internenaam van het widget binnen de IPW spreekt in principe voorzich. Zo is er de file waipwMnWndwShll.i waarin alle gegevensstaan van de knoppen, balken en invulvelden van het hoofdmenu(MainWindowShell). Op dezelfde wijze zijn er files voor hetscherm met de gegevens van de identificatie: waipwIdWidget.i,de restart widget waipwRsWidget.i, de mesh widgetwaipwMeWidget.i, de general widget waipwGeWidget.i, deflow widget waipwFlWidget.i om er enkele te noemen.

Page 14: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 13

In feite zijn de .i-files, de files waarin de schermen wordenopgebouwd, het Grafische deel van de User Interface. In dezefiles worden allerlei grootheden geordend en aangeroepen diebehoren bij het onderliggende bouwpakket voor deze grafischeuser interface: UIM/X. Het toevoegen van nieuwe knoppen inhet scherm moet altijd in deze routines gebeuren. Om heteenvoudig te maken heeft UIM/X de mogelijkheid voor degebruiker om de interface files (“.i” files) via UIM/X (hetprogrammadeel met naam UXCGEN) om te laten zetten incorrecte C programmatuur. UXCGEN genereert zowel .c als .hfiles voor al de schermen. In de huidige IPW zijn ruim twintigvan dergelijke .i files. Naast de files voor het hoofdmenu en deverschillende hoofdkeywoorden zijn er ook files om schermen tegenereren om:1. te tekenen,2. aan te geven en te controleren wat er wel en wat er niet

getekend wordt,3. fouten af te handelen,4. de IPW te verlaten,5. een file te selecteren in één van de directories,6. punten te selecteren,7. een printer te selecteren,8. een welkom te tonen

De naamgeving van al deze files spreekt voor zich. (Bestudeerzo nodig de broncode en de .i files van de IPW.)

2.6 De communicatie van de gebruiker via een scherm

De communicatie van de gebruiker via de schermen gaateenvoudig. Bij het inlezen is de pSi-structuur gevuld waarna deschermen via de Ui routines gevuld worden met de waarden diedoor de gebruiker in de invoerfile werden meegegeven. De Ui-routines die hiervoor zorgen staan steeds in, qua naam,vergelijkbare files: bijvoorbeeld de files met de naamwaipwUiIdent.c of waipwUiMesh.c. De letters Ui staan voorUser Interface, de rest van de naam duidt weer aan met welkehoofdkeywoorden wordt gewerkt. (Hier ging het dus overIdentification en Mesh) In een aantal gevallen bestaan er ooknog Ui files voor subkeywoorden. Dit omdat er anders zo nu endan wel erg lange files werden gecreëerd. Kijk voor voorbeeldenbij Mesh, Flow en Transport.

In deze Ui-routines wordt het betreffende veld van het schermopgezocht op naam en vervolgens van een waarde voorzien.Deze waarde ziet de gebruiker ook op zijn scherm en diewaarde is door de gebruiker via het toetsenbord op eenvoudigewijze te vervangen door willekeurig welke andere waarde. Dewisselwerking gaat als volgt: zodra een gebruiker een waardevervangen heeft door een andere en op de ENTER toets drukt

Page 15: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 14

dan wordt een zogenaamde Call Back functie gestart. De CallBack functie bepaalt wat de nieuwe waarde in het scherm is(“leest de waarde uit”) en plaatst deze nieuwe waarde in deSIMONA basisstructuur pSi. Bij elk scherm zijn de nodige CallBack functies en ook hier geldt weer dat de relaties met dehoofdkeywoorden op eenvoudige wijze uit de naamgeving zijnaf te leiden: alle Call Back functies van het identificatie schermstaan bijvoorbeeld in de file waipwCBIdentification.(ch), opdezelfde manier voor mesh in waipwCBMesh.(ch) enzovoort.

Opnieuw aanklikken van een scherm, in feite van het betreffendehoofdkeywoord, zorgt ervoor dat de betreffende Ui routinesworden aangeroepen en die zorgen ervoor dat de schermensteeds worden aangepast aan de recente veranderingen in dehoofdstructuur pSi.

2.7 Speciale schermen: Areamap en Controlescherm

De IPW is uitgerust met twee schermen voor de grafischeverwerking. Via de knop TOOLS in de menubalk bovenaan inhet hoofdmenu kunnen via een uitklapmenu AREAMAP enCONTROLESCHERM worden opgeroepen door hetaanklikken van de knop VISUALISATION CONTROL. Doordeze actie wordt een scherm opgeroepen waarin het gebied vanonderzoek in een Carthesisch vlak kan worden getekend enwaarin een aantal grootheden kan worden gelokaliseerd. Welkegrootheden worden getekend kan via het tegelijkertijd getoondeCONTROLE SCHERM worden aangegeven. Zo kanbijvoorbeeld een plot van het rooster (“grid”) worden gemaakt,kan geografische hulpinformatie (de “boundary outlines”)worden getekend en kunnen overlaten, punten en curves wordengetekend. Zodra een bepaald type knopje (“PUSHBUTTON”)wordt aangeklikt wordt het knopje respectievelijk aan dan weluit gezet. Als de gebruiker vervolgens het commando DRAWgeeft (via aanklikken van de DRAW knop) dan wordt door deIPW van elk item gekeken of het “aan” dan wel “uit” staat enwordt het betreffende item wel of niet in de AREAMAPgetekend. Al de tekenopdrachten worden bestuurd vanuit debasisfile voor het tekenen: waipwDraw.c

Het tekenen van het grid gebeurt in waipwDrawGrid.c, hettekenen van symbolen in waipwDrawSymbol.c enz.

Bij enkele opdrachten zoals bij het tekenen van contourvlakkenwordt gebruik gemaakt van tekenroutines uit een extern grafischpakket. (Op dit moment is dit het pakket AgX. De aangeroepenroutines zijn de XU* routines).

Page 16: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 15

2.8 Gegevensstromen en manipulatie

Door het bovenstaande is voor de IPW in grote lijnenaangegeven hoe de gegevenstromen lopen en hoe ze kunnenworden gemanipuleerd. Wijzigingen en / of uitbreidingen van defunctionaliteit kunnen op eenvoudige wijze worden gerealiseerdvia de genoemde routines. Het is belangrijk om steeds op dealgemene wijze van naamgeving van de files te letten: op diemanier is direct duidelijk aan welk scherm en aan welkhoofdkeyword een en ander is gerelateerd.

2.9 Het op correcte wijze uitvoeren van de gegevens

Door uit de mogelijkheden in het hoofdmenu het knopjeFile/Save te kiezen kan de op dat moment aanwezige(opgebouwde) basisstructuur uitgevoerd worden. Dit betekentdat een standaard SIMONA Input File wordt gecreëerd waarinalle op dat moment ingevoerde gegevens worden gezet. Denieuwe invoer file zal in principe direct als invoer kunnen dienenvoor de IPW.

Het wegschrijven gebeurt in de IPW via het aanroepen van dealgemene routine waipwInoutWrite.c. Deze roept voor elkhoofdkeywoord weer een routine aan die het betreffende blokwegschrijft: dit alles is te vinden in de al eerder genoemde Inoutroutines waipwInoutIdent.c, waipwInoutDepthControl.c,waipwInoutRestart.c, waipwOutMesh.c enz. Er geldt nogsteeds dat in een aantal gevallen de files te groot zijn en dat ergesplitst is. In het geval van flow zijn het er zelfs drie geworden:waipwOutFlowForcings.c, waipwOutFlowProblem.c enwaipwOutFlowCheckpoints.c.

Indien de originele siminp verticale domeindecompositie bevat ishet wenselijk om alle files waar %DOM% naar kan verwijzen tekopiëren naar de weggeschreven structuur. Deze kopieerslagwordt gedaan doordat IPW het perlscript waqipw.pl aanroept.Hiervoor moet de optie ‘-copypartitioneddata’ wordenmeegegeven, dit gebeurt in de routine waipwInoutWrite.c.

Page 17: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 16

3 De IPW file-organisatie

3.1 Inleiding

De IPW is zo opgezet dat bepaalde functionaliteit, steedsverenigd in een hoeveelheid broncode, eenvoudig bij elkaar tezoeken is. De verschillende schermen, de grafischemogelijkheden tot interactie, worden alle opgebouwd met dehulp van de interface builder van UIMX. Deze files zijn teherkennen als de reeds eerder genoemde .i files in de directorymet de broncode.

De routines die vervolgens zorgen voor de onderlingecommunicatie zijn in verschillende groepen in te delen. Devolgende routines worden onderscheiden:· routines in files die beginnen met de letters waipwCB· routines in files die beginnen met de letters waipwDraw· routines in files die beginnen met de letters waipwGeneral· routines in files die beginnen met de letters waipwInOut resp

In resp Out· routines in files die beginnen met de letters waipwUi

Alle namen zijn al eerder genoemd en zullen nog vaker genoemdworden: in dit hoofdstuk gaat het specifiek om de taak van degroep routines met die naam. Zoals bekend staan in de C-codevaak diverse routines samen in één file. Er zij opgemerkt dat defiles de genoemde namen hebben en dat ook de namen van demeeste routines die in die files staan op dezelfde wijze beginnen.Als veel lettergrepen nodig zijn om precies aan te geven wat erwordt gedaan, vaak een verwijzing via de sub-keywoorden-structuur van de LDS van WAQUA is een gedeelte van dehoofdnaam weggelaten. Bovendien zijn veel klinkers weggelatenom nog enigszins acceptabele naamlengtes te houden.

3.2 De interface bestanden waipw<xxx>.i

De interface bestanden zijn alle gerealiseerd met de hulp van deinterface builder UIM/X. In deze files wordt aangegeven hoe deverschillende schermen, die voor de directe interactievecommunicatie met de gebruiker zorgen, dienen te wordenopgebouwd. In deze files worden allerlei grootheden die voorgedeelten van het scherm moeten zorgen gecombineerd. Zo zijner standaard stukken C-code voor het maken van een:

- label,- rowColum,- frame,- toggleButton,- form,- textfield,

Page 18: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 17

- pushbutton,- scrolledWindow,- scrolledList,- separator,- pushButtonGadget,- separatorGadget,- cascadeButton

In elk ander grafisch interface pakket zullen vergelijkbaregrootheden voorkomen om schermen op te bouwen. Een aantalvan deze bouwstenen heeft de mogelijkheid om via degenoemde callBack functies weer andere routines aan te roepen.Er bestaan mogelijkheden zoals een:1. OKCallBack: als de gebruiker op OK drukt (met de muis

aanklikt) dan wordt deze functie uitgevoerd2. CreateCallBack: als de gebruiker dit scherm creëert dan

wordt deze functie eenmalig aangeroepen3. ValueChangedCallBack: als de gebruiker de waarde van de

grootheid in een invulveld heeft veranderd dan wordt devermelde functie aangeroepen

4. ActivateCallBack: als de gebruiker deze knop aanklikt(activeert) dan heeft dat tot gevolg dat de betreffendefunctie wordt aangeroepen

5. BrowseSelectionCallBack: als de gebruiker een keuze in eenlijst maakt en deze keuze bevestigt dan wordt deze functieaangeroepen

Kortom allemaal functies die kunnen worden aangeroepen doorhandelingen binnen de schermen van de IPW.

De lijst van schermen, met hun specifieke taken (in elk schermkan nog weer een groot aantal knoppen, invulvelden etc zitten):

waipwAreaMap.iTaak: Bouw het scherm met het rooster en alle specifiekegrootheden op dat rooster op. Denk hierbij aan punten, lijnen,waterstandspunten, debietraaien etc

waipwControlShell.iTaak: Bouw het controlescherm op waarin alle grootheden diein de areamap zichtbaar kunnen worden gemaakt, via buttonszijn aan en uit te zetten.

waipwDcWidget.i:Taak: Bouw het subscherm behorend bij het hoofdkeywoordDepth_Control op

waipwDdWidget.i:Taak: Bouw het domeindecompositiescherm op. Dit schermbehoort bij een speciale tak van de IPW om subfiles te kunnencreëren die behoren bij de optie DomeinDecompositie. In dit

Page 19: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 18

speciale geval kunnen interactief files gegenereerd worden nodigom de zogenaamde DD methode te draaien.

waipwDeWidget.i:Taak: Bouw het scherm behorend bij het hoofdkeywoordDensities op.

waipwDiWidget.i:Taak: Bouw het scherm behorend bij het hoofdkeywoordDisplays op.

waipwErrorDialog.iTaak: Bouw het scherm behorend bij de foutfunctie op.

waipwExitDialog.iTaak: Bouw het scherm behorend bij het verlaten van de IPWop.

waipwFlSlctnDlg.iTaak: Bouw het scherm behorend bij het selecteren van deinvoerfile op.

waipwFlWidget.iTaak: Bouw het scherm behorend bij het hoofdkeywoord Flowop.

waipwGeWidget.iTaak: Bouw het scherm behorend bij het hoofdkeywoordGeneral op.

waipwIdWidget.iTaak: Bouw het scherm behorend bij het hoofdkeywoordIdentification op.

waipwInWidget.iTaak: Bouw het scherm behorend bij het hoofdkeywoord Ignoreop.

waipwMeWidget.iTaak: Bouw het scherm behorend bij het hoofdkeywoord Meshop.

waipwMnWndwShll.iTaak: Bouw het scherm behoren bij het hoofdmenu op.

waipwPoWidget.iTaak: Bouw het scherm behorend bij het hoofdkeywoordPrintOutput op.

Page 20: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 19

waipwPointsDialog.iTaak: Bouw het hulpscherm behorend bij de eigenschappen vanpunten op.

waipwPrintDialog.iTaak: Bouw het hulpscherm voor de communicatie overprinters op.

waipwRsWidget.iTaak: Bouw het scherm behorend bij het hoofdkeywoordRestart op.

waipwSdWidget.iTaak: Bouw het hulpscherm voor de optieDomeinDecompositie op.

waipwSmWidget.iTaak: Bouw het hulpscherm voor de optie SubModel op.

waipwSoWidget.iTaak: Bouw het scherm bij het hoofdkeywoord SDSOutput op.

waipwTbWidget.iTaak: Bouw het scherm behorend bij het hoofdkeywoordTurbulence_Model op.

waipwTrWidget.iTaak: Bouw het scherm behorend bij het hoofdkeywoordTransport op.

waipwVersionDialog.iTaak: Bouw het startscherm met logo’s en versienummer van deIPW op.

3.3 De callback routines waipwCB

De files die beginnen met de letters waipwCB bevatten deroutines die vanuit de schermen worden aangeroepen. Inprincipe is dit een tussenlaag. In de waipwCB routines wordtvervolgens de routine aangeroepen die de werkelijkefunctionaliteit die bij de IPW behoort, vertegenwoordigt.

3.4 De tekenroutines, file waipwDraw

De tekenroutines zorgen voor het tekenen van alle globalezaken zoals het rooster (grid), de extra geografische informatie(boundary outlines), de contouren van het diepteveld endaarnaast voor alle lokale zaken zoals de ligging van diverse

Page 21: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 20

grootheden als punten (points), krommes (curves), openingen(openings), overlaten (weirs) en barriers.

In deze routines wordt uitgebreid gebruik gemaakt van functiesvan het plotpakket AgX. Deze functies zullen bij een eventueelovergaan op een ander plotsysteem vervangen moeten worden.

3.5 De algemene organisatie, file waipwGeneral

De organisatie van de IPW is zo dat een aantal algemenefunctionaliteiten is gezet in de routines General.

Let op: toevallig is er ook een verzameling routines behorendbij het hoofdkeywoord General, in dat geval staat er nog eenextra woord tussen waipw en general bijvoorbeeld InOut.

3.6 Lezen en schrijven waipwIn... resp waipwOut...

Zoals beschreven worden de door de gebruiker opgegevengegevens van de SIMONA invoerfile omgezet via WAQPRE envervolgens per hoofdkeywoord geanalyseerd om in debasisstructuur te worden geplaatst. In de routines voor het lezenwordt in veel gevallen ook rekening gehouden, via een aantalfoutconstructies, met een foutieve invoer. Echter omdatWAQPRE alles al gecontroleerd heeft is dit deel eigenlijkoverbodig.

3.7 De UI-routines: de files beginnend met waipwUi

De routines die voor de eigenlijke verwerking van decommunicatie zorgen zijn de Ui routines. Datgene wat door degebruiker via de invoerfile en via de schermen wordt opgegevenwordt door de Ui routines in de basisstructuur gezet en weerstandaard in de schermen.

Page 22: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 21

4 Aanpassingen aan de programmatuur

4.1 Aanpassen Userinterface

Indien een scherm van de IPW moet worden aangepast moet debijbehorende .i file zodanig veranderd worden dat het schermde nieuwe gewenste layout krijgt. Daarna moeten oude CallBacks worden verwijderd en eventuele nieuwe Call Backs in debetreffende files worden toegevoegd. Aan deze nieuwe CallBacks zullen in principe een aantal subroutines hangen waarinde veranderingen worden uitgevoerd en de subroutines zullenmet name worden gerealiseerd als wijzigingen op ofuitbreidingen van de betreffende Ui files, alles in relatie tot hetbetreffende hoofdkeywoord of de specifieke functie.

4.2 Aanpassingen nodig in de Interne Structuur

De opbouw van de interne structuur pSi, die zoals gezegd sterkgerelateerd is aan de hoofdkeywoorden structuur van WAQUA,is te volgen door het bestuderen van de files waipwTypes.h(hierin staan alle mogelijkheden en alle structuren aangegeven)en de file waipwInoutCreate.c (hierin staat hoe allesubstructuren worden gecreëerd en gevuld). Zodra nieuwekeywoorden worden toegevoegd zullen in deze routines denodige extra hulpstukken moeten worden aangebracht. Voor degoede orde: in waipwInoutDelete.c staat hoe alle substructurenweer worden vrijgegeven. Ook deze routines zullen in geval vanhet toevoegen van nieuwe keywoorden uitgebreid moetenworden. Het is belangrijk om van deze routines gebruik temaken omdat zij ervoor zorgen dat eenmaal gealloceerdgeheugen weer wordt vrijgegeven. Met name in het geval datmeerdere inputfiles na elkaar worden geopend is het belangrijkdat deze routines alle keywoorden behandelen immers anders zalhet geheugen langzaam volledig vollopen omdat in eersteinstantie wel allemaal ruimte is gealloceerd maar vervolgens nietmeer is vrijgegeven.

Page 23: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 22

5 Kruistabellen

In het nu volgende wordt voor alle files die tot de IPW broncodebehoren in een korte tekst aangegeven welke taken door de routines inde betreffende file worden uitgevoerd. Er worden geen specifiekekruistabellen gegeven omdat er betrekkelijk weinig onderlingeverbanden zijn en omdat een dergelijke tabel gezien de enormeaantallen routines tamelijk onoverzichtelijk zal zijn. De files staan inalfabetische volgorde, met de boven gegeven beschrijving van de wijzevan naamgeving zal het niet moeilijk zijn specifieke routines op tesporen.

Achter elke file staat wat erin te vinden is. Als het een file is diedoor uxcgen uit een .i file is aangemaakt, dan staat dataangegeven. Voorts wordt veelvuldig verwezen naar deWAQPRE handleiding en de IPW handleiding. In diehandleidingen staat meer over de keywoorden waar het overgaat in de routines en over de mogelijkheden van diekeywoorden met betrekking tot uit te voeren berekeningen.

Voor wat het tekenen in het tekenscherm betreft wordtregelmatig gebruik gemaakt van een aantal standaardroutines uithet tekenpakket. In dit geval is dat pakket agX/Toolmaster. Ditzou eventueel door een ander pakket met vergelijkbarefunctionaliteit vervangen kunnen worden maar dan zullen allecalls (herkenbaar aan XU) ook vervangen moeten worden.

waipwAreaMap.cGemaakt door uxcgen uit de .i file om de areamap te creëren.

waipwCBAreaMap.cAlle CallBack routines van de Areamap. Zoomen, ClassLimits,Shadingscale etc. (Zie de IPW handleiding)

waipwCBControlShell.cAlle CallBack routines van het Controlescherm. Zoals het latenzien van Contourplaatjes, van het rooster, van de overlaten envan dampunten etc. (Zie de IPW handleiding)

waipwCBDCWidget.cDe CallBack routines van het Depth_Control widget. Dit is eenkleine verzameling omdat depth_control nauwelijks activiteitenherbergt. (Sectie 2.4 van de Waqpre handleiding)

waipwCBDEWidget.cDe CallBack routine voor het Densities scherm. In dit schermkunnen enkele simpele variabelen uit het hoofdkeywoordDensities (Equation of State) gezet en/of veranderd worden.(zie sectie 2.10 in de Waqpre handleiding)

Page 24: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 23

waipwCBDIWidget.cAlle CallBack routines van het Displays scherm. (Zie sectie 2.12van de Waqpre handleiding)

waipwCBDdWidget.cAlle CallBack functies van het Domein_Decompositie scherm.Domeindecompositie maakt gebruik van een extraopslagstructuur onder de pointer pDD. De routines voerentaken uit om domeindecompositieroosters te genereren en op dejuiste wijze voor later gebruik op te slaan. (Zie de IPWhandleiding, hoofdstuk 5)

waipwCBErrorDialog.cDe CallBack functie voor de foutafhandeling van de IPW.

waipwCBExitDialog.cDe CallBack functie voor het verlaten van de IPW. Vraagt degebruiker te bevestigen dat IPW verlaten dient te worden.

waipwCBFlSlctnDlg.cDe CallBack functies voor het file selection mechanisme.Gebruiker kan via dit scherm keuzes maken welke filesgeselecteerd gaan worden.

waipwCBFlWidget.cDe CallBack functies van het Flow scherm. (Zie voor de vele endiverse subkeys etc sectie 2.8 van de Waqpre handleiding)

waipwCBGeWidget.cDe CallBack functies van het General scherm. (Zie voor dediverse mogelijkheden sectie 2.7 van de Waqpre handleiding)

waipwCBIDWidget.cDe CallBack functies van het Identification scherm. (Zie voor desubkeywoorden sectie 2.3 van de Waqpre handleiding)

waipwCBInWidget.cDe CallBack functie van het Ignore scherm. (Wel of geentransport, zie sectie 2.15 van de Waqpre handleiding)

waipwCBMeWidget.cDe CallBack functies van het Mesh scherm. (Zie voor de velemogelijkheden die hieronder vallen sectie 2.6 van de Waqprehandleiding en hoofdstuk 3.2 van de IPW handleiding)

waipwCBMnWndwShll.cDe CallBack functies van het hoofdscherm. In deze file staanalle routines die zorgen voor het laten verschijnen en weerverdwijnen van alle schermen die als extra scherm op diverse

Page 25: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 24

plaatsen in het hoofdscherm kunnen worden geplaatst. Zoweluitklapmenu’s, als opsommenu’s, als lijstmenu’s. (Zie de IPWhandleiding voor de specifieke onderdelen)

waipwCBPoWidget.cDe CallBack functies van het PrintOutput scherm. (Zie sectie2.14 van de Waqpre handleiding)

waipwCBPointsDialog.cDe CallBack functies voor het PointsDialog scherm. Hetaccepteren van de inhoud van, cq verlaten van het scherm en deroutines om files van punten toe te voegen. (Zie hiervoor ooksectie 2.6.2 van de WAQPRE handleiding en de sectie 3.2.2 vande IPW handleiding)

waipwCBPrintDialog.cDe CallBack functies voor het PrintDialog scherm. Het creërenvan een scherm met behulp waarvan een speciale printer kanworden gekozen.

waipwCBRestartWidget.cDe CallBack functies van het Restart scherm. (Zie sectie 2.5 vande Waqpre handleiding)

waipwCBSmWidget.cDe CallBack functies van het SubModel scherm. Dit is eenspeciale “poot” van de IPW die de mogelijkheid biedt eendeelmodel met eventueel een grover of fijner rooster aan temaken. Zie hoofdstuk 4 van de IPW handleiding)

waipwCBSoWidget.cDe CallBack functies van het SdsOutput scherm. (Zie deWaqpre handleiding sectie 2.13)

waipwCBTbWidget.cDe CallBack functies van het Turbulence_Model scherm. (Ziede Waqpre handleiding sectie 2.11)

waipwCBTrWidget.cDe CallBack functies van het Transport scherm. (Zie de Waqprehandleiding sectie 2.9)

waipwCBVersionDialog.cDe CallBack functies van het Version scherm. Met dit schermwordt gereageerd als de gebruiker de IPW heeft geopend via deaanroep ipw.run. Naast de versie informatie wordt ook in eenaantal onderdelen van het scherm het logo van elk van desamenwerkende makers getoond. (Zie de handleiding van deIPW voor de uitvoering)

Page 26: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 25

waipwControlShell.cDe CallBack functies van het Controle scherm. Het schermheeft een groot aantal pushbuttons die wel of niet ingedrukt welof niet voor extra info in de Area map gaan zorgen. De callbacks spreken qua aanduiding voor zich. Als het scherm wordtuitgebreid dient hier een extra call back functie te wordentoegevoegd.

waipwCreateProtocols.cEenvoudige callback functie voor het detecteren van hetzij eendirect sluiten van een scherm dan wel het eerst saven en daarnasluiten van een scherm.

waipwDcWidget.cGemaakt door uxcgen uit de .i file om het Depth_Controlscherm te creëren.

waipwDdWidget.cGemaakt door uxcgen uit de .i file om hetDomein_Decompositie scherm te creëren.

waipwDeWidget.cGemaakt door uxcgen uit de .i file om het Densities scherm tecreëren.

waipwDiWidget.cGemaakt door uxcgen uit de .i file om het Areamap scherm tecreëren.

waipwDraw.cFile met tekenroutines. Onder andere de routine die desymbolen in het gebiedsscherm toevoegt, de clipping verzorgt,het in- en uitzoomen controleert en de relatie tussenwereldcoordinaten en tekencoordinaten bijhoudt.

waipwDrawContour.cRoutine die op basis van data uit de algemene datastructuur pSien gebruikersinvoer in het controlescherm bepaalt welkecontour getekend moet worden en de relatie legt met dedienovereenkomstige contourroutine. (Roept AGX functie aan.)

waipwDrawCursor.cRoutine die bepaalt op welke wijze met de cursor moet wordengehandeld. Indien zichtbaar, dan waar de cursor moet wordengetekend en indien niet zichtbaar dan dat cursor in de oorsprongonzichtbaar dient te worden gemaakt.

waipwDrawEnclosure.c

Page 27: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 26

Routine die de omhullende van de computational boundary (zieuitleg begrippen in de WAQUA users guide) tekent via eenroutine van het plotpakket AGX.

waipwDrawGrid.cRoutine waarin een aantal zaken het rooster zelf betreffendeworden afgehandeld: het rooster, het submodel en de roostersvan de eventueel gekozen DomeinDecompositie. In alle gevallenwordt gebruik gemaakt van tekenfuncties van het plotpakket.

waipwDrawIsolines.cRoutine waarin het tekenen van isolijnen wordt gerealiseerd opbasis van de keuzes van de gebruiker in het controlescherm enmet behulp van een standaardroutine uit het plotpakket.

waipwDrawOutline.cRoutine die op basis van door de gebruiker opgegeven Outlines(zie Displays in de Waqpre handleiding) extra, vaakgeografische, informatie aan een tekening toevoegt. Gebruikwordt gemaakt van de lijntekenfunctie van het plotpakket.

waipwDrawPosition.cFuncties om de positie en de lokale waarde in het rooster tebepalen. De positie wordt door de gebruiker in het roosteraangeklikt en via deze functies worden de X, Y en Z waardenter plaatse bepaald.

waipwDrawPrint.cFunctie om een hardcopy van de Areamap te maken. (Maaktgebruik van functies uit het plotpakket)

waipwDrawRender.cOndersteunende functies voor de plotmogelijkheden van hetplotpakket.

waipwDrawShow.cFuncties die bepalen of de gebruiker bepaalde items uit hetcontrolescherm wel of niet heeft aangeklikt en die dus wel ofniet wil zien in de areamap.

waipwDrawSymbol.cOndersteunende tekenfuncties om bijvoorbeeld symbolen tetekenen van alle geselecteerde punten, lijnen, dampunten etc.Maakt “doorlopend” gebruik van standaard AGX functionaliteit.

waipwDrawZoom.cFile waarin de basisroutines voor het zoomen staan (In, Out,Reset). (Gebruik AGX functies)

Page 28: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 27

waipwErrorDialog.cGemaakt door uxcgen uit de .i file om het Errordialogschermvan de IPW te creëren.

waipwExitDialog.cGemaakt door uxcgen uit de .i file om het Exit scherm van deIPW te creëren.

waipwFlSlctnDlg.cGemaakt door uxcgen uit de .i file om het fileselectiescherm tecreëren.

waipwFlWidget.cGemaakt door uxcgen uit de .i file om het Flowscherm tecreëren.

waipwGeWidget.cGemaakt door uxcgen uit de .i file om het Generalscherm tecreëren.

waipwGeneralAlloc.cEnkele functies om geheugen te alloceren, vrij te geven en terealloceren.

waipwGeneralFile.cRoutines om filenamen en filepaden met elkaar te combineren ofuit elkaar te halen.

waipwGeneralList.cEen verzameling routines om met lijsten te manipuleren. Dezeroutines spelen een grote rol bij de verwerking van dezogenaamde sequential keywords: de gebruiker kan elementen(bijvoorbeeld punten) aan een lijst toevoegen. Met behulp vande routines uit deze file wordt de lijst op de juiste wijzeaangepast. Hetzelfde voor het verwijderen van items en hetverwisselen van elementen.

waipwGeneralMotifList.cBasislijst van de manipulatie routines voor lijsten waarbijgebruik wordt gemaakt van standaard X-Motif routines. (Xmroutines)

waipwGeneralPrinter.cEnkele routines die van belang zijn om de printerfucties aan testuren waarmee een keuzelijst van beschikbare printers kanworden gegenereerd in een scherm.

waipwGeneralReal.cRoutine om reals met elkaar te vergelijken.

Page 29: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 28

waipwGeneralText.cEnkele routines om teksten te kopieren, aan elkaar te plakken enom blanks te verwijderen uit tekst.

waipwGeneralTime.cTijd manipulatie routines. Zowel om seconden ten opzichte vanzeker begintijdstip (01-01-1900 om 0 uur, 0 minuten en 0 sec)om te zetten in werkelijke dagen als om de omgekeerde actie uitte voeren. Ook aan deze tijdzaken gerelateerde functionaliteit.

waipwIdWidget.cGemaakt door uxcgen uit de .i file voor het Identificatie scherm.

waipwInFlow.cFile die alle routines bevat voor het inlezen (eigenlijk hetoverzetten van alle door de gebruiker opgegeven waarden dieverwerkt zijn met Waqpre naar de IPW structuur pSi) van alleonderdelen van het hoofdkeyword Flow.

waipwInFlowCheckpoints.cExtra routines voor het keyword Checkpoints dat als subkeyonder Flow valt. (Zie de Waqua Users Guide bij Waqpre 2.8.3)

waipwInMesh.cFile die alle routines bevat voor het inlezen (eigenlijk hetoverzetten van alle door de gebruiker opgegeven waarden dieverwerkt zijn met Waqpre naar de IPW structuur pSi) van alleonderdelen van het hoofdkeyword Mesh.

waipwInTransport.cFile die alle routines bevat voor het inlezen (eigenlijk hetoverzetten van alle door de gebruiker opgegeven waarden dieverwerkt zijn met Waqpre naar de IPW structuur pSi) van alleonderdelen van het hoofdkeyword Transport.

waipwInWidget.cGemaakt door uxcgen uit de .i file voor het Ignore scherm

waipwInoutBoundaries.cExtra routines voor het keyword Boundaries dat als subkeyonder Mesh valt. (Zie voor de inhoud de WAQUA Users Guidebij Waqpre 2.6)

waipwInoutCreate.cFile waarin alle routines zijn opgenomen die gebruikt wordenom (sub)structuren te creëren die vallen onder de structuren pSi(algemeen Simona) en pDD (specifieke structuur voor Domein-Decompositie)

Page 30: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 29

waipwInoutDelete.cFile waarin alle routines zijn opgenomen die gebruikt wordenom (sub)structuren te verwijderen die vallen onder pSi en pDD.Belangrijk om memoryleaks te voorkomen.

waipwInoutDensities.cFile waarin alle routines staan om de keywoorden van Densitieste verwerken. Zowel bij inlezen als bij aanmaken (en duswegschrijven) van een nieuwe Simona Input File (Siminp file).

waipwInoutDepthcontrol.cFile waarin alle routines staan om de keywoorden vanDepth_Control te verwerken. Zowel bij inlezen als bij aanmaken(en dus wegschrijven) van een nieuwe Simona Input File(Siminp file).

waipwInoutDetermine.cFile waarin routines staan om de uiterste grenzen inwereldcoördinaten van het ingegeven rooster te bepalen.

waipwInoutDisplays.cFile waarin alle routines staan om de keywoorden van Displayste verwerken. Zowel bij inlezen als bij aanmaken (en duswegschrijven) van een nieuwe Simona Input File (Siminp file).

waipwInoutGeneral.cFile waarin alle routines staan om de keywoorden van Generalte verwerken. Zowel bij inlezen als bij aanmaken (en duswegschrijven) van een nieuwe Simona Input File (Siminp file).

waipwInoutIdent.cFile waarin alle routines staan om de keywoorden vanIdentification te verwerken. Zowel bij inlezen als bij aanmaken(en dus wegschrijven) van een nieuwe Simona Input File(Siminp file).

waipwInoutIgnore.cFile waarin alle routines staan om de keywoorden van Ignore teverwerken. Zowel bij inlezen als bij aanmaken (en duswegschrijven) van een nieuwe Simona Input File (Siminp file).

waipwInoutInterface.cFile met de interface functies om de WAQUA/TRIWAQ pre-processor functies te kunnen gebruiken. De interface functieszijn gebouwd op basis van Fortran Simona interface functies. DeFortran functies van Waqpre worden op een speciale manieraangeroepen, vaak met extra argumenten voor de lengte vanbepaalde strings.

Page 31: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 30

waipwInoutIpwPre.cFile met hulpfunctionaliteit om de Waqpre pre-processor aan tekunnen reopen.

waipwInoutParticles.cFile waarin alle routines staan om de keywoorden van Particleste verwerken. Zowel bij inlezen als bij aanmaken (en duswegschrijven) van een nieuwe Simona Input File (Siminp file).Nog niet in gebruik.

waipwInoutPlot.cFile waarin alle routines staan om de keywoorden van Plot teverwerken. Zowel bij inlezen als bij aanmaken (en duswegschrijven) van een nieuwe Simona Input File (Siminp file).Nog niet in gebruik.

waipwInoutPrintOutput.cFile waarin alle routines staan om de keywoorden vanPrintOutput te verwerken. Zowel bij inlezen als bij aanmaken(en dus wegschrijven) van een nieuwe Simona Input File(Siminp file).

waipwInoutRead.cFile waarin de hoofdleesroutine staat. Via deze routine wordenalle lokale leesroutines (bijvoorbeeld voor allehoofdkeywoorden aangeroepen).

waipwInoutReport.cFile met hulproutine om eventueel iets in een rapport teschrijven.

waipwInoutRestart.cFile waarin alle routines staan om de keywoorden van Restart teverwerken. Zowel bij inlezen als bij aanmaken (en duswegschrijven) van een nieuwe Simona Input File (Siminp file).

waipwInoutSdsOutput.cFile waarin alle routines staan om de keywoorden vanSdsOutput te verwerken. Zowel bij inlezen als bij aanmaken (endus wegschrijven) van een nieuwe Simona Input File (Siminpfile).

waipwInoutTurModel.cFile waarin alle routines staan om de keywoorden vanTurbulenceModel te verwerken. Zowel bij inlezen als bijaanmaken (en dus wegschrijven) van een nieuwe Simona InputFile (Siminp file).

Page 32: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 31

waipwInoutWrite.cFile waarin de hoofdroutine staat om een nieuwe Simona InputFile te creëren. Via deze routine worden alle (schrijf-)routinesvoor elk hoofdkeyword aangeroepen.

waipwInoutXYGrid.cFile met routines waarin allerlei hulpfuncties voor het bepalenvan de XY coordinaten behorende bij het vigerendecoördinatensysteem (rechtlijnig, kromlijnig of bol) zijnopgenomen.

waipwIpw.cFile waarin de hoofdroutine, de main-routine, om de IPW telaten draaien.

waipwMeWidget.cGemaakt door uxcgen uit de .i file voor het Mesh scherm

waipwMnWndwShll.cGemaakt door uxcgen uit de .i file voor het Hoofdmenu scherm

waipwOutFlowCheckpoints.cFile met schrijfroutines voor nieuwe Siminp file voor hetkeyword Checkpoints onder Flow en alles wat daaronder valt.(Zie Waqpre 2.8.3)

waipwOutFlowForcings.cFile met schrijfroutines voor nieuwe Siminp file voor hetkeyword Forcings onder Flow en alles wat daaronder valt. (ZieWaqpre 2.8.2)

waipwOutFlowProblem.cFile met schrijfroutines voor nieuwe Siminp file voor hetkeyword Problem onder Flow en alles wat daaronder valt. (ZieWaqpre 2.8.1)

waipwOutMesh.cFile met schrijfroutines voor nieuwe Siminp file voor hetkeyword Mesh en alles wat daaronder valt. (Zie Waqpre 2.6)

waipwOutTransport.cFile met schrijfroutines voor nieuwe Siminp file voor hetkeyword Transport en alles wat daaronder valt. (Zie Waqpre2.9)

waipwOutTransportUserdata.cFile met schrijfroutines voor het onderdeel Userdata (ZieWaqpre 2.9.4).

Page 33: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 32

waipwPoWidget.cGemaakt door uxcgen uit de .i file voor het PrintOutput scherm

waipwPointsDialog.cGemaakt door uxcgen uit de .i file voor het oppop Puntenscherm (Waqpre 2.6.2)

waipwPrintDialog.cGemaakt door uxcgen uit de .i file voor het oppop Print scherm

waipwRsWidget.cGemaakt door uxcgen uit de .i file voor het Restart scherm(Waqpre 2.5)

waipwSdWidget.cGemaakt door uxcgen uit de .i file voor het oppopDomeinDecompositie scherm (Zie IPW handleiding hoofdstuk5)

waipwSmWidget.cGemaakt door uxcgen uit de .i file voor het oppop SubModelscherm (zie IPW handleiding hoofdstuk 4)

waipwSoWidget.cGemaakt door uxcgen uit de .i file voor het SDSOutput scherm(Waqpre 2.13)

waipwState.cDeze file bevat the statusmachine van de IPW functies. Eenstaat van het UI is gedefinieerd als de vorm waarin de IPW zichmanifesteert en die niet gewijzigd wordt totdat de gebruiker eenactiviteit heeft uitgevoerd. In principe gaat het er natuurlijk omwelke acties de gebruiker in iedere staat uit kan voeren. Welkestaten en welke acties mogelijk zijn wordt in de hoofdroutinestate uitgelegd.

waipwStateConvert.cFile waarin enkele hulproutines voor de positiebepaling van x, ynaar pixels en omgekeerd pixels naar x, y.

waipwStateFindCel.cFile met de functie die bepaalt of een positie binnen een gridcelzoals opgegeven in het rooster ligt.

waipwStateMouse.cFile met alle mogelijkheden waarin de “muisfunctie” zich kanbevinden, bijvoorbeeld: muislinkerknop is ingedrukt, of muis isbewogen van a naar b, etc.

Page 34: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 33

waipwTbWidget.cGemaakt door uxcgen uit de .i file voor het Turbulence_Modelscherm. (Zie Waqpre 2.11)

waipwTrWidget.cGemaakt door uxcgen uit de .i file voor het Transport scherm.(Zie Waqpre 2.9)

waipwUiBarrier.cFile waarin de routines staan die het process ondersteunen als inde IPW een Barrier is geselecteerd en als de grootheden daarvanmoeten worden veranderd. (Zie Waqpre 2.6.4.3., 2.8.1.7 en2.8.2.9. In de lokale datastructuur staat een aantal keywordendat alle betrekking heeft op Barriers. In de IPW worden dezestukken en keywoorden bij elkaar genomen.)

waipwUiBathymetry.cFile waarin de routines staan die het proces ondersteunen als degebruiker aangeeft dat bodemcijfers op zekere wijze dienen teworden aangepast. Welke mogelijkheden er zijn staat in de IPWhandleiding.

waipwUiBusy.cFile waarin de routine staat die er voor zorgt dat de cursorverandert in een zandloper en omgekeerd.

waipwUiCanvas.cFile waarin de functies staan die worden gebruikt op hetmoment dat in de Areamap een actie is uitgevoerd met de muis.

waipwUiCheckpoints.cIn deze file staan alle hulpfuncties die gebruikt worden omacties uit te voeren die door de gebruiker zijn aangegeven inrelatie tot aanpassingen/uitbreidingen van de lijsten metCheckpoints. (Zie Waqpre 2.8.3)

waipwUiCoriolis.cFile voor vergelijkbare acties in het Coriolisveld als bij hetBathymetry veld. Zie UiBathymetry.

waipwUiCurve.cIn deze file staan de hulpfuncties indien de lijnen, op indicatievan de gebruiker, moeten worden aangepast.

waipwUiDatagroup.cEssentiële routine voor het aanpassen van alle schermen op hetmoment date er interactief aanpassingen zijn gepleegd.

waipwUiDebug.c

Page 35: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 34

Routine waarin eventuele Debugfaciliteiten worden opgeslagen.Feitelijk niet meer in gebruik.

waipwUiDensities.cFile met hulproutines voor interactieve Densities activiteiten.

waipwUiDepthcontrol.cFile met hulproutines voor interactieve Depth_Controlactiviteiten.

waipwUiDevice.cFile met hulproutines voor het zetten van Outputdevice(Printer).

waipwUiDiffusion.cFile voor vergelijkbare acties in het Diffusieveld als bij hetBathymetry veld. Zie UiBathymetry.

waipwUiDischarge.cFile met hulproutines voor het aanpassen vanDischargegrootheden. (Zie Waqpre 2.8.1.8 en 2.8.2.7)

waipwUiDisplays.cFile met aanpassingsroutines voor de grootheden van hethoofdkeyword Displays. (Waqpre 2.12)

waipwUiDomDecom.cFile met alle routines die het proces begeleiden van dedomeindecompositie. (Zie IPW handleiding hoofdstuk 5). Indeze file staat ook een aantal routines waarin “zoek-algorithmes” een belangrijke rol spelen. Functionaliteit is zekerniet triviaal.

waipwUiDryPoint.cFile met de routines voor het aanpassen van de grootheden vansubkeywoord Drypoints. (Waqpre 2.6.6)

waipwUiEnclosure.cFile met routine voor het verwijderen van een bestaandeenclosure.

waipwUiExit.cFile met de routines die ervoor zorgen dat het interactieve IPW- proces op de juiste wijze wordt afgesloten.

waipwUiField.cFile voor acties in een “algemeen” veld van waarden op hetopgegeven rooster vergelijkbaar met de acties op hetBathymetry veld. Zie ook UiBathymetry.

Page 36: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 35

waipwUiFilemenu.cFile met functies passend bij de activiteiten die geëntameerdkunnen worden via de menubar in het hoofdscherm.

waipwUiFlow.cFile met put en save functies voor de acties in het Flow schermen alles wat daaronder valt. (Zie ook Waqpre 2.8)

waipwUiFourier.cFile met specifieke hulpfuncties voor de Fouriergrootheden. (ZieWaqpre 2.8.2.4)

waipwUiFriction.cFile met specifieke hulpfuncties voor de Frictionvelden. (Zie2.8.1.5)

waipwUiGeneral.cFile met put en save functies voor de acties in het Generalscherm en alles wat daaronder valt. (Waqpre 2.7)

waipwUiGlue.cFile met algemene hulpfuncties voor de communicatie tussenschermen en IPW. Veel routines uit deze file worden bij bijnaalle schermen als “glijmiddel” gebruikt om zaken aan elkaar teplakken. Voorbeelden: het zetten en ophalen van reals, integers,teksten, labels etc.

waipwUiGrid.cFile met hulpfunctie waardoor kan worden aangegeven of meteen CCO of een RGF rooster wordt gewerkt.

waipwUiHarmonic.cFile met specifieke hulpfuncties voor de harmonischegrootheden bij de Forcings. (Zie sectie 2.8.2.5 van de Waqprehandleiding)

waipwUiIdentification.cFile met de Put en Save functies voor het Identification scherm.(Waqpre 2.3)

waipwUiIgnore.cFile met de Put en Save functie voor het Ignore scherm.(Waqpre 2.15)

waipwUiInitialize.cFile met de initialisatiefuncties voor help (niet meer in gebruik)en de staat van de IPW.

Page 37: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 36

waipwUiLimit.cFile met een aantal helpfuncties (sommige ook CallBacks) voorde classlimits grootheden van het contouring (isolijnen)gedeelte. (Gebruik van specifiek AGX materiaal)

waipwUiMesh.cFile met put en save functies voor de acties in het Mesh schermen alles wat daaronder valt. (Zie ook Waqpre 2.6)

waipwUiMessage.cFile met routines om het messagescherm schoon te maken ofeen nieuw bericht op het scherm te plaatsen.

waipwUiOpening.cFile met routines om de lijst van Openings te manipuleren zoalshet toevoegen aan en het verwijderen van Openings uit debetreffende lijst.

waipwUiPoint.cFile met vele routines om de lijst van punten en de lijst vanSubModelpunten te manipuleren.

waipwUiPrintoutput.cFile met vele routines die ingezet worden om allerlei taken,zoals in het scherm plaatsen (Put), uit het scherm lezen (Save)en het manipuleren van allerlei aan variabelen toegekendewaarden, verbonden aan het hoofdkeyword PrintOutput, uit tevoeren.

waipwUiQHTables.cFile met routines om aangeleverde Discharge tabellen temanipuleren en eventueel namen van files als include-file in eennieuwe Siminputfile op te nemen.

waipwUiRestart.cFile met de Put en Get functies voor het Restart scherm.

waipwUiSDSOutput.cFile met de Put, Get en Savefuncties voor hetSDSOutputscherm.waipwUiScale.cFile met de routines voor de shadingscale functies zoalsbereikbaar via de menubalk van het Gebiedsscherm. (Zie ook deIPW handleiding). In deze routines wordt ook gebruik gemaaktvan AGX faciliteiten.

waipwUiSubModel.c

Page 38: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 37

File waarin alle functies die nodig zijn om een nieuw submodelte creëren en eventueel te manipuleren met behulp van de IPWschermen. (Zie ook hiervoor de IPW handleiding)Hierin zitten ook alle routines die gebruikt worden om eennieuwe bij het betreffende SubModel behorende Simona InputFile aan te maken waarin een ander rooster met eventueel ookeen andere maaswijdte, verfijning of vergroving, dan in hetoorspronkelijke model gebruikt wordt.

waipwUiTable.cFile waarin alle routines die nodig zijn om een tabel metwaarden op de roosterpunten te creëren en zo nodig aan tepassen. Tevens de plaats waar de Put functie voor elke tabelstaat.

waipwUiTimeSeries.cFile waarin de routines staan met behulp waarvan een gebruikerTijdreeksen kan manipuleren zoals: uitbreiden, verkleinen,selecteren. (Zie ook Waqpre 2.8.2.3)

waipwUiTransport.cUitgebreide file met routines voor het Put en Get opdracht vanhet Transportscherm en het Saven van diverse grootheden voorverschillende subkeys van het hoofdkeywoord Transport.(Zie ook Waqpre 2.9)

waipwUiVersion.cFile waarin de onderdelen van het IPW openingsscherm wordengemanipuleerd zoals de versie informatie en de logo’s van dediverse ontwikkelaars. (Zie ook de IPW handleiding)

waipwUiVertical.cFile met de routines om het keyword Vertical (Waqpre sectie2.6.8) te manipuleren en te bewaren.

waipwUiWeir.cFile waarin alle routines die nodig zijn om een nlijst vanoverlaten (weirs) te manipuleren met behulp van de IPW. Vangroot belang in de rivierengebieden.

waipwUiWidget.cIn deze file staan de Put en Get verbindingen voor alle schermenvia de algemene functies WaIpwPutWidget enWaIpwGetWidget die overal in de verschillende routines kunnenworden aangeroepen. Tevens staat hier de link met PopUp enPopDown van Interfaces met de AGX functionaliteit.

waipwUiXPM.c

Page 39: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 38

File met de ondersteunende PixMap functie voor bijvoorbeeldde logo’s in het Openingsscherm.

waipwVersionDialog.cGemaakt door uxcgen uit de .i file voor het Identificatie scherm.

Page 40: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 39

6 Testdocumentatie

6.1 Inleiding

Met betrekking tot IPW is een drietal testen vastgelegd. Gezien hetzeer specifieke karakter van de IPW is voor een speciale wijze vantesten gekozen. Basisidee is, zoals gangbaar voor dit soortprogrammatuur, dat de functionaliteit die IPW op zeker momentondersteunt in elk geval bij elke volgende uitbreiding gehandhaafdmoet blijven. Het idee is dat dit in dit geval bereikt kan worden met dehulp van een aantal standaardinvoerfiles voor de IPW. In de volgendesecties worden de testen en de procedures beschreven en wordtaangegeven welke resultaten dienen te worden verkregen en aan welkeeis het resultaat dient te voldoen. De testen zelf en de resultaatfiles zijnbeschikbaar via de beheerder van de IPW.

6.2 Testbankprocedures en testresultaten

Er zijn drie testen die uitgevoerd moeten worden. De eerste testmet het Kustgrof model, de tweede en derde test met hetKustzuid model.

In Test 1 gaat het om de controle van de optie van de IPW dateen model kan worden gesaved en dan opnieuw ingelezen. Doorvia de knop file het Kustgrof model te openen en direct weermet een nieuwe experimentnaam (bijvoorbeeld Test_1) te savenworden alle keywords die in Kustgrof voorkomen gecontroleerdop het wegschrijven. Door daarna een nieuwe invoerfile in deIPW te openen, nu voor het model met Simona input fileTest_1.siminp, kan gecontroleerd worden of inderdaad hetgesavede model probleemloos kan worden ingelezen en viaenkele grafische inspecties kan, zij het globaal, wordengeconstateerd of het model in tact is gebleven ongeacht welkeverandering in de broncode is aangebracht.

Ter controle worden het model en het door de IPWgeproduceerde model als referentie meegeleverd. Het Kustgrofmodel zelf is ook in de gesavede vorm en daarom kunnen defiles en bijbehorende structuur direct met elkaar vergelekenworden.

Test 2 betreft het “Kustzuid model” (voor de volledigheid versie3). In dit geval is het de bedoeling dat de optie Submodel wordtgetest. Hiertoe wordt het model ingelezen, van een nieuweexperimentnaam voorzien, zeg Test_2 en vervolgens wordt deoptie Submodel benut om een deelmodel te creëren. Ditdeelmodel dient daarna weer door de IPW als model ingelezente worden en een resultaat te geven dat overeenkomt met deuitgevoerde handelingen. Voor de volledigheid is er ook hier

Page 41: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 40

weer voor gezorgd dat alle resultaten files beschikbaar zijn. Indit geval wordt een extra model, aangestuurd door de inputfileTest_2.siminp, aangemaakt. Dit submodel speelt een rol in dederde test.

Test 3 behandelt de optie DomeinDecompositie. In dit gevalgaat het om de creatie van de Areafiles in het geval dat eenspeciale koppelrand is aangewezen. Ook hier is preciesbeschreven welke acties uitgevoerd dienen te worden en omwelke koppelrand het gaat. In het geval van DD gaat het om decreatie van twee zogenaamde areafiles. Indien de gebruiker dehandelingen conform de instructies (zie verder) heeft verrichtdan moeten de areafiles zoals meegeleverd gereproduceerdworden.

In de volgende drie secties worden deze testen stap voor stapbeschreven.

6.2.1 Test 1

De invoer voor deze test is de siminp file met bijbehoren vanKustgrof versie 4. Na inlezen en het aanpassen van deexperiment naam, zeg dat de nieuwe naam Test_1 wordtgekozen, kan het rooster met alle specifieke kenmerken (punten,lijnen etc) getekend worden.Een standaardplaatje zal op hetscherm komen.

Creëer een “nieuw” model via de optie File->Save. De gesavedefile wordt daarna opnieuw ingelezen, de inputfile heetTest_1.siminp. Er kan nu gecontroleerd worden of het gesavedemodel probleemloos kan worden ingelezen en via enkelegrafische inspecties en verschilopdrachten voor de diverse files,kan, zij het globaal, worden geconstateerd of het model in tact isgebleven.

De kustgrof (versie 4) invoer is beschikbaar bij de beheerder vande IPW.

6.2.2 Test 2

De invoer voor Test 2 is het Kustzuidmodel, versie 3. In dezetest wordt de optie Submodel aan de tand gevoeld. Lees hetmodel in en vervang de experimentnaam bijvoorbeeld doorTest_2; start de optie Submodel. (Optie aanklikken op demenubalk)

Om nu de rand van het submodel aan te geven worden devolgende handelingen uitgevoerd (zie de IPW handleiding vooreen uitleg wat deze acties zoal inhouden):

Page 42: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 41

Tik de M en N voor punt ( 96, 77) in en druk op add;

Tik de M en N voor punt (139, 77) in en druk op add;

Tik de M en N voor punt (139, 78) in en druk op add;

Tik dan (141,164) in en druk op de knop add boundary pointsuntil selected node

Tik punt ( 90,164) in en druk op add en doe hetzelfde voorpunt ( 90,163). (Dit is weer een richtingspunt).

Tik tenslotte ( 96, 77) in en druk opnieuw op de knop addboundary points until selected node en constateer dat het helegebied waarvoor het submodel moet worden gemaakt isgeselecteerd, de rand van het gebied is gesloten.

Zet de refine factor op 3 en druk op de knop Create and SaveSubmodel

Het nu aangemaakte deelmodel kan direct weer door de IPW alsmodel ingelezen worden. Het resultaat dat verkregen dient teworden is in het scherm te zien.

Ook de invoer voor deze test waarbij de naam Test_2 isvervangen door de naam detail is beschikbaar via de beheerdervan de IPW.

6.2.3 Test 3

Test 3 is speciaal voor de controle van de optieDomeinDecompositie. Ook voor deze test is de invoer Kustzuidversie 3 maar daarnaast ook het gecreëerde detailmodel uit devorige test . Het gaat nu om de creatie van de Areafiles voor hetgeval van de koppelrand. Voer achtereenvolgens de volgendehandelingen uit:

Open via de knop File van de IPW het detailmodel onder denaam Test_2.siminp. Druk achtereenvolgens op de optieDomain Decomposition->Included Domain Decomposition->Save grid (fine) model. Het fijne, detail, model is nuopgeslagen.

Open nu opnieuw met de knop Open het Kustzuid model (versie3). Ga naar de optie Submodel en tik weer een aantal punten in,en druk na ieder punt steeds een de aangegeven knop in in devolgende volgorde:

Punt ( 96, 78) en de knop add;

Punt (139, 78) en de knop add;

Page 43: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 42

Punt (139, 79) en add;

Punt (141,163) en add boundary until selected node;

Punt ( 90,163) en add;

Punt ( 90, 162) en add;

Tenslotte punt ( 96, 78) en de knop add boundary until selectednode. Constateer grafisch via de schermen dat hiermee de beidemodellen aan elkaar kunnen worden geplakt. Voor dewerkelijke domeinkoppeling dienen Areafiles te wordenaangemaakt. Dit gebeurt door de laatste twee knoppen vanDomain Decomposition->include Domain Decomposition, teweten de knoppen Save region for both models en CreateAreafiles for both models, in te drukken.

De areafiles die uiteindelijk ontstaan zijn zijn weer beschikbaarbij de beheerder van de IPW.

Page 44: Systeem Documentatie IPW (Interactieve Preprocessor WAQUA)simona.deltares.nl/release/doc/sysdoc/waqipw/waqipw-sys.pdf · Aan de pointer pSi hangen subpointers die ieder op zich voor

Systeemdocumentatie IPW

Versie 1.2, september 2008 43

7 Literatuur

In de tekst zijn diverse verwijzingen opgenomen. Onderstaand debetreffende documenten.

[1] User’s Guide WAQUA, Simona rapport nr. 92-10, v. 10.37,maart 2005

[2] User’s Guide WAQPRE, onderdeel van [1]

[3] Gebruikershandleiding IPW, Simona rapport 2001-02, v. 1.5,november 2004