CIME case.setup
└── buildnml(case, caseroot, "dart")
├── get_active_da_components(case) [dart_cesm_components]
├── consistency_checks()
├── gen_DART_input_nml()
│ ├── get_active_da_components(case)
│ ├── parse_fortran_namelist(user_nl_dart)
│ └── for each comp:
│ ├── DART_input_nml.from_json(template_path) [dart_input_nml]
│ │ └── ParamGen.from_json() [CIME]
│ └── DART_input_nml.write(input.nml.{comp}, case)
│ ├── ParamGen.reduce() [CIME]
│ ├── _convert_lists_to_strings()
│ └── ParamGen.write_nml() [CIME]
├── gen_input_obs_data_list()
│ ├── DART_input_data_list.from_json() [dart_input_data_list]
│ └── DART_input_data_list.write(dart.input_data_list, case)
│ └── ParamGen.reduce() [CIME]
├── set_cesm_data_assimilation_options()
│ └── get_active_da_components(case)
└── stage_sampling_error_correction(input_nml)
CIME case.build
└── buildlib(caseroot, libroot, bldroot)
└── CESM_DART_config(case)
├── get_active_da_components(case) [dart_cesm_components]
├── get_dart_model(comp, case) [dart_cesm_components]
├── _stage_clean_script(...)
│ └── parse_model_serial_programs() [dart_cesm_components]
└── for each missing comp:
└── _build_dart_for_component(comp, ...)
├── _build_preprocess_nml(comp, ...)
│ └── DART_COMPONENTS[comp]
└── parse_model_serial_programs() [dart_cesm_components]
(then runs quickbuild.sh as subprocess)
CIME model advance (each cycle)
└── assimilate(caseroot, cycle)
├── get_active_da_components(case) [dart_cesm_components]
├── copy_geometry_file_for_cycle0(case, rundir, cycle)
│ └── get_active_da_components(case)
└── for each comp:
└── run_filter_for_component(case, comp, caseroot)
├── get_model_time(case)
│ └── get_model_time_from_filename(rpointer)
├── get_observations(case, comp, model_time, rundir)
├── backup_model_input_nml(rundir) [if input_nml_conflict]
├── stage_dart_input_nml(case, rundir, comp)
├── check_required_files(rundir)
├── set_restart_files(rundir, prefix, model_time)
│ └── find_files_for_model_time(rundir, prefix, model_time)
├── _SET_TEMPLATE_FILES[comp](case, rundir)
│ ├── set_template_files_ocn() → _make_symlink()
│ ├── set_template_files_atm() → _make_symlink()
│ ├── set_template_files_lnd() (no-op)
│ └── set_template_files_ice() (no-op)
├── run_model_programs_for_members(pre_filter_programs)
├── stage_inflation_files(rundir)
│ └── parse_inflation_settings(input.nml)
├── subprocess: filter_{comp}
├── run_model_programs_for_members(post_filter_programs)
├── rename_dart_logs()
├── rename_obs_seq_final()
├── rename_inflation_files()
├── rename_stage_files()
└── restore_model_input_nml(rundir) [if input_nml_conflict, in finally]