Back to site
Since 2004, our University project has become the Internet's most widespread web hosting directory. Here we like to talk a lot about web servers, web development, networking and security services. It is, after all, our expertise. To make things better we've launched this science section with the free access to educational resources and important scientific material translated to different languages.

Vodič za primenu generičkog EnKF paketa.




Napisali Olwijn Leeuwenburgh (KNMI) i Laurent Bertino (NERSC) tokom saradnje na projektu ENACT

Opšte preporuke

Savetujemo da EnKF koristite samo za korak analize. Potreban je poseban program radi integracije modela skupa (može se napisati skripta ili kontrolni Fortran program radi naizmeničnog izvođenja integracije i analize modela i kontrole vremenskog parametra).

Za EnKF su potrebni kao ulazni fajlovi:

● Fajl prognostičkog skupa izrađen po modelu. Ovaj fajl može da se napiše kao binarni za svaki član sa posebnim zapisom, kome prethodi karakter lanca koji identifikuje model i njegovu verziju. SAVET: ako se jedan član rasta propusti iz nekog razloga, onda zapis zaglavlja lanaca neće biti prepoznat i možete izbeći obradu fajla.
● Fajl posmatranja. Savetujemo vam da sačuvate zajedno sa vrednosnim podacima sve informacije koje se odnose na posmatranje prema obliku modela:
- Identifikator ('SST', 'SLA', 'TEM', 'TB' ...)
- Varijansa greške merenja.
- Koordinate posmatranja x,y,z.
- Najbliža ćelija mreže modela (i,j)
- Neki koeficijenti za interpolaciju vrednosti modela za lokaciju posmatranja (na primer 4 bilinearno koeficijenta interpolacije).
- Ako su posmatranja data na većim prosečnim ćelijama ( ili "potpori" ) nego što je mreža po modelu treba takođe navesti broj ćelija modela obuhvaćenih posmatranjem. Ovo ne izgleda svrsishodno ali razmotrite na primer Reynolds SST podatke ili El Nino indekse.
● Topografiju/batimetriju u cilju izračunavanja samo vlažnih tačaka.

EnKF će kao izlazni fajl izraditi fajl analiziranog skupaA.uf koji sadrži sve početne članove za naredni model rasta. Za fajl prognoze, oni bi trebalo prvenstveno da budu napisani u jednom binarnom fajlu na različitim zapisima.

Pripremni fajl je napisan za IBM i neke opcije za kompajliranje će možda morati da se izmene. Preporučljivo je da se pridržavate pravila za davanje imena fajlova i drugih pravila kako slede. mksource.sh se koristi za kreiranje liste izvornih fajlova. mkdepend.pl se koristi za dijagnostikovanje međuzavisnosti rutina. Koristite 'make' za kompajliranje i kreiranje izvršnog EnKF.

Korišćenje generičkih rutina

Sledeće tačke treba uzeti u razmatranje prilikom prilagođavanja koda za sopstveni model:

● 1) Odredite dimenzije modela nx,ny and nz u mod_dimensions.F90
● 2) Identifikujte prognostičke varijable modela. Ukoliko je potrebno, promenite deklaracije tipa, interfejse, potprograme i funkcije u mod_states.F90 (mod_states2D.F90).
● 3) m_pseudo2D.F90 sadrži pozive do FFT rutina za CRAY, IBM, DEC i SGI računare. Eksperimentalna verzija ove rutine koja koristi Numerical Recipes rutinu takođe je dostupna.
● 4) Vratite podrazumevane vrednosti za slučajni delilac (random seed) na različit ceo broj svaki put kada koristite izvršni EnKF, ovo će rešiti probleme zbog „vanredne vremenski-zavisne greške merenja (Extremely time-correlated measurement error)”. m_set_random_seed2.F90 je dat u NERSC_implementation/Random/
● 5) Identifikator (cident) se koristi za proveru validnosti fajlova modela skupa i da li fajlovi sadrže podatke jednostruke ili dvostruke preciznosti. Ovaj identifikator će možda morati da se menja (na primer m_read_ensemble.F90).
● 6) Fajl očekivane prognoze skupa je 'ensembleF.uf'.
● 7) Restart fajl napisan u modelu treba da bude u formatu očekivanom za EnKF.
● 8) analysis.F90 koristi BLAS rutine jednostruke ili dvostruke preciznosti dgemm ili sgemm.
● 9) analysis.F90 nije m_analysis.F90. Ovo sprečava kompajler da se žali na implicitne konverzije iz tipa(stanja) A(:) u niz pravih vrednosti (real-valued array) A(:,:) što ne bi trebalo da je problem sve dok imate samo vrednosti sa pokretnim zarezom u vektoru stanja (bez celih brojeva, bez vrednosti karaktera ...).

