From 8e26595595c47b66e7b6637b1a08b398d18b8053 Mon Sep 17 00:00:00 2001 From: Pascal Engeler Date: Wed, 19 Feb 2025 17:22:43 +0100 Subject: [PATCH 1/9] Adjusted schema to existence of mode --- src/ansys/hps/client/jms/schema/parameter_definition.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ansys/hps/client/jms/schema/parameter_definition.py b/src/ansys/hps/client/jms/schema/parameter_definition.py index 665184b12..7767ac274 100644 --- a/src/ansys/hps/client/jms/schema/parameter_definition.py +++ b/src/ansys/hps/client/jms/schema/parameter_definition.py @@ -49,7 +49,8 @@ class Meta(ObjectSchemaWithModificationInfo.Meta): ) mode = fields.String( - load_only=True, + #load_only=True, + allow_none=True, metadata={ "description": "Indicates whether it's an input " "or output parameter. The mode is filled server-side." From 8751f7a2b71aefc7813492f90b2a622872bd82c5 Mon Sep 17 00:00:00 2001 From: Pascal Engeler Date: Wed, 19 Feb 2025 17:23:53 +0100 Subject: [PATCH 2/9] Added explicit mode to parameters --- .../mapdl_motorbike_frame/project_setup.py | 14 ++++++------ .../mapdl_tyre_performance/project_setup.py | 8 +++++-- examples/python_large_output/project_setup.py | 2 +- .../project_setup.py | 4 ++-- .../project_setup.py | 9 ++++---- .../project_setup.py | 22 +++++++++---------- 6 files changed, 32 insertions(+), 27 deletions(-) diff --git a/examples/mapdl_motorbike_frame/project_setup.py b/examples/mapdl_motorbike_frame/project_setup.py index 10c1dae4e..52b2c1cf3 100644 --- a/examples/mapdl_motorbike_frame/project_setup.py +++ b/examples/mapdl_motorbike_frame/project_setup.py @@ -127,10 +127,10 @@ def create_project( float_input_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" ), ] ) @@ -162,7 +162,7 @@ def create_project( 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"]) + StringParameterDefinition(name="tube%s" % i, default="1", value_list=["1", "2", "3"], mode="input") ) str_input_params = project_api.create_parameter_definitions(str_input_params) @@ -179,7 +179,7 @@ def create_project( # Output Params output_params = [] for pname in ["weight", "torsion_stiffness", "max_stress"]: - output_params.append(FloatParameterDefinition(name=pname)) + output_params.append(FloatParameterDefinition(name=pname, mode="output")) output_params = project_api.create_parameter_definitions(output_params) for pd in output_params: param_mappings.append( @@ -193,9 +193,9 @@ def create_project( 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.append(FloatParameterDefinition(name="mapdl_elapsed_time_obtain_license", mode="output")) + stat_params.append(FloatParameterDefinition(name="mapdl_cp_time", mode="output")) + stat_params.append(FloatParameterDefinition(name="mapdl_elapsed_time", mode="output")) stat_params = project_api.create_parameter_definitions(stat_params) param_mappings.append( diff --git a/examples/mapdl_tyre_performance/project_setup.py b/examples/mapdl_tyre_performance/project_setup.py index 30fbc1e70..c918e66ff 100644 --- a/examples/mapdl_tyre_performance/project_setup.py +++ b/examples/mapdl_tyre_performance/project_setup.py @@ -117,6 +117,7 @@ def create_project( lower_limit=-8.0, upper_limit=8.0, default=0.0, + mode="input" ), FloatParameterDefinition( name="inflation_pressure", @@ -124,6 +125,7 @@ def create_project( lower_limit=0.15e06, upper_limit=0.3e06, default=0.24e06, + mode="input" ), FloatParameterDefinition( name="rotational_velocity", @@ -131,6 +133,7 @@ def create_project( lower_limit=0.0, upper_limit=70.0, default=50.0, + mode="input" ), FloatParameterDefinition( name="translational_velocity", @@ -138,6 +141,7 @@ def create_project( lower_limit=0.0, upper_limit=30.0, default=20.0, + mode="input" ), ] input_params = project_api.create_parameter_definitions(input_params) @@ -173,8 +177,8 @@ 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) diff --git a/examples/python_large_output/project_setup.py b/examples/python_large_output/project_setup.py index 79d4e993e..fddcc422a 100644 --- a/examples/python_large_output/project_setup.py +++ b/examples/python_large_output/project_setup.py @@ -94,7 +94,7 @@ 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) diff --git a/examples/python_linked_multi_process_step/project_setup.py b/examples/python_linked_multi_process_step/project_setup.py index 6ef948aae..127675cb2 100644 --- a/examples/python_linked_multi_process_step/project_setup.py +++ b/examples/python_linked_multi_process_step/project_setup.py @@ -102,10 +102,10 @@ 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] diff --git a/examples/python_multi_process_step/project_setup.py b/examples/python_multi_process_step/project_setup.py index 6ca547793..a4cf7119e 100644 --- a/examples/python_multi_process_step/project_setup.py +++ b/examples/python_multi_process_step/project_setup.py @@ -64,7 +64,7 @@ TaskDefinition, ) -from .task_files import update_task_files +#from .task_files import update_task_files log = logging.getLogger(__name__) @@ -160,15 +160,16 @@ 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"period{i}", lower_limit=1, upper_limit=period, units="s", mode="input"), IntParameterDefinition( - name=f"duration{i}", lower_limit=0, upper_limit=duration, units="s" + name=f"duration{i}", lower_limit=0, upper_limit=duration, units="s", mode="input" ), - IntParameterDefinition(name=f"steps{i}", units=""), + 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) diff --git a/examples/python_two_bar_truss_problem/project_setup.py b/examples/python_two_bar_truss_problem/project_setup.py index f9581281d..ad1cd4095 100644 --- a/examples/python_two_bar_truss_problem/project_setup.py +++ b/examples/python_two_bar_truss_problem/project_setup.py @@ -108,25 +108,25 @@ 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) @@ -177,10 +177,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) From c64ab4a0383ca3264ef2fcbd9b3de9480b4e66f6 Mon Sep 17 00:00:00 2001 From: Pascal Engeler Date: Thu, 20 Feb 2025 08:24:02 +0100 Subject: [PATCH 3/9] Revert import commenting --- examples/python_multi_process_step/project_setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/python_multi_process_step/project_setup.py b/examples/python_multi_process_step/project_setup.py index a4cf7119e..6fbbf1405 100644 --- a/examples/python_multi_process_step/project_setup.py +++ b/examples/python_multi_process_step/project_setup.py @@ -64,7 +64,7 @@ TaskDefinition, ) -#from .task_files import update_task_files +from .task_files import update_task_files log = logging.getLogger(__name__) From fe18f9ac87a9e5bec4c50e18babb141ae46c31a4 Mon Sep 17 00:00:00 2001 From: Pascal Engeler Date: Thu, 20 Feb 2025 08:41:20 +0100 Subject: [PATCH 4/9] Enforce coding style --- .../mapdl_motorbike_frame/project_setup.py | 20 ++++++++++--- .../mapdl_tyre_performance/project_setup.py | 12 ++++---- examples/python_large_output/project_setup.py | 4 ++- .../project_setup.py | 5 +++- .../project_setup.py | 6 ++-- .../project_setup.py | 28 ++++++++++++++++--- .../client/jms/schema/parameter_definition.py | 2 +- 7 files changed, 59 insertions(+), 18 deletions(-) diff --git a/examples/mapdl_motorbike_frame/project_setup.py b/examples/mapdl_motorbike_frame/project_setup.py index 52b2c1cf3..df5b2d948 100644 --- a/examples/mapdl_motorbike_frame/project_setup.py +++ b/examples/mapdl_motorbike_frame/project_setup.py @@ -127,10 +127,18 @@ def create_project( float_input_params.extend( [ FloatParameterDefinition( - name="tube%i_radius" % i, lower_limit=4.0, upper_limit=20.0, default=12.0, mode="input" + 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, mode="input" + name="tube%i_thickness" % i, + lower_limit=0.5, + upper_limit=2.5, + default=1.0, + mode="input", ), ] ) @@ -162,7 +170,9 @@ def create_project( 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"], mode="input") + StringParameterDefinition( + name="tube%s" % i, default="1", value_list=["1", "2", "3"], mode="input" + ) ) str_input_params = project_api.create_parameter_definitions(str_input_params) @@ -193,7 +203,9 @@ def create_project( stat_params = [] # # Collect some runtime stats from MAPDL out file - stat_params.append(FloatParameterDefinition(name="mapdl_elapsed_time_obtain_license", mode="output")) + stat_params.append( + FloatParameterDefinition(name="mapdl_elapsed_time_obtain_license", mode="output") + ) stat_params.append(FloatParameterDefinition(name="mapdl_cp_time", mode="output")) stat_params.append(FloatParameterDefinition(name="mapdl_elapsed_time", mode="output")) stat_params = project_api.create_parameter_definitions(stat_params) diff --git a/examples/mapdl_tyre_performance/project_setup.py b/examples/mapdl_tyre_performance/project_setup.py index c918e66ff..a2752c73e 100644 --- a/examples/mapdl_tyre_performance/project_setup.py +++ b/examples/mapdl_tyre_performance/project_setup.py @@ -117,7 +117,7 @@ def create_project( lower_limit=-8.0, upper_limit=8.0, default=0.0, - mode="input" + mode="input", ), FloatParameterDefinition( name="inflation_pressure", @@ -125,7 +125,7 @@ def create_project( lower_limit=0.15e06, upper_limit=0.3e06, default=0.24e06, - mode="input" + mode="input", ), FloatParameterDefinition( name="rotational_velocity", @@ -133,7 +133,7 @@ def create_project( lower_limit=0.0, upper_limit=70.0, default=50.0, - mode="input" + mode="input", ), FloatParameterDefinition( name="translational_velocity", @@ -141,7 +141,7 @@ def create_project( lower_limit=0.0, upper_limit=30.0, default=20.0, - mode="input" + mode="input", ), ] input_params = project_api.create_parameter_definitions(input_params) @@ -178,7 +178,9 @@ def create_project( # Collect some runtime stats from MAPDL out file output_params = [ FloatParameterDefinition(name="mapdl_cp_time", display_text="MAPDL CP Time", mode="output"), - FloatParameterDefinition(name="mapdl_elapsed_time", display_text="MAPDL Elapsed Time", mode="output"), + FloatParameterDefinition( + name="mapdl_elapsed_time", display_text="MAPDL Elapsed Time", mode="output" + ), ] output_params = project_api.create_parameter_definitions(output_params) diff --git a/examples/python_large_output/project_setup.py b/examples/python_large_output/project_setup.py index fddcc422a..9fb85493b 100644 --- a/examples/python_large_output/project_setup.py +++ b/examples/python_large_output/project_setup.py @@ -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, mode="input"), + IntParameterDefinition( + name="size", lower_limit=1, upper_limit=1000, default=1, mode="input" + ), ] input_params = project_api.create_parameter_definitions(input_params) diff --git a/examples/python_linked_multi_process_step/project_setup.py b/examples/python_linked_multi_process_step/project_setup.py index 127675cb2..5a72de038 100644 --- a/examples/python_linked_multi_process_step/project_setup.py +++ b/examples/python_linked_multi_process_step/project_setup.py @@ -105,7 +105,10 @@ def main(client, num_task_definitions, num_jobs, start, inactive, python_version FloatParameterDefinition(name="start", lower_limit=1.0, upper_limit=start, mode="input"), ] params.extend( - [FloatParameterDefinition(name=f"product{i}", mode="output") 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] diff --git a/examples/python_multi_process_step/project_setup.py b/examples/python_multi_process_step/project_setup.py index 6fbbf1405..9d16a8d6c 100644 --- a/examples/python_multi_process_step/project_setup.py +++ b/examples/python_multi_process_step/project_setup.py @@ -160,7 +160,9 @@ 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", mode="input"), + IntParameterDefinition( + name=f"period{i}", lower_limit=1, upper_limit=period, units="s", mode="input" + ), IntParameterDefinition( name=f"duration{i}", lower_limit=0, upper_limit=duration, units="s", mode="input" ), @@ -169,7 +171,7 @@ def main( name=f"color{i}", value_list=["red", "blue", "green", "yellow", "cyan"], default='"orange"', - mode="input" + mode="input", ), ] new_params = project_api.create_parameter_definitions(new_params) diff --git a/examples/python_two_bar_truss_problem/project_setup.py b/examples/python_two_bar_truss_problem/project_setup.py index ad1cd4095..bcb8324d4 100644 --- a/examples/python_two_bar_truss_problem/project_setup.py +++ b/examples/python_two_bar_truss_problem/project_setup.py @@ -114,16 +114,36 @@ def main(client, num_jobs, use_exec_script, python_version=None) -> Project: 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", mode="input" + 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", mode="input" + 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", mode="input" + 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", mode="input" + 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", mode="input" diff --git a/src/ansys/hps/client/jms/schema/parameter_definition.py b/src/ansys/hps/client/jms/schema/parameter_definition.py index 7767ac274..bdf22f15f 100644 --- a/src/ansys/hps/client/jms/schema/parameter_definition.py +++ b/src/ansys/hps/client/jms/schema/parameter_definition.py @@ -49,7 +49,7 @@ class Meta(ObjectSchemaWithModificationInfo.Meta): ) mode = fields.String( - #load_only=True, + # load_only=True, allow_none=True, metadata={ "description": "Indicates whether it's an input " From 102f2a8c63441988eedf5de215433842855529f4 Mon Sep 17 00:00:00 2001 From: Pascal Engeler Date: Mon, 24 Feb 2025 14:49:20 +0100 Subject: [PATCH 5/9] Removed old code --- src/ansys/hps/client/jms/schema/parameter_definition.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/ansys/hps/client/jms/schema/parameter_definition.py b/src/ansys/hps/client/jms/schema/parameter_definition.py index bdf22f15f..7b606063c 100644 --- a/src/ansys/hps/client/jms/schema/parameter_definition.py +++ b/src/ansys/hps/client/jms/schema/parameter_definition.py @@ -49,7 +49,6 @@ class Meta(ObjectSchemaWithModificationInfo.Meta): ) mode = fields.String( - # load_only=True, allow_none=True, metadata={ "description": "Indicates whether it's an input " From bcad099d220e02f42443919bb6c9c6c2dad792f6 Mon Sep 17 00:00:00 2001 From: Pascal Engeler Date: Thu, 27 Feb 2025 13:01:47 +0100 Subject: [PATCH 6/9] Refactored Ducati --- .../mapdl_motorbike_frame/project_setup.py | 96 +++++++++---------- 1 file changed, 44 insertions(+), 52 deletions(-) diff --git a/examples/mapdl_motorbike_frame/project_setup.py b/examples/mapdl_motorbike_frame/project_setup.py index df5b2d948..286503277 100644 --- a/examples/mapdl_motorbike_frame/project_setup.py +++ b/examples/mapdl_motorbike_frame/project_setup.py @@ -74,6 +74,7 @@ def create_project( project_api = ProjectApi(client, proj.id) + # File definitions log.debug("=== Files") cwd = os.path.dirname(__file__) files = [] @@ -121,10 +122,11 @@ 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, @@ -142,8 +144,24 @@ def create_project( ), ] ) - - 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): @@ -151,7 +169,7 @@ def create_project( 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"], ) ) @@ -160,81 +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"], mode="input" - ) - ) - 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, mode="output")) - 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", mode="output") - ) - stat_params.append(FloatParameterDefinition(name="mapdl_cp_time", mode="output")) - stat_params.append(FloatParameterDefinition(name="mapdl_elapsed_time", mode="output")) - 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( @@ -271,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( @@ -304,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", @@ -327,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) ) From 5b39a4d99b653bfcb0d6d2206d042a71db2ba0cf Mon Sep 17 00:00:00 2001 From: Pascal Engeler Date: Thu, 27 Feb 2025 13:34:04 +0100 Subject: [PATCH 7/9] Updated test to new jms --- tests/jms/test_parameter_definitions.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/jms/test_parameter_definitions.py b/tests/jms/test_parameter_definitions.py index 7b186dc8d..1c13cb753 100644 --- a/tests/jms/test_parameter_definitions.py +++ b/tests/jms/test_parameter_definitions.py @@ -160,7 +160,6 @@ def test_parameter_definition_serialization(): assert serialized_ip["type"] == "int" assert serialized_ip["name"] == "int_param" assert serialized_ip["upper_limit"] == 27 - assert not "mode" in serialized_ip.keys() sp = StringParameterDefinition(name="s_param", value_list=["l1", "l2"]) serialized_sp = StringParameterDefinitionSchema().dump(sp) From 7aa3ac3b1370adb61492d1fe9e7fff49e5c88133 Mon Sep 17 00:00:00 2001 From: Pascal Engeler Date: Fri, 28 Feb 2025 10:37:44 +0100 Subject: [PATCH 8/9] Adjust docstrings --- .../client/jms/resource/parameter_definition.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/ansys/hps/client/jms/resource/parameter_definition.py b/src/ansys/hps/client/jms/resource/parameter_definition.py index aedc81e15..a039d2d56 100644 --- a/src/ansys/hps/client/jms/resource/parameter_definition.py +++ b/src/ansys/hps/client/jms/resource/parameter_definition.py @@ -83,8 +83,8 @@ class FloatParameterDefinition(ParameterDefinition): Units for the parameter. display_text : str, optional Text to display as the parameter name. - mode : str - Indicates whether it's an input or output parameter. The mode is filled server-side. + mode : str, optional + Indicates whether it's an input or output parameter. If not provided, the server will default the mode to ``input``. type : str default : float, optional Default parameter value. @@ -172,8 +172,8 @@ class IntParameterDefinition(ParameterDefinition): Units for the parameter. display_text : str, optional Text to display as the parameter name. - mode : str - Indicates whether it's an input or output parameter. The mode is filled server-side. + mode : str, optional + Indicates whether it's an input or output parameter. If not provided, the server will default the mode to ``input``. type : str default : int, optional Default parameter value. @@ -257,8 +257,8 @@ class BoolParameterDefinition(ParameterDefinition): Units for the parameter. display_text : str, optional Text to display as the parameter name. - mode : str - Indicates whether it's an input or output parameter. The mode is filled server-side. + mode : str, optional + Indicates whether it's an input or output parameter. If not provided, the server will default the mode to ``input``. type : str default : bool, optional Default parameter value. @@ -326,8 +326,8 @@ class StringParameterDefinition(ParameterDefinition): Units for the parameter. display_text : str, optional Text to display as the parameter name. - mode : str - Indicates whether it's an input or output parameter. The mode is filled server-side. + mode : str, optional + Indicates whether it's an input or output parameter. If not provided, the server will default the mode to ``input``. type : str default : str, optional Default parameter value. From 6d7cce3f06535f30b03a76367efaee98569ed792 Mon Sep 17 00:00:00 2001 From: Pascal Engeler Date: Fri, 28 Feb 2025 10:39:20 +0100 Subject: [PATCH 9/9] Update metadata description --- src/ansys/hps/client/jms/schema/parameter_definition.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ansys/hps/client/jms/schema/parameter_definition.py b/src/ansys/hps/client/jms/schema/parameter_definition.py index 7b606063c..b43793d9a 100644 --- a/src/ansys/hps/client/jms/schema/parameter_definition.py +++ b/src/ansys/hps/client/jms/schema/parameter_definition.py @@ -52,7 +52,8 @@ class Meta(ObjectSchemaWithModificationInfo.Meta): allow_none=True, metadata={ "description": "Indicates whether it's an input " - "or output parameter. The mode is filled server-side." + "or output parameter. If not provided, the server " + "will default the mode to input." }, )