Mijn oude simulaties van de universiteit doen het sinds enkele jaren niet meer. Daarom heb ik begin maart de taak op me genomen een nieuw simulatiesysteem op te zetten, maar dan dit keer zonder Java en zonder Java-applets. Het is nog lang niet af, maar gewoon even een tussendoortje om de huidige web-technieken, methoden en concepten (zoals JavaScript en HTML5) voor diverse browsers op het internet uit te proberen. De eerste versie (over aderverkalking) is in een weekje gemaakt. De tweede versie (met deze viskweekvijver) duurde vier weken! En is vooralsnog heel experimenteel. Het is een conceptsysteem (in de vorm van een sjabloon) waarin ook andere wiskundige modellen geimplementeerd kunnen worden. Het is een software systeem voor het internet geworden om de output van een wiskundig model in o.a. groeiende grafieken, tabellen en animaties op een beeldscherm te kunnen krijgen. Het gedrag van het wiskundig model wordt dan gesimuleerd voor onderwijsdoeleinden. Het is voorlopig een losse compacte 'simulator'. Het wiskundig model is ingebed in dit simulatiesysteem. De simulatie-run kan met een knopje worden onderbroken.
Het wiskundige model - hier - is een 'viskweekvijver' van de Universiteit Wageningen. Oorspronkelijk komt het van wetenschappers uit de Sovjet Unie [Svirezhev et al., 1984]. Piet van Schaik Zillesen heeft dit met een team van de Stichting Leerplanontwikkeling Enschede (SLO) rond 1989 ontwikkeld [Referentie: P. van Schaik Zillesen, A. Hartsuijker, J. Hondebrink en V. Labordus, Informatica project Voortgezet Onderwijs, Natuuronderwijs 12-16 jarigen. 'Een vijver in de computer', SLO, 1989, ISBN 90 329 0809 X. Werkboek en floppy. Zie foto's onderin]. Daarna heb ik het model (Viskweekvijver versie 16 dec 2001) rond 2003 in Java op het internet gezet bij de Universiteit Twente. Faculteit Toegepaste Onderwijskunde, onderzoeksgroep van de vakgroep onderwijskundige 'Instrumentatietechnologie' [RM & PvSZ, 1995 - 2004]
Met deze simulatie kunnen leerlingen van middelbare scholen - thuis of tijdens speciale biologielessen - leren hoe mineralen uitwerken in een lege viskweekvijver. En daarna, als ze dit onder de knie hebben, hoe ze twee verschillende soorten vissen, zilverkarpers en karpers kunnen kweken. De ene soort eet alleen plantaardige dingen, de andere soort dierlijk voedsel. Maar dan moet men wel - zelf - zorgen dat de vissen goed kunnen groeien. Anders is de opbrengst bijvoorbeeld niet optimaal.
In het water kunnen verschillende stoffen opgelost zijn: zuurstof (O), fosfaat (P) en nitraat (N). Dat zijn meststoffen. Algen en wieren zijn hele kleine groene plantjes, waterplantjes (phytoplankton) (F). Dan heb je nog dierlijk afval, Detritus (D): Schimmels en bacterien. Algen groeien door licht. Overdag. En maken uit water en kooldioxide hun eigen voedsel. Daarbij komt zuurstof vrij. Dat heet photosynthese. 's Nachts verbruiken algen hun voedsel en nemen ze zuurstof op. Afval wordt gebruikt voor micro-organismen, zoals bacterien en schimmels.
De simulator hieronder heeft grafische output en enkele animaties-objecten. Plus twee 'parallelle instructies'. De instructie en de opdrachten zijn ontworpen conform de 'Parallelle Instructie' theorie van Min en de 'Cognitive Laod' theorie van Mayer [R. Min, de PI-theorie, 2004, R. Maijer, the Cognitive Load, 2002].
Met deze applicatie kun je karpers en zilverkarpers leren kweken. Je moet daarvoor wel eerst je biologielessen gevolgd hebben om te weten hoe voedingsstoffen, zonlicht, temperatuur, nitraat, fosfaat, dierlijk en plantaardig voedsel de groei van deze dieren beinvloed. |
Typ hieronder, in het voorlopige interactiegedeelte, als je precies weet wat je wilt en moet doen, andere waardes in of ga (voorlopig) gewoon door met de door ons ingestelde waardes.
Wil je eerst kijken naar een vijver zonder vissen (de 'algenvijver'), klik dan hieronder direct op 'Doorgaan'. Wil je doorgaan met twee vismassa's (voor C zowel als S) van 50 kg, en daarna - hieronder - op 'Doorgaan'.
Er zijn hier dus twee mogelijkheden: een 'kale' algenvijver zonder vissen en een 'volledige' viskweekvijver met twee verschillende soorten vissen: zilverkarpers en karpers. In dat laatste geval is het (totale) gewicht van zowel de zilverkarpers als de karpers 50 kilo.
Bekijk het verschil. Vind je het opmerkelijk? TIP 1: Daarna kun je de vijver eens gaan bemesten! Of overbemesten. Weet je hoe je dat moet doen? Lees de instructies. TIP 2: Als je (extra) visvoer (AU) geeft groeien de karpers in de zomer heel hard. (De zilverkarpers niet.) TIP 3: Kies de viskweekvijver met 50 kg karpers en 50 kg zilverkarpers. Geef in april gedurende een maand eens een stoot fosfaat en een stoor nitraat: PU=0.4 kg/dag en NU = 1.4 kg/dag. Kijk wat er gebeurt.
Voor het runnen van het model met de ingestelde waarden, het starten van de simulatie en het bekijken van de instructie, zie de knopjes onder de simulator.
Op 30 april kun je nu zuurstof inname (OU) bijvoorbeeld op 4.0 eenheden/dagen zetten, Nitraat (NU) kun je daar daar van 0.0 naar 0.5 zetten en Phosfaat (PU) bijvoorbeeld op 0.5. De visvoer inname (AU) hou ik vooralsnog op 0.0. Je ziet xxx. Beide vis-massa's xxx. De ene soort onder hele andere invloeden dan de andere soort.
De zilverkarpers (S) worden in het geel getoond. De gewone karpers (C) in het groene. De algengroei (phytoplankton) (hier een afname) (F) zie je in de zwarte grafiek en zijn voedsel voor de zilverkarpers. Doordat N, P en O begin mei (door jou?) zijn verhoogd, zie je dat het plantaardig voedsel toeneemt en dientengevolge het gewicht van de zilverkarpers! De karpers eten wat anders. Zie elders. Kijk goed naar het blauwe blokje en het zwarte blokje. Het zwarte blokje geeft de vervuiling (m.n. de algengroei) in de vijver aan. Het blauwe blokje het dag-nacht-ritme en dientengevolge de instraling (L). De twee andere blokjes zijn een indicatie dat de hoeveelheid karpers [kg] en de hoeveelheid zilverkarpers [kg] verandert. De juiste waardes vind je onderin het schema.
Als er een interventie in het begin van de zomer door jou is gedaan moet je de tijd maar eens laten lopen. De groei van de beide vissoorten komt ook pas (goed) op gang in april. De vervuiling (D) ook. Daarvoor staat alles nog reletief stil vanwege de (te) lage temperatuur.
Aan de simulatie en de animatie wordt nog verder gewerkt. De tijd (t) moet nog gestopt kunen worden en het geheel moet een meer functionele vorm krijgen. De uitleg en de instructieteksten ook. De instructie en de opdrachten (die nog niet overeen stemmen met deze applicatie) kunnen wel (als voorbeeld) door jou al vast een beetje geraadpleegd worden.
Output:
L Instraling: P Phosfaat N Nitraat: |
![]() |
F Algen O Zuurstof: Z Watervlooien B Bodemdieren D Detritus |
Interventies:
14. PU mbt. P: (fixed)
16. NU mbt. N: (fixed)
18. OU mbt. O: (fixed)
20. AU mbt. A: (fixed)
Visvoer:
19. A: (voorlopig in deze casus heel weinig!)
Twee ongeveer dezelfde output-voorbeelden - startwaardes en (mogelijke) eindwaarden:
Een derde voorbeeld: een screendump van de viskweekvijver hier [RM, 2025]. De simulatie start met 50 kg karpers en 50 kg zilverkarpers. In april wordt PU=2 en NU=8 kg/dag. En eind april wordt PU=0 en NU=0 kg/dag. Op het eind zijn er substanteel meer vissen. Het patroon komt redelijk overeen met de oude viskweekvijver - hierboven - uit de periode 1995 - 2004.
REFERENTIES:
Het werkboek van de viskweekvijver: de auteurs en de doelgroep (SLO)[1989]
De viskweekvijver: een voorbeeld van een casus [SLO, 1989]
De viskweekvijver: een voorbeeld van een casus. Zie hierbij ook het invulformulier. [SLO, 1989]
De viskweekvijver: het losse floppy, achterin het werkboek [SLO, 1989]
NAWOORD: De afgelopen jaren werd java en mijn java-applets als virussen beschouwd. Ik kon er niet meer met goed fatsoen mensen mee laten werken. In maart 2025 had ik ook nog eens een paar slechte (politieke) weken. De geo-politiek stond mij totaal niet aan. Om mij af te reageren ben ik een paar uur per dag aan het programmeren geslagen. Nu met HTML5 en alleen met JavaScript, zonder Java en zonder mijn oude library's als SimLib en WebLib. (Zie elders.)
Ik ben een groot voorstander van evolutionair ontwikkelen van systemen [R.J.H. Tolido, 'Het evolutionair ontwikkelen van informatiesystemen', CAP Volmac, Academic Services, 1996]]. Ook dit keer heb ik met deze stap voor stap werkmethode (en daardoor voortschrijdend inzicht) veel met JavaScript kunnen ontdekken. Ik ging van versie 0.0x, het eerste concept, naar versie 1.0 en 2.0. En op een gegeven moment besluit je dan tot publicatie. Maar dan hebben een groot aantal mensen, collega's, studenten, vrienden en familie (als testpersonen) er dan al kennis mee gemaakt. Dat is de leukste manier van werken. Ik ben hen vanaf deze plaats heel dankbaar .
Met dank speciaal aan Piet v. Schaick Zillesen, bioloog (ISM/TO/UT) & Jan de Goeijen (ICT-specialist). Model: Universiteit Wageningen. Studenten: Saskia Meulman, JS, AH, CW en AS. Eerste internet versie rond 2002: Daarna geupdated: 2004, 2010, 2019 en 2020. Weer latere versies: Start 27 maart 2025. Afgerond: 30 april 2025.
In de zomer ga ik verder met deze systeemvariant om de vloeistoffen huishouding in het menselijk lichaam te simuleren en het cardiovasculaire systeem van Coleman (University of Mississippi), maar ook met het Japanse model 'FLUIDS' plus het grote Amerikaanse model van Guyton ('HUMAN') over de bloeddrukregulatie. Mijn oude versies gebruikten java. De nieuwe versie dus alleen JavaScript en HTML5.
Rik Min, Enschede 30 april 2025.
Zilverkarpers (Hypophthalmichthys molitrix) zijn inderdaad planteneters. Ze voeden zich voornamelijk met fytoplankton, algen en waterplanten. Deze soort is speciaal aangepast om grote hoeveelheden plantaardig materiaal te filteren uit het water.
Gewone karpers (Cyprinus carpio), aan de andere kant, zijn omnivoren. Dit betekent dat ze zowel plantaardig als dierlijk voedsel eten. Hun dieet kan bestaan uit algen, waterplanten, insectenlarven, schelpdieren en zelfs aas. Gewone karpers zijn veelzijdige eetgedragingen die ze in staat stellen zich aan verschillende omgevingen en voedselbronnen aan te passen.
Dus, terwijl zilverkarpers zich enkel op plantaardig voedsel richten, hebben gewone karpers een breder dieet dat ook dierlijk voedsel omvat.
All starting values KPF = 0.1; KNF = 0.1; KFZ = 15.0; KDZ = 60.0; KFB = 15.0; KZB = 1.0; KDB = 60.0; KZC = 1.0; KBC = 5.0; KAC = 0.2; KFS = 20.0; KDS = 60.0; MUFMAX = 4.5; MUFZMAX = 1.4; MUDZMAX = 0.5; MUFBMAX = 0.2; MUZBMAX = 0.4; MUDBMAX = 0.2; MUZCMAX = 0.02; MUBCMAX = 0.06; MUACMAX = 0.03; MUFSMAX = 0.1; MUDSMAX = 0.07; hier ontbrak bij ergens MUxxxMAX, MBF = 0.3; MBZ = 0.3; MBB = 0.3; MBC = 0.3; MBS = 0.3; MBBC = 0.4; MBBS = 0.4; RCMAX = 13.0; RSMAX = 10.0; MBOF = 0.001; MBOZ = 0.001; MBOB = 0.001; MBOC = 0.001; MBOS = 0.001; MF = 0.025; MZ = 0.005; MB = 0.05; RESPF = 0.001; RESPZ = 0.01; RESPB = 0.01; RESPC = 0.01; RESPS = 0.01; UDP = 0.00004; UDN = 0.002; PHOT = 1.0; ALPHA = 0.2; RE = 0.4; OKT = 0.085; SED = 0.05; SEDP = 0.1; LOPT = 3000.0; KW = 0.2; KF = 0.05; KD = 0.8; KPD = 0.5; HK = 0.1; BKR = 20.0; ZCR = 5.0; FCR = 30.0; MB2 = 10.0; MZ2 = 3.0; MF2 = 15.0; LABDAB = 1.0; LABDAZ = 1.0; LABDAF = 1.0; KA = 2.0; MK = 5.0; COP = 2.0; MG = 1.0; COD = 2.0; HLP1 = MBBC / RCMAX; HLP2 = MBBS / RSMAX; HLP3 = XKWAD (KPF); HLP4 = XKWAD (KNF); HLP5 = XKWAD (KFZ); HLP6 = XKWAD (KFB); HLP7 = XKWAD (KFS); HLP8 = XKWAD (KDZ); HLP9 = XKWAD (KZB); HLP10 = XKWAD (KBC); HLP11 = W(MUBCMAX, HLP10, BKR); HLP12 = XKWAD (KZC); HLP13 = XKWAD (KDB); HLP14 = XKWAD (KAC); HLP15 = XKWAD (KDS); Topt[1]=24.0; Topt[2]=24.0; Topt[3]=24.0; Topt[4]=26.0; Topt[5]=26.0; Topt[6]=26.0; Q1[1]=15.0;//=24-9 Q1[2]=15.0; Q1[3]=15.0; Q1[4]=14.0; Q1[5]=12.5; Q1[6]=11.0; Q2[1]=10.0;//=34-24 Q2[2]=10.0; Q2[3]=10.0; Q2[4]=11.0; Q2[5]=11.0; Q2[6]=11.0; M[1]=3.0;//dummy M[2]=3.0;//zuurstofhalfwaarde voor onderhoud Z M[3]=3.0;//dummy M[4]=3.0;//zuurstof ... C M[5]=3.0;//zuurstof ... S M[6]=3.0;//zuurstof ... H LABDA[1]=1.0;//dummy LABDA[2]=1.0;//helling zuurstofcurve Z LABDA[3]=1.0;//dummy LABDA[4]=1.0;//helling zuurstofcurve C LABDA[5]=1.0;//helling zuurstofcurve S LABDA[6]=1.0;//helling zuurstofcurve H F = 20.0; Z = 0.0; B = 0.0; C = 0.0; S = 0.0; P = 0.03; N = 0.15; O = 9.8; A = 0.0; D = 7.2; L = 0.0; F0 = 2.0; L_JAARMAX = 3000.0; TEMP_JAARMAX = 20.0; REA = 20.0; // ?? TEMP = 20.0 // ??; NU = 0.0; PU = 0.0; OU = 0.0; AU = 0.0; DPU = 0.01; DNU = 0.03; PTOEG = 0.0; NTOEG = 0.0; OTOEG = 0.0; VTOEG = 0.0; Tmin = 0.0; T = 0.0; dt = 0.04; Tmax = 30.1;
Blijkbaar is dit alleeen de output voor de vijver zonder vissen:
Graph1.newValue(N);
Graph2.newValue(TEMP);
Graph3.newValue(QDP);
Graph4.newValue(E1(TEMP));
Graph5.newValue(O);
Graph6.newValue(F);
Graph7.newValue(P);
Graph8.newValue(E2(O));
until (T < Tmax);
TEMP_SEIZOEN: (in zomer 22 graden)
TEMP:
TEMP_TIJD:
REA:
De externe invloeden: 77. L Instraling: 75. REA: 76. TEMP:
Flows (Q van naar): Overigen: |
Watervlooien (Z): 30. F mbt. Z: 31. D mbt. Z: 32. O mbt. Z: --> Z Watervlooien (op t=0: 0 of 10?)
Bodemdieren (B): Karpers: Zilverkarpers: |