Page 1
TheNa'onalCenterforAtmosphericResearchissponsoredbytheNa'onalScienceFounda'on.Anyopinions,findingsandconclusionsorrecommenda'onsexpressedinthispublica'onarethoseoftheauthor(s)anddonotnecessarilyreflecttheviewsoftheNa'onalScienceFounda'on.
©UCAR
DARTTutorialSec'on2:TheDARTDirectoryTree
Page 2
TheDARTCodeTree
MuchofDARTisimplementedasFortran-90modulesandprograms.DARTalsocontains:• Documenta'on(really!),• Namelistcontrolfiles,• Compila'ontools,• Shellscriptsformanaginglargeapplica'ons,and• Diagnos'ctools.
DARTTutorialSec'on2:Slide2
Page 3
DARTTop-leveldirectorystructure
DART/
models/
Others…
observa'ons/
assimila'on_code/
documenta'on/ diagnos'cs/
build_templates/
CHANGELOG/
README/
PeruseyourDARTsubdirectories!DARTTutorialSec'on2:Slide3
Page 4
DARTmodelsdirectory:
DART/models/
lorenz_63/
Manyothersmodels
lorenz_96/
u'li'es/
model_mod_tools/ template/
wrf/
POP/
cam-fv/
Containsacode‘template’foraddingnewmodels.
DARTTutorialSec'on2:Slide4
Page 5
ExampleDARTmodeldirectorydetail:
lorenz_96/
work
matlab/
tests/
shell_scripts/
Wherealltheac*onhappens!
model_mod.f90
model_mod.nml
model_mod.html
variousinputfiles…
Model-specificscripts.None‘required’.
Op'onal.Notrequired.
Model-specificfunc'onstoaidanalysis,ifany.
Anythingwiththisbackgroundisop'onal. DARTTutorialSec'on2:Slide5
Page 6
DARTmodel/workdirectorydetails:
work/ Executablesarebuiltandruninmodelworkdirectories.Makefilesandcompileroutputfilesresidehere.Inputandoutputfilesgenerallyresidehere.Lotsofotherjunkfilestendtoaccumulatehere.Checkoutcontentsofmodels/lorenz_63/work.
mkmf_xxxxxx filesthatcontrolwhatcompilerisused,compilerop'ons, etc.–forprogramxxxxxx
path_names_xxxxxx filesthatcontrolwhatsourcecodefilesareneededfor
programxxxxxxinput.nml fileusedbyallDARTprogramsforusercontrolworkshop_setup.csh scriptusedtorun‘set’experimentsforsomeworkshopexercises.
Notallmodelsrunworkshopexperiments.quickbuild.csh scriptusedtocompileALLapplicableDARTprogramsforthismodel.
Feelfreetotakeapeek,butnoneedtounderstandthedetails.obs_seq.out.xxxxxx Sequenceofobserva'onstobeassimilatedforcasexxxxxx
DARTTutorialSec'on2:Slide6
Page 7
DARTmodulefiles:
Codeformodulecov_cutoff_mod
Documenta'onformodule
Run-'mecontrolformodule
cov_cutoff_mod.f90
cov_cutoff_mod.html
cov_cutoff_mod.nml
DARTFortran-90codecomesascode,documenta'on,andrun-'mecontrolfiles.Forinstance,thedirectoryassimila7on_code/modules/assimila7on/containsthefollowingthreefilesthatimplementlocaliza'on(moreonthislater).
DARTTutorialSec'on2:Slide7
Page 8
DARTobserva'onsdirectory:
DART/observa'ons/
u'li'es/
forward_operators/ obs_converters/
Codeandbuildtoolsforu'li'esthatmanipulateobserva'onsequencefiles.Availableforlow-ordermodels(oned/)andlargemodels(threed_sphere/).
Codetocomputerforwardoperatorsformanytypesofinstrumentsandforsomeidealizedmodels.
Directoriescontainingcodeandbuildtoolsforprogramsthatcreateobserva'onsequencefilesfrommanydatasources.
DARTTutorialSec'on2:Slide8
Page 9
DARTdocumenta'ondirectory:
DART/documenta'on/
DART_LAB/
Manyothers…
tutorial/ index.html
html/
Interac'vematlabintrotoensembleassimila'on.
DiscussionsofaspectsofDARTdesign.
DARTtutorial.Whatyou’relookingatnow.
Headerforhtmldocumenta'on.
DARTTutorialSec'on2:Slide9
Page 10
DARTassimila'on_code/directory:
DART/assimila'on_code/
programs/
scripts/ loca'on/
modules/
CodeforallDARTprogramsincludingfilterthatdoesensembleassimila'on.
AllDARTassimila'oncodethatisnotamainprogram.
Somescriptsforspecializedtasks.
Modulesthatdefineageometryforanassimila'on.Mostbigproblemsusethreed_sphere/.Simplemodelsuseoned/.
DARTTutorialSec'on2:Slide10
Page 11
DARTassimila'on_code/modules/directory:
assimila'on_code/modules
assimila'on/
io/ u'li'es/
observa'ons/
Modulesassociatedwithensemblesolveralgorithms,includesfilter_mod.f90.
Modulesthatdogenericforwardoperatorsandmanageobserva'ons.
Modulesforgekngdatain/outofDARTfilters.
ModulesthatmanageDARTdatastructures,parallelprocessing,'meandcalendars,etc.
DARTTutorialSec'on2:Slide11
Page 12
Lookatensembleadjustmentfilterobserva'onincrementsubrou'ne.Inassimila7on_code/modules/assimila7on/assim_tools_mod.f90searchforthestring‘subroutine obs_increment_eakf’.obs_increment_eakf()computesupdatedmeaninatemporaryvariablenamednew_mean.Computesra'oofupdatedstandarddevia'ontoprior.Comparetotutorialslidesinsec'on1.
Codingstyle:
DARTTutorialSec'on2:Slide12
Page 13
1. FilteringForaOneVariableSystem2. TheDARTDirectoryTree3. DARTRunAmeControlandDocumentaAon4. HowshouldobservaAonsofastatevariableimpactanunobservedstatevariable?
MulAvariateassimilaAon.5. ComprehensiveFilteringTheory:Non-IdenAtyObservaAonsandtheJointPhaseSpace6. OtherUpdatesforAnObservedVariable7. SomeAddiAonalLow-OrderModels8. DealingwithSamplingError9. MoreonDealingwithError;InflaAon10. RegressionandNonlinearEffects11. CreaAngDARTExecutables12. AdapAveInflaAon13. HierarchicalGroupFiltersandLocalizaAon14. QualityControl15. DARTExperiments:ControlandDesign16. DiagnosAcOutput17. CreaAngObservaAonSequences18. LostinPhaseSpace:TheChallengeofNotKnowingtheTruth19. DART-CompliantModelsandMakingModelsCompliant20. ModelParameterEsAmaAon21. ObservaAonTypesandObservingSystemDesign22. ParallelAlgorithmImplementaAon23. Loca'onmoduledesign(notavailable)24. Fixedlagsmoother(notavailable)25. Asimple1DadvecAonmodel:TracerDataAssimilaAon
DARTTutorialIndextoSec'ons
DARTTutorialSec'on2:Slide13