def test_parse_modflowgwf_kwargs(shellmound_cfg): cfg = deepcopy(shellmound_cfg) cfg = MF6model._parse_model_kwargs(cfg) kwargs = get_input_arguments(cfg['model'], mf6.ModflowGwf, exclude='packages') m = MF6model(cfg=cfg, **kwargs) sim_path = os.path.normpath( m.simulation.simulation_data.mfpath._sim_path).lower() assert sim_path == cfg['simulation']['sim_ws'].lower() m.write() # verify that options were written correctly to namefile # newton solver, but without underrelaxation nampath = os.path.join(m.model_ws, m.model_nam_file) options = read_mf6_block(nampath, 'options') assert os.path.normpath(options['list'][0]).lower() == \ os.path.normpath(cfg['model']['list']).lower() for option in ['print_input', 'print_flows', 'save_flows']: if cfg['model'][option]: assert option in options assert len(options['newton']) == 0 # newton solver, with underrelaxation cfg['model']['options']['newton_under_relaxation'] = True cfg = MF6model._parse_model_kwargs(cfg) assert cfg['model']['options']['newtonoptions'] == ['under_relaxation'] kwargs = get_input_arguments(cfg['model'], mf6.ModflowGwf, exclude='packages') m = MF6model(cfg=cfg, **kwargs) m.write() options = read_mf6_block(nampath, 'options') assert options['newton'] == ['under_relaxation']
def test_init(shellmound_cfg): cfg = deepcopy(shellmound_cfg) sim = mf6.MFSimulation() assert isinstance(sim, mf6.MFSimulation) kwargs = get_input_arguments(cfg['simulation'], mf6.MFSimulation, warn=False) sim = mf6.MFSimulation(**kwargs) assert isinstance(sim, mf6.MFSimulation) cfg['model']['packages'] = [] cfg['model']['simulation'] = sim cfg = MF6model._parse_model_kwargs(cfg) kwargs = get_input_arguments(cfg['model'], mf6.ModflowGwf, exclude='packages') # test initialization with no packages m = MF6model(cfg=cfg, **kwargs) assert isinstance(m, MF6model) # test initialization with no arguments m = MF6model(simulation=sim) assert isinstance(m, MF6model)
def test_snap_to_NHG(shellmound_cfg, shellmound_simulation): cfg = deepcopy(shellmound_cfg) #simulation = deepcopy(simulation) cfg['model']['simulation'] = shellmound_simulation cfg['setup_grid']['snap_to_NHG'] = True cfg = MF6model._parse_model_kwargs(cfg) kwargs = get_input_arguments(cfg['model'], mf6.ModflowGwf, exclude='packages') m = MF6model(cfg=cfg, **kwargs) m.setup_grid() # national grid parameters xul, yul = -2553045.0, 3907285.0 # upper left corner ngrows = 4000 ngcols = 4980 natCellsize = 1000 # locations of left and top cell edges ngx = np.arange(ngcols) * natCellsize + xul ngy = np.arange(ngrows) * -natCellsize + yul x0, x1, y0, y1 = m.modelgrid.extent assert np.min(np.abs(ngx - x0)) == 0 assert np.min(np.abs(ngy - y0)) == 0 assert np.min(np.abs(ngx - x1)) == 0 assert np.min(np.abs(ngy - y1)) == 0
def shellmound_model(shellmound_cfg, shellmound_simulation): cfg = shellmound_cfg.copy() cfg['model']['simulation'] = shellmound_simulation cfg = MF6model._parse_model_kwargs(cfg) kwargs = get_input_arguments(cfg['model'], mf6.ModflowGwf, exclude='packages') m = MF6model(cfg=cfg, **kwargs) return m
def test_packagelist(shellmound_cfg_path): cfg = load_cfg(shellmound_cfg_path, default_file='/mf6_defaults.yml') packages = cfg['model']['packages'] kwargs = get_input_arguments(cfg['simulation'], mf6.MFSimulation) sim = mf6.MFSimulation(**kwargs) cfg['model']['simulation'] = sim cfg = MF6model._parse_model_kwargs(cfg) kwargs = get_input_arguments(cfg['model'], mf6.ModflowGwf, exclude='packages') m = MF6model(cfg=cfg, **kwargs) assert m.package_list == [p for p in m._package_setup_order if p in packages]