Aplikativno orjentisane rutine

Samo za one koji žele da urade upravo isto što i mi! Ove rutine mogu se naći sledeći Code i NERSC_implementation/ Osobe koje asimilaciju podataka počinju od nule mogu lako da ih prilagode svojim potrebama.

● 1) Rutina m_consistency_A.F90 proverava stanje modela skupa na ekstremne ili nevažeće vrednosti. Odgovarajuće min/maks vrednosti treba postaviti ovde. (u HICOM_IO /)
● 2) Mogu biti usvojene i umrežena polja i podaci profila. Neke vrste podataka su već uračunate. (na primer pogledati listu u m_Generate_element.F90 u Obs_operator/).
● 3) m_modstate_point.F90 (u Obs_operator/) identifikuje stanje promenljivih modela koje odgovaraju različitim tipovima podataka i na taj način mogu biti zavisni od modela (to je jezgro H matrice).
● 4) m_obs_pert.F90 (u Random/) određuje veličinu mreže na kojoj se generišu slučajna 2D polja, opseg 2D poremećaja izaberite ovde.
● 5) mkensemble.F90 generiše početni skup za HYCOM zajedno sa modelom leda.
● 6) I lokalna i globalna analiza upotrebljavaju skoro iste rutine, tokom izvršavanja naše implementacije su izabrane prilikom čitanja fajla assimilation.in

Podešavanje EnKF eksperimenta asimilacije

Model

Programska pitanja


Model bi trebalo da bude u stanju da se restartuje nekoliko puta iz istog vremenskog koraka, obično je to samo stvar čitanja polja delovanja na pravom mestu. Svaki član može se zatim pokrenuti sa svojim slučajnim poremećajima nezavisno od ostalih članova. Oni će se sresti samo tokom analize. Ne zaboravite da resetujete slučajne brojeve za različite delioce svaki put kada ponovo pokrenete izvršnu verziju.

Izbor greške modela

Ovo je mesto gde nauka stvarno počinje. Slobodno izaberite nasumične vrednosti tamo gde mislite da program ima osnovnu grešku. Skup varijansi ili raspodela će pokazati da li ste dotakli osetljiv parametar ili ne. Rezultati asimilacije (posebno smanjenje raspodele skupa za svaku promenljivu) će vam pokazati gde model gradi multivarijantne veze između promenljivih modela i merenja. Na primer, u eksperimentu TOPAZ, ECMWF atmosferska polja delovanja su poremećena (perturbed) dodavanjem nasumičnih 2D polja (m_pseudo2D.F90 je korišten za tu svrhu) i svaki član skupa je propuštan u HYCOM sa njegovim posebnim parametrima Richardson mešanja (ali konstantnog tokom vremena). Greška modela može biti vremenski zavisna, tada treba da sačuvate njegovu vrednost i pročitate je ponovo tokom restartovanja.

Merenja

Ona ne moraju da budu deo vektora stanja, ukoliko se merenje odnosi samo na dijagnostičke promenljive (na primer visine površine mora u HYCOM), onda ove dijagnostičke varijable za svaki član možete da sačuvate u zasebnom pomoćnom fajlu (koji se, na primer, zove model_ssh.uf) i učitate ih pre analize za proračun matrice S=HA' i unapređenja (innovations) D=D-S. Greške merenja mogu biti vremenski zavisne ako su ta merenja unapred interpolirana/reumrežena. U tom slučaju razmislite o korišćenju m_pseudo2D.F90 za simulaciju nasumičnih polja grešaka merenja. (Ako ima manje od 1000 nepravilno razmaknutih merenja može se takođe koristiti Cholesky raščlanjavanje kovarijanse matrice).

