Cilj zadatka je napraviti dobu simulaciju što uključuje sljedeće:
Simulacije 2 i 3 treba raditi u dvije verzije: jednu s homogenom poroznošću i propusnošću, a drugu s nehomogenim
podacima. Za homogene podatke se može uzeti, na primjer, poroznost = 0.2, a propusnost = 20 mD.
Propusnost će tu biti skalarna. Za nehomogene podatke odabrati jednu kartu iz kolekcije od 50 karata
u direktoriju geostat (npr. run23.asc). Karta sadrži samo horizontalne permeabilnosti iz koje
se generira permeabilnost i poroznost kako je objašnjeno u datoteci upute.html.
Program make_porosity.C (C++) čita jednu zadanu sliku iz geostat direktorija i kreira datoteke s
poroznosti i permeabilnosti koje treba uključiti u parssimovu ulaznu datoteku pomoću INCLUDE naredbe.
Program treba kompilirati s C++ compilerom i pozvati, npr., na ovaj način: make_porosity run23.asc
(pod uvjetom da se izvršna datoteka zove make_porosity).
Transformacija izlaznih podataka.
Ovdje su upute kako konstruirati ulazni file za parssim po pojedinim sekcijama.
computeChemistry treba uvijek staviti na nulu (bez kemijskih reakcija). computeTransport treba staviti na 2 (Godunovljeva reda višeg reda) ili 3 (Godunovljeva metoda prvog reda). Metoda prvog reda je robusnija, dok je metoda višeg reda preciznija.
Za jedinice koristiti [m], [kg], [sec], [degC]. O izabranim jedinicama ovisi u kojim će jedinicama biti zadani izlazni podaci. Program za konverziju izlaznih podataka u VTK format, raw2vtk.C, pretpostavlja MKS sustav i vrši skaliranje podataka.
Koristiti automatsku subdiviziju za paralelizaciju (-1 -1 -1) budući da se program koristi serijski.
Toleranciju za solvere uzeti dovoljno malom (npr. 1.0E-8). Eksperimentalno se uvjeriti da rješenje ne ovisi o daljnjem smanjenju tolerancije.
Broj iteracija se može slobodno povećati.
Prekondicioniranje: Pri rješavanju sustava linearnih algebarskih jednadžbi Ax=b iterativnim metodama često se radi prekondicioniranje koje se sastoji u tome da se prije primjene iterativnog postupka na sustav primjeni neka matrica prekondicioniranja P-1, odnosno riješava se sustav P-1Ax=P-1b. Cilj tog postupka je ubrzavanje konvergencije metode. Najjednostavnije prekondicioniranje je dijagonalom matrice (P = diag(A)) što se svodi na skaliranje sustava.
Za pcTypeIF_f treba koristiti 5 (ignorirati poruku "Balance matrix is structurally singular") ili eventualno 1 (dijagonalno prekondicioniranje).
Workspace povećati koliko je potrebno.
cflFactor: U prostornoj diskretitaciji jednadžbe konvekcije difuzije odnos prostornog koraka dx i vremenskog dt oblika dt/dx <= CFL . CFL broj je može postaviti eksplicitno, ali je bolje pustiti parssim da ga postavi automatski (cflFactor = -1).
Vrijeme simulacije treba biti dovoljno dugo da se vide fenomeni konvekcije-difuzije. Recimo, od jedne do 20 godina.
Osnovna numerička mreža je dimenzije 20x25x20 blokova. Domena je [0,1000]x[0,1250]x[0,40] (metara). Numeričku mrežu treba profiniti jednom polovljenjem blokova u horizontalnim smjerovima kako bi se provjerili utjecaji grešaka zaokruživanja. Pri tome (u nehomogenom slučaju) treba dobro raspodijeliti poroznost i propusnost po profinjenim blokovima.
Nehomogenu poroznost uključiti iz datoteke. Prije toga testirati simulaciju na konstantnoj poroznoosti. Isto i za permeabilnost.
Za permeabilnost iskoristiti jednu kartu iz geostat direktorija. Pomoću program make_porosity.C (vidi geostat direktorij) generirati poroznost korelacijom iz permeabilnosti i transformirati permeabilnost u formu prikladnu za parssim. Za tako generiranu permeabilnost koristiti
diagonal # permType: scalar, diagonal, or symmetric
by cells # permGrouping: Group by grid cells or by tensor components
xx yy zz # permComponentOrder: Order of tensor's components
Kod disperzije uzeti približne (arificijelne) vrijednosti: molekularna difuzivnost = 1 cm^2/dan, longitudinalna disperzivnost 10 cm, transferzalna difuzivnost = 1cm. Disperzivnosti će trebati varirati tako da se vidi njihov utjecaj.
Odabrati linearnu sorpciju i opciju porosity.
Tu sekciju ne koristimo.
Imamo dvije komponente i nemamo produkata. Prva komponenta je voda i za nju nema sorpcije (phaseDist = 0).
Last Modified: Svibanj 24, 2009
jurak@math.hr