3939)
4040from ert .config .ert_config import (
4141 create_and_hook_workflows ,
42+ forward_model_step_from_config_contents ,
4243 read_templates ,
4344 uppercase_subkeys_and_stringify_subvalues ,
4445 workflow_jobs_from_dict ,
@@ -296,12 +297,19 @@ def create(
296297
297298 user_installed_fm_steps = {}
298299 for job in everest_config .install_jobs :
299- executable = Path (job .executable )
300- if not executable .is_absolute ():
301- executable = everest_config .config_directory / executable
302- user_installed_fm_steps [job .name ] = ForwardModelStep (
303- name = job .name , executable = str (executable )
304- )
300+ if job .executable is not None :
301+ executable = Path (job .executable )
302+ if not executable .is_absolute ():
303+ executable = everest_config .config_directory / executable
304+ user_installed_fm_steps [job .name ] = ForwardModelStep (
305+ name = job .name , executable = str (executable )
306+ )
307+ elif job .source is not None :
308+ return forward_model_step_from_config_contents (
309+ config_contents = Path (job .source ).read_text (encoding = "utf-8" ),
310+ config_file = job .source ,
311+ name = job .name ,
312+ )
305313
306314 site_installed_fm_steps = (
307315 runtime_plugins .installed_forward_model_steps
@@ -364,6 +372,17 @@ def create(
364372
365373 for fm_spec in everest_config .forward_model :
366374 fm_name , * arglist = fm_spec .job .split ()
375+ match fm_name :
376+ # All three reservoir simulator fm_steps map to
377+ # "run_reservoirsimulator" which requires the simulator name
378+ # as its first argument.
379+ case "eclipse100" :
380+ arglist = ["eclipse" , * arglist ]
381+ case "eclipse300" :
382+ arglist = ["e300" , * arglist ]
383+ case "flow" :
384+ arglist = ["flow" , * arglist ]
385+
367386 fm_cls = installed_fm_steps .get (fm_name )
368387 fm_instance = copy .deepcopy (fm_cls )
369388 fm_instance .arglist = arglist
@@ -374,7 +393,12 @@ def create(
374393 )
375394
376395 # tmpy tmpy
377- assert forward_model_steps == forward_model_steps_old
396+ mismatch_fmsteps = [
397+ i
398+ for i in range (len (forward_model_steps ))
399+ if str (forward_model_steps [i ]) != str (forward_model_steps_old [i ])
400+ ]
401+ assert not mismatch_fmsteps
378402 assert env_pr_fm_step == env_pr_fm_step_old
379403
380404 env_vars = {}
0 commit comments