Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pengeler/laki reqs parameters #547

Open
wants to merge 12 commits into
base: main
Choose a base branch
from
104 changes: 54 additions & 50 deletions examples/mapdl_motorbike_frame/project_setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ def create_project(

project_api = ProjectApi(client, proj.id)

# File definitions
log.debug("=== Files")
cwd = os.path.dirname(__file__)
files = []
Expand Down Expand Up @@ -121,29 +122,54 @@ def create_project(
log.debug("=== JobDefinition with simulation workflow and parameters")
job_def = JobDefinition(name="JobDefinition.1", active=True)

# Parameter definitions
params = []
# Input params: Dimensions of three custom tubes
float_input_params = []
for i in range(1, 4):
float_input_params.extend(
params.extend(
[
FloatParameterDefinition(
name="tube%i_radius" % i, lower_limit=4.0, upper_limit=20.0, default=12.0
name="tube%i_radius" % i,
lower_limit=4.0,
upper_limit=20.0,
default=12.0,
mode="input",
),
FloatParameterDefinition(
name="tube%i_thickness" % i, lower_limit=0.5, upper_limit=2.5, default=1.0
name="tube%i_thickness" % i,
lower_limit=0.5,
upper_limit=2.5,
default=1.0,
mode="input",
),
]
)

float_input_params = project_api.create_parameter_definitions(float_input_params)
# Input params: Custom types used for all the different tubes of the frame
for i in range(1, 22):
params.append(
StringParameterDefinition(
name="tube%s" % i, default="1", value_list=["1", "2", "3"], mode="input"
)
)
# Output params
for pname in ["weight", "torsion_stiffness", "max_stress"]:
params.append(FloatParameterDefinition(name=pname, mode="output"))
# Runtime stats from MAPDL out file
params.append(FloatParameterDefinition(name="mapdl_elapsed_time_obtain_license", mode="output"))
params.append(FloatParameterDefinition(name="mapdl_cp_time", mode="output"))
params.append(FloatParameterDefinition(name="mapdl_elapsed_time", mode="output"))
# Create parameter definitions in project
params = project_api.create_parameter_definitions(params)

# Parameter mappings
param_mappings = []
pi = 0
for i in range(1, 4):
param_mappings.append(
ParameterMapping(
key_string="radius(%i)" % i,
tokenizer="=",
parameter_definition_id=float_input_params[pi].id,
parameter_definition_id=params[pi].id,
file_id=file_ids["inp"],
)
)
Expand All @@ -152,77 +178,57 @@ def create_project(
ParameterMapping(
key_string="thickness(%i)" % i,
tokenizer="=",
parameter_definition_id=float_input_params[pi].id,
parameter_definition_id=params[pi].id,
file_id=file_ids["inp"],
)
)
pi += 1

# Input params: Custom types used for all the different tubes of the frame
str_input_params = []
for i in range(1, 22):
str_input_params.append(
StringParameterDefinition(name="tube%s" % i, default="1", value_list=["1", "2", "3"])
)
str_input_params = project_api.create_parameter_definitions(str_input_params)

for i in range(1, 22):
param_mappings.append(
ParameterMapping(
key_string="tubes(%i)" % i,
tokenizer="=",
parameter_definition_id=str_input_params[i - 1].id,
parameter_definition_id=params[pi].id,
file_id=file_ids["inp"],
)
)

# Output Params
output_params = []
for pname in ["weight", "torsion_stiffness", "max_stress"]:
output_params.append(FloatParameterDefinition(name=pname))
output_params = project_api.create_parameter_definitions(output_params)
for pd in output_params:
pi += 1
for name in ["weight", "torsion_stiffness", "max_stress"]:
param_mappings.append(
ParameterMapping(
key_string=pd.name,
key_string=name,
tokenizer="=",
parameter_definition_id=pd.id,
parameter_definition_id=params[pi].id,
file_id=file_ids["results"],
)
)

stat_params = []
# # Collect some runtime stats from MAPDL out file
stat_params.append(FloatParameterDefinition(name="mapdl_elapsed_time_obtain_license"))
stat_params.append(FloatParameterDefinition(name="mapdl_cp_time"))
stat_params.append(FloatParameterDefinition(name="mapdl_elapsed_time"))
stat_params = project_api.create_parameter_definitions(stat_params)

pi += 1
param_mappings.append(
ParameterMapping(
key_string="Elapsed time spent obtaining a license",
tokenizer=":",
parameter_definition_id=stat_params[0].id,
parameter_definition_id=params[pi].id,
file_id=file_ids["out"],
)
)
pi += 1
param_mappings.append(
ParameterMapping(
key_string="CP Time (sec)",
tokenizer="=",
parameter_definition_id=stat_params[1].id,
parameter_definition_id=params[pi].id,
file_id=file_ids["out"],
)
)
pi += 1
param_mappings.append(
ParameterMapping(
key_string="Elapsed Time (sec)",
tokenizer="=",
parameter_definition_id=stat_params[2].id,
parameter_definition_id=params[pi].id,
file_id=file_ids["out"],
)
)

# For demonstration purpose we also define some parameter replacements
# that refer to task definition properties
param_mappings.append(
Expand Down Expand Up @@ -259,6 +265,7 @@ def create_project(
file_id=file_ids["inp"],
)
)
param_mappings = project_api.create_parameter_mappings(param_mappings)

# Task definition
task_def = TaskDefinition(
Expand Down Expand Up @@ -292,8 +299,9 @@ def create_project(
task_def.execution_script_id = file_ids["exec_mapdl"]

task_defs = [task_def]
task_defs = project_api.create_task_definitions(task_defs)

# # Fitness definition
# Fitness definition
fd = FitnessDefinition(error_fitness=10.0)
fd.add_fitness_term(
name="weight",
Expand All @@ -315,28 +323,24 @@ def create_project(
)
job_def.fitness_definition = fd

task_defs = project_api.create_task_definitions(task_defs)
param_mappings = project_api.create_parameter_mappings(param_mappings)

job_def.parameter_definition_ids = [
pd.id for pd in float_input_params + str_input_params + output_params + stat_params
]
job_def.parameter_definition_ids = [pd.id for pd in params]
job_def.parameter_mapping_ids = [pm.id for pm in param_mappings]
job_def.task_definition_ids = [td.id for td in task_defs]

# Create job_definition in project
job_def = project_api.create_job_definitions([job_def])[0]

job_def = project_api.get_job_definitions()[0]

log.debug(f"=== Create {num_jobs} jobs")
jobs = []
params = project_api.get_parameter_definitions()
input_float_params = [p for p in params if p.mode == "input" and p.type == "float"]
input_str_params = [p for p in params if p.mode == "input" and p.type == "string"]
for i in range(num_jobs):
values = {
p.name: p.lower_limit + random.random() * (p.upper_limit - p.lower_limit)
for p in float_input_params
for p in input_float_params
}
values.update({p.name: random.choice(p.value_list) for p in str_input_params})
values.update({p.name: random.choice(p.value_list) for p in input_str_params})
jobs.append(
Job(name=f"Job.{i}", values=values, eval_status="pending", job_definition_id=job_def.id)
)
Expand Down
10 changes: 8 additions & 2 deletions examples/mapdl_tyre_performance/project_setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -117,27 +117,31 @@ def create_project(
lower_limit=-8.0,
upper_limit=8.0,
default=0.0,
mode="input",
),
FloatParameterDefinition(
name="inflation_pressure",
display_text="Inflation Pressure",
lower_limit=0.15e06,
upper_limit=0.3e06,
default=0.24e06,
mode="input",
),
FloatParameterDefinition(
name="rotational_velocity",
display_text="Rotational Velocity",
lower_limit=0.0,
upper_limit=70.0,
default=50.0,
mode="input",
),
FloatParameterDefinition(
name="translational_velocity",
display_text="Translational Velocity",
lower_limit=0.0,
upper_limit=30.0,
default=20.0,
mode="input",
),
]
input_params = project_api.create_parameter_definitions(input_params)
Expand Down Expand Up @@ -173,8 +177,10 @@ def create_project(

# Collect some runtime stats from MAPDL out file
output_params = [
FloatParameterDefinition(name="mapdl_cp_time", display_text="MAPDL CP Time"),
FloatParameterDefinition(name="mapdl_elapsed_time", display_text="MAPDL Elapsed Time"),
FloatParameterDefinition(name="mapdl_cp_time", display_text="MAPDL CP Time", mode="output"),
FloatParameterDefinition(
name="mapdl_elapsed_time", display_text="MAPDL Elapsed Time", mode="output"
),
]
output_params = project_api.create_parameter_definitions(output_params)

Expand Down
4 changes: 3 additions & 1 deletion examples/python_large_output/project_setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,9 @@ def main(client, use_exec_script, python_version=None) -> Project:

# Input params
input_params = [
IntParameterDefinition(name="size", lower_limit=1, upper_limit=1000, default=1),
IntParameterDefinition(
name="size", lower_limit=1, upper_limit=1000, default=1, mode="input"
),
]
input_params = project_api.create_parameter_definitions(input_params)

Expand Down
7 changes: 5 additions & 2 deletions examples/python_linked_multi_process_step/project_setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,10 +102,13 @@ def main(client, num_task_definitions, num_jobs, start, inactive, python_version

log.debug("=== Parameters")
params = [
FloatParameterDefinition(name="start", lower_limit=1.0, upper_limit=start),
FloatParameterDefinition(name="start", lower_limit=1.0, upper_limit=start, mode="input"),
]
params.extend(
[FloatParameterDefinition(name=f"product{i}") for i in range(num_task_definitions)]
[
FloatParameterDefinition(name=f"product{i}", mode="output")
for i in range(num_task_definitions)
]
)
params = project_api.create_parameter_definitions(params)
job_def.parameter_definition_ids = [o.id for o in params]
Expand Down
9 changes: 6 additions & 3 deletions examples/python_multi_process_step/project_setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -160,15 +160,18 @@ def main(
mappings = []
for i in range(num_task_definitions):
new_params = [
IntParameterDefinition(name=f"period{i}", lower_limit=1, upper_limit=period, units="s"),
IntParameterDefinition(
name=f"duration{i}", lower_limit=0, upper_limit=duration, units="s"
name=f"period{i}", lower_limit=1, upper_limit=period, units="s", mode="input"
),
IntParameterDefinition(name=f"steps{i}", units=""),
IntParameterDefinition(
name=f"duration{i}", lower_limit=0, upper_limit=duration, units="s", mode="input"
),
IntParameterDefinition(name=f"steps{i}", units="", mode="output"),
StringParameterDefinition(
name=f"color{i}",
value_list=["red", "blue", "green", "yellow", "cyan"],
default='"orange"',
mode="input",
),
]
new_params = project_api.create_parameter_definitions(new_params)
Expand Down
42 changes: 31 additions & 11 deletions examples/python_two_bar_truss_problem/project_setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -108,25 +108,45 @@ def main(client, num_jobs, use_exec_script, python_version=None) -> Project:
# Input params
input_params = [
FloatParameterDefinition(
name="height", lower_limit=10, upper_limit=100.0, default=30, units="in"
name="height", lower_limit=10, upper_limit=100.0, default=30, units="in", mode="input"
),
FloatParameterDefinition(
name="diameter", lower_limit=0.2, upper_limit=5, default=3, units="in"
name="diameter", lower_limit=0.2, upper_limit=5, default=3, units="in", mode="input"
),
FloatParameterDefinition(
name="thickness", lower_limit=0.03, upper_limit=0.6, default=0.15, units="in"
name="thickness",
lower_limit=0.03,
upper_limit=0.6,
default=0.15,
units="in",
mode="input",
),
FloatParameterDefinition(
name="separation_distance", lower_limit=40, upper_limit=150, default=60, units="in"
name="separation_distance",
lower_limit=40,
upper_limit=150,
default=60,
units="in",
mode="input",
),
FloatParameterDefinition(
name="young_modulus", lower_limit=1e6, upper_limit=1e8, default=3e7, units="lbs in^-2"
name="young_modulus",
lower_limit=1e6,
upper_limit=1e8,
default=3e7,
units="lbs in^-2",
mode="input",
),
FloatParameterDefinition(
name="density", lower_limit=0.1, upper_limit=0.6, default=0.3, units="lbs in^-2"
name="density",
lower_limit=0.1,
upper_limit=0.6,
default=0.3,
units="lbs in^-2",
mode="input",
),
FloatParameterDefinition(
name="load", lower_limit=1e1, upper_limit=1e5, default=66e3, units="lbs"
name="load", lower_limit=1e1, upper_limit=1e5, default=66e3, units="lbs", mode="input"
),
]
input_params = project_api.create_parameter_definitions(input_params)
Expand Down Expand Up @@ -177,10 +197,10 @@ def main(client, num_jobs, use_exec_script, python_version=None) -> Project:
]

output_params = [
FloatParameterDefinition(name="weight", units="lbs"),
FloatParameterDefinition(name="stress", units="ksi"),
FloatParameterDefinition(name="buckling_stress", units="ksi"),
FloatParameterDefinition(name="deflection", units="in"),
FloatParameterDefinition(name="weight", units="lbs", mode="output"),
FloatParameterDefinition(name="stress", units="ksi", mode="output"),
FloatParameterDefinition(name="buckling_stress", units="ksi", mode="output"),
FloatParameterDefinition(name="deflection", units="in", mode="output"),
]
output_params = project_api.create_parameter_definitions(output_params)

Expand Down
Loading
Loading