Početna greška

Teško je reći šta je to greška početnog stanja u datom vremenu! Osobe koje imaju dobro iskustvo sa OI mogu da koriste svoju OI matricu kovarijanse da bi izvukli nasumične simulacije početnih članova. U HYCOM-u, zgodan (a i efikasan) način simuliranja inicijalne greške jeste narušavanje dubine interfejsa između slojeva iste gustine. (vidi program NERSC_implementation/HYCOM_IO/mkensemble.F90 ). Onda smo integrisali skup sa poremećajima u poljima delovanja jednu/dve nedelje unapred kako bi izradio odgovarajuće multivarijantne kovarijanse. Druga strategija je da snimanje klimatološkog skupa tokom uhodavanja modela i čuvanje restart fajlova tokom odgovarajuće sezone, tako da ćete biti u mogućnosti da ih ponovo koristite. A onda treba da osigurate izbegavanje gomile članova koji se VEOMA razlikuju od svih drugih. Što nas vodi do sledeće napomene ...

Statističareve napomene

U kojoj meri je nešto po Gausovoj raspodeli (Gaussianity)


Asimilacija se u EnKF-u vrši linearnim estimacijama na osnovu nevidljive Gausove pretpostavke. To znači da bi sva merenja i promenljive stanja trebale biti zadovoljavajuće aproksimirane kao Gausova raspodela. Ovo je čest slučaj ukoliko je varijabilnost dosta manja u odnosu na stvarne vrednosti promenljivih. O suprotnom slučaju možete da pogledate rad Bertino et al (2003) i isprobate model transformisan pomoću Gausove raspodele.
Da biste, na primer, koristili logaritamsku transformaciju (pozitivne promenljive sa izuzetno velikim vrednostima), na početku podesite A = log (A), d = log (d), navedite greške u merenju kao odnos njihovih stvarnih vrednosti, dobro razmislite o matrici posmatranja [da li mogu da kažem da je log(d) = H log(A)?], i koristite iste rutine koje su već ovde navedene. Vratite nazad trasformisani skup.

Izbegnite male ružne pačiće

Neprijatelj EnKF je udaljeni član jer ima jak uticaj na empirijske kovarijanse (koje su zasnovane na skupu). Zamislite skup u kome je jedan član (ili gomila članova) veoma udaljen od drugih, onda će on privući sve korelacije na sebe, kao da su svi ostali članovi u stvari samo jedan. Dakle, ukoliko želite da izbegnete da se 100 članova skupa ponašaju kao 2, uverite se da je skup homogena populacija, izbegnite neuobičajene članove, male manjine ili delove u okviru skupa. (Laurent ovde priča o statistici, prosto govoreći koliko ceni društvo neobičnih ljudi i manjina).

O broju članova skupa

Koliko malo članova skupa treba da koristim?

Pa ... Ne verujem previše u čuda, niti u „efekte zasićenja". Ako je vaš problem zaista interesantan, tada 10 članova neće biti dovoljno pametni da vam kažu sve o najtežim multivarijacionim kovarijansama. Savetujemo 100 članova da bi dobili rezultate koje možete da reprodukujete. 100 je veličina skupa koja je korištena tokom eksperimenata u realnom vremenu DIADEM i TOPAZ. Pogledajte rad Natvika (2002) kako bi videli koliko dobro se ponašaju 20, 40, 60, 80 i 100 članova spregnutog fizičko-ekološkog modela Severnog Atlantika. Ukoliko možete sebi da priuštite više od 100 članova, samo napred! Ali imajte na umu da vam neće pomoći ni 1000 članova ukoliko model ima ozbiljna odstupanja: onda će svih 1000 članova propustiti rešenje i osećaćete se kao da tučete mrtvog konja.



Published (Last edited): 16-10-2012 , source: http://enkf.nersc.no/documentation.html