+{# Load FontAwesome icons #}
+{% macro head_pre_icons() %}
+
+
+
+
+{% endmacro %}
+
+{% macro head_pre_assets() %}
+
+
+
+
+{% endmacro %}
+
+{% macro head_js_preload() %}
+
+
+
+
+{% endmacro %}
+
+{% macro body_post() %}
+
+
+
+{% endmacro %}
\ No newline at end of file
diff --git a/version/0.10/announcement.html b/version/0.10/announcement.html
new file mode 100644
index 000000000..a838ea4eb
--- /dev/null
+++ b/version/0.10/announcement.html
@@ -0,0 +1,4 @@
+
+ You are not viewing the most recent version of this documentation.
+ The latest stable release is 0.11
+
diff --git a/version/0.10/api/_autosummary/ansys.mechanical.core.Mechanical.clear.html b/version/0.10/api/_autosummary/ansys.mechanical.core.Mechanical.clear.html
new file mode 100644
index 000000000..b84d8b940
--- /dev/null
+++ b/version/0.10/api/_autosummary/ansys.mechanical.core.Mechanical.clear.html
@@ -0,0 +1,762 @@
+
+
+
+
+
+
+
+
+
+
+ clear — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+clear
+
+
+Mechanical. clear ( )
+Clear the database.
+Examples
+Clear the database.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/api/_autosummary/ansys.mechanical.core.Mechanical.download.html b/version/0.10/api/_autosummary/ansys.mechanical.core.Mechanical.download.html
new file mode 100644
index 000000000..9476430ec
--- /dev/null
+++ b/version/0.10/api/_autosummary/ansys.mechanical.core.Mechanical.download.html
@@ -0,0 +1,819 @@
+
+
+
+
+
+
+
+
+
+
+ download — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+download
+
+
+Mechanical. download ( files , target_dir = None , chunk_size = 262144 , progress_bar = None , recursive = False )
+Download files from the working directory of the Mechanical instance.
+
+It downloads them from the working directory to the target directory. It returns the list
+of local file paths for the downloaded files.
+
+
+Parameters:
+
+files str
, list
[str
], tuple
(str
)One or more files on the Mechanical server to download. The files must be
+in the same directory as the Mechanical instance. You can use the
+Mechanical.list_files
+function to list current files. Alternatively, you can specify glob expressions to
+match file names. For example, you could use file*
to match every file whose
+name starts with file
.
+
+target_dir: str Default directory to copy the downloaded files to. The default is None
and
+current working directory will be used as target directory.
+
+chunk_size int
, optional
Chunk size in bytes. The default is 262144
. The value must be less than 4 MB.
+
+progress_bar bool , optional
Whether to show a progress bar using tqdm
. The default is None
, in
+which case a progress bar is shown. A progress bar is helpful for viewing download
+progress.
+
+recursive bool , optional
Whether to use recursion when using a glob pattern search. The default is False
.
+
+
+
+Returns:
+
+List
[str
]List of local file paths.
+
+
+
+
+Notes
+There are some considerations to keep in mind when using the download()
method:
+
+The glob pattern search does not search recursively in remote instances.
+In a remote instance, it is not possible to list or download files in a
+location other than the Mechanical working directory.
+If you are connected to a local instance and provide a file path, downloading files
+from a different folder is allowed but is not recommended.
+
+Examples
+Download a single file.
+>>> local_file_path_list = mechanical . download ( 'file.out' )
+
+
+Download all files starting with file
.
+>>> local_file_path_list = mechanical . download ( 'file*' )
+
+
+Download every file in the Mechanical working directory.
+>>> local_file_path_list = mechanical . download ( '*.*' )
+
+
+Alternatively, the recommended method is to use the
+download_project()
+method to download all files.
+>>> local_file_path_list = mechanical . download_project ()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/api/_autosummary/ansys.mechanical.core.Mechanical.download_project.html b/version/0.10/api/_autosummary/ansys.mechanical.core.Mechanical.download_project.html
new file mode 100644
index 000000000..1924a84cb
--- /dev/null
+++ b/version/0.10/api/_autosummary/ansys.mechanical.core.Mechanical.download_project.html
@@ -0,0 +1,784 @@
+
+
+
+
+
+
+
+
+
+
+ download_project — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+download_project
+
+
+Mechanical. download_project ( extensions = None , target_dir = None , progress_bar = False )
+Download all project files in the working directory of the Mechanical instance.
+It downloads them from the working directory to the target directory. It returns the list
+of local file paths for the downloaded files.
+
+Parameters:
+
+extensions list
[str
], tuple
[str
], optional
List of extensions for filtering files before downloading them. The
+default is None
.
+
+target_dir str
, optional
Path for downloading the files to. The default is None
.
+
+progress_bar bool , optional
Whether to show a progress bar using tqdm
. The default is False
.
+A progress bar is helpful for viewing download progress.
+
+
+
+Returns:
+
+List
[str
]List of local file paths.
+
+
+
+
+Examples
+Download all the files in the project.
+>>> local_file_path_list = mechanical . download_project ()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/api/_autosummary/ansys.mechanical.core.Mechanical.exit.html b/version/0.10/api/_autosummary/ansys.mechanical.core.Mechanical.exit.html
new file mode 100644
index 000000000..6856c817e
--- /dev/null
+++ b/version/0.10/api/_autosummary/ansys.mechanical.core.Mechanical.exit.html
@@ -0,0 +1,772 @@
+
+
+
+
+
+
+
+
+
+
+ exit — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+exit
+
+
+Mechanical. exit ( force = False )
+Exit Mechanical.
+
+Parameters:
+
+force bool , optional
Whether to force Mechanical to exit. The default is False
, in which case
+only Mechanical in UI mode asks for confirmation. This parameter overrides
+any environment variables that may inhibit exiting Mechanical.
+
+
+
+
+Examples
+Exit Mechanical.
+>>> mechanical . Exit ( force = True )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/api/_autosummary/ansys.mechanical.core.Mechanical.list_files.html b/version/0.10/api/_autosummary/ansys.mechanical.core.Mechanical.list_files.html
new file mode 100644
index 000000000..f0a98a4c1
--- /dev/null
+++ b/version/0.10/api/_autosummary/ansys.mechanical.core.Mechanical.list_files.html
@@ -0,0 +1,771 @@
+
+
+
+
+
+
+
+
+
+
+ list_files — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+list_files
+
+
+Mechanical. list_files ( )
+List the files in the working directory of Mechanical.
+
+Returns:
+
+list
List of files in the working directory of Mechanical.
+
+
+
+
+Examples
+List the files in the working directory.
+>>> files = mechanical . list_files ()
+>>> for file in files : print ( file )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/api/_autosummary/ansys.mechanical.core.Mechanical.log_message.html b/version/0.10/api/_autosummary/ansys.mechanical.core.Mechanical.log_message.html
new file mode 100644
index 000000000..6afc2fc58
--- /dev/null
+++ b/version/0.10/api/_autosummary/ansys.mechanical.core.Mechanical.log_message.html
@@ -0,0 +1,777 @@
+
+
+
+
+
+
+
+
+
+
+ log_message — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+log_message
+
+
+Mechanical. log_message ( log_level , message )
+Log the message using the given log level.
+
+Parameters:
+
+log_level: str Level of logging. Options are "DEBUG"
, "INFO"
, "WARNING"
,
+and "ERROR"
.
+
+message str
Message to log.
+
+
+
+
+Examples
+Log a debug message.
+>>> mechanical . log_message ( 'DEBUG' , 'debug message' )
+
+
+Log an info message.
+>>> mechanical . log_message ( 'INFO' , 'info message' )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/api/_autosummary/ansys.mechanical.core.Mechanical.project_directory.html b/version/0.10/api/_autosummary/ansys.mechanical.core.Mechanical.project_directory.html
new file mode 100644
index 000000000..eda3aaa25
--- /dev/null
+++ b/version/0.10/api/_autosummary/ansys.mechanical.core.Mechanical.project_directory.html
@@ -0,0 +1,763 @@
+
+
+
+
+
+
+
+
+
+
+ project_directory — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+project_directory
+
+
+property Mechanical. project_directory
+Get the project directory for the currently connected Mechanical instance.
+Examples
+Get the project directory of the connected Mechanical instance.
+>>> mechanical . project_directory
+'/tmp/ANSYS.username.1/AnsysMech3F97/Project_Mech_Files/'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/api/_autosummary/ansys.mechanical.core.Mechanical.run_python_script.html b/version/0.10/api/_autosummary/ansys.mechanical.core.Mechanical.run_python_script.html
new file mode 100644
index 000000000..8b76bf848
--- /dev/null
+++ b/version/0.10/api/_autosummary/ansys.mechanical.core.Mechanical.run_python_script.html
@@ -0,0 +1,831 @@
+
+
+
+
+
+
+
+
+
+
+ run_python_script — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+run_python_script
+
+
+Mechanical. run_python_script ( script_block , enable_logging = False , log_level = 'WARNING' , progress_interval = 2000 )
+Run a Python script block inside Mechanical.
+It returns the string value of the last executed statement. If the value cannot be
+returned as a string, it will return an empty string.
+
+Parameters:
+
+script_block str
Script block (one or more lines) to run.
+
+enable_logging: bool, optional Whether to enable logging. The default is False
.
+
+log_level: str Level of logging. The default is "WARNING"
. Options are "DEBUG"
,
+"INFO"
, "WARNING"
, and "ERROR"
.
+
+progress_interval: int, optional Frequency in milliseconds for getting log messages from the server.
+The default is 2000
.
+
+
+
+Returns:
+
+str
Script result.
+
+
+
+
+Examples
+Return a value from a simple calculation.
+>>> mechanical . run_python_script ( '2+3' )
+'5'
+
+
+Return a string value from Project object.
+>>> mechanical . run_python_script ( 'ExtAPI.DataModel.Project.ProductVersion' )
+'2023 R1'
+
+
+Return an empty string, when you try to return the Project object.
+>>> mechanical . run_python_script ( 'ExtAPI.DataModel.Project' )
+''
+
+
+Return an empty string for assignments.
+>>> mechanical . run_python_script ( 'version = ExtAPI.DataModel.Project.ProductVersion' )
+''
+
+
+Return value from the last executed statement from a variable.
+>>> script = '''
+ addition = 2 + 3
+ multiplication = 3 * 4
+ multiplication
+ '''
+>>> mechanical.run_python_script(script)
+'12'
+
+
+Return value from last executed statement from a function call.
+>>> script = '''
+ import math
+ math.pow(2,3)
+ '''
+>>> mechanical.run_python_script(script)
+'8'
+
+
+Handle an error scenario.
+>>> script = 'hello_world()'
+>>> import grpc
+>>> try :
+ mechanical.run_python_script(script)
+ except grpc.RpcError as error:
+ print(error.details())
+name 'hello_world' is not defined
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/api/_autosummary/ansys.mechanical.core.Mechanical.run_python_script_from_file.html b/version/0.10/api/_autosummary/ansys.mechanical.core.Mechanical.run_python_script_from_file.html
new file mode 100644
index 000000000..6e691c15b
--- /dev/null
+++ b/version/0.10/api/_autosummary/ansys.mechanical.core.Mechanical.run_python_script_from_file.html
@@ -0,0 +1,797 @@
+
+
+
+
+
+
+
+
+
+
+ run_python_script_from_file — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+run_python_script_from_file
+
+
+Mechanical. run_python_script_from_file ( file_path , enable_logging = False , log_level = 'WARNING' , progress_interval = 2000 )
+Run the contents a python file inside Mechanical.
+It returns the string value of the last executed statement. If the value cannot be
+returned as a string, it will return an empty string.
+
+Parameters:
+
+file_path Path for the Python file.
+
+enable_logging: bool, optional Whether to enable logging. The default is False
.
+
+log_level: str Level of logging. The default is "WARNING"
. Options are "DEBUG"
,
+"INFO"
, "WARNING"
, and "ERROR"
.
+
+progress_interval: int, optional Frequency in milliseconds for getting log messages from the server.
+The default is 2000
.
+
+
+
+Returns:
+
+str
Script result.
+
+
+
+
+Examples
+Return a value from a simple calculation.
+Contents of simple.py file
+2+3
+>>> mechanical . run_python_script_from_file ( 'simple.py' )
+'5'
+
+
+Return a value from a simple function call.
+Contents of test.py file
+import math
+math.pow(2,3)
+>>> mechanical . run_python_script_from_file ( 'test.py' )
+'8'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/api/_autosummary/ansys.mechanical.core.Mechanical.upload.html b/version/0.10/api/_autosummary/ansys.mechanical.core.Mechanical.upload.html
new file mode 100644
index 000000000..e288ae091
--- /dev/null
+++ b/version/0.10/api/_autosummary/ansys.mechanical.core.Mechanical.upload.html
@@ -0,0 +1,786 @@
+
+
+
+
+
+
+
+
+
+
+ upload — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+upload
+
+
+Mechanical. upload ( file_name , file_location_destination = None , chunk_size = 1048576 , progress_bar = True )
+Upload a file to the Mechanical instance.
+
+Parameters:
+
+file_name str
Local file to upload. Only the file name is needed if the file
+is relative to the current working directory. Otherwise, the full path
+is needed.
+
+file_location_destination str
, optional
File location on the Mechanical server to upload the file to. The default is
+None
, in which case the project directory is used.
+
+chunk_size int
, optional
Chunk size in bytes. The default is 1048576
.
+
+progress_bar bool , optional
Whether to show a progress bar using tqdm
. The default is True
.
+A progress bar is helpful for viewing upload progress.
+
+
+
+Returns:
+
+str
Base name of the uploaded file.
+
+
+
+
+Examples
+Upload the hsec.x_t
file with the progress bar not shown.
+>>> mechanical . upload ( 'hsec.x_t' , progress_bar = False )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/api/_autosummary/ansys.mechanical.core.Mechanical.version.html b/version/0.10/api/_autosummary/ansys.mechanical.core.Mechanical.version.html
new file mode 100644
index 000000000..e2247360c
--- /dev/null
+++ b/version/0.10/api/_autosummary/ansys.mechanical.core.Mechanical.version.html
@@ -0,0 +1,763 @@
+
+
+
+
+
+
+
+
+
+
+ version — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+version
+
+
+property Mechanical. version : str
+Get the Mechanical version based on the instance.
+Examples
+Get the version of the connected Mechanical instance.
+>>> mechanical . version
+'231'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/api/_autosummary/ansys.mechanical.core.close_all_local_instances.html b/version/0.10/api/_autosummary/ansys.mechanical.core.close_all_local_instances.html
new file mode 100644
index 000000000..2d1614cb1
--- /dev/null
+++ b/version/0.10/api/_autosummary/ansys.mechanical.core.close_all_local_instances.html
@@ -0,0 +1,769 @@
+
+
+
+
+
+
+
+
+
+
+ close_all_local_instances — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+close_all_local_instances
+
+
+ansys.mechanical.core. close_all_local_instances ( port_range = None , use_thread = True )
+Close all Mechanical instances within a port range.
+You can use this method when cleaning up from a failed pool or
+batch run.
+
+Parameters:
+
+port_range list
, optional
List of a range of ports to use when cleaning up Mechanical. The
+default is None
, in which case the ports managed by
+PyMechanical are used.
+
+use_thread bool , optional
Whether to use threads to close the Mechanical instances.
+The default is True
. So this call will return immediately.
+
+
+
+
+Examples
+Close all Mechanical instances connected on local ports.
+>>> import ansys.mechanical.core as pymechanical
+>>> pymechanical . close_all_local_instances ()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/api/_autosummary/ansys.mechanical.core.launch_mechanical.html b/version/0.10/api/_autosummary/ansys.mechanical.core.launch_mechanical.html
new file mode 100644
index 000000000..cc5e470af
--- /dev/null
+++ b/version/0.10/api/_autosummary/ansys.mechanical.core.launch_mechanical.html
@@ -0,0 +1,861 @@
+
+
+
+
+
+
+
+
+
+
+ launch_mechanical — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+launch_mechanical
+
+
+ansys.mechanical.core. launch_mechanical ( allow_input = True , exec_file = None , batch = True , loglevel = 'ERROR' , log_file = False , log_mechanical = None , additional_switches = None , additional_envs = None , start_timeout = 120 , port = None , ip = None , start_instance = None , verbose_mechanical = False , clear_on_connect = False , cleanup_on_exit = True , version = None , keep_connection_alive = True )
+Start Mechanical locally.
+
+Parameters:
+
+allow_input: bool, optional Whether to allow user input when discovering the path to the Mechanical
+executable file.
+
+exec_file str
, optional
Path for the Mechanical executable file. The default is None
,
+in which case the cached location is used. If PyPIM is configured
+and this parameter is set to None
, PyPIM launches Mechanical
+using its version
parameter.
+
+batch bool , optional
Whether to launch Mechanical in batch mode. The default is True
.
+When False
, Mechanical launches in UI mode.
+
+loglevel str
, optional
Level of messages to print to the console.
+Options are:
+
+"WARNING"
: Prints only Ansys warning messages.
+"ERROR"
: Prints only Ansys error messages.
+"INFO"
: Prints all Ansys messages.
+
+The default is WARNING
.
+
+log_file bool , optional
Whether to copy the messages to a file named logs.log
, which is
+located where the Python script is executed. The default is False
.
+
+log_mechanical str
, optional
Path to the output file on the local disk to write every script
+command to. The default is None
. However, you might set
+"log_mechanical='pymechanical_log.txt'"
to write all commands that are
+sent to Mechanical via PyMechanical to this file. You can then use these
+commands to run a script within Mechanical without PyMechanical.
+
+additional_switches list
, optional
Additional switches for Mechanical. The default is None
.
+
+additional_envs dictionary
, optional
Dictionary of additional environment variables to pass. The default
+is None
.
+
+start_timeout float
, optional
Maximum allowable time in seconds to connect to the Mechanical server.
+The default is 120
.
+
+port int
, optional
Port to launch the Mechanical gRPC server on. The default is None
,
+in which case 10000
is used. The final port is the first
+port available after (or including) this port. You can override the
+default behavior of this parameter with the
+PYMECHANICAL_PORT=<VALID PORT>
environment variable.
+
+ip str
, optional
IP address to use only when start_instance
is False
. The
+default is None
, in which case "127.0.0.1"
is used. If you
+provide an IP address, start_instance
is set to False
.
+A host name can be provided as an alternative to an IP address.
+
+start_instance bool , optional
Whether to launch and connect to a new Mechanical instance. The default
+is None
, in which case an attempt is made to connect to an existing
+Mechanical instance at the given ip
and port
parameters, which have
+defaults of "127.0.0.1"
and 10000
respectively. When True
,
+a local instance of Mechanical is launched. You can override the default
+behavior of this parameter with the PYMECHANICAL_START_INSTANCE=FALSE
+environment variable.
+
+verbose_mechanical bool , optional
Whether to enable printing of all output when launching and running
+a Mechanical instance. The default is False
. This parameter should be
+set to True
for debugging only as output can be tracked within
+PyMechanical.
+
+clear_on_connect bool , optional
When start_instance
is False
, whether to clear the environment
+when connecting to Mechanical. The default is False
. When True
,
+a fresh environment is provided when you connect to Mechanical.
+
+cleanup_on_exit bool , optional
Whether to exit Mechanical when Python exits. The default is True
.
+When False
, Mechanical is not exited when the garbage for this Mechanical
+instance is collected.
+
+version str
, optional
Mechanical version to run in the three-digit format. For example, "231"
+for 2023 R1. The default is None
, in which case the server runs the
+latest installed version. If PyPIM is configured and exce_file=None
,
+PyPIM launches Mechanical using its version
parameter.
+
+keep_connection_alive bool , optional
Whether to keep the gRPC connection alive by running a background thread
+and making dummy calls for remote connections. The default is True
.
+
+
+
+Returns:
+
+ansys.mechanical.core.mechanical.Mechanical
Instance of Mechanical.
+
+
+
+Return type:
+Mechanical
+
+
+Notes
+If the environment is configured to use PyPIM
+and start_instance=True
, then starting the instance is delegated to PyPIM.
+In this case, most of the preceding parameters are ignored because the server-side
+configuration is used.
+Examples
+Launch Mechanical.
+>>> from ansys.mechanical.core import launch_mechanical
+>>> mech = launch_mechanical ()
+
+
+Launch Mechanical using a specified executable file.
+>>> exec_file_path = 'C:/Program Files/ANSYS Inc/v231/aisol/bin/win64/AnsysWBU.exe'
+>>> mech = launch_mechanical ( exec_file_path )
+
+
+Connect to an existing Mechanical instance at IP address 192.168.1.30
on port
+50001
.
+>>> mech = launch_mechanical ( start_instance = False , ip = '192.168.1.30' , port = 50001 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/api/_autosummary/ansys.mechanical.core.logging.Logger.add_child_logger.html b/version/0.10/api/_autosummary/ansys.mechanical.core.logging.Logger.add_child_logger.html
new file mode 100644
index 000000000..ac4fc2fca
--- /dev/null
+++ b/version/0.10/api/_autosummary/ansys.mechanical.core.logging.Logger.add_child_logger.html
@@ -0,0 +1,783 @@
+
+
+
+
+
+
+
+
+
+
+ add_child_logger — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+add_child_logger
+
+
+Logger. add_child_logger ( suffix , level = None )
+Add a child logger to the main logger.
+This child logger is more general than an instance logger, which is designed to
+track the state of a Mechanical instance.
+If the logging level is specified in the arguments, a new logger with a reference
+to the _global
logger handlers is created instead of a child logger.
+
+Parameters:
+
+suffix str
Name for the child logger.
+
+level str
, optional
Level of logging. The default is None
, in which case the "DEBUG"
+level is used. Options are "DEBUG"
, "INFO"
, "WARNING"
,
+and "ERROR"
.
+
+
+
+Returns:
+
+logging.logger
Logger class.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/api/_autosummary/ansys.mechanical.core.logging.Logger.add_handling_uncaught_exceptions.html b/version/0.10/api/_autosummary/ansys.mechanical.core.logging.Logger.add_handling_uncaught_exceptions.html
new file mode 100644
index 000000000..59c055faa
--- /dev/null
+++ b/version/0.10/api/_autosummary/ansys.mechanical.core.logging.Logger.add_handling_uncaught_exceptions.html
@@ -0,0 +1,769 @@
+
+
+
+
+
+
+
+
+
+
+ add_handling_uncaught_exceptions — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+add_handling_uncaught_exceptions
+
+
+static Logger. add_handling_uncaught_exceptions ( logger )
+Redirect the output of an exception to a logger.
+
+Parameters:
+
+logger str
Name of the logger.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/api/_autosummary/ansys.mechanical.core.logging.Logger.add_instance_logger.html b/version/0.10/api/_autosummary/ansys.mechanical.core.logging.Logger.add_instance_logger.html
new file mode 100644
index 000000000..de902f2fb
--- /dev/null
+++ b/version/0.10/api/_autosummary/ansys.mechanical.core.logging.Logger.add_instance_logger.html
@@ -0,0 +1,793 @@
+
+
+
+
+
+
+
+
+
+
+ add_instance_logger — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+add_instance_logger
+
+
+Logger. add_instance_logger ( name , mechanical_instance , level = None )
+Add a logger for a Mechanical instance.
+The logger for a Mechanical instance has an adapter that adds contextual information,
+such as the name of the Mechanical instance. This logger is returned, and you can use it to
+log events as a normal logger. It is also stored in the _instances
field.
+
+Parameters:
+
+name str
Name for the new logger.
+
+mechanical_instance ansys.mechanical.core.mechanical.Mechanical
Mechanical instance object. This object should contain the name
+attribute.
+
+level str
, optional
Level of logging. The default is None
, in which case the "DEBUG"
+level is used. Options are "DEBUG"
, "INFO"
, "WARNING"
,
+and "ERROR"
.
+
+
+
+Returns:
+
+ansys.mechanical.core.logging.PyMechanicalCustomAdapter
Logger adapter customized to add Mechanical information to the
+logs. You can use this class to log events in the same
+way you would with the logger
class.
+
+
+
+Raises:
+
+Exception
You can only input strings as name
to this method.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/api/_autosummary/ansys.mechanical.core.logging.Logger.file_handler.html b/version/0.10/api/_autosummary/ansys.mechanical.core.logging.Logger.file_handler.html
new file mode 100644
index 000000000..5e827b673
--- /dev/null
+++ b/version/0.10/api/_autosummary/ansys.mechanical.core.logging.Logger.file_handler.html
@@ -0,0 +1,760 @@
+
+
+
+
+
+
+
+
+
+
+ file_handler — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+file_handler
+
+
+Logger. file_handler = None
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/api/_autosummary/ansys.mechanical.core.logging.Logger.html b/version/0.10/api/_autosummary/ansys.mechanical.core.logging.Logger.html
new file mode 100644
index 000000000..ca16fdfc0
--- /dev/null
+++ b/version/0.10/api/_autosummary/ansys.mechanical.core.logging.Logger.html
@@ -0,0 +1,825 @@
+
+
+
+
+
+
+
+
+
+
+ Logger — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Logger
+
+
+class ansys.mechanical.core.logging. Logger ( level = 10 , to_file = False , to_stdout = True , filename = 'pymechanical.log' )
+Provides for adding handlers to the logger for each Mechanical session.
+This class allows you to add handlers to the logger to output to a file or
+the standard output.
+
+Parameters:
+
+level int
, optional
Logging level for filtering the messages that are allowed in the logger.
+The default is 10
, in which case the DEBUG
level is used.
+
+to_file bool , optional
Whether to write log messages to a file. The default is False
.
+
+to_stdout bool , optional
Whether to write log messages to the standard output. The default is
+True
.
+
+filename str
, optional
Name of the file to write log messages to. The default is pymechanical.log
.
+
+
+
+
+Examples
+Demonstrate logger usage from a Mechanical instance. The logger is automatically
+created when a Mechanical instance is created.
+>>> from ansys.mechanical.core import launch_mechanical
+>>> mechanical = launch_mechanical ( loglevel = 'DEBUG' )
+>>> mechanical . log . info ( 'This is a useful message' )
+INFO - - <ipython-input-24-80df150fe31f> - <module> - This is LOG debug message.
+
+
+Import the PyMechanical global logger and add a file output handler.
+>>> import os
+>>> from ansys.mechanical.core import LOG
+>>> file_path = os . path . join ( os . getcwd (), 'pymechanical.log' )
+>>> LOG . log_to_file ( file_path )
+
+
+Methods
+
+Attributes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/api/_autosummary/ansys.mechanical.core.logging.Logger.log_to_file.html b/version/0.10/api/_autosummary/ansys.mechanical.core.logging.Logger.log_to_file.html
new file mode 100644
index 000000000..64caaae4b
--- /dev/null
+++ b/version/0.10/api/_autosummary/ansys.mechanical.core.logging.Logger.log_to_file.html
@@ -0,0 +1,782 @@
+
+
+
+
+
+
+
+
+
+
+ log_to_file — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+log_to_file
+
+
+Logger. log_to_file ( filename = 'pymechanical.log' , level = 10 )
+Add a file handler to the logger.
+
+Parameters:
+
+filename str
, optional
Name of the file to write log messages to. The default is
+'pymechanical.log'
.
+
+level str
, optional
Level of logging. The default is 10
, in which case the "DEBUG"
+level is used. Options are "DEBUG"
, "INFO"
,
+"WARNING"
and "ERROR"
.
+
+
+
+
+Examples
+Write to the pymechanical.log
file in the current working directory.
+>>> from ansys.mechanical.core import LOG
+>>> import os
+>>> file_path = os . path . join ( os . getcwd (), 'pymechanical.log' )
+>>> LOG . log_to_file ( file_path )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/api/_autosummary/ansys.mechanical.core.logging.Logger.log_to_stdout.html b/version/0.10/api/_autosummary/ansys.mechanical.core.logging.Logger.log_to_stdout.html
new file mode 100644
index 000000000..d52f0b53c
--- /dev/null
+++ b/version/0.10/api/_autosummary/ansys.mechanical.core.logging.Logger.log_to_stdout.html
@@ -0,0 +1,769 @@
+
+
+
+
+
+
+
+
+
+
+ log_to_stdout — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+log_to_stdout
+
+
+Logger. log_to_stdout ( level = 10 )
+Add a standard output handler to the logger.
+
+Parameters:
+
+level str
, optional
Level of logging, such as DUBUG
. The default is LOG_LEVEL
.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/api/_autosummary/ansys.mechanical.core.logging.Logger.setLevel.html b/version/0.10/api/_autosummary/ansys.mechanical.core.logging.Logger.setLevel.html
new file mode 100644
index 000000000..b1c5e8097
--- /dev/null
+++ b/version/0.10/api/_autosummary/ansys.mechanical.core.logging.Logger.setLevel.html
@@ -0,0 +1,769 @@
+
+
+
+
+
+
+
+
+
+
+ setLevel — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+setLevel
+
+
+Logger. setLevel ( level = 'DEBUG' )
+Change the log level of the object and the attached handlers.
+
+Parameters:
+
+level str
, optional
Level of logging, such as DUBUG
. The default is LOG_LEVEL
.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/api/_autosummary/ansys.mechanical.core.logging.Logger.std_out_handler.html b/version/0.10/api/_autosummary/ansys.mechanical.core.logging.Logger.std_out_handler.html
new file mode 100644
index 000000000..5fc1b2746
--- /dev/null
+++ b/version/0.10/api/_autosummary/ansys.mechanical.core.logging.Logger.std_out_handler.html
@@ -0,0 +1,760 @@
+
+
+
+
+
+
+
+
+
+
+ std_out_handler — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+std_out_handler
+
+
+Logger. std_out_handler = None
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/api/_autosummary/ansys.mechanical.core.pool.LocalMechanicalPool.exit.html b/version/0.10/api/_autosummary/ansys.mechanical.core.pool.LocalMechanicalPool.exit.html
new file mode 100644
index 000000000..71ad991f4
--- /dev/null
+++ b/version/0.10/api/_autosummary/ansys.mechanical.core.pool.LocalMechanicalPool.exit.html
@@ -0,0 +1,771 @@
+
+
+
+
+
+
+
+
+
+
+ exit — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+exit
+
+
+LocalMechanicalPool. exit ( block = False )
+Exit all Mechanical instances in the pool.
+
+Parameters:
+
+block bool , optional
Whether to wait until all processes close before exiting
+all instances in the pool. The default is False
.
+
+
+
+
+Examples
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/api/_autosummary/ansys.mechanical.core.pool.LocalMechanicalPool.html b/version/0.10/api/_autosummary/ansys.mechanical.core.pool.LocalMechanicalPool.html
new file mode 100644
index 000000000..df0962634
--- /dev/null
+++ b/version/0.10/api/_autosummary/ansys.mechanical.core.pool.LocalMechanicalPool.html
@@ -0,0 +1,834 @@
+
+
+
+
+
+
+
+
+
+
+ LocalMechanicalPool — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+LocalMechanicalPool
+
+
+class ansys.mechanical.core.pool. LocalMechanicalPool ( n_instances , wait = True , port = 10000 , progress_bar = True , restart_failed = True , ** kwargs )
+Create a pool of Mechanical instances.
+
+Parameters:
+
+n_instance int
Number of Mechanical instances to create in the pool.
+
+wait bool , optional
Whether to wait for the pool to be initialized. The default is
+True
. When False
, the pool starts in the background, in
+which case all resources might not be immediately available.
+
+starting_port int
, optional
Starting port for the instances. The default is 10000
.
+
+progress_bar bool , optional
Whether to show a progress bar when starting the pool. The default
+is True
, but the progress bar is not shown when wait=False
.
+
+restart_failed bool , optional
Whether to restart any failed instances in the pool. The default is
+True
.
+
+**kwargs dict
, optional
Additional keyword arguments. For a list of all keyword
+arguments, use the ansys.mechanical.core.launch_mechanical()
+function. If the exec_file
keyword argument is found, it is used to
+start instances. PyPIM is used to create instances if the following
+conditions are met:
+
+
+
+
+
+Examples
+Create a pool of 10 Mechanical instances.
+>>> from ansys.mechanical.core import LocalMechanicalPool
+>>> pool = LocalMechanicalPool ( 10 )
+Creating Pool: 100%|########| 10/10 [00:01<00:00, 1.43it/s]
+
+
+On Windows, create a pool while specifying the Mechanical executable file.
+>>> exec_file = 'C:/Program Files/ANSYS Inc/v231/aisol/bin/winx64/AnsysWBU.exe'
+>>> pool = LocalMechanicalPool ( 10 , exec_file = exec_file )
+Creating Pool: 100%|########| 10/10 [00:01<00:00, 1.43it/s]
+
+
+On Linux, create a pool while specifying the Mechanical executable file.
+>>> exec_file = '/ansys_inc/v231/aisol/.workbench'
+>>> pool = LocalMechanicalPool ( 10 , exec_file = exec_file )
+Creating Pool: 100%|########| 10/10 [00:01<00:00, 1.43it/s]
+
+
+In the PyPIM environment, create a pool.
+>>> pool = LocalMechanicalPool ( 10 , version = "231" )
+Creating Pool: 100%|########| 10/10 [00:01<00:00, 1.43it/s]
+
+
+Methods
+
+Attributes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/api/_autosummary/ansys.mechanical.core.pool.LocalMechanicalPool.map.html b/version/0.10/api/_autosummary/ansys.mechanical.core.pool.LocalMechanicalPool.map.html
new file mode 100644
index 000000000..c3b286e24
--- /dev/null
+++ b/version/0.10/api/_autosummary/ansys.mechanical.core.pool.LocalMechanicalPool.map.html
@@ -0,0 +1,817 @@
+
+
+
+
+
+
+
+
+
+
+ map — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+map
+
+
+LocalMechanicalPool. map ( func , iterable = None , clear_at_start = True , progress_bar = True , close_when_finished = False , timeout = None , wait = True )
+Run a user-defined function on each Mechanical instance in the pool.
+
+Parameters:
+
+func function
Function with mechanical
as the first argument. The subsequent
+arguments should match the number of items in each iterable (if any).
+
+iterable list
, tuple
, optional
An iterable containing a set of arguments for the function.
+The default is None
, in which case the function runs
+once on each instance of Mechanical.
+
+clear_at_start bool , optional
Clear Mechanical at the start of execution. The default is
+True
. Setting this to False
might lead to instability.
+
+progress_bar bool , optional
Whether to show a progress bar when running the batch of input
+files. The default is True
, but the progress bar is not shown
+when wait=False
.
+
+close_when_finished bool , optional
Whether to close the instances when the function finishes running
+on all instances in the pool. The default is False
.
+
+timeout float
, optional
Maximum runtime in seconds for each iteration. The default is
+None
, in which case there is no timeout. If you specify a
+value, each iteration is allowed to run only this number of
+seconds. Once this value is exceeded, the batch process is
+stopped and treated as a failure.
+
+wait bool , optional
Whether block execution must wait until the batch process is
+complete. The default is True
.
+
+
+
+Returns:
+
+list
A list containing the return values for the function.
+Failed runs do not return an output. Because return values
+are not necessarily in the same order as the iterable,
+you might want to add some sort of tracker to the return
+of your function.
+
+
+
+
+Examples
+Run several input files while storing the final routine. Note
+how the function to map must use mechanical
as the first argument.
+The function can have any number of additional arguments.
+>>> from ansys.mechanical.core import LocalMechanicalPool
+>>> pool = LocalMechanicalPool ( 10 )
+>>> completed_indices = []
+>>> def function ( mechanical , name , script ):
+ # name, script = args
+ mechanical.clear()
+ output = mechanical.run_python_script(script)
+ return name, output
+>>> inputs = [( "first" , "2+3" ), ( "second" , "3+4" )]
+>>> output = pool . map ( function , inputs , progress_bar = False , wait = True )
+[('first', '5'), ('second', '7')]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/api/_autosummary/ansys.mechanical.core.pool.LocalMechanicalPool.next_available.html b/version/0.10/api/_autosummary/ansys.mechanical.core.pool.LocalMechanicalPool.next_available.html
new file mode 100644
index 000000000..2e6251bca
--- /dev/null
+++ b/version/0.10/api/_autosummary/ansys.mechanical.core.pool.LocalMechanicalPool.next_available.html
@@ -0,0 +1,784 @@
+
+
+
+
+
+
+
+
+
+
+ next_available — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+next_available
+
+
+LocalMechanicalPool. next_available ( return_index = False )
+Wait until a Mechanical instance is available and return this instance.
+
+Parameters:
+
+return_index bool , optional
Whether to return the index along with the instance. The default
+is False
.
+
+
+
+Returns:
+
+pymechanical.Mechanical
Instance of Mechanical.
+
+int
Index within the pool of Mechanical instances. This index
+is not returned by default.
+
+
+
+
+Examples
+>>> mechanical = pool . next_available ()
+>>> mechanical
+Ansys Mechanical [Ansys Mechanical Enterprise]
+Product Version:231
+Software build date:Wed Jul 13 14:29:54 2022
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/api/_autosummary/ansys.mechanical.core.pool.LocalMechanicalPool.ports.html b/version/0.10/api/_autosummary/ansys.mechanical.core.pool.LocalMechanicalPool.ports.html
new file mode 100644
index 000000000..0e7affbf4
--- /dev/null
+++ b/version/0.10/api/_autosummary/ansys.mechanical.core.pool.LocalMechanicalPool.ports.html
@@ -0,0 +1,764 @@
+
+
+
+
+
+
+
+
+
+
+ ports — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ports
+
+
+property LocalMechanicalPool. ports
+Get a list of the ports that are used.
+Examples
+Get the list of ports used by the pool of Mechanical instances.
+>>> pool . ports
+[10001, 10002]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/api/_autosummary/ansys.mechanical.core.pool.LocalMechanicalPool.run_batch.html b/version/0.10/api/_autosummary/ansys.mechanical.core.pool.LocalMechanicalPool.run_batch.html
new file mode 100644
index 000000000..3814298a8
--- /dev/null
+++ b/version/0.10/api/_autosummary/ansys.mechanical.core.pool.LocalMechanicalPool.run_batch.html
@@ -0,0 +1,804 @@
+
+
+
+
+
+
+
+
+
+
+ run_batch — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+run_batch
+
+
+LocalMechanicalPool. run_batch ( files , clear_at_start = True , progress_bar = True , close_when_finished = False , timeout = None , wait = True )
+Run a batch of input files on the Mechanical instances in the pool.
+
+Parameters:
+
+files list
List of input files.
+
+clear_at_start bool , optional
Whether to clear Mechanical when execution starts. The default is
+True
. Setting this parameter to False
might lead to
+instability.
+
+progress_bar bool , optional
Whether to show a progress bar when running the batch of input
+files. The default is True
, but the progress bar is not shown
+when wait=False
.
+
+close_when_finished bool , optional
Whether to close the instances when running the batch
+of input files is finished. The default is False
.
+
+timeout float
, optional
Maximum runtime in seconds for each iteration. The default is
+None
, in which case there is no timeout. If you specify a
+value, each iteration is allowed to run only this number of
+seconds. Once this value is exceeded, the batch process is stopped
+and treated as a failure.
+
+wait bool , optional
Whether block execution must wait until the batch process is complete.
+The default is True
.
+
+
+
+Returns:
+
+list
List of text outputs from Mechanical for each batch run. The outputs
+are not necessarily listed in the order of the inputs. Failed runs do
+not return an output. Because the return outputs are not
+necessarily in the same order as iterable
, you might
+want to add some sort of tracker or note within the input files.
+
+
+
+
+Examples
+Run 20 verification files on the pool.
+>>> files = [ f "test { index } .py" for index in range ( 1 , 21 )]
+>>> outputs = pool . run_batch ( files )
+>>> len ( outputs )
+20
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/api/_autosummary/ansys.tools.path.change_default_mechanical_path.html b/version/0.10/api/_autosummary/ansys.tools.path.change_default_mechanical_path.html
new file mode 100644
index 000000000..22b5bbf1e
--- /dev/null
+++ b/version/0.10/api/_autosummary/ansys.tools.path.change_default_mechanical_path.html
@@ -0,0 +1,776 @@
+
+
+
+
+
+
+
+
+
+
+ change_default_mechanical_path — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+change_default_mechanical_path
+
+
+ansys.tools.path. change_default_mechanical_path ( exe_loc )
+Change your default Mechanical path.
+
+Parameters:
+
+exe_loc str
Full path for the Mechanical executable file to use.
+
+
+
+Return type:
+None
+
+
+Examples
+On Windows:
+>>> from ansys.tools.path import change_default_mechanical_path , get_mechanical_path
+>>> change_default_mechanical_path ( 'C:/Program Files/ANSYS Inc/v231/aisol/bin/win64/AnsysWBU.exe' )
+>>> get_mechanical_path ()
+'C:/Program Files/ANSYS Inc/v231/aisol/bin/win64/AnsysWBU.exe'
+
+
+On Linux:
+>>> from ansys.tools.path import change_default_mechanical_path , get_mechanical_path
+>>> change_default_mechanical_path ( '/ansys_inc/v231/aisol/.workbench' )
+>>> get_mechanical_path ()
+'/ansys_inc/v231/aisol/.workbench'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/api/_autosummary/ansys.tools.path.find_mechanical.html b/version/0.10/api/_autosummary/ansys.tools.path.find_mechanical.html
new file mode 100644
index 000000000..4fd2f3070
--- /dev/null
+++ b/version/0.10/api/_autosummary/ansys.tools.path.find_mechanical.html
@@ -0,0 +1,776 @@
+
+
+
+
+
+
+
+
+
+
+ find_mechanical — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+find_mechanical
+
+
+ansys.tools.path. find_mechanical ( version = None , supported_versions = {191: '19.1', 192: '19.2', 193: '19.3', 194: '19.4', 195: '19.5', 201: '2020R1', 202: '2020R2', 211: '2021R1', 212: '2021R2', 221: '2022R1', 222: '2022R2', 231: '2023R1', 232: '2023R2', 241: '2024R1', 242: '2024R2'} )
+Search for the Mechanical path in the standard installation location.
+
+Returns:
+
+mechanical_path str
Full path to the executable file for the latest Mechanical version.
+
+version float
| str
Version in the float format. For example, 23.1
for 2023 R1.
+If no version has be found, version is set to “”
+
+
+
+Return type:
+Union
[Tuple
[str
, float
], Tuple
[Literal
[''
], Literal
[''
]]]
+
+
+Examples
+On Windows:
+>>> from ansys.tools.path import find_mechanical
+>>> find_mechanical ()
+('C:/Program Files/ANSYS Inc/v231/aisol/bin/winx64/AnsysWBU.exe', 23.1)
+
+
+On Linux:
+>>> find_mechanical ()
+('/usr/ansys_inc/v231/aisol/.workbench', 23.1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/api/_autosummary/ansys.tools.path.get_mechanical_path.html b/version/0.10/api/_autosummary/ansys.tools.path.get_mechanical_path.html
new file mode 100644
index 000000000..6c26129de
--- /dev/null
+++ b/version/0.10/api/_autosummary/ansys.tools.path.get_mechanical_path.html
@@ -0,0 +1,769 @@
+
+
+
+
+
+
+
+
+
+
+ get_mechanical_path — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+get_mechanical_path
+
+
+ansys.tools.path. get_mechanical_path ( allow_input = True , version = None , find = True )
+Acquires Ansys Mechanical Path
+First, it looks in the configuration file, used by save_mechanical_path
+Then, it tries to find it based on conventions for where it usually is.
+Lastly, it takes user input
+
+Parameters:
+
+allow_input bool , optional
Allow user input to find Ansys Mechanical path. The default is True
.
+
+version float
, optional
Version of Ansys Mechanical to search for. For example version=22.2
.
+If None
, use latest.
+
+find: bool, optional Allow ansys-tools-path to search for Ansys Mechanical in typical installation locations
+
+
+
+Return type:
+Optional
[str
]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/api/_autosummary/ansys.tools.path.save_mechanical_path.html b/version/0.10/api/_autosummary/ansys.tools.path.save_mechanical_path.html
new file mode 100644
index 000000000..2b1a8365a
--- /dev/null
+++ b/version/0.10/api/_autosummary/ansys.tools.path.save_mechanical_path.html
@@ -0,0 +1,793 @@
+
+
+
+
+
+
+
+
+
+
+ save_mechanical_path — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+save_mechanical_path
+
+
+ansys.tools.path. save_mechanical_path ( exe_loc = None , allow_prompt = True )
+Find the Mechanical path or query user.
+
+Parameters:
+
+exe_loc str
, optional
Path for the Mechanical executable file (AnsysWBU.exe
).
+The default is None
, in which case an attempt is made to
+obtain the path from the following sources in this order:
+
+If a path is supplied, this method performs some checks. If the
+checks are successful, it writes this path to the configuration
+file.
+
+
+
+Returns:
+
+str
Path for the Mechanical executable file.
+
+
+
+Return type:
+str
+
+
+Notes
+The location of the configuration file config.txt
can be found in
+ansys.tools.path.SETTINGS_DIR
. For example:
+>>> from ansys.tools.path import SETTINGS_DIR
+>>> import os
+>>> print ( os . path . join ( SETTINGS_DIR , "config.txt" ))
+C:/Users/[username]]/AppData/Local/Ansys/ansys_tools_path/config.txt
+
+
+You can change the default for the exe_loc
parameter either by modifying the
+config.txt
file or by running this code:
+>>> from ansys.tools.path import save_mechanical_path
+>>> save_mechanical_path ( "/new/path/to/executable" )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/api/announcement.html b/version/0.10/api/announcement.html
new file mode 100644
index 000000000..a838ea4eb
--- /dev/null
+++ b/version/0.10/api/announcement.html
@@ -0,0 +1,4 @@
+
+ You are not viewing the most recent version of this documentation.
+ The latest stable release is 0.11
+
diff --git a/version/0.10/api/helper.html b/version/0.10/api/helper.html
new file mode 100644
index 000000000..d560c04d1
--- /dev/null
+++ b/version/0.10/api/helper.html
@@ -0,0 +1,738 @@
+
+
+
+
+
+
+
+
+
+
+ Helper functions — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Helper functions
+These methods provide helper functions for launching Mechanical, closing Mechanical instances, and automating other tasks.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/api/index.html b/version/0.10/api/index.html
new file mode 100644
index 000000000..3fbf48361
--- /dev/null
+++ b/version/0.10/api/index.html
@@ -0,0 +1,731 @@
+
+
+
+
+
+
+
+
+
+
+ API reference — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+API reference
+This section describes PyMechanical classes, functions, and attributes.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/api/logging.html b/version/0.10/api/logging.html
new file mode 100644
index 000000000..e48cd6e80
--- /dev/null
+++ b/version/0.10/api/logging.html
@@ -0,0 +1,764 @@
+
+
+
+
+
+
+
+
+
+
+ Logging — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Logging
+To make the logging of events consistent, PyMechanical has a specific
+logging architecture with global and local logging instances.
+For these two types of loggers, here is the default format for a log message:
+>>> from ansys.mechanical.core import launch_mechanical
+>>> mechanical = launch_mechanical ()
+>>> mechanical . _log . info ( "This is an useful message" )
+ LEVEL - INSTANCE NAME - MODULE - FUNCTION - MESSAGE
+ INFO - GRPC_127.0.0.1:10000 - test - <module> - This is a useful message
+
+
+The instance_name
field depends on the name of the Mechanical instance,
+which might not be set yet when the log record is created (for
+example, during the initialization of the library). If a Mechanical
+instance is not yet created, this field might be empty.
+Because both types of loggers are based in the Python logging
module,
+you can use any of the tools provided in this module to extend or modify
+these loggers.
+
+Logger
class
+
+
+Logger
([level, to_file, to_stdout, filename])
+Provides for adding handlers to the logger for each Mechanical session.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/api/mechanical.html b/version/0.10/api/mechanical.html
new file mode 100644
index 000000000..7066ee14f
--- /dev/null
+++ b/version/0.10/api/mechanical.html
@@ -0,0 +1,792 @@
+
+
+
+
+
+
+
+
+
+
+ Mechanical — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Mechanical
+This section describes the methods for working with a Mechanical gRPC server using the following class:
+Mechanical
+
+
+class ansys.mechanical.core.mechanical. Mechanical ( ip = None , port = None , timeout = 60.0 , loglevel = 'WARNING' , log_file = False , log_mechanical = None , cleanup_on_exit = False , channel = None , remote_instance = None , keep_connection_alive = True , ** kwargs )
+Connects to a gRPC Mechanical server and allows commands to be passed.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/api/path.html b/version/0.10/api/path.html
new file mode 100644
index 000000000..e20a03d52
--- /dev/null
+++ b/version/0.10/api/path.html
@@ -0,0 +1,747 @@
+
+
+
+
+
+
+
+
+
+
+ Ansys path tools — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/api/pool.html b/version/0.10/api/pool.html
new file mode 100644
index 000000000..f5b2ed15b
--- /dev/null
+++ b/version/0.10/api/pool.html
@@ -0,0 +1,813 @@
+
+
+
+
+
+
+
+
+
+
+ Local Mechanical Pool — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Local Mechanical Pool
+This section describes how to work with a local pool of Mechanical instances.
+
+LocalMechanicalPool Class
+LocalMechanicalPool
provides functionality for working with a local pool of Mechanical instances.
+
+
+class ansys.mechanical.core.pool. LocalMechanicalPool ( n_instances , wait = True , port = 10000 , progress_bar = True , restart_failed = True , ** kwargs )
+Create a pool of Mechanical instances.
+
+Parameters:
+
+n_instance int
Number of Mechanical instances to create in the pool.
+
+wait bool , optional
Whether to wait for the pool to be initialized. The default is
+True
. When False
, the pool starts in the background, in
+which case all resources might not be immediately available.
+
+starting_port int
, optional
Starting port for the instances. The default is 10000
.
+
+progress_bar bool , optional
Whether to show a progress bar when starting the pool. The default
+is True
, but the progress bar is not shown when wait=False
.
+
+restart_failed bool , optional
Whether to restart any failed instances in the pool. The default is
+True
.
+
+**kwargs dict
, optional
Additional keyword arguments. For a list of all keyword
+arguments, use the ansys.mechanical.core.launch_mechanical()
+function. If the exec_file
keyword argument is found, it is used to
+start instances. PyPIM is used to create instances if the following
+conditions are met:
+
+
+
+
+
+Examples
+Create a pool of 10 Mechanical instances.
+>>> from ansys.mechanical.core import LocalMechanicalPool
+>>> pool = LocalMechanicalPool ( 10 )
+Creating Pool: 100%|########| 10/10 [00:01<00:00, 1.43it/s]
+
+
+On Windows, create a pool while specifying the Mechanical executable file.
+>>> exec_file = 'C:/Program Files/ANSYS Inc/v231/aisol/bin/winx64/AnsysWBU.exe'
+>>> pool = LocalMechanicalPool ( 10 , exec_file = exec_file )
+Creating Pool: 100%|########| 10/10 [00:01<00:00, 1.43it/s]
+
+
+On Linux, create a pool while specifying the Mechanical executable file.
+>>> exec_file = '/ansys_inc/v231/aisol/.workbench'
+>>> pool = LocalMechanicalPool ( 10 , exec_file = exec_file )
+Creating Pool: 100%|########| 10/10 [00:01<00:00, 1.43it/s]
+
+
+In the PyPIM environment, create a pool.
+>>> pool = LocalMechanicalPool ( 10 , version = "231" )
+Creating Pool: 100%|########| 10/10 [00:01<00:00, 1.43it/s]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/architecture.html b/version/0.10/architecture.html
new file mode 100644
index 000000000..eea07c310
--- /dev/null
+++ b/version/0.10/architecture.html
@@ -0,0 +1,937 @@
+
+
+
+
+
+
+
+
+
+
+ PyMechanical architecture — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PyAnsys
+
+
+
+
+
+
+
+
+ PyMechanical architecture
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+PyMechanical architecture
+PyMechanical provides a Python interface to Ansys Mechanical. Mechanical is a
+polyglot desktop app whose graphical user interface (GUI) runs on either
+the Windows or Linux operating system. Mechanical’s APIs are implemented in C#
+using .NET Framework 4.x. They are exposed to both C# and two implementations
+ of Python, namely IronPython and CPython.
+Within Mechanical, Python scripting enables you to automate repetitive GUI
+actions. This is not unlike other apps developed either by Ansys or other
+software companies. Python scripting leverages the Mechanical API.
+Mechanical, like some other apps, is customizable. Using the same API that you
+would use for scripting, you can implement extensions that add to the
+capabilities of Mechanical. For example, buttons can be added to the GUI and
+custom objects can be added to the data model. Even third-party or in-house
+solvers can be integrated into Mechanical and can take advantage of the
+powerful meshing, generic CAD reader, and the intuitive pre- and post-
+processing experience of Mechanical.
+Before discussing how Mechanical’s API is implemented, we discuss a software
+design pattern known as the command pattern . This pattern can be used in many
+programming languages. For a general description (using the Java programming
+language) of the command pattern, see Command Design Pattern in the
+HowToDoInJava newsletter. Our own brief explanation follows.
+
+Command pattern
+Many interactive apps use the command pattern. It turns anything that the user
+does within the app into a command object, which is immediately executed. This
+approach carries some additional benefits .
+More relevant to this discussion is how command patterns can be used to
+implement automation APIs. If every action is a command, then that Command can
+serve as the API. So long as the Commands can be encoded in text, a scripting
+language can be used to execute them. In fact, this approach is roughly how the
+Ansys Electronics Desktop, Ansys Mechanical APDL, and the Ansys Workbench apps
+implement automation APIs for scripting.
+Using the command pattern as a scripting API has disadvantages. Most
+importantly, command APIs are not symmetric. The four fundamental operations on
+data within a software app are Create
, Read
, Update
, and
+Delete
. These are often abbreviated as CRUD. While you can conceptually
+update, create, and delete using commands, you can not read using a command.
+This makes it difficult to “visit” the app’s data model.
+
+
+Mechanical API implementation
+Mechanical’s API serves the needs of both automation and customization . For
+customization, it is necessary to read the data model. For example, when
+integrating a third-party solver, you must access boundary conditions,
+geometry, material properties, mesh, and connections to properly input them to
+the solver. As discussed earlier, the command pattern does not allow this kind
+of access. Due to this fact, the Mechanical API exposes its data model directly
+to the user. This is how a hypothetical command-based API would look for
+renaming an object.
+RenameCommand ( id = 100 , name = "New name" )
+
+
+Instead, an API based on a data model, like Mechanical’s API, looks like this:
+obj = GetObject ( id = 100 )
+print ( obj . Name )
+obj . Name = "New name"
+
+
+Notice that you could print the name by Reading a property of the object. A
+command-based API can not provide the same experience.
+
+
+PyMechanical remote interface
+One way to interact with the Mechanical API from Python is as a remote session.
+You can run Mechanical as a server and send a Remote Procedure Call (RPC).
+The server handles the RPC and returns the response to the client. Currently,
+sending commands as a string and getting the result as a string is the only
+option.
+
+
+PyMechanical embedded instance
+The embedded instance used by PyMechanical embeds an entire instance of the
+Mechanical app in-memory inside of a Python program. There is no additional
+running process associated with it. Mechanical’s data model is directly
+available within Python, which means that the fully CRUD data model of the
+Mechanical API can be used.
+
+
+
+Distributed systems
+This section contains a very basic explanation of distributed systems . It is
+not meant be exhaustive and rigorous, but it instead introduces just the topics
+necessary as simply as possible to help you understand the choices made by the
+designers of PyMechanical.
+A distributed system is a software system that uses a network to distribute
+software across physical machines. With a distributed system, the individual
+pieces of that system do not share an address space and therefore cannot call
+functions of each other directly. Instead, they communicate with each other by
+sending messages to each other. Examples include email, multiplayer games, web
+apps, and high-performance computing, among other things.
+Distributed systems have unique characteristics when compared to classical
+software systems that share an address space. For instance, in a distributed
+system, any call can fail because of a problem with the network, and the caller
+can not always know whether a call has failed. For this reason, features of
+interest to distributed system designers, such as fault tolerance, redundancy,
+and idempotency, are not emphasized by classical software systems.
+In a distributed system, any computer can theoretically talk to any other
+computer. However, it is useful to divide them conceptually into clients and
+servers. Clients send requests to servers. Servers are expected return a
+response to the client.
+There are protocols that describe how information moves between
+computers. We begin with an explanation of remote procedure calls.
+
+Remote procedure calls
+When one computer invokes a procedure on another computer using a network, it
+is said to have done an RPC. Unlike a normal procedure call, it can be
+unreliable and orders of magnitude slower. There also needs to be a handshake
+so that both sides understand how to interpret the bytes that move between
+computers . This handshake can be negotiated byte-per-byte, but in
+practice, the internet protocols provide useful conventions and standards that
+have been tried and tested.
+While standards are useful, it is not practical for every developer to craft
+packets to send over the wire by hand. In many programming languages, libraries,
+and tools wrap around the most popular conventions of internet protocols. These
+libraries and tools can be opinionated in how RPCs can and should be written.
+Some offer low-level method invocation facilities, like gRPC and zeroMQ. Others
+take a view on how RPCs should be done. Two such views are Representational
+State Transfer (REST) and Remote Method Invocation (RMI).
+
+
+REST
+The design principles of REST are often credited as being responsible for the
+infinite scalability of the internet. It can be thought of as a set of styles
+or constraints that most web apps comply with or at least try to. Since REST
+is not an official standard, it can be implemented on any protocol. Since it
+was designed for HTTP, it is usually associated with it and its direct
+descendants . However, the principles of REST can be applied on any
+protocol.
+Applications that conform to REST are said to provide RESTful APIs. For a more
+detailed description, see What is a REST API
+<https://www.redhat.com/en/topics/api/what-is-a-rest-api> on the Red Hat
+Technology Topics page.
+
+
+Remote method invocation
+In the nineties, Object Oriented Programming (OOP) exploded in popularity.
+Among other things, OOP allows programmers to add abstractions on top of data
+in their code using objects. When done well, objects can reduce code complexity
+and makes large scale software easier to reason about. It was thought that even
+the difference between RPCs and calls made in a program’s address space could
+be abstracted. In effect, the user of an object does not need to know whether
+an object exists remotely or locally. Operations on that object could be done
+in the same way, regardless.
+This approach is known as Remote Method Invocation (RMI). RMI was widely
+implemented using CORBA, DCOM, Remoting (.NET), and Java RMI. However, this
+approach has fallen out of favor with the rise of the internet, as it was
+observed that it does not scale in the same way that something like REST does.
+As it became less popular, tools, and library support fell away. For instance,
+recent versions of .NET do not implement the Remoting library, and COM/DCOM are
+no longer taken seriously by web apps.
+For an illuminating discussion of the problems with RMI, see Microservices and
+the First Law of Distributed Objects on
+Martin Fowler’s website.
+
+
+
+Remote mechanical
+Mechanical’s official API is that of an object model, and PyMechanical provides
+exactly that API to Python. Because object models are not suitable as remote
+APIs, PyMechanical does not provide that API in a remote fashion. This is why
+the remote session API is based on strings, while the embedded instance API can
+provide the Mechanical API directly to Python.
+
+A different remote interface
+An alternative remote API for Mechanical is practical so long as it is not
+using RMI. In fact, Mechanical uses a REST API internally as part of its GUI.
+This is not the official Mechanical API and is not currently documented. A new
+remote interface for Mechanical is not an immediate goal of PyMechanical.
+
+
+Using PyMechanical in a distributed system
+You can still build a distributed system where Mechanical is run remotely using
+the embedded instance of Mechanical in PyMechanical. For this to work, Python
+itself would run remotely, and therefore the embedded instance would run
+remotely. The communication across the network in that system would be done in
+Python.
+Footnotes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/contributing.html b/version/0.10/contributing.html
new file mode 100644
index 000000000..3629fdd2e
--- /dev/null
+++ b/version/0.10/contributing.html
@@ -0,0 +1,936 @@
+
+
+
+
+
+
+
+
+
+
+ Contribute — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Contribute
+Overall guidance on contributing to a PyAnsys library appears in
+Contributing
+in the PyAnsys Developer’s Guide . Ensure that you are thoroughly familiar
+with this guide before attempting to contribute to PyMechanical.
+The following contribution information is specific to PyMechanical.
+
+Install in developer mode
+Installing PyMechanical in developer mode allows
+you to modify the source and enhance it.
+
+To install PyMechanical in developer mode, perform these steps:
+
+Clone the pymechanical
repository:
+ git clone https://github.com/ansys/pymechanical
+
+
+
+Access the pymechanical
directory where the repository has been cloned:
+
+
+Create a clean Python virtual environment and activate it:
+
+
+
+
+Windows
+
+
+
+CMD
+
python -m venv .venv
+.venv\Scripts\activate.bat
+
+
+
+
+
+PowerShell
+
python -m venv .venv
+.venv\Scripts\Activate.ps1
+
+
+
+
+
+
+
+Linux/UNIX
+
python -m venv .venv
+source .venv/bin/activate
+
+
+
+
+
+Ensure that you have the latest required build system tools:
+ python -m pip install -U pip tox flit twine
+
+
+
+Install the project in editable mode:
+# Install the minimum requirements
+python -m pip install -e .
+
+# Install the minimum + tests requirements
+python -m pip install -e .[ tests]
+
+# Install the minimum + doc requirements
+python -m pip install -e .[ doc]
+
+# Install all requirements
+python -m pip install -e .[ tests,doc]
+
+
+
+Verify your development installation:
+
+
+
+
+
+
+Test PyMechanical
+PyMechanical uses PyTest and tox for unit testing.
+
+Using tox
+This project takes advantage of tox . This tool automates common development
+tasks (similar to Makefile
), but it is oriented towards Python development.
+While Makefile
has rules, tox
has environments. In fact, tox
+creates its own virtual environment so that anything being tested is isolated
+from the project to guarantee the project’s integrity.
+The following environment commands are provided:
+
+tox -e style
: Checks for coding style quality.
+tox -e py
: Checks for unit tests.
+tox -e py-coverage
: Checks for unit testing and code coverage.
+tox -e doc
: Checks for documentation-building process.
+
+
+
+Without tox
+If required, from the command line, you can call style commands like
+black , isort , and flake8 . You can also call unit testing commands like PyTest .
+However, running these commands do not guarantee that your project is being tested
+in an isolated environment, which is the reason why tools like tox
exist.
+
+
+Remote testing
+If you do not have a licensed copy of Mechanical installed locally but want to
+run PyMechanical unit tests on a remote instance, you must set up environment
+variables.
+On Linux
+export PYMECHANICAL_START_INSTANCE = False
+export PYMECHANICAL_PORT =< MECHANICAL Port > ( default 10000 )
+export PYMECHANICAL_IP =< MECHANICAL IP > ( default 127.0.0.1 )
+
+
+On Windows
+SET PYMECHANICAL_START_INSTANCE = False
+SET PYMECHANICAL_PORT =< MECHANICAL Port > ( default 10000 )
+SET PYMECHANICAL_IP =< MECHANICAL IP > ( default 127.0.0.1 )
+
+
+The environment variables for your operating system tell PyMechanical
+to attempt to connect to the existing Mechanical service by default
+when you use the launch_mechanical()
+method.
+
+
+
+Documentation
+For building documentation, you can run the usual rules provided in the
+Sphinx make
file. Here is an example:
+# build and view the doc from the POSIX system
+make -C doc/ html && your_browser_name doc/html/index.html
+
+# build and view the doc from a Windows environment
+.\d oc\m ake.bat clean
+.\d oc\m ake.bat html
+start .\d oc\_ build\h tml\i ndex.html
+
+
+However, the recommended way of checking documentation integrity is to use
+tox
:
+ tox -e doc && your_browser_name .tox/doc_out/index.html
+
+
+
+
+Distributing
+If you would like to create either source or wheel files, start by installing
+the building requirements and then executing the build module:
+ python -m pip install -U pip
+python -m flit build
+python -m twine check dist/*
+
+
+
+
+Post issues
+Use the PyMechanical Issues
+page to submit questions, report bugs, and request new features. When possible,
+use these templates:
+
+Bug report
+Feature request
+
+If your issue does not fit into one of these template categories, create your own issue.
+To reach the project support team, email pyansys. core@ ansys. com .
+
+
+View documentation
+Documentation for the latest stable release of PyMechanical is hosted at
+PyMechanical Documentation .
+In the upper right corner of the documentation’s title bar, there is an option
+for switching from viewing the documentation for the latest stable release
+to viewing the documentation for the development version or previously
+released versions.
+
+
+Code style
+As indicated in Coding style
+in the PyAnsys Developer’s Guide , PyMechanical follows PEP8 guidelines. PyMechanical
+implements pre-commit for style checking.
+To ensure your code meets minimum code styling standards, run these commands:
+pip install pre - commit
+pre - commit run -- all - files
+
+
+You can also install this as a pre-commit hook by running this command:
+
+This way, it’s not possible for you to push code that fails the style checks:
+ $ pre-commit install
+$ git commit -am "added my cool feature"
+black....................................................................Passed
+isort....................................................................Passed
+flake8...................................................................Passed
+codespell................................................................Passed
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/examples/announcement.html b/version/0.10/examples/announcement.html
new file mode 100644
index 000000000..a838ea4eb
--- /dev/null
+++ b/version/0.10/examples/announcement.html
@@ -0,0 +1,4 @@
+
+ You are not viewing the most recent version of this documentation.
+ The latest stable release is 0.11
+
diff --git a/version/0.10/examples/gallery_examples/announcement.html b/version/0.10/examples/gallery_examples/announcement.html
new file mode 100644
index 000000000..a838ea4eb
--- /dev/null
+++ b/version/0.10/examples/gallery_examples/announcement.html
@@ -0,0 +1,4 @@
+
+ You are not viewing the most recent version of this documentation.
+ The latest stable release is 0.11
+
diff --git a/version/0.10/examples/gallery_examples/embedding_n_remote/announcement.html b/version/0.10/examples/gallery_examples/embedding_n_remote/announcement.html
new file mode 100644
index 000000000..a838ea4eb
--- /dev/null
+++ b/version/0.10/examples/gallery_examples/embedding_n_remote/announcement.html
@@ -0,0 +1,4 @@
+
+ You are not viewing the most recent version of this documentation.
+ The latest stable release is 0.11
+
diff --git a/version/0.10/examples/gallery_examples/embedding_n_remote/embedding_remote.html b/version/0.10/examples/gallery_examples/embedding_n_remote/embedding_remote.html
new file mode 100644
index 000000000..560eb346c
--- /dev/null
+++ b/version/0.10/examples/gallery_examples/embedding_n_remote/embedding_remote.html
@@ -0,0 +1,1292 @@
+
+
+
+
+
+
+
+
+
+
+ Remote & Embedding Example — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PyAnsys
+
+
+
+
+
+
+
+
+ Remote & Embedding Example
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Remote & Embedding Example
+This code, which uses the same example, first demonstrates how to use
+a remote session and then demonstrates how to use an embedding instance.
+
+Remote Session
+
+Download required files
+Download the required files. Print the file paths for the geometry file and
+script file.
+import os
+
+from ansys.mechanical.core import launch_mechanical
+from ansys.mechanical.core.examples import download_file
+
+geometry_path = download_file ( "Valve.pmdb" , "pymechanical" , "embedding" )
+print ( f "Downloaded the geometry file to: { geometry_path } " )
+
+script_file_path = download_file ( "remote_script.py" , "pymechanical" , "embedding" )
+print ( f "Downloaded the script file to: { script_file_path } " )
+
+
+ Downloaded the geometry file to: /github/home/.local/share/ansys_mechanical_core/examples/Valve.pmdb
+Downloaded the script file to: /github/home/.local/share/ansys_mechanical_core/examples/remote_script.py
+
+
+
+
+Launch Mechanical
+Launch a new Mechanical session in batch, setting cleanup_on_exit
to
+False
. To close this Mechanical session when finished, this example
+must call the mechanical.exit()
method.
+import os
+
+from ansys.mechanical.core import launch_mechanical
+
+# Launch mechanical
+mechanical = launch_mechanical ( batch = True , loglevel = "DEBUG" )
+print ( mechanical )
+
+
+ Ansys Mechanical [Ansys Mechanical Enterprise]
+Product Version:241
+Software build date: 11/27/2023 10:24:20
+
+
+
+
+Initialize variable for workflow
+Set the part_file_path
variable on the server for later use.
+Make this variable compatible for Windows, Linux, and Docker containers.
+
+ project directory = /tmp/ANSYS.root.1/AnsysMech3BE0/Project_Mech_Files/
+
+Uploading Valve.pmdb to dns:///127.0.0.1:10000:/tmp/ANSYS.root.1/AnsysMech3BE0/Project_Mech_Files/.: 0%| | 0.00/774k [00:00<?, ?B/s]
+Uploading Valve.pmdb to dns:///127.0.0.1:10000:/tmp/ANSYS.root.1/AnsysMech3BE0/Project_Mech_Files/.: 100%|██████████| 774k/774k [00:00<00:00, 295MB/s]
+part_file_path on server: /tmp/ANSYS.root.1/AnsysMech3BE0/Project_Mech_Files/Valve.pmdb
+
+
+
+
+Run mechanical automation script
+Run remote_script.py in the mechanical remote session.
+
+
+
+
+Get list of generated files
+
+ /tmp/ANSYS.root.1/AnsysMech3BE0/Project_Mech_Files/file.mechdb
+/tmp/ANSYS.root.1/AnsysMech3BE0/Project_Mech_Files/file_Mech_Files/.mech_lock
+/tmp/ANSYS.root.1/AnsysMech3BE0/Project_Mech_Files/file_Mech_Files/StaticStructural/ds.dat
+/tmp/ANSYS.root.1/AnsysMech3BE0/Project_Mech_Files/file_Mech_Files/StaticStructural/CAERepOutput.xml
+/tmp/ANSYS.root.1/AnsysMech3BE0/Project_Mech_Files/file_Mech_Files/StaticStructural/solve.out
+/tmp/ANSYS.root.1/AnsysMech3BE0/Project_Mech_Files/file_Mech_Files/StaticStructural/file0.err
+/tmp/ANSYS.root.1/AnsysMech3BE0/Project_Mech_Files/file_Mech_Files/StaticStructural/MatML.xml
+/tmp/ANSYS.root.1/AnsysMech3BE0/Project_Mech_Files/file_Mech_Files/StaticStructural/CAERep.xml
+
+
+
+
+Write the file contents to console
+def write_file_contents_to_console ( path , number_lines =- 1 ):
+ count = 1
+ with open ( path , "rt" ) as file :
+ for line in file :
+ if number_lines == - 1 or count <= number_lines :
+ print ( line , end = "" )
+ count = count + 1
+ else :
+ break
+
+
+
+
+Download files back to local working directory
+
+ Downloading dns:///127.0.0.1:10000:/tmp/ANSYS.root.1/AnsysMech3BE0/Project_Mech_Files/file.mechdb to /__w/pymechanical/pymechanical/examples/embedding_n_remote/download/file.mechdb: 0%| | 0.00/7.06M [00:00<?, ?B/s]
+Downloading dns:///127.0.0.1:10000:/tmp/ANSYS.root.1/AnsysMech3BE0/Project_Mech_Files/file.mechdb to /__w/pymechanical/pymechanical/examples/embedding_n_remote/download/file.mechdb: 100%|██████████| 7.06M/7.06M [00:00<00:00, 217MB/s]
+
+Downloading dns:///127.0.0.1:10000:/tmp/ANSYS.root.1/AnsysMech3BE0/Project_Mech_Files/file_Mech_Files/.mech_lock to /__w/pymechanical/pymechanical/examples/embedding_n_remote/download/.mech_lock: 0%| | 0.00/17.0 [00:00<?, ?B/s]
+Downloading dns:///127.0.0.1:10000:/tmp/ANSYS.root.1/AnsysMech3BE0/Project_Mech_Files/file_Mech_Files/.mech_lock to /__w/pymechanical/pymechanical/examples/embedding_n_remote/download/.mech_lock: 100%|██████████| 17.0/17.0 [00:00<00:00, 61.8kB/s]
+
+Downloading dns:///127.0.0.1:10000:/tmp/ANSYS.root.1/AnsysMech3BE0/Project_Mech_Files/file_Mech_Files/StaticStructural/ds.dat to /__w/pymechanical/pymechanical/examples/embedding_n_remote/download/ds.dat: 0%| | 0.00/4.85M [00:00<?, ?B/s]
+Downloading dns:///127.0.0.1:10000:/tmp/ANSYS.root.1/AnsysMech3BE0/Project_Mech_Files/file_Mech_Files/StaticStructural/ds.dat to /__w/pymechanical/pymechanical/examples/embedding_n_remote/download/ds.dat: 100%|██████████| 4.85M/4.85M [00:00<00:00, 331MB/s]
+
+Downloading dns:///127.0.0.1:10000:/tmp/ANSYS.root.1/AnsysMech3BE0/Project_Mech_Files/file_Mech_Files/StaticStructural/CAERepOutput.xml to /__w/pymechanical/pymechanical/examples/embedding_n_remote/download/CAERepOutput.xml: 0%| | 0.00/789 [00:00<?, ?B/s]
+Downloading dns:///127.0.0.1:10000:/tmp/ANSYS.root.1/AnsysMech3BE0/Project_Mech_Files/file_Mech_Files/StaticStructural/CAERepOutput.xml to /__w/pymechanical/pymechanical/examples/embedding_n_remote/download/CAERepOutput.xml: 100%|██████████| 789/789 [00:00<00:00, 5.17MB/s]
+
+Downloading dns:///127.0.0.1:10000:/tmp/ANSYS.root.1/AnsysMech3BE0/Project_Mech_Files/file_Mech_Files/StaticStructural/solve.out to /__w/pymechanical/pymechanical/examples/embedding_n_remote/download/solve.out: 0%| | 0.00/10.6k [00:00<?, ?B/s]
+Downloading dns:///127.0.0.1:10000:/tmp/ANSYS.root.1/AnsysMech3BE0/Project_Mech_Files/file_Mech_Files/StaticStructural/solve.out to /__w/pymechanical/pymechanical/examples/embedding_n_remote/download/solve.out: 100%|██████████| 10.6k/10.6k [00:00<00:00, 52.6MB/s]
+contents of ['/__w/pymechanical/pymechanical/examples/embedding_n_remote/download/solve.out'] :
+
+ Ansys Mechanical Enterprise
+
+
+ *------------------------------------------------------------------*
+ | |
+ | W E L C O M E T O T H E A N S Y S (R) P R O G R A M |
+ | |
+ *------------------------------------------------------------------*
+
+
+
+
+ ***************************************************************
+ * ANSYS MAPDL 2024 R1 LEGAL NOTICES *
+ ***************************************************************
+ * *
+ * Copyright 1971-2024 Ansys, Inc. All rights reserved. *
+ * Unauthorized use, distribution or duplication is *
+ * prohibited. *
+ * *
+ * Ansys is a registered trademark of Ansys, Inc. or its *
+ * subsidiaries in the United States or other countries. *
+ * See the Ansys, Inc. online documentation or the Ansys, Inc. *
+ * documentation CD or online help for the complete Legal *
+ * Notice. *
+ * *
+ ***************************************************************
+ * *
+ * THIS ANSYS SOFTWARE PRODUCT AND PROGRAM DOCUMENTATION *
+ * INCLUDE TRADE SECRETS AND CONFIDENTIAL AND PROPRIETARY *
+ * PRODUCTS OF ANSYS, INC., ITS SUBSIDIARIES, OR LICENSORS. *
+ * The software products and documentation are furnished by *
+ * Ansys, Inc. or its subsidiaries under a software license *
+ * agreement that contains provisions concerning *
+ * non-disclosure, copying, length and nature of use, *
+ * compliance with exporting laws, warranties, disclaimers, *
+ * limitations of liability, and remedies, and other *
+ * provisions. The software products and documentation may be *
+ * used, disclosed, transferred, or copied only in accordance *
+ * with the terms and conditions of that software license *
+ * agreement. *
+ * *
+ * Ansys, Inc. is a UL registered *
+ * ISO 9001:2015 company. *
+ * *
+ ***************************************************************
+ * *
+ * This product is subject to U.S. laws governing export and *
+ * re-export. *
+ * *
+ * For U.S. Government users, except as specifically granted *
+ * by the Ansys, Inc. software license agreement, the use, *
+ * duplication, or disclosure by the United States Government *
+ * is subject to restrictions stated in the Ansys, Inc. *
+ * software license agreement and FAR 12.212 (for non-DOD *
+ * licenses). *
+ * *
+ ***************************************************************
+
+
+
+ *------------------------------------------------------------------*
+ | Ansys Product Improvement |
+ | |
+ | Ansys Product Improvement Program helps improve Ansys |
+ | products. Participating in this program is like filling out a |
+ | survey. Without interrupting your work, the software reports |
+ | anonymous usage information such as errors, machine and |
+ | solver statistics, features used, etc. to Ansys. We never |
+ | use the data to identify or contact you. |
+ | The data does NOT contain: |
+ | - Any personally identifiable information including names, |
+ | IP addresses, file names, part names, etc. |
+ | - Any information about your geometry or design specific |
+ | inputs. |
+ | You can stop participation at any time. To change your |
+ | selection go to Help >> Ansys Product Improvement Program |
+ | in the GUI. |
+ | For more information about the Ansys Privacy Policy, please |
+ | check: http://www.ansys.com/privacy |
+ | |
+ *------------------------------------------------------------------*
+
+
+ 2024 R1
+
+ Point Releases and Patches installed:
+
+ Ansys, Inc. License Manager 2024 R1
+ Structures 2024 R1
+ LS-DYNA 2024 R1
+ Mechanical Products 2024 R1
+
+
+ ***** MAPDL COMMAND LINE ARGUMENTS *****
+ BATCH MODE REQUESTED (-b) = NOLIST
+ INPUT FILE COPY MODE (-c) = COPY
+ DISTRIBUTED MEMORY PARALLEL REQUESTED
+ 4 PARALLEL PROCESSES REQUESTED WITH SINGLE THREAD PER PROCESS
+ TOTAL OF 4 CORES REQUESTED
+ INPUT FILE NAME = /tmp/ANSYS.root.1/AnsysMech3BE0/Project_Mech_Files/StaticStructural/dummy.dat
+ OUTPUT FILE NAME = /tmp/ANSYS.root.1/AnsysMech3BE0/Project_Mech_Files/StaticStructural/solve.out
+ START-UP FILE MODE = NOREAD
+ STOP FILE MODE = NOREAD
+
+ RELEASE= 2024 R1 BUILD= 24.1 UP20231106 VERSION=LINUX x64
+ CURRENT JOBNAME=file0 15:47:10 MAY 23, 2024 CP= 0.227
+
+
+ *** FATAL *** CP = 0.240 TIME= 15:47:10
+ The requested number of distributed-memory processes (4) exceeds the
+ number of physical processors that are available (2) on machine:
+ fa8903739a13. The use of virtual processors is not recommended. It
+ is required that you use a maximum of 2 distributed-memory processes
+ on this machine.
+
+ ************************************************************************
+ The above error is non-recoverable by ANSYS
+ ANSYS run terminated by the indicated error
+ Current data base saved if possible.
+ ************************************************************************
+
++--------------------- M A P D L S T A T I S T I C S ------------------------+
+
+Release: 2024 R1 Build: 24.1 Update: UP20231106 Platform: LINUX x64
+Date Run: 05/23/2024 Time: 15:47 Process ID: 14927
+Operating System: Ubuntu 20.04.6 LTS
+
+Processor Model: AMD EPYC 7763 64-Core Processor
+
+Compiler: Intel(R) Fortran Compiler Classic Version 2021.9 (Build: 20230302)
+ Intel(R) C/C++ Compiler Classic Version 2021.9 (Build: 20230302)
+ Intel(R) Math Kernel Library Version 2020.0.0 Product Build 20191122
+ BLAS Library supplied by AMD BLIS
+
+Number of processes requested : 4
+Number of threads per process requested : 1
+Total number of cores requested : 4 (Distributed Memory Parallel)
+MPI Type: INTELMPI
+MPI Version: Intel(R) MPI Library 2021.10 for Linux* OS
+
+
+GPU Acceleration: Not Requested
+
+Job Name: file0
+Input File: dummy.dat
+
+ Core Machine Name Working Directory
+ -----------------------------------------------------
+ 0 fa8903739a13 /tmp/ANSYS.root.1/AnsysMech3BE0/Project_Mech_Files/StaticStructural
+ 1 fa8903739a13 /tmp/ANSYS.root.1/AnsysMech3BE0/Project_Mech_Files/StaticStructural
+ 2 fa8903739a13 /tmp/ANSYS.root.1/AnsysMech3BE0/Project_Mech_Files/StaticStructural
+ 3 fa8903739a13 /tmp/ANSYS.root.1/AnsysMech3BE0/Project_Mech_Files/StaticStructural
+
+
+
+Total CPU time for main thread : 0.6 seconds
+Total CPU time summed for all threads : 0.2 seconds
+
+Elapsed time spent obtaining a license : 0.3 seconds
+Elapsed time spent pre-processing model (/PREP7) : 0.0 seconds
+Elapsed time spent solution - preprocessing : 0.0 seconds
+Elapsed time spent computing solution : 0.0 seconds
+Elapsed time spent solution - postprocessing : 0.0 seconds
+Elapsed time spent post-processing model (/POST1) : 0.0 seconds
+
+
++------------------ E N D M A P D L S T A T I S T I C S -------------------+
+
+
+ *-----------------------------------------------------------------------------*
+ | |
+ | RUN COMPLETED |
+ | |
+ |-----------------------------------------------------------------------------|
+ | |
+ | Ansys MAPDL 2024 R1 Build 24.1 UP20231106 LINUX x64 |
+ | |
+ |-----------------------------------------------------------------------------|
+ | |
+ | Database Requested(-db) 1024 MB Scratch Memory Requested 1024 MB |
+ | Maximum Database Used 1 MB Maximum Scratch Memory Used 1 MB |
+ | |
+ |-----------------------------------------------------------------------------|
+ | |
+ | CP Time (sec) = 0.249 Time = 15:47:10 |
+ | Elapsed Time (sec) = 1.000 Date = 05/23/2024 |
+ | |
+ *-----------------------------------------------------------------------------*
+
+ ERROR: Worker process(es) with rank(s) solve have encountered a FATAL error.
+ The information below was gathered from the file*.out output file(s).
+ Please review the worker process output file(s) listed below for more
+ details on this error.
+
+ FATAL error message: solve.out
+ The requested number of distributed-memory processes (4) exceeds the
+ number of physical processors that are available (2) on machine:
+ fa8903739a13. The use of virtual processors is not recommended. It
+ is required that you use a maximum of 2 distributed-memory processes
+ on this machine.
+
+Downloading dns:///127.0.0.1:10000:/tmp/ANSYS.root.1/AnsysMech3BE0/Project_Mech_Files/file_Mech_Files/StaticStructural/file0.err to /__w/pymechanical/pymechanical/examples/embedding_n_remote/download/file0.err: 0%| | 0.00/896 [00:00<?, ?B/s]
+Downloading dns:///127.0.0.1:10000:/tmp/ANSYS.root.1/AnsysMech3BE0/Project_Mech_Files/file_Mech_Files/StaticStructural/file0.err to /__w/pymechanical/pymechanical/examples/embedding_n_remote/download/file0.err: 100%|██████████| 896/896 [00:00<00:00, 3.09MB/s]
+
+Downloading dns:///127.0.0.1:10000:/tmp/ANSYS.root.1/AnsysMech3BE0/Project_Mech_Files/file_Mech_Files/StaticStructural/MatML.xml to /__w/pymechanical/pymechanical/examples/embedding_n_remote/download/MatML.xml: 0%| | 0.00/23.3k [00:00<?, ?B/s]
+Downloading dns:///127.0.0.1:10000:/tmp/ANSYS.root.1/AnsysMech3BE0/Project_Mech_Files/file_Mech_Files/StaticStructural/MatML.xml to /__w/pymechanical/pymechanical/examples/embedding_n_remote/download/MatML.xml: 100%|██████████| 23.3k/23.3k [00:00<00:00, 130MB/s]
+
+Downloading dns:///127.0.0.1:10000:/tmp/ANSYS.root.1/AnsysMech3BE0/Project_Mech_Files/file_Mech_Files/StaticStructural/CAERep.xml to /__w/pymechanical/pymechanical/examples/embedding_n_remote/download/CAERep.xml: 0%| | 0.00/28.5k [00:00<?, ?B/s]
+Downloading dns:///127.0.0.1:10000:/tmp/ANSYS.root.1/AnsysMech3BE0/Project_Mech_Files/file_Mech_Files/StaticStructural/CAERep.xml to /__w/pymechanical/pymechanical/examples/embedding_n_remote/download/CAERep.xml: 100%|██████████| 28.5k/28.5k [00:00<00:00, 119MB/s]
+
+
+
+
+Exit remote session
+Close the Mechanical instance.
+
+
+
+
+Embedded Instance
+
+Download the geometry file
+Download Valve.pmdb.
+import os
+
+import ansys.mechanical.core as mech
+from ansys.mechanical.core.examples import download_file
+
+geometry_path = download_file ( "Valve.pmdb" , "pymechanical" , "embedding" )
+print ( f "Downloaded the geometry file to: { geometry_path } " )
+
+
+ Downloaded the geometry file to: /github/home/.local/share/ansys_mechanical_core/examples/Valve.pmdb
+
+
+
+
+Embed Mechanical and set global variables
+Find the mechanical installation path & version.
+Open an embedded instance of Mechanical and set global variables.
+app = mech . App ()
+globals () . update ( mech . global_variables ( app ))
+print ( app )
+
+
+ Ansys Mechanical [Ansys Mechanical Enterprise]
+Product Version:241
+Software build date: 11/27/2023 10:24:20
+
+
+
+
+Add Static Analysis
+Add static analysis to the Model.
+analysis = Model . AddStaticStructuralAnalysis ()
+
+
+
+
+
+Assign material
+matAssignment = Model . Materials . AddMaterialAssignment ()
+tempSel = ExtAPI . SelectionManager . CreateSelectionInfo (
+ Ansys . ACT . Interfaces . Common . SelectionTypeEnum . GeometryEntities
+)
+bodies = [
+ body
+ for body in ExtAPI . DataModel . Project . Model . Geometry . GetChildren (
+ Ansys . Mechanical . DataModel . Enums . DataModelObjectCategory . Body , True
+ )
+]
+geobodies = [ body . GetGeoBody () for body in bodies ]
+ids = System . Collections . Generic . List [ System . Int32 ]()
+[ ids . Add ( item . Id ) for item in geobodies ]
+tempSel . Ids = ids
+matAssignment . Location = tempSel
+matAssignment . Material = "Structural Steel"
+
+
+
+
+Define mesh settings
+mesh = Model . Mesh
+mesh . ElementSize = Quantity ( "25 [mm]" )
+mesh . GenerateMesh ()
+
+
+
+
+Define boundary conditions
+fixedSupport = analysis . AddFixedSupport ()
+fixedSupport . Location = ExtAPI . DataModel . GetObjectsByName ( "NSFixedSupportFaces" )[ 0 ]
+
+frictionlessSupport = analysis . AddFrictionlessSupport ()
+frictionlessSupport . Location = ExtAPI . DataModel . GetObjectsByName ( "NSFrictionlessSupportFaces" )[ 0 ]
+
+pressure = analysis . AddPressure ()
+pressure . Location = ExtAPI . DataModel . GetObjectsByName ( "NSInsideFaces" )[ 0 ]
+
+inputs_quantities = [ Quantity ( "0 [s]" ), Quantity ( "1 [s]" )]
+output_quantities = [ Quantity ( "0 [Pa]" ), Quantity ( "15 [MPa]" )]
+
+inputs_quantities_2 = System . Collections . Generic . List [ Ansys . Core . Units . Quantity ]()
+[ inputs_quantities_2 . Add ( item ) for item in inputs_quantities ]
+
+output_quantities_2 = System . Collections . Generic . List [ Ansys . Core . Units . Quantity ]()
+[ output_quantities_2 . Add ( item ) for item in output_quantities ]
+
+pressure . Magnitude . Inputs [ 0 ] . DiscreteValues = inputs_quantities_2
+pressure . Magnitude . Output . DiscreteValues = output_quantities_2
+
+
+
+
+
+Add results
+solution = analysis . Solution
+solution . AddTotalDeformation ()
+solution . AddEquivalentStress ()
+solution . EvaluateAllResults ()
+
+
+
+
+Save model
+
+ project directory = /tmp/ANSYS.root.1/AnsysMech0F37/Project_Mech_Files/
+
+
+
+
+Export result values to a text file
+
+ filename: Total Deformation
+/tmp/ANSYS.root.1/AnsysMech0F37/Project_Mech_Files/Total Deformation.txt
+Exported Text file Contents /tmp/ANSYS.root.1/AnsysMech0F37/Project_Mech_Files/Total Deformation.txt
+['file.mechdb', 'file_Mech_Files']
+filename: Equivalent Stress
+/tmp/ANSYS.root.1/AnsysMech0F37/Project_Mech_Files/Equivalent Stress.txt
+Exported Text file Contents /tmp/ANSYS.root.1/AnsysMech0F37/Project_Mech_Files/Equivalent Stress.txt
+['file.mechdb', 'file_Mech_Files']
+
+
+Total running time of the script: (0 minutes 56.337 seconds)
+
+Gallery generated by Sphinx-Gallery
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/examples/gallery_examples/embedding_n_remote/index.html b/version/0.10/examples/gallery_examples/embedding_n_remote/index.html
new file mode 100644
index 000000000..17d63da74
--- /dev/null
+++ b/version/0.10/examples/gallery_examples/embedding_n_remote/index.html
@@ -0,0 +1,720 @@
+
+
+
+
+
+
+
+
+
+
+ Embedding and Remote Session Example — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PyAnsys
+
+
+
+
+
+
+
+
+ Embedding and Remote Session Example
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Embedding and Remote Session Example
+This code, which uses the same example, first demonstrates how to use
+an embedding instance and then demonstrates how to use a remote session.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/examples/gallery_examples/embedding_n_remote/sg_execution_times.html b/version/0.10/examples/gallery_examples/embedding_n_remote/sg_execution_times.html
new file mode 100644
index 000000000..9db86430d
--- /dev/null
+++ b/version/0.10/examples/gallery_examples/embedding_n_remote/sg_execution_times.html
@@ -0,0 +1,729 @@
+
+
+
+
+
+
+
+
+
+
+ Computation times — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PyAnsys
+
+
+
+
+
+
+
+
+ Computation times
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Computation times
+00:56.337 total execution time for 1 file from examples/gallery_examples/embedding_n_remote :
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/examples/gallery_examples/index.html b/version/0.10/examples/gallery_examples/index.html
new file mode 100644
index 000000000..225a11156
--- /dev/null
+++ b/version/0.10/examples/gallery_examples/index.html
@@ -0,0 +1,709 @@
+
+
+
+
+
+
+
+
+
+
+ Embedding and Remote Session Example — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PyAnsys
+
+
+
+
+
+
+
+
+ Embedding and Remote Session Example
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Embedding and Remote Session Example
+This code, which uses the same example, first demonstrates how to use
+an embedding instance and then demonstrates how to use a remote session.
+
+
+Gallery generated by Sphinx-Gallery
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/examples/gallery_examples/sg_execution_times.html b/version/0.10/examples/gallery_examples/sg_execution_times.html
new file mode 100644
index 000000000..0c12cf57f
--- /dev/null
+++ b/version/0.10/examples/gallery_examples/sg_execution_times.html
@@ -0,0 +1,729 @@
+
+
+
+
+
+
+
+
+
+
+ Computation times — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PyAnsys
+
+
+
+
+
+
+
+
+ Computation times
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Computation times
+00:00.000 total execution time for 0 files from examples/gallery_examples :
+
+
+
+
+
+
+
+Example
+Time
+Mem (MB)
+
+
+
+N/A
+N/A
+N/A
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/examples/index.html b/version/0.10/examples/index.html
new file mode 100644
index 000000000..6425dbe79
--- /dev/null
+++ b/version/0.10/examples/index.html
@@ -0,0 +1,741 @@
+
+
+
+
+
+
+
+
+
+
+ Examples — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Examples
+Here are examples using Mechanical with the ansys-mechanical-core
library through
+an embedded instance or remote session.
+
+
+
+
+
+
+Embedding Examples
+
Uses PyMechanical to embed an instance of Mechanical directly within Python as a Python object.
+
+
+
+
+
+
+
+Remote Session Examples
+
Uses PyMechanical as a client to a remote Mechanical instance.
+
+
+
+
+
+
+
+
+
+
+
+Embedding Instance & Remote Session Example
+
Demonstrates the same model setup in both an embedded instance and remote session,
+as well as examples using a combination of embedded instances and remote sessions.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/genindex.html b/version/0.10/genindex.html
new file mode 100644
index 000000000..d9e0707f9
--- /dev/null
+++ b/version/0.10/genindex.html
@@ -0,0 +1,871 @@
+
+
+
+
+
+
+
+
+
+ Index — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Index
+
+
+
A
+ |
C
+ |
D
+ |
E
+ |
F
+ |
G
+ |
L
+ |
M
+ |
N
+ |
P
+ |
R
+ |
S
+ |
U
+ |
V
+
+
+A
+
+
+C
+
+
+D
+
+
+E
+
+
+F
+
+
+G
+
+
+L
+
+
+M
+
+
+N
+
+
+P
+
+
+R
+
+
+S
+
+
+U
+
+
+V
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/getting_started/announcement.html b/version/0.10/getting_started/announcement.html
new file mode 100644
index 000000000..a838ea4eb
--- /dev/null
+++ b/version/0.10/getting_started/announcement.html
@@ -0,0 +1,4 @@
+
+ You are not viewing the most recent version of this documentation.
+ The latest stable release is 0.11
+
diff --git a/version/0.10/getting_started/docker.html b/version/0.10/getting_started/docker.html
new file mode 100644
index 000000000..41ec1b01f
--- /dev/null
+++ b/version/0.10/getting_started/docker.html
@@ -0,0 +1,821 @@
+
+
+
+
+
+
+
+
+
+
+ Using Mechanical through Docker — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Using Mechanical through Docker
+You can run Mechanical within a container on any operating system
+using Docker and connect to it with
+PyMechanical.
+Running Mechanical in a containerized environment like Docker or Apptainer
+(formerly Singularity) is advantageous for several reasons, including:
+
+Ability to run in a consistent environment regardless of the host operating system
+Portability and ease of installation
+Large-scale cluster deployment using Kubernetes
+Genuine application isolation through containerization
+
+
+Install the Mechanical image
+There is a Docker image hosted in the PyMechanical GitHub repository that you
+can download using your GitHub credentials.
+Assuming that you have Docker installed, you can authorize Docker to access
+this repository using a GitHub personal access token with packages read
+permission. For more information, see GitHub’s Creating a personal access token .
+Save this token to a file with a command like this:
+echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX > GH_TOKEN . txt
+
+
+This command lets you send the token to Docker without leaving the token value
+in your history.
+Next, authorize Docker to access the repository with this code:
+ GH_USERNAME=<my-github-username>
+cat GH_TOKEN.txt | docker login ghcr.io -u $GH_USERNAME --password-stdin
+
+
+You can now launch Mechanical directly from Docker with a short script or
+directly from the command line. Because this image does not contain a license
+server, you must enter in the IP address of your license server in the
+LICENSE_SERVER
environment variable.
+Launch Mechanical with this code:
+ LICENSE_SERVER=1055@XXX.XXX.XXX.XXX
+VERSION=v23.1.0
+
+IMAGE=ghcr.io/ansys/pymechanical/mechanical:$VERSION
+docker run -e ANSYSLMD_LICENSE_FILE=$LICENSE_SERVER -p ip:10000:10000 $IMAGE
+
+
+Note that port 10000
, which is local to the container, is mapped to
+port 10000
on the host. This makes it possible to use different
+port mappings to launch multiple instances of Mechanical.
+As Mechanical starts, you can see status information:
+Starting the grpc server at port 10000
+Started the grpc server at port 10000
+
+
+
+Connect to the Mechanical container
+You can now connect to the Mechanical container with this code:
+from ansys.mechanical.core import Mechanical
+
+mechanical = Mechanical ()
+
+
+If you mapped to any port other than 10000
, you would specify the port when
+connecting to Mechanical:
+mechanical = Mechanical ( port = f " { my_port } " )
+
+
+Verify your connection with this code:
+>>> mechanical
+Ansys Mechanical [Ansys Mechanical Enterprise]
+Product Version:231
+Software build date:Wednesday, August 10, 2022 4:28:15 PM
+
+
+
+
+
+Additional considerations
+You can provide additional command line parameters to Mechanical by appending them
+to the Docker command. For example, this code shows how you pass feature flags:
+ IMAGE=ghcr.io/ansys/pymechanical/mechanical:$VERSION
+docker run -e ANSYSLMD_LICENSE_FILE=$LICENSE_SERVER -p 10000:10000 $IMAGE -featureflags mechanical.material.import;
+
+
+For additional command line arguments, see the Scripting in Mechanical Guide in the
+Ansys Help.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/getting_started/faq.html b/version/0.10/getting_started/faq.html
new file mode 100644
index 000000000..f9cf40cfd
--- /dev/null
+++ b/version/0.10/getting_started/faq.html
@@ -0,0 +1,826 @@
+
+
+
+
+
+
+
+
+
+
+ Frequently asked questions — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Frequently asked questions
+This section provides answers to frequently asked questions.
+
+How do you report issues?
+You can report issues with PyMechanical, such as bugs, feature requests,
+and documentation errors, on the PyMechanical repository’s Issues page.
+If you want to ask more open-ended questions or are seeking advice
+from experts in the community, you can post on this repository’s
+Discussions page.
+
+
+
+What is the relationship with Ansys Workbench?
+Ansys Workbench is a no-code environment to set up analysis systems that can be linked
+together. It is part of the Ansys family of software tools for process automation and design
+exploration. This family includes Ansys OptiSLang, which may be a more natural fit
+for integration with PyMechanical. The most popular app within the Workbench environment is
+Mechanical, and for many years, Workbench was the only environment you could run Mechanical from.
+Because Workbench is a no-code environment, a lot of the complexity around managing data
+transfer between Ansys apps and running parametric studies is hidden. PyMechanical and
+PyAnsys libraries more broadly give you much more control over your process automation and design
+exploration. However, eliminating Workbench means that you miss out on what it handled under
+the hood.
+
+
+How do you restart a script?
+If you have trouble terminating a simulation, you do not have to close Python, reopen it, and
+clear all previous data such as the mesh using this code:
+import sys
+
+sys . modules [ __name__ ] . __dict__ . clear ()
+
+
+Simply exiting Python should clear the solution within Python. This is because
+stopping the original process means that nothing should be in present in
+a new process.
+The way that you clear all data from Mechanical in PyMechanical depends on if
+Mechanical is a remote session or embedded.
+
+If Mechanical is a remote session, use either the
+Mechanical.clear()
+method or exit and restart Mechanical.
+If Mechanical is embedded, use the
+app.new()
+method.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/getting_started/index.html b/version/0.10/getting_started/index.html
new file mode 100644
index 000000000..07af28a2f
--- /dev/null
+++ b/version/0.10/getting_started/index.html
@@ -0,0 +1,788 @@
+
+
+
+
+
+
+
+
+
+
+ Getting started — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PyAnsys
+
+
+
+
+
+
+
+
+ Getting started
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Getting started
+
+
+
+
+
+
+ Installation guide
+
How to install and verify PyMechanical.
+
+
+
+
+
+
+
+ Versioning
+
Versioning requirements and support for Ansys Mechanical.
+
+
+
+
+
+
+
+
+
+
+
+ Launching PyMechanical
+
Steps to run PyMechanical.
+
+
+
+
+
+
+
+ Docker setup
+
Steps for creating mechanical docker images.
+
+
+
+
+
+
+
+
+
+
+
+ WSL
+
How to install PyMechanical on the Linux platform using a Windows Subsystem.
+
+
+
+
+
+
+
+ FAQs
+
Frequently asked questions and answers.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/getting_started/installation.html b/version/0.10/getting_started/installation.html
new file mode 100644
index 000000000..383f92dc9
--- /dev/null
+++ b/version/0.10/getting_started/installation.html
@@ -0,0 +1,854 @@
+
+
+
+
+
+
+
+
+
+
+ Installation guide — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Installation guide
+To run PyMechanical, you must have a licensed copy of Ansys Mechanical
+installed locally. The version installed dictates the interface and
+features that are available to you.
+PyMechanical is compatible with Mechanical 2023 R1 and later on Windows
+and Linux. For more information please refer to Versioning documentation.
+Later releases provide significantly better support and features.
+
+Install the package
+The latest ansys.mechanical.core
package supports Python 3.9 through
+Python 3.12 on Windows, Linux, and Mac.
+You should consider installing PyMechanical in a virtual environment.
+For more information, see Python’s
+venv – Creation of virtual environments .
+Install the latest package from PyPi with this command:
+pip install ansys - mechanical - core
+
+
+
+
+Install offline
+If you want to install PyMechanical on a computer without access to the internet,
+you can download a wheelhouse archive that corresponds to your
+machine architecture from the Releases page
+of the PyMechanical repository.
+Each wheelhouse archive contains all the Python wheels necessary to install
+PyMechanical from scratch on Windows and Linux for Python 3.9 through Python 3.12. You can install
+a wheelhouse archive on an isolated system with a fresh Python installation or on a
+virtual environment.
+For example, on Linux with Python 3.9, unzip the wheelhouse archive and install it with
+this code:
+unzip ansys - mechanical - core - v0 .11 . dev0 - wheelhouse - Linux - 3.9 wheelhouse
+pip install ansys - mechanical - core - f wheelhouse -- no - index -- upgrade -- ignore - installed
+
+
+If you are on Windows with Python 3.9, unzip the ansys-mechanical-core-v0.11.dev0-wheelhouse-Windows-3.9
+wheelhouse archive to a wheelhouse
directory and then install it using pip
as
+in the preceding example.
+
+
+Verify your installation
+The way that you verify your installation depends on whether you want to run
+Mechanical using a remote session or an embedded instance.
+Before running either, you must first verify that you can find
+the installed version of Mechanical using the ansys.tools.path
package.
+This package is required to use PyMechanical.
+>>> from ansys.tools.path import find_mechanical
+>>> find_mechanical ()
+
+or
+
+>>> find_mechanical ( version = 231 ) # for specific version
+
+('C:/Program Files/ANSYS Inc/v231/aisol/bin/winx64/AnsysWBU.exe', 23.1) # windows
+('/usr/ansys_inc/v231/aisol/.workbench', 23.1) # Linux
+
+
+If you install Ansys in a directory other than the default or typical location,
+you can save this directory path using the save_mechanical_path
function. Then use
+get_mechanical_path
and version_from_path
functions to verify the path and version.
+For more details, refer to the Ansys path tools .
+>>> from ansys.tools.path import save_mechanical_path , find_mechanical
+>>> save_mechanical_path ( "home/username/ansys_inc/v231/aisol/.workbench" )
+>>> path = get_mechanical_path ()
+>>> print ( path )
+
+/home/username/ansys_inc/v231/aisol/.workbench
+
+>>> version = version_from_path ( "mechanical" , path )
+
+231
+
+
+
+Verify a remote session
+Verify your installation by starting a remote session of Mechanical from Python:
+>>> from ansys.mechanical.core import launch_mechanical
+>>> mechanical = launch_mechanical ()
+>>> mechanical
+
+Ansys Mechanical [Ansys Mechanical Enterprise]
+Product Version:231
+Software build date:Wednesday, August 10, 2022 4:28:15 PM
+
+
+If you see a response from the server, you can begin using Mechanical
+as a service. For information on the PyMechanical interface, see
+PyMechanical usage .
+
+
+Verify an embedded instance
+Verify your installation by loading an embedded instance of Mechanical in Python.
+
+
Note
+
If you are running on Linux, you must set some environment variables for
+embedding of Mechanical in Python to work. A script that sets these variables is
+available to install using pip:
+pip install ansys-mechanical-env
+
+To use the script, prepend it to any invocation of Python:
+
+Inside of Python, use the following commands to load an embedded instance:
+>>> from ansys.mechanical.core import App
+>>> app = App ()
+>>> print ( app )
+Ansys Mechanical [Ansys Mechanical Enterprise]
+Product Version:232
+Software build date: 05/30/2023 15:25:53
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/getting_started/running_mechanical.html b/version/0.10/getting_started/running_mechanical.html
new file mode 100644
index 000000000..0d91f86f8
--- /dev/null
+++ b/version/0.10/getting_started/running_mechanical.html
@@ -0,0 +1,975 @@
+
+
+
+
+
+
+
+
+
+
+ Launching PyMechanical — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Launching PyMechanical
+The ansys-mechanical-core
package requires either a local or
+remote instance of Mechanical to communicate with. This page describes
+how Mechanical is installed from the Ansys standard installer and
+describes how you launch and interface with Mechanical from Python.
+
+Install Mechanical
+Mechanical is installed by default from the Ansys standard installer.
+When you run the standard installer, look under the Structural Mechanics
+heading to verify that the Mechanical Products checkbox is selected.
+Although options in the standard installer might change, this image provides
+a reference:
+
+
+
+
+
+
+Launch a remote Mechanical session
+You can use PyMechanical to launch a Mechanical session on the local machine
+Python is running on. Alternatively, you can run Mechanical’s command line
+directly on any machine to start Mechanical in server mode and then use its
+IP address to manually connect to it from Python.
+
+Launch Mechanical on the local machine using Python
+When Mechanical is installed locally on your machine, you can use the
+launch_mechanical()
method to launch and automatically connect to
+Mechanical. While this method provides the easiest and fastest way to launch Mechanical, it only works with a local
+Mechanical installation.
+Launch Mechanical locally with this code:
+>>> from ansys.mechanical.core import launch_mechanical
+>>> mechanical = launch_mechanical ()
+>>> mechanical
+
+Ansys Mechanical [Ansys Mechanical Enterprise]
+Product Version:231
+Software build date:Wednesday, August 10, 2022 4:28:15 PM
+
+
+
+
+Launch Mechanical from the command line
+The ansys-mechanical utility is installed automatically with PyMechanical,
+and can be used to run Mechanical from the command line. To obtain help on
+usage, type the following command:
+$ ansys-mechanical --help
+
+Usage: ansys-mechanical [OPTIONS]
+
+ CLI tool to run mechanical.
+
+ USAGE:
+
+ The following example demonstrates the main use of this tool:
+
+ $ ansys-mechanical -r 241 -g
+
+ Starting Ansys Mechanical version 2024R1 in graphical mode...
+
+Options:
+ -h, --help Show this message and exit.
+ -p, --project-file TEXT Opens Mechanical project file (.mechdb). Cannot
+ be mixed with -i
+ --private-appdata Make the appdata folder private. This enables you
+ to run parallel instances of Mechanical.
+ --port INTEGER Start mechanical in server mode with the given
+ port number
+ -i, --input-script TEXT Name of the input Python script. Cannot be mixed
+ with -p
+ --features TEXT Beta feature flags to set, as a semicolon
+ delimited list. Options: ['MultistageHarmonic',
+ 'ThermalShells']
+ --exit Exit the application after running an input
+ script. You can only use this command with
+ --input-script argument (-i). The command
+ defaults to true you are not running the
+ application in graphical mode. The ``exit``
+ command is only supported in version 2024 R1 or
+ later.
+ -s, --show-welcome-screen Show the welcome screen. You use this screen to
+ open a file. This argument only affects the
+ application when in graphical mode.
+ --debug Show a debug dialog window at the start of the
+ process.
+ -r, --revision INTEGER Ansys Revision number, e.g. "241" or "232". If
+ none is specified, uses the default from ansys-
+ tools-path
+ -g, --graphical Graphical mode
+
+...
+
+
+You can launch Mechanical in server mode from the command line and then
+manually connect to the server. Use the port argument to select the port.
+..code:
+ansys - mechanical -- port 10000
+
+
+
+
+Connect to a Mechanical session
+You can connect to a Mechanical session from the same host or from an external host.
+Assuming that Mechanical is running locally at the default IP address (127.0.0.1
) on the
+default port (10000
), you would use this code to connect to it with this code:
+from ansys.mechanical.core import Mechanical
+
+mechanical = Mechanical ()
+
+
+Now assume that a remote instance of Mechanical has been started in server mode. To connect to
+the computer on your local area network that is running Mechanical, you can use either
+an IP address and port or a hostname and port.
+IP address and port
+Assume that Mechanical is running remotely at IP address 192.168.0.1
on port 10000
.
+You would connect to it with this code:
+mechanical = Mechanical ( "192.168.0.1" , port = 10000 )
+
+
+Hostname and port
+Assume that Mechanical is running remotely at hostname myremotemachine
on port 10000
.
+You would connect to it with this code:
+mechanical = Mechanical ( "myremotemachine" , port = 10000 )
+
+
+
+
+
+Launching issues
+For any number of reasons, launching Mechanical can fail. Some approaches
+follow for debugging launch failures.
+
+Manually set the location of the executable file
+If you have a non-standard installation of Mechanical, PyMechanical might
+not be able to find your installation. In this case, you should manually
+set the location of your Mechanical executable file as the first parameter
+for the launch_mechanical()
method.
+On Windows
+from ansys.mechanical.core import launch_mechanical
+
+exec_loc = "C:/Program Files/ANSYS Inc/v231/aisol/bin/winx64/AnsysWBU.exe"
+mechanical = launch_mechanical ( exec_loc )
+
+
+On Linux
+from ansys.mechanical.core import launch_mechanical
+
+exec_loc = "/usr/ansys_inc/v231/aisol/.workbench"
+mechanical = launch_mechanical ( exec_loc )
+
+
+If, when using the launch_mechanical()
+method, Mechanical still fails to launch or hangs while launching, pass the
+verbose_mechanical=True
parameter. This prints the output of Mechanical in the Python console.
+You can then use this output to debug why Mechanical isn’t launching.
+
+
Note
+
On Windows, output is limited because of the way Mechanical launches.
+
+
+
+Debug from the command line
+You may need to run the launch
command from the command line to debug why Mechanical is not launching.
+running the launch command from the command line.
+Open a terminal and run the following command:
+ansys-mechanical -g --port 10000
+
+
+If the preceding command for your operating system doesn’t launch Mechanical, you might have
+a variety of issues, including:
+
+
+License server setup
+Running behind a VPN
+Missing dependencies
+
+
+
+
+
+Embed a Mechanical instance
+The instructions for embedding a Mechanical instance are different on
+Windows and Linux. While the Python code is the same in both cases,
+Linux requires some additional environment variables.
+
+Python code
+>>> from ansys.mechanical.core import App
+>>> mechanical = App ()
+>>> mechanical
+Ansys Mechanical [Ansys Mechanical Enterprise]
+Product Version:231
+Software build date:Wednesday, August 10, 2022 4:28:15 PM
+
+
+
+
+
+
+Licensing issues
+PADT has an Ansys
+product section. Posts about licensing are common.
+If you are responsible for maintaining an Ansys license or have a personal installation
+of Ansys, you likely can access the
+Licensing
+section of the Ansys Help, where you can view or download the Ansys, Inc. Licensing Guide for
+comprehensive licensing information.
+
+
+VPN issues
+Sometimes, Mechanical has issues starting when VPN software is running. For more information,
+access the Mechanical Users Guide
+in the Ansys Help.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/getting_started/versioning.html b/version/0.10/getting_started/versioning.html
new file mode 100644
index 000000000..90258f1f3
--- /dev/null
+++ b/version/0.10/getting_started/versioning.html
@@ -0,0 +1,752 @@
+
+
+
+
+
+
+
+
+
+
+ Versioning — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Versioning
+PyMechanical attempts to maintain compatibility with legacy archives generated by older
+versions of Mechanical. However, PyMechanical only supports recent releases of Mechanical
+directly.
+
+PyMechanical remote sessions
+Mechanical 2023 R1 and later support the remote session interface, allowing
+for remote management of Mechanical. With the applicable license, you
+can install and use Mechanical with Docker ,
+enabling you to run and solve even on platforms that are not officially supported, like
+the Mac operating system. For more information, see Using Mechanical through Docker .
+
+
+PyMechanical embedded instances
+On Windows, you can use an embedded instance in 2023 R1 and later.
+On Linux, you can use an embedded instance in 2023 R2 and later.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/getting_started/wsl.html b/version/0.10/getting_started/wsl.html
new file mode 100644
index 000000000..dc83f5012
--- /dev/null
+++ b/version/0.10/getting_started/wsl.html
@@ -0,0 +1,1107 @@
+
+
+
+
+
+
+
+
+
+
+ Windows Subsystem for Linux (WSL) — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Windows Subsystem for Linux (WSL)
+This page explains how you use a PyAnsys library, more specifically PyMechanical,
+in the Windows Subsystem for Linux (WSL). WSL is a compatibility layer for
+running Linux binary executables natively on Windows 10, Windows 11, and
+Windows Server 2019. For more information, see:
+
+This page walks you through the installation of WSL on Windows and then
+shows how to use it together with Mechanical, PyMechanical, and
+Docker .
+
+
Caution
+
These instructions have not been fully tested with a VPN connection. If you
+experience any problems connecting WSL to the internet, try to disconnect from the VPN.
+
+
+Run PyMechanical on WSL
+There are two versions of WSL: WSL1 and WSL2. Because WSL2 provides many improvements
+over WSL1, you should upgrade to and use WSL2.
+
+
+Install the CentOS7 WSL distribution
+You can install the CentOS7 WSL using an unofficial distribution from the
+wsldl-pg/CentWSL package or the
+mishamosher/CentOS-WSL package.
+Optionally, you can try Ubuntu, but it has not been tested yet in the context of WSL.
+
+
+Install Ansys products in WSL CentOS7
+If you are using CentOS 7, before installing Mechanical, you must install some
+required libraries:
+ sudo yum install openssl openssh-clients mesa-libGL mesa-libGLU motif libgfortran
+
+
+
+
+Install Ansys products
+To install Ansys products in WSL, perform these steps:
+
+Download the Ansys Structures image for the current Ansys release from the Ansys Customer Portal.
+If you are downloading the image on a Windows machine, you should later copy the image to
+WSL.
+
+Extract the compressed source code file (tar.gz
) with this command:
+ tar xvzf STRUCTURES_2022R2_LINX64.tgz
+
+
+
+To install Mechanical, go into the folder where the files have been extracted
+and run this command:
+ sudo ./INSTALL -silent -install_dir /usr/ansys_inc/ -mechapdl
+
+
+where:
+
+-silent
: Initiates a silent installation, which means no GUI is shown.
+-install_dir /path/
: Specifies the directory to install the product or
+license manager to. If you want to install to the default location, you can
+omit the -install_dir
argument. The default location is /ansys_inc
+if the symbolic link is set. Otherwise, it defaults to /usr/ansys_inc
.
+-<product_flag>
: Specifies the one or more products to install.
+If you omit this argument, all products are installed. The Ansys, Inc.
+Installation Guides in the Ansys Help provides a list of valid
+values for the product_flags
argument in Chapter 6
+of the Linux Installation Guide and Chapter 7
+of the Windows Installation Guide .
+In the preceding example for Mechanical, you only need to specify the -mechapdl
flag.
+
+
+
+
+After installing Mechanical directly in /ansys_inc
or /usr/ansys_inc
,
+you create a symbolic link with this command:
+ sudo ln -s /usr/ansys_inc /ansys_inc
+
+
+By default, PyMechanical expects the Mechanical executable to be in
+/usr/ansys_inc
. Whether you install it there or not, you should
+use a symbolic link to associate that directory with your Ansys installation
+directory (/*/ansys_inc
).
+
+
+
+Post-installation setup
+
+Open ports for license server communication
+Theory: You should open the ports 1055
and 2325
for license server
+communication in the Windows Control Panel . For the steps to set advanced
+Windows firewall options, see Microsoft’s How to open port in Windows 10 Firewall?
+Reality: This works if you want to run a Docker image using a WSL Linux image
+to host this Docker image. The Docker image successfully communicates with the Windows
+license server using these ports if you use the '-p'
flag when running the
+Docker image with these ports open. For more information, see
+Run Mechanical on a local Docker image .
+If you want to run Mechanical in the CentOS7 image and use the Windows license
+server, opening the ports might not work properly because the Windows firewall
+seems to block all traffic coming from WSL. For security purposes, you should
+still try to open ports 1055
and 2325
in the Windows firewall and check if your
+Mechanical installation can communicate with the Windows hosts. If you are having
+problems after setting the firewall rules, you might have to disable the Windows
+firewall for the WSL ethernet’s virtual interface. Because this might pose some
+unknown side effects and security risks, do so with caution. For more information,
+see Disable the firewall on the WSL ethernet .
+
+
+Create an environmental variable in WSL that points to the license server on the Windows host
+The IP address for the Windows host is given in the WSL /etc/hosts
file before the name
+host.docker.internal
.
+
+
Note
+
This host.docker.internal
definition might not be available if Docker is
+not installed.
+
+Here is an example of the WSL /etc/hosts
file:
+# This file is automatically generated by WSL.
+# To stop automatic generation of this file, add the following lines to the
+# ``/etc/wsl.conf`` file:
+#
+# [network]
+# generateHosts = false
+#
+127 .0.0.1 localhost
+127 .0.1.1 AAPDDqVK5WqNLve.win.ansys.com AAPDDqVK5WqNLve
+
+192 .168.0.12 host.docker.internal
+192 .168.0.12 gateway.docker.internal
+127 .0.0.1 kubernetes.docker.internal
+
+# The following lines are desirable for IPv6 capable hosts.
+::1 ip6-localhost ip6-loopback
+fe00::0 ip6-localnet
+ff00::0 ip6-mcastprefix
+ff02::1 ip6-allnodes
+ff02::2 ip6-allrouters
+
+
+You can add the next lines to your WSL ~/.bashrc
file to create an
+environment variable with the IP address:
+winhostIP = $( grep -m 1 host.docker.internal /etc/hosts | awk '{print $1}' )
+export ANSYSLMD_LICENSE_FILE = 1055 @$winhostIP
+
+
+
+
+
+Run Mechanical on a local Docker image
+To run a Docker image, you must follow all steps in Run PyMechanical on WSL .
+Additionally, run a Docker image of PyMechanical with this command:
+docker run -e ANSYSLMD_LICENSE_FILE = 1055 @host . docker . internal - -restart always - -name mechanical -p 10000 : 10000 ghcr . io / ansys / pymechanical / mechanical > log . txt
+
+
+Successive runs should restart the container. Or, delete the container and rerun it with
+this code:
+docker stop mechanical
+docker container prune
+
+docker run -e ANSYSLMD_LICENSE_FILE = 1055 @host . docker . internal - -restart always - -name mechanical -p 10001 : 10000 ghcr . io / ansys / pymechanical / mechanical > log . txt
+
+
+Running a Docker image creates a log.txt
file in your current directory location.
+
+
Note
+
Ensure that your port 10001
is open in your firewall.
+
+You should use a script file (batch .bat
or PowerShell .ps
)
+to run the preceding commands all at once.
+Notice that the WSL internal gRPC port (10000
) is being mapped to a
+different Windows host port (10001
) to avoid ports conflicts.
+This image is ready to be connected to from WSL or the Windows host. However,
+you should specify the IP address and port using one of the following methods.
+Method 1
+from ansys.mechanical.core import launch_mechanical
+
+mechanical = launch_mechanical ( ip = "127.0.0.1" , port = 10001 , start_instance = False )
+
+
+Method 2
+from ansys.mechanical.core import Mechanical
+
+mechanical = Mechanical ( ip = "127.0.0.1" , port = 10001 )
+
+
+Method 3
+This method specifies the IP address and port using environment variables that are read when
+the Mechanical instance is launched.
+export PYMECHANICAL_START_INSTANCE = False
+export pymechanical_port = 10001
+export pymechanical_ip = 127 .0.0.1
+
+
+
+
+
+IP addresses in WSL and the Windows host
+Theory: You should be able to access the Windows host using the IP address
+specified in the WSL /etc/hosts
file. This IP address is typically 127.0.1.1
.
+This means that the local WSL IP address is 127.0.0.1
.
+Reality: It is almost impossible to use the IP address 127.0.1.1
to
+connect to the Windows host. However, it is possible to use the host.docker.internal
+hostname in the same WSL /etc/hosts
file. This is an IP address that is
+randomly allocated, which is an issue when you define the license server. However,
+updating the .bashrc
file as mentioned earlier resolves this issue.
+
+
+Disable the firewall on the WSL ethernet
+There are two methods for disabling the firewall on the WSL ethernet.
+Method 1
+This method shows a notification:
+Set-NetFirewallProfile -DisabledInterfaceAliases "vEthernet (WSL)"
+
+
+Method 2
+This method does not show a notification:
+powershell . exe -Command "Set-NetFirewallProfile -DisabledInterfaceAliases \" vEthernet ( WSL )\ ""
+
+
+On Windows 10, you can use the wsl-windows-toolbar-launcher
+package to launch Linux native apps directly from Windows with the standard
+Windows toolbar. Because the toolbar in Windows 11 differs, the README
+file for this package explains how to run Microsoft’s PowerToys
+package instead.
+
+
+Port forwarding on Windows 10
+You can use Windows PowerShell commands for port forwarding on Windows 10.
+
+Link ports between WSL and Windows
+This command links ports between WSL and Windows:
+netsh interface portproxy add v4tov4 listenport = 1055 listenaddress = 0 . 0 . 0 . 0 connectport = 1055 connectaddress = XXX . XX . XX . XX
+
+
+
+
+View all forwards
+This command allows you to view all forwards:
+netsh interface portproxy show v4tov4
+
+
+
+
+Delete port forwarding
+This command allows you to delete port forwarding:
+netsh interface portproxy delete v4tov4 listenport = 1055 listenaddres = 0 . 0 . 0 . 0 protocol = tcp
+
+
+
+
+
+Reset Windows network adapters
+You can reset Windows network adapters with this code:
+netsh int ip reset all
+netsh winhttp reset proxy
+ipconfig / flushdns
+netsh winsock reset
+
+
+
+
+Restart the WSL service
+You can restart the WSL service with this command:
+Get-Service LxssManager | Restart-Service
+
+
+
+
+Stop all processes with a given name
+You can stop all processes with a given name with this command.
+Get-Process "AnsysWBU" | Stop-Process
+
+
+
+
+Install xvfb
in CentOS7
+If you want to replicate the CI/CD behavior, you must install the xvfb
package
+as shown in the following command. For more information, see the .ci
folder.
+ yum install xorg-x11-server-Xvfb
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/index.html b/version/0.10/index.html
new file mode 100644
index 000000000..9185c3c19
--- /dev/null
+++ b/version/0.10/index.html
@@ -0,0 +1,808 @@
+
+
+
+
+
+
+
+
+
+
+ Introduction — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Introduction
+PyMechanical is part of the larger PyAnsys
+effort to facilitate the use of Ansys technologies directly from
+Python. Its primary package, ansys-mechanical-core
, provides
+scripting of Ansys Mechanical through Python.
+With PyMechanical, you can integrate the simulation capabilities
+of the Mechanical multiphysics solver directly into novel apps.
+The ansys-mechanical-core
package presents a Python-friendly
+interface to drive the software that facilitates the use of Mechanical
+scripting commands.
+With PyMechanical, you can accomplish tasks like these:
+
+Accelerate the preparation of your simulations.
+Combine the expressiveness of general-purpose Python code to control
+the flow in your input decks with methods that drive the solver.
+Explore proof-of-concept studies or capture knowledge using interactive
+Jupyter notebooks.
+Tap the solver as the physics engine in your next AI app.
+
+Contributions to this open source library are welcome. For more information,
+see Contribute .
+
+
+Mechanical scripting
+You can already perform scripting of Mechanical with Python from inside
+Mechanical. PyMechanical leverages the same APIs as Mechanical but allows
+you to run your automation from outside Mechanical. For more information
+on using these APIs, see Mechanical scripting .
+
+
+Background
+PyMechanical contains two interfaces: a remote session and an embedded instance.
+For information on the application architecture of Mechanical and why there are
+two Python interfaces, see PyMechanical architecture .
+
+Remote session
+PyMechanical’s remote session is based on gRPC .
+Mechanical runs as a server, ready to respond to any clients.
+PyMechanical provides a client to connect to a Mechanical server and make API
+calls to this server.
+For information on using a remote session, see
+Remote sessions .
+
+
+Embedded instance
+PyMechanical’s embedded instance is based on Python.NET .
+Rather than starting a new process for Mechanical, a Mechanical object (which is
+implemented in .NET) is directly loaded into Python memory using Python.NET. From
+there, Mechanical’s entire data model is available for use from Python code.
+For information on using an embedded instance, see Embedded instances .
+
+
+
+Documentation and issues
+Documentation for the latest stable release of PyMechanical is hosted at PyMechanical documentation .
+In the upper right corner of the documentation’s title bar, there is an option for switching from
+viewing the documentation for the latest stable release to viewing the documentation for the
+development version or previously released versions.
+You can also view or
+download the
+PyMechanical cheat sheet. This one-page reference provides syntax rules and commands
+for using PyMechanical.
+On the PyMechanical Issues page,
+you can create issues to report bugs and request new features. On the PyMechanical Discussions page or the Discussions
+page on the Ansys Developer portal, you can post questions, share ideas, and get community feedback.
+To reach the project support team, email pyansys. core@ ansys. com .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/objects.inv b/version/0.10/objects.inv
new file mode 100644
index 000000000..bf762291d
Binary files /dev/null and b/version/0.10/objects.inv differ
diff --git a/version/0.10/search.html b/version/0.10/search.html
new file mode 100644
index 000000000..6d7ad154b
--- /dev/null
+++ b/version/0.10/search.html
@@ -0,0 +1,661 @@
+
+
+
+
+
+
+
+
+
+ — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Search
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/searchindex.js b/version/0.10/searchindex.js
new file mode 100644
index 000000000..7e9ee9e33
--- /dev/null
+++ b/version/0.10/searchindex.js
@@ -0,0 +1 @@
+Search.setIndex({"alltitles": {"A different remote interface": [[39, "a-different-remote-interface"]], "ACT in Mechanical": [[48, "act-in-mechanical"]], "API entry points": [[61, "api-entry-points"]], "API reference": [[34, "api-reference"], [65, "api-reference"], [66, "api-reference"]], "Add Static Analysis": [[41, "add-static-analysis"]], "Add results": [[41, "add-results"]], "Addin configuration": [[56, "addin-configuration"]], "Additional configuration": [[58, "additional-configuration"]], "Additional considerations": [[47, "additional-considerations"]], "Additional information": [[53, "additional-information"]], "Additional information for Linux": [[51, "additional-information-for-linux"]], "Additional resources": [[61, "additional-resources"]], "Ansys installation flags": [[53, "ansys-installation-flags"]], "Ansys path tools": [[37, "ansys-path-tools"]], "Assign material": [[41, "assign-material"]], "Background": [[54, "background"]], "Code style": [[40, "code-style"]], "Command pattern": [[39, "command-pattern"]], "Computation times": [[43, "computation-times"], [45, "computation-times"], [55, "computation-times"]], "Concurrency and threads": [[62, "concurrency-and-threads"]], "Connect to a Mechanical session": [[51, "connect-to-a-mechanical-session"]], "Connect to the Mechanical container": [[47, "connect-to-the-mechanical-container"]], "Contribute": [[40, "contribute"]], "Create a pool of Mechanical servers": [[65, "create-a-pool-of-mechanical-servers"]], "Create an environmental variable in WSL that points to the license server on the Windows host": [[53, "create-an-environmental-variable-in-wsl-that-points-to-the-license-server-on-the-windows-host"]], "Debug from the command line": [[51, "debug-from-the-command-line"]], "Define boundary conditions": [[41, "define-boundary-conditions"]], "Define mesh settings": [[41, "define-mesh-settings"]], "Delete port forwarding": [[53, "delete-port-forwarding"]], "Diagnosing problems with embedding": [[58, "diagnosing-problems-with-embedding"]], "Disable the firewall on the WSL ethernet": [[53, "disable-the-firewall-on-the-wsl-ethernet"]], "Distributed systems": [[39, "distributed-systems"]], "Distributing": [[40, "distributing"]], "Documentation": [[40, "documentation"]], "Documentation and issues": [[54, "documentation-and-issues"]], "Download files back to local working directory": [[41, "download-files-back-to-local-working-directory"]], "Download required files": [[41, "download-required-files"]], "Download the geometry file": [[41, "download-the-geometry-file"]], "Embed Mechanical and set global variables": [[41, "embed-mechanical-and-set-global-variables"]], "Embed a Mechanical instance": [[51, "embed-a-mechanical-instance"]], "Embedded Instance": [[41, "embedded-instance"]], "Embedded instance": [[54, "embedded-instance"]], "Embedded instances": [[58, "embedded-instances"]], "Embedding and Remote Session Example": [[42, "embedding-and-remote-session-example"], [44, "embedding-and-remote-session-example"]], "Examples": [[46, "examples"]], "Exit remote session": [[41, "exit-remote-session"]], "Export result values to a text file": [[41, "export-result-values-to-a-text-file"]], "File specifying the products to install": [[53, "file-specifying-the-products-to-install"]], "Frequently asked questions": [[48, "frequently-asked-questions"]], "Get list of generated files": [[41, "get-list-of-generated-files"]], "Getting started": [[49, "getting-started"]], "Globals": [[57, "globals"]], "Helper functions": [[33, "helper-functions"]], "How do you report issues?": [[48, "how-do-you-report-issues"]], "How do you restart a script?": [[48, "how-do-you-restart-a-script"]], "How is PyMechanical positioned with respect to other related Ansys tools?": [[48, "how-is-pymechanical-positioned-with-respect-to-other-related-ansys-tools"]], "IP addresses": [[53, "ip-addresses"]], "IP addresses in WSL and the Windows host": [[53, "ip-addresses-in-wsl-and-the-windows-host"]], "Import geometry": [[41, "import-geometry"]], "Initial setup for launching a Mechanical session on the local machine": [[66, "initial-setup-for-launching-a-mechanical-session-on-the-local-machine"]], "Initialize variable for workflow": [[41, "initialize-variable-for-workflow"]], "Install Ansys products": [[53, "install-ansys-products"]], "Install Ansys products in WSL CentOS7": [[53, "install-ansys-products-in-wsl-centos7"]], "Install Mechanical": [[51, "install-mechanical"]], "Install WSL": [[53, "install-wsl"]], "Install in developer mode": [[40, "install-in-developer-mode"]], "Install offline": [[50, "install-offline"]], "Install the CentOS7 WSL distribution": [[53, "install-the-centos7-wsl-distribution"]], "Install the Mechanical image": [[47, "install-the-mechanical-image"]], "Install the package": [[50, "install-the-package"]], "Install xvfb in CentOS7": [[53, "install-xvfb-in-centos7"]], "Installation guide": [[50, "installation-guide"]], "Introduction": [[54, "introduction"]], "Language for the installation": [[53, "language-for-the-installation"]], "Launch Mechanical": [[41, "launch-mechanical"]], "Launch Mechanical from the command line": [[51, "launch-mechanical-from-the-command-line"]], "Launch Mechanical on the local machine using Python": [[51, "launch-mechanical-on-the-local-machine-using-python"]], "Launch a remote Mechanical session": [[51, "launch-a-remote-mechanical-session"]], "Launching PyMechanical": [[51, "launching-pymechanical"]], "Launching issues": [[51, "launching-issues"]], "Libraries": [[59, "libraries"]], "License server information for the client": [[53, "license-server-information-for-the-client"]], "Licensing issues": [[51, "licensing-issues"]], "Link ports between WSL and Windows": [[53, "link-ports-between-wsl-and-windows"]], "Local Mechanical Pool": [[38, "local-mechanical-pool"]], "LocalMechanicalPool": [[23, "localmechanicalpool"]], "LocalMechanicalPool Class": [[38, "localmechanicalpool-class"]], "Logger": [[14, "logger"]], "Logger class": [[35, "logger-class"]], "Logging": [[35, "logging"], [60, "logging"]], "Manually set the location of the executable file": [[51, "manually-set-the-location-of-the-executable-file"]], "Mechanical": [[36, "mechanical"]], "Mechanical API implementation": [[39, "mechanical-api-implementation"]], "Mechanical entities": [[61, "mechanical-entities"]], "Mechanical scripting": [[54, "mechanical-scripting"], [61, "mechanical-scripting"]], "Mechanical\u2019s threading model": [[62, "mechanical-s-threading-model"]], "Mitigation strategies": [[62, "mitigation-strategies"]], "Open ports for license server communication": [[53, "open-ports-for-license-server-communication"]], "Overview": [[58, "overview"], [61, "overview"], [63, "overview"]], "Port forwarding on Windows 10": [[53, "port-forwarding-on-windows-10"]], "Post issues": [[40, "post-issues"]], "Post-installation setup": [[53, "post-installation-setup"]], "PyMechanical": [[48, "pymechanical"]], "PyMechanical architecture": [[39, "pymechanical-architecture"]], "PyMechanical embedded instance": [[39, "pymechanical-embedded-instance"]], "PyMechanical embedded instances": [[52, "pymechanical-embedded-instances"]], "PyMechanical remote interface": [[39, "pymechanical-remote-interface"]], "PyMechanical remote sessions": [[52, "pymechanical-remote-sessions"]], "PyMechanical usage": [[64, "pymechanical-usage"]], "Python code": [[51, "python-code"]], "REST": [[39, "rest"]], "Race condition": [[62, "race-condition"]], "Recording": [[61, "recording"]], "Remote & Embedding Example": [[41, "remote-embedding-example"]], "Remote Session": [[41, "remote-session"]], "Remote mechanical": [[39, "remote-mechanical"]], "Remote method invocation": [[39, "remote-method-invocation"]], "Remote procedure calls": [[39, "remote-procedure-calls"]], "Remote session": [[54, "remote-session"]], "Remote sessions": [[63, "remote-sessions"]], "Remote testing": [[40, "remote-testing"]], "Reset Windows network adapters": [[53, "reset-windows-network-adapters"]], "Restart the WSL service": [[53, "restart-the-wsl-service"]], "Run Mechanical on a local Docker image": [[53, "run-mechanical-on-a-local-docker-image"]], "Run PyMechanical on WSL": [[53, "run-pymechanical-on-wsl"]], "Run a set of input files": [[65, "run-a-set-of-input-files"]], "Run a user-defined function": [[65, "run-a-user-defined-function"]], "Run mechanical automation script": [[41, "run-mechanical-automation-script"]], "Running PyMechanical embedding scripts inside Mechanical with IronPython": [[58, "running-pymechanical-embedding-scripts-inside-mechanical-with-ironpython"]], "Save model": [[41, "save-model"]], "Scripting in Mechanical": [[48, "scripting-in-mechanical"]], "Solve model": [[41, "solve-model"]], "Stop all processes with a given name": [[53, "stop-all-processes-with-a-given-name"]], "Test PyMechanical": [[40, "test-pymechanical"]], "Threading": [[62, "threading"]], "Using Mechanical through Docker": [[47, "using-mechanical-through-docker"]], "Using PyMechanical in a distributed system": [[39, "using-pymechanical-in-a-distributed-system"]], "Using tox": [[40, "using-tox"]], "VPN issues": [[51, "vpn-issues"]], "Verify a remote session": [[50, "verify-a-remote-session"]], "Verify an embedded instance": [[50, "verify-an-embedded-instance"]], "Verify your installation": [[50, "verify-your-installation"]], "Versioning": [[52, "versioning"]], "View all forwards": [[53, "view-all-forwards"]], "View documentation": [[40, "view-documentation"]], "What is the relationship with Ansys Workbench?": [[48, "what-is-the-relationship-with-ansys-workbench"]], "Windows Subsystem for Linux (WSL)": [[53, "windows-subsystem-for-linux-wsl"]], "Without tox": [[40, "without-tox"]], "Write the file contents to console": [[41, "write-the-file-contents-to-console"]], "add_child_logger": [[15, "add-child-logger"]], "add_handling_uncaught_exceptions": [[16, "add-handling-uncaught-exceptions"]], "add_instance_logger": [[17, "add-instance-logger"]], "change_default_mechanical_path": [[29, "change-default-mechanical-path"]], "clear": [[1, "clear"]], "close_all_local_instances": [[12, "close-all-local-instances"]], "download": [[2, "download"]], "download_project": [[3, "download-project"]], "exit": [[4, "exit"], [24, "exit"]], "file_handler": [[18, "file-handler"]], "find_mechanical": [[30, "find-mechanical"]], "get_mechanical_path": [[31, "get-mechanical-path"]], "launch_mechanical": [[13, "launch-mechanical"]], "list_files": [[5, "list-files"]], "log_message": [[6, "log-message"]], "log_to_file": [[19, "log-to-file"]], "log_to_stdout": [[20, "log-to-stdout"]], "map": [[25, "map"]], "next_available": [[26, "next-available"]], "ports": [[27, "ports"]], "project_directory": [[7, "project-directory"]], "run_batch": [[28, "run-batch"]], "run_python_script": [[8, "run-python-script"]], "run_python_script_from_file": [[9, "run-python-script-from-file"]], "save_mechanical_path": [[32, "save-mechanical-path"]], "setLevel": [[21, "setlevel"]], "std_out_handler": [[22, "std-out-handler"]], "upload": [[10, "upload"]], "version": [[11, "version"]]}, "docnames": ["404", "api/_autosummary/ansys.mechanical.core.Mechanical.clear", "api/_autosummary/ansys.mechanical.core.Mechanical.download", "api/_autosummary/ansys.mechanical.core.Mechanical.download_project", "api/_autosummary/ansys.mechanical.core.Mechanical.exit", "api/_autosummary/ansys.mechanical.core.Mechanical.list_files", "api/_autosummary/ansys.mechanical.core.Mechanical.log_message", "api/_autosummary/ansys.mechanical.core.Mechanical.project_directory", "api/_autosummary/ansys.mechanical.core.Mechanical.run_python_script", "api/_autosummary/ansys.mechanical.core.Mechanical.run_python_script_from_file", "api/_autosummary/ansys.mechanical.core.Mechanical.upload", "api/_autosummary/ansys.mechanical.core.Mechanical.version", "api/_autosummary/ansys.mechanical.core.close_all_local_instances", "api/_autosummary/ansys.mechanical.core.launch_mechanical", "api/_autosummary/ansys.mechanical.core.logging.Logger", "api/_autosummary/ansys.mechanical.core.logging.Logger.add_child_logger", "api/_autosummary/ansys.mechanical.core.logging.Logger.add_handling_uncaught_exceptions", "api/_autosummary/ansys.mechanical.core.logging.Logger.add_instance_logger", "api/_autosummary/ansys.mechanical.core.logging.Logger.file_handler", "api/_autosummary/ansys.mechanical.core.logging.Logger.log_to_file", "api/_autosummary/ansys.mechanical.core.logging.Logger.log_to_stdout", "api/_autosummary/ansys.mechanical.core.logging.Logger.setLevel", "api/_autosummary/ansys.mechanical.core.logging.Logger.std_out_handler", "api/_autosummary/ansys.mechanical.core.pool.LocalMechanicalPool", "api/_autosummary/ansys.mechanical.core.pool.LocalMechanicalPool.exit", "api/_autosummary/ansys.mechanical.core.pool.LocalMechanicalPool.map", "api/_autosummary/ansys.mechanical.core.pool.LocalMechanicalPool.next_available", "api/_autosummary/ansys.mechanical.core.pool.LocalMechanicalPool.ports", "api/_autosummary/ansys.mechanical.core.pool.LocalMechanicalPool.run_batch", "api/_autosummary/ansys.tools.path.change_default_mechanical_path", "api/_autosummary/ansys.tools.path.find_mechanical", "api/_autosummary/ansys.tools.path.get_mechanical_path", "api/_autosummary/ansys.tools.path.save_mechanical_path", "api/helper", "api/index", "api/logging", "api/mechanical", "api/path", "api/pool", "architecture", "contributing", "examples/gallery_examples/embedding_n_remote/embedding_remote", "examples/gallery_examples/embedding_n_remote/index", "examples/gallery_examples/embedding_n_remote/sg_execution_times", "examples/gallery_examples/index", "examples/gallery_examples/sg_execution_times", "examples/index", "getting_started/docker", "getting_started/faq", "getting_started/index", "getting_started/installation", "getting_started/running_mechanical", "getting_started/versioning", "getting_started/wsl", "index", "sg_execution_times", "user_guide_embedding/configuration", "user_guide_embedding/globals", "user_guide_embedding/index", "user_guide_embedding/libraries", "user_guide_embedding/logging", "user_guide_scripting/index", "user_guide_scripting/threading", "user_guide_session/index", "user_guide_session/mechanical", "user_guide_session/pool", "user_guide_session/server-launcher"], "envversion": {"sphinx": 61, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1}, "filenames": ["404.rst", "api/_autosummary/ansys.mechanical.core.Mechanical.clear.rst", "api/_autosummary/ansys.mechanical.core.Mechanical.download.rst", "api/_autosummary/ansys.mechanical.core.Mechanical.download_project.rst", "api/_autosummary/ansys.mechanical.core.Mechanical.exit.rst", "api/_autosummary/ansys.mechanical.core.Mechanical.list_files.rst", "api/_autosummary/ansys.mechanical.core.Mechanical.log_message.rst", "api/_autosummary/ansys.mechanical.core.Mechanical.project_directory.rst", "api/_autosummary/ansys.mechanical.core.Mechanical.run_python_script.rst", "api/_autosummary/ansys.mechanical.core.Mechanical.run_python_script_from_file.rst", "api/_autosummary/ansys.mechanical.core.Mechanical.upload.rst", "api/_autosummary/ansys.mechanical.core.Mechanical.version.rst", "api/_autosummary/ansys.mechanical.core.close_all_local_instances.rst", "api/_autosummary/ansys.mechanical.core.launch_mechanical.rst", "api/_autosummary/ansys.mechanical.core.logging.Logger.rst", "api/_autosummary/ansys.mechanical.core.logging.Logger.add_child_logger.rst", "api/_autosummary/ansys.mechanical.core.logging.Logger.add_handling_uncaught_exceptions.rst", "api/_autosummary/ansys.mechanical.core.logging.Logger.add_instance_logger.rst", "api/_autosummary/ansys.mechanical.core.logging.Logger.file_handler.rst", "api/_autosummary/ansys.mechanical.core.logging.Logger.log_to_file.rst", "api/_autosummary/ansys.mechanical.core.logging.Logger.log_to_stdout.rst", "api/_autosummary/ansys.mechanical.core.logging.Logger.setLevel.rst", "api/_autosummary/ansys.mechanical.core.logging.Logger.std_out_handler.rst", "api/_autosummary/ansys.mechanical.core.pool.LocalMechanicalPool.rst", "api/_autosummary/ansys.mechanical.core.pool.LocalMechanicalPool.exit.rst", "api/_autosummary/ansys.mechanical.core.pool.LocalMechanicalPool.map.rst", "api/_autosummary/ansys.mechanical.core.pool.LocalMechanicalPool.next_available.rst", "api/_autosummary/ansys.mechanical.core.pool.LocalMechanicalPool.ports.rst", "api/_autosummary/ansys.mechanical.core.pool.LocalMechanicalPool.run_batch.rst", "api/_autosummary/ansys.tools.path.change_default_mechanical_path.rst", "api/_autosummary/ansys.tools.path.find_mechanical.rst", "api/_autosummary/ansys.tools.path.get_mechanical_path.rst", "api/_autosummary/ansys.tools.path.save_mechanical_path.rst", "api/helper.rst", "api/index.rst", "api/logging.rst", "api/mechanical.rst", "api/path.rst", "api/pool.rst", "architecture.rst", "contributing.rst", "examples/gallery_examples/embedding_n_remote/embedding_remote.rst", "examples/gallery_examples/embedding_n_remote/index.rst", "examples/gallery_examples/embedding_n_remote/sg_execution_times.rst", "examples/gallery_examples/index.rst", "examples/gallery_examples/sg_execution_times.rst", "examples/index.rst", "getting_started/docker.rst", "getting_started/faq.rst", "getting_started/index.rst", "getting_started/installation.rst", "getting_started/running_mechanical.rst", "getting_started/versioning.rst", "getting_started/wsl.rst", "index.rst", "sg_execution_times.rst", "user_guide_embedding/configuration.rst", "user_guide_embedding/globals.rst", "user_guide_embedding/index.rst", "user_guide_embedding/libraries.rst", "user_guide_embedding/logging.rst", "user_guide_scripting/index.rst", "user_guide_scripting/threading.rst", "user_guide_session/index.rst", "user_guide_session/mechanical.rst", "user_guide_session/pool.rst", "user_guide_session/server-launcher.rst"], "indexentries": {"add_child_logger() (ansys.mechanical.core.logging.logger method)": [[15, "ansys.mechanical.core.logging.Logger.add_child_logger", false]], "add_handling_uncaught_exceptions() (ansys.mechanical.core.logging.logger static method)": [[16, "ansys.mechanical.core.logging.Logger.add_handling_uncaught_exceptions", false]], "add_instance_logger() (ansys.mechanical.core.logging.logger method)": [[17, "ansys.mechanical.core.logging.Logger.add_instance_logger", false]], "change_default_mechanical_path() (in module ansys.tools.path)": [[29, "ansys.tools.path.change_default_mechanical_path", false]], "clear() (ansys.mechanical.core.mechanical method)": [[1, "ansys.mechanical.core.Mechanical.clear", false]], "close_all_local_instances() (in module ansys.mechanical.core)": [[12, "ansys.mechanical.core.close_all_local_instances", false]], "download() (ansys.mechanical.core.mechanical method)": [[2, "ansys.mechanical.core.Mechanical.download", false]], "download_project() (ansys.mechanical.core.mechanical method)": [[3, "ansys.mechanical.core.Mechanical.download_project", false]], "exit() (ansys.mechanical.core.mechanical method)": [[4, "ansys.mechanical.core.Mechanical.exit", false]], "exit() (ansys.mechanical.core.pool.localmechanicalpool method)": [[24, "ansys.mechanical.core.pool.LocalMechanicalPool.exit", false]], "file_handler (ansys.mechanical.core.logging.logger attribute)": [[18, "ansys.mechanical.core.logging.Logger.file_handler", false]], "find_mechanical() (in module ansys.tools.path)": [[30, "ansys.tools.path.find_mechanical", false]], "get_mechanical_path() (in module ansys.tools.path)": [[31, "ansys.tools.path.get_mechanical_path", false]], "launch_mechanical() (in module ansys.mechanical.core)": [[13, "ansys.mechanical.core.launch_mechanical", false]], "list_files() (ansys.mechanical.core.mechanical method)": [[5, "ansys.mechanical.core.Mechanical.list_files", false]], "localmechanicalpool (class in ansys.mechanical.core.pool)": [[23, "ansys.mechanical.core.pool.LocalMechanicalPool", false], [38, "ansys.mechanical.core.pool.LocalMechanicalPool", false]], "log_message() (ansys.mechanical.core.mechanical method)": [[6, "ansys.mechanical.core.Mechanical.log_message", false]], "log_to_file() (ansys.mechanical.core.logging.logger method)": [[19, "ansys.mechanical.core.logging.Logger.log_to_file", false]], "log_to_stdout() (ansys.mechanical.core.logging.logger method)": [[20, "ansys.mechanical.core.logging.Logger.log_to_stdout", false]], "logger (class in ansys.mechanical.core.logging)": [[14, "ansys.mechanical.core.logging.Logger", false]], "map() (ansys.mechanical.core.pool.localmechanicalpool method)": [[25, "ansys.mechanical.core.pool.LocalMechanicalPool.map", false]], "mechanical (class in ansys.mechanical.core.mechanical)": [[36, "ansys.mechanical.core.mechanical.Mechanical", false]], "next_available() (ansys.mechanical.core.pool.localmechanicalpool method)": [[26, "ansys.mechanical.core.pool.LocalMechanicalPool.next_available", false]], "ports (ansys.mechanical.core.pool.localmechanicalpool property)": [[27, "ansys.mechanical.core.pool.LocalMechanicalPool.ports", false]], "project_directory (ansys.mechanical.core.mechanical property)": [[7, "ansys.mechanical.core.Mechanical.project_directory", false]], "run_batch() (ansys.mechanical.core.pool.localmechanicalpool method)": [[28, "ansys.mechanical.core.pool.LocalMechanicalPool.run_batch", false]], "run_python_script() (ansys.mechanical.core.mechanical method)": [[8, "ansys.mechanical.core.Mechanical.run_python_script", false]], "run_python_script_from_file() (ansys.mechanical.core.mechanical method)": [[9, "ansys.mechanical.core.Mechanical.run_python_script_from_file", false]], "save_mechanical_path() (in module ansys.tools.path)": [[32, "ansys.tools.path.save_mechanical_path", false]], "setlevel() (ansys.mechanical.core.logging.logger method)": [[21, "ansys.mechanical.core.logging.Logger.setLevel", false]], "std_out_handler (ansys.mechanical.core.logging.logger attribute)": [[22, "ansys.mechanical.core.logging.Logger.std_out_handler", false]], "upload() (ansys.mechanical.core.mechanical method)": [[10, "ansys.mechanical.core.Mechanical.upload", false]], "version (ansys.mechanical.core.mechanical property)": [[11, "ansys.mechanical.core.Mechanical.version", false]]}, "objects": {"ansys.mechanical.core": [[12, 2, 1, "", "close_all_local_instances"], [13, 2, 1, "", "launch_mechanical"]], "ansys.mechanical.core.Mechanical": [[1, 0, 1, "", "clear"], [2, 0, 1, "", "download"], [3, 0, 1, "", "download_project"], [4, 0, 1, "", "exit"], [5, 0, 1, "", "list_files"], [6, 0, 1, "", "log_message"], [7, 1, 1, "", "project_directory"], [8, 0, 1, "", "run_python_script"], [9, 0, 1, "", "run_python_script_from_file"], [10, 0, 1, "", "upload"], [11, 1, 1, "", "version"]], "ansys.mechanical.core.logging": [[14, 3, 1, "", "Logger"]], "ansys.mechanical.core.logging.Logger": [[15, 0, 1, "", "add_child_logger"], [16, 0, 1, "", "add_handling_uncaught_exceptions"], [17, 0, 1, "", "add_instance_logger"], [18, 4, 1, "", "file_handler"], [19, 0, 1, "", "log_to_file"], [20, 0, 1, "", "log_to_stdout"], [21, 0, 1, "", "setLevel"], [22, 4, 1, "", "std_out_handler"]], "ansys.mechanical.core.mechanical": [[36, 3, 1, "", "Mechanical"]], "ansys.mechanical.core.pool": [[38, 3, 1, "", "LocalMechanicalPool"]], "ansys.mechanical.core.pool.LocalMechanicalPool": [[24, 0, 1, "", "exit"], [25, 0, 1, "", "map"], [26, 0, 1, "", "next_available"], [27, 1, 1, "", "ports"], [28, 0, 1, "", "run_batch"]], "ansys.tools.path": [[29, 2, 1, "", "change_default_mechanical_path"], [30, 2, 1, "", "find_mechanical"], [31, 2, 1, "", "get_mechanical_path"], [32, 2, 1, "", "save_mechanical_path"]]}, "objnames": {"0": ["py", "method", "Python method"], "1": ["py", "property", "Python property"], "2": ["py", "function", "Python function"], "3": ["py", "class", "Python class"], "4": ["py", "attribute", "Python attribute"]}, "objtypes": {"0": "py:method", "1": "py:property", "2": "py:function", "3": "py:class", "4": "py:attribute"}, "terms": {"": [23, 38, 39, 40, 41, 47, 48, 50, 51, 53, 54, 57, 58, 59, 61, 65], "0": [13, 35, 36, 40, 41, 43, 45, 47, 51, 53, 55, 62, 65], "00": [23, 38, 41, 43, 45, 55, 65], "000": [41, 45], "00000000": 62, "00001011": 62, "00001100": 62, "00001111": 62, "00010000": 62, "00010111": 62, "01": [23, 38, 65], "04": 41, "05": [41, 50], "06m": 41, "09mb": 41, "0x7fabf0230d90": 65, "1": [7, 13, 23, 28, 30, 35, 38, 39, 40, 41, 43, 47, 50, 51, 53, 55, 62, 65], "10": [14, 19, 20, 23, 25, 38, 41, 47, 50, 51, 65], "100": [23, 38, 39, 41, 65], "10000": [13, 23, 35, 38, 40, 41, 47, 51, 53], "10001": [27, 53], "10002": 27, "1024": 41, "1048576": 10, "1055": [47, 53], "11": [41, 50, 53, 62], "119mb": 41, "12": [8, 41, 50, 53, 62], "120": 13, "127": [13, 40, 41, 51, 53], "13": 26, "130mb": 41, "14": 26, "14927": 41, "15": [41, 47, 50, 51, 62], "16": 62, "168": [13, 51, 53], "17": 41, "17mb": 41, "19": 30, "191": 30, "192": [13, 30, 51, 53], "193": 30, "194": 30, "195": 30, "1971": 41, "2": [8, 9, 25, 30, 31, 39, 41, 48, 53, 58, 63], "20": [28, 41, 65], "2000": [8, 9], "201": 30, "2015": 41, "2019": 53, "20191122": 41, "202": 30, "2020": 41, "2020r1": 30, "2020r2": 30, "2021": 41, "2021r1": 30, "2021r2": 30, "2022": [26, 47, 50, 51], "2022r1": 30, "2022r2": 30, "2023": [8, 13, 30, 41, 50, 51, 52], "20230302": 41, "2023r1": 30, "2023r2": 30, "2024": [41, 51], "2024r1": [30, 51], "2024r2": 30, "21": [28, 62, 65], "211": 30, "212": [30, 41], "217mb": 41, "22": 31, "221": 30, "222": 30, "227": 41, "23": [30, 41, 50, 58], "231": [11, 13, 23, 26, 30, 38, 47, 50, 51, 65], "232": [30, 50, 51], "2325": 53, "24": [14, 41], "240": 41, "241": [30, 41, 51, 59], "242": 30, "249": 41, "25": [41, 50, 62], "262144": 2, "27": 41, "28": [41, 47, 50, 51], "29": 26, "295mb": 41, "3": [8, 9, 25, 30, 39, 41, 48, 50, 53, 62, 63], "30": [13, 50], "32": 62, "331mb": 41, "337": [41, 43, 55], "3d": 61, "3k": 41, "4": [2, 8, 25, 30, 39, 41, 47, 50, 51], "43it": [23, 38, 65], "47": 41, "5": [8, 9, 25, 30, 39, 41, 62], "50001": 13, "52": 41, "53": 50, "54": 26, "56": [41, 43, 55], "5k": 41, "6": [39, 41, 53], "60": 36, "61": 41, "64": 41, "6k": 41, "6mb": 41, "7": [25, 39, 41, 48, 53], "774k": 41, "7763": 41, "789": 41, "8": [8, 9], "80df150fe31f": 14, "85m": 41, "896": 41, "8kb": 41, "9": [41, 50], "9001": 41, "99": 62, "A": [2, 3, 10, 13, 25, 41, 45, 50, 62], "AND": 41, "As": [39, 40, 47, 57, 61, 62], "But": [48, 59], "By": [53, 58], "For": [2, 13, 23, 30, 31, 32, 35, 38, 39, 40, 41, 47, 50, 51, 52, 53, 54, 56, 58, 60, 61, 62, 63, 64, 65, 66], "ITS": 41, "If": [2, 8, 9, 13, 15, 23, 25, 28, 30, 31, 32, 35, 38, 39, 40, 47, 48, 50, 51, 53, 58, 62, 66], "In": [2, 13, 23, 38, 39, 40, 48, 51, 53, 54, 58, 59, 61, 62, 63], "It": [2, 3, 8, 9, 17, 39, 41, 48, 53, 62, 63], "Its": 54, "NOT": 41, "Not": 41, "OF": 41, "OR": 41, "Of": 48, "On": [23, 29, 30, 38, 40, 51, 52, 53, 54, 58, 66], "One": [2, 39, 62], "Or": [53, 62], "The": [2, 3, 4, 8, 9, 10, 12, 13, 14, 15, 17, 19, 20, 21, 23, 24, 25, 26, 28, 31, 32, 35, 38, 39, 40, 41, 48, 50, 51, 53, 54, 56, 57, 58, 61, 62, 63, 65, 66], "Then": [31, 50, 61], "There": [2, 39, 47, 48, 53, 56, 61, 62], "These": [33, 37, 39, 53, 59, 61, 62], "To": [35, 40, 41, 50, 51, 53, 54, 57, 58, 59, 62, 66], "WITH": 41, "With": [39, 48, 52, 54, 60], "_": 60, "__dict__": 48, "__name__": 48, "__w": 41, "_build": 40, "_global": 15, "_instanc": 17, "_log": 35, "aapddqvk5wqnlv": 53, "abbrevi": 39, "abc": 53, "abil": [39, 47, 48], "abl": [51, 53], "about": [39, 41, 51, 61, 63], "abov": [41, 58, 59, 60, 62], "abstract": [39, 62], "acceler": [41, 54], "access": [39, 40, 47, 50, 51, 53, 58, 61, 62, 65], "accomplish": 54, "accord": 41, "achiev": 58, "acquir": 31, "across": 39, "act": [41, 56, 61], "action": [39, 61], "activ": [40, 58, 63, 65], "actual": [39, 61, 62], "ad": [14, 39, 40, 61], "adapt": [17, 58], "add": [14, 15, 17, 19, 20, 25, 28, 39, 48, 53, 57, 58], "add_mechanical_python_librari": 59, "add_switch": 66, "addequivalentstress": 41, "addfixedsupport": 41, "addfrictionlesssupport": 41, "addgeometryimport": 41, "addin": 58, "addinconfigur": 56, "addit": [8, 13, 23, 25, 38, 39, 59, 62, 65, 66], "addition": [53, 66], "additional_env": 13, "additional_switch": [13, 66], "addmaterialassign": 41, "addnamedselect": 58, "addpressur": 41, "address": [13, 39, 41, 47, 51], "addstaticstructuralanalysi": 41, "addtotaldeform": 41, "adopt": 62, "advanc": [53, 63], "advantag": [39, 40, 47], "advic": 48, "affect": 51, "affin": 62, "after": [13, 51, 53, 60, 61], "again": 66, "agreement": 41, "ai": 54, "aiso": 32, "aisol": [13, 23, 29, 30, 38, 50, 51, 58, 66], "algorithm": 62, "aliv": 13, "all": [2, 3, 12, 13, 23, 24, 25, 38, 39, 40, 41, 48, 50, 55, 60, 61, 62], "allnod": 53, "alloc": 53, "allow": [2, 13, 14, 25, 28, 31, 36, 39, 40, 48, 52, 53, 54, 61, 62], "allow_input": [13, 31], "allow_prompt": 32, "allrout": 53, "almost": 53, "alon": 62, "along": 26, "alreadi": [54, 61], "also": [17, 39, 40, 53, 54, 61, 65], "altern": [2, 13, 39, 51, 58], "although": [48, 51], "alwai": [39, 53], "am": 40, "amd": 41, "among": 39, "amount": 62, "an": [6, 8, 9, 13, 15, 16, 17, 25, 28, 32, 35, 39, 40, 41, 42, 44, 46, 51, 52, 54, 56, 57, 58, 59, 61, 62, 63, 64, 65], "analys": 61, "analysi": 48, "ani": [4, 23, 25, 35, 38, 39, 41, 47, 50, 51, 53, 54, 56, 58, 60, 61, 62], "anim": 61, "anonym": 41, "anoth": 39, "ansi": [7, 12, 13, 14, 17, 19, 23, 25, 26, 29, 30, 31, 32, 34, 35, 36, 38, 39, 40, 41, 46, 47, 49, 50, 51, 54, 56, 57, 58, 59, 60, 61, 63, 65, 66], "answer": [48, 49], "ansys_inc": [23, 29, 30, 38, 50, 51, 53, 58, 66], "ansys_mechanical_cor": 41, "ansys_tools_path": 32, "ansyslmd_license_fil": [47, 53], "ansysmech0f37": 41, "ansysmech3be0": 41, "ansysmech3f97": 7, "ansyswbu": [13, 23, 29, 30, 32, 38, 50, 51, 53, 58, 66], "anyth": [39, 40, 62], "apdl": 39, "api": [48, 54, 57, 59, 60, 62], "app": [39, 41, 48, 50, 51, 53, 54, 56, 57, 58, 59, 60], "appdata": [32, 51], "appear": 40, "append": [47, 65], "appli": 39, "applic": [37, 39, 47, 51, 52, 54, 57, 58, 60, 61, 62], "appmodemech": 58, "approach": [39, 51], "appropri": [59, 61], "apptain": 47, "ar": [2, 6, 8, 9, 12, 13, 14, 15, 17, 19, 23, 25, 27, 28, 32, 35, 38, 39, 40, 41, 46, 48, 50, 51, 52, 53, 54, 56, 57, 58, 59, 60, 61, 62, 63, 65], "architectur": [35, 50, 54, 62], "archiv": [50, 52], "area": 51, "arg": [25, 65], "argument": [15, 23, 25, 38, 39, 41, 47, 51, 53, 57, 58, 59, 65, 66], "around": [39, 48, 62], "ask": [4, 49, 62, 66], "assign": [8, 61], "associ": [39, 53], "assum": [47, 51], "attach": 21, "attempt": [13, 32, 40, 52, 66], "attribut": [14, 17, 23, 34], "august": [47, 50, 51], "author": 47, "autocomplet": 48, "autom": [33, 39, 40, 48, 54, 61], "automat": [14, 41, 51, 53, 57, 65, 66], "avail": [13, 23, 26, 38, 39, 41, 50, 53, 54, 57, 58, 59, 61], "avoid": 53, "awai": 39, "awk": 53, "b": [41, 58], "back": 62, "background": [13, 23, 38, 61, 62, 63], "bar": [2, 3, 10, 23, 25, 28, 38, 40, 54], "base": [10, 11, 31, 35, 39, 41, 53, 54, 66], "base_nam": 41, "basenam": 41, "bashrc": 53, "basic": 39, "bat": [40, 53], "batch": [12, 13, 25, 28, 41, 48, 53, 58, 62, 63, 65], "becam": 39, "becaus": [13, 25, 28, 35, 39, 47, 48, 51, 53, 57, 58, 59, 61, 63, 65], "been": [39, 40, 51, 53, 58, 60], "befor": [3, 24, 39, 40, 50, 51, 53, 60], "begin": [39, 50], "behavior": [13, 53, 62, 65], "behind": 51, "being": [39, 40, 53], "below": 41, "benefit": [39, 62], "besid": 58, "best": 48, "beta": 51, "better": [50, 63], "between": [39, 48, 61, 62], "bin": [13, 23, 29, 30, 32, 38, 40, 50, 51, 58, 66], "binari": [53, 62], "bit": 62, "bla": 41, "black": 40, "bli": 41, "block": [8, 24, 25, 28, 53, 61], "bodi": [41, 61], "bool": [2, 3, 4, 8, 9, 10, 12, 13, 14, 23, 24, 25, 26, 28, 31, 38], "born": 48, "both": [35, 39, 46, 51, 58, 62], "boundari": 39, "break": 41, "brief": 39, "bring": 48, "broadli": 48, "brought": 48, "bug": [40, 48, 54, 62], "build": [26, 39, 40, 41, 47, 50, 51, 53], "built": 58, "button": 39, "byte": [2, 10, 39], "c": [13, 23, 29, 30, 32, 38, 39, 40, 41, 50, 51, 58, 59, 66], "cach": 13, "cad": [39, 61], "caerep": 41, "caerepoutput": 41, "calcul": [8, 9], "call": [8, 9, 12, 13, 40, 41, 54, 62], "callback": 48, "caller": 39, "can": [2, 12, 13, 17, 25, 32, 35, 39, 40, 41, 47, 48, 50, 51, 52, 53, 54, 56, 57, 58, 59, 60, 61, 62, 63, 65, 66], "cannot": [8, 9, 39, 51, 66], "capabl": [39, 48, 53, 54], "captur": 54, "carri": [39, 62], "case": [2, 4, 10, 12, 13, 14, 15, 17, 19, 23, 25, 28, 32, 38, 48, 51, 58, 62, 63], "cat": [47, 53], "categori": 40, "caught": 63, "caus": 62, "caution": 53, "cd": [40, 41, 53], "cento": 53, "centwsl": 53, "certain": 51, "certainli": 62, "chang": [21, 29, 32, 41, 51, 57, 61, 62, 66], "change_default_mechanical_path": 66, "channel": 36, "chapter": 53, "characterist": 39, "cheat": 54, "check": [32, 40, 41, 53], "checkbox": 51, "child": 15, "choic": 39, "chunk": [2, 10], "chunk_siz": [2, 10], "ci": 53, "cinder": 39, "class": [14, 15, 17, 23, 34, 36, 56, 57, 58, 60, 61, 63, 64, 65], "classic": [39, 41], "clean": [12, 40], "cleanup_on_exit": [13, 36, 41], "clear": [13, 25, 28, 48, 65], "clear_at_start": [25, 28], "clear_on_connect": 13, "clever": 62, "cli": [51, 58], "client": [39, 46, 54, 63], "clone": 40, "close": [12, 24, 25, 28, 33, 41, 48, 58], "close_when_finish": [25, 28], "cluster": 47, "cmd": 40, "co": 62, "code": [32, 39, 41, 42, 44, 47, 48, 50, 53, 54, 57, 58, 62, 63, 65], "codespel": 40, "collect": [13, 41, 61], "com": [39, 40, 41, 53, 54], "combin": [46, 54], "combined_path": 41, "come": [53, 61, 62], "command": [13, 36, 40, 41, 47, 50, 53, 54, 58, 61, 63], "commit": 40, "common": [40, 41, 51, 59], "commun": [39, 48, 51, 54], "compani": [39, 41], "compar": 39, "compat": [41, 50, 52, 53, 62], "compil": 41, "complet": [25, 28, 41], "completed_indic": [25, 65], "complex": [39, 48], "compli": 39, "complianc": 41, "comprehens": [51, 61], "compress": 53, "comput": [39, 41, 50, 51, 61, 62], "concept": 54, "conceptu": 39, "concern": 41, "condit": [23, 38, 39], "conf": 53, "confidenti": 41, "config": [32, 56], "configur": [13, 23, 31, 32, 37, 38, 60], "confirm": 4, "conflict": 53, "conform": 39, "conjunct": 53, "connect": [2, 7, 11, 12, 13, 36, 39, 40, 48, 53, 54, 65], "connectaddress": 53, "connectport": 53, "consequ": 62, "consid": [48, 50, 58, 61, 62], "consider": [2, 62], "consist": [35, 47], "consol": [13, 51], "constraint": 39, "construct": [57, 62], "constructor": 56, "contact": 41, "contain": [17, 25, 39, 41, 48, 50, 53, 54, 58, 61, 62], "container": 47, "content": [9, 58], "context": 53, "contextu": 17, "contribut": 54, "contriv": 62, "control": [48, 53, 54, 66], "convent": [31, 39], "cool": 40, "copi": [2, 13, 40, 41, 50, 53, 62], "copyright": 41, "corba": 39, "core": [12, 13, 14, 17, 19, 23, 25, 35, 36, 38, 40, 41, 46, 47, 50, 51, 53, 54, 56, 57, 58, 59, 60, 61, 62, 63, 65, 66], "corner": [40, 54], "correctli": 63, "correspond": 50, "could": [2, 39, 48, 61], "count": 41, "countri": 41, "cours": 48, "coverag": 40, "cp": 41, "cpu": [39, 41, 62], "cpython": [39, 48], "craft": 39, "creat": [14, 15, 23, 35, 38, 39, 40, 47, 49, 54, 60, 61, 63], "createselectioninfo": 41, "creation": 50, "creator": 39, "credenti": 47, "credit": 39, "crud": 39, "current": [2, 7, 10, 19, 39, 41, 53], "custom": [17, 39, 48, 53, 58, 65], "custom_exec": 66, "customiz": 39, "d": 41, "dai": 62, "dat": 41, "data": [39, 41, 48, 54, 61, 62], "databas": [1, 41], "datamodel": [8, 41, 57, 58, 61, 63], "datamodelobjectcategori": 41, "date": [26, 41, 47, 50, 51], "db": 41, "dcom": 39, "death": 62, "debilit": 62, "debug": [6, 8, 9, 13, 14, 15, 17, 19, 21, 41, 58, 60], "deck": 54, "dedic": 62, "def": [25, 41, 53, 65], "default": [2, 3, 4, 8, 9, 10, 12, 13, 14, 15, 17, 19, 20, 21, 23, 24, 25, 26, 28, 29, 31, 32, 35, 38, 40, 48, 50, 51, 53, 57, 58, 66], "defer": 61, "defin": [8, 25, 53, 61], "definit": 53, "deform": 41, "deleg": 13, "delet": [39, 61], "delimit": 51, "demonstr": [14, 41, 42, 44, 46, 51], "depend": [35, 48, 50, 51, 62], "deploi": 63, "deploy": 47, "deprec": 59, "descend": 39, "describ": [34, 36, 38, 39, 51], "descript": [39, 61], "design": [15, 39, 41, 48, 62], "desir": 53, "desktop": 39, "dest_dir": 41, "detail": [8, 39, 41, 50, 61], "detect": 66, "determin": [61, 66], "dev0": 50, "develop": [39, 48, 54, 63], "dialog": 51, "dict": [23, 38], "dictat": 50, "dictionari": 13, "differ": [2, 47, 51, 53, 61], "difficult": [39, 62], "digit": 13, "direct": 39, "directli": [39, 46, 47, 51, 52, 53, 54], "directori": [2, 3, 5, 7, 10, 19, 40, 50, 53], "disabl": 65, "disabledinterfacealias": 53, "disadvantag": 39, "disclaim": 41, "disclos": 41, "disclosur": 41, "disconnect": 53, "discov": 13, "discoveri": 37, "discret": 61, "discretevalu": 41, "discuss": [39, 48, 54, 57], "disk": 13, "dist": 40, "distinct": 61, "distinguish": 62, "distribut": [41, 59], "divid": 39, "dlr": 39, "dn": 41, "do": [25, 28, 39, 40, 53, 62, 66], "doc": 40, "doc_out": 40, "docker": [41, 49, 52], "document": [39, 41, 48, 50], "dod": 41, "doe": [2, 39, 40, 41, 47, 53, 58, 59, 61, 62], "doesn": 51, "done": 39, "down": 39, "download": [3, 47, 50, 51, 53, 54], "download_fil": 41, "download_project": 2, "drive": 54, "dsapplet": 58, "dubug": [20, 21], "due": [39, 62], "dummi": [13, 41], "duplic": 41, "dure": [35, 65], "dyna": 41, "e": [40, 41, 47, 51, 53], "each": [14, 25, 28, 39, 50, 61, 62, 63, 65], "earlier": [39, 53], "eas": 47, "easier": 39, "easiest": 51, "echo": 47, "edg": 61, "edit": 40, "effect": [39, 53], "effort": 54, "either": [32, 39, 40, 48, 50, 51, 57, 58, 62], "elaps": 41, "electron": [39, 62], "element": 61, "elements": 41, "elimin": 48, "els": 41, "email": [39, 40, 54], "emb": [39, 46, 58], "embed": [43, 46, 48, 51, 55, 56, 57, 59, 60, 62], "embedding_n_remot": [41, 43, 55], "embedding_remot": [41, 43, 55], "emphas": 39, "emploi": 62, "empti": [8, 9, 35], "en": 39, "enabl": [8, 9, 13, 39, 51, 52, 60], "enable_log": [8, 9], "encod": 39, "encount": 41, "end": [41, 48], "endswith": 41, "engin": [54, 61, 62], "enhanc": [40, 62], "ensur": [40, 53], "enter": [47, 66], "enterpris": [26, 41, 47, 50, 51], "entir": [39, 54], "entri": [57, 58], "enum": [41, 57], "env": [50, 51], "environ": [4, 13, 23, 38, 40, 47, 48, 50, 51, 53, 58, 60, 66], "epyc": 41, "equival": 41, "err": 41, "errat": 62, "error": [6, 8, 9, 13, 15, 17, 19, 41, 48, 60, 63], "etc": [41, 53], "evaluateallresult": 41, "even": [39, 48, 52], "event": [17, 35], "everi": [2, 13, 39, 62], "ex": [13, 23, 29, 30, 32, 38, 50, 51, 53, 58, 66], "exactli": 39, "exampl": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 35, 38, 39, 40, 43, 45, 47, 50, 51, 53, 55, 56, 57, 60, 61, 62, 63, 65], "exce": 41, "exce_fil": 13, "exceed": [25, 28], "except": [8, 16, 17, 41], "exe_loc": [29, 32], "exec_fil": [13, 23, 38, 66], "exec_file_path": 13, "exec_loc": 51, "execut": [8, 9, 13, 23, 25, 28, 29, 30, 32, 38, 39, 40, 43, 45, 53, 55, 61, 62, 66], "exhaust": 39, "exhibit": 62, "exist": [13, 39, 40, 48], "exit": [13, 48, 51], "expect": [39, 53, 59], "experi": [39, 53], "experiment": 59, "expert": 48, "explain": 53, "explan": [39, 62], "explod": 39, "explor": [48, 54], "export": [40, 53, 61], "exporttotextfil": 41, "expos": 39, "express": [2, 54], "extapi": [8, 41, 58, 61, 63], "extend": [35, 48, 61], "extens": [3, 39, 48, 61, 62], "extern": [48, 51, 61, 62], "extract": [53, 57], "extrem": 62, "f": [28, 41, 47, 50, 65, 66], "fa8903739a13": 41, "face": 61, "facil": 39, "facilit": 54, "fact": [39, 40], "fail": [12, 23, 25, 28, 38, 39, 40, 51, 65], "failur": [25, 28, 51], "fallen": 39, "fals": [2, 3, 4, 8, 9, 10, 13, 14, 23, 24, 25, 26, 28, 36, 38, 40, 41, 53, 65], "famili": 48, "familiar": 40, "faq": 49, "far": 41, "fashion": 39, "fastest": 51, "fatal": [41, 60], "fault": 39, "favor": 39, "fe00": 53, "featur": [39, 40, 41, 47, 48, 50, 51, 54, 59], "featureflag": [47, 66], "feedback": 54, "fell": 39, "fetch": 62, "few": [53, 62], "ff00": 53, "ff02": 53, "field": [17, 35], "file": [2, 3, 5, 9, 10, 13, 14, 19, 23, 25, 28, 29, 30, 31, 32, 38, 40, 43, 45, 47, 50, 55, 58, 63, 66], "file0": 41, "file_location_destin": [10, 41], "file_mech_fil": 41, "file_nam": [10, 41], "file_path": [9, 14, 19], "fileextens": 41, "filenam": [14, 19, 41], "fill": 41, "filter": [3, 14], "final": [13, 25], "find": [31, 32, 41, 50, 51, 59, 66], "find_mechan": [50, 66], "finish": [25, 28, 41], "first": [13, 25, 31, 39, 41, 42, 44, 48, 50, 51, 59, 62, 65, 66], "fit": [40, 48], "fix": [61, 62], "fixedsupport": 41, "flag": [47, 48, 51, 58], "flake8": 40, "flexlm_port_numb": 53, "flip": 62, "flit": 40, "float": [13, 25, 28, 30, 31], "flow": 54, "flushdn": 53, "folder": [2, 51, 53], "follow": [23, 32, 36, 38, 39, 40, 50, 51, 53, 57, 58, 59, 61, 62, 63, 66], "footnot": 39, "forc": 4, "form": 62, "format": [13, 30, 35, 41, 53], "formerli": 47, "fortran": 41, "found": [23, 30, 32, 38], "four": 39, "fowler": 39, "framework": [39, 48], "frequenc": [8, 9], "frequent": [49, 62], "fresh": [13, 50], "frictionlesssupport": 41, "friendli": 54, "from": [2, 3, 8, 9, 12, 13, 14, 19, 23, 25, 28, 29, 30, 32, 35, 38, 39, 40, 41, 43, 45, 47, 48, 50, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 65, 66], "full": [10, 29, 30, 41, 53], "fulli": [39, 53], "func": [25, 65], "function": [2, 8, 9, 23, 25, 34, 35, 37, 38, 39, 50, 57, 59, 61, 62], "fundament": 39, "furnish": 41, "g": [41, 51], "galleri": [41, 44, 55], "gallery_exampl": [43, 45], "game": 39, "garbag": 13, "gatewai": 53, "gather": 41, "gener": [15, 39, 44, 52, 53, 54, 61, 62, 65], "generatehost": 53, "generatemesh": 41, "genuin": [47, 63], "geobodi": 41, "geodata": 61, "geometri": [39, 61], "geometry_fil": 41, "geometry_import": 41, "geometry_import_format": 41, "geometry_import_prefer": 41, "geometry_path": 41, "geometryent": 41, "geometryimportgroup": 41, "geometryimportprefer": 41, "get": [7, 8, 9, 11, 27, 39, 53, 54, 62], "get_mechanical_path": [29, 50], "getchildren": 41, "getcmd": 65, "getcwd": [14, 19, 41], "getgeobodi": 41, "getobject": 39, "getobjectsbynam": 41, "gh_token": 47, "gh_usernam": 47, "ghcr": [47, 53], "git": 40, "github": [40, 41, 47], "give": 48, "given": [6, 13, 51, 62], "glob": 2, "global": [14, 35, 58], "global_vari": [41, 57, 58, 59], "go": [41, 53], "goal": 39, "govern": 41, "gpu": 41, "graalpi": 39, "grant": 41, "graphic": [39, 51, 57, 58, 61], "grep": 53, "groundwork": 62, "grpc": [8, 13, 36, 39, 47, 53, 54, 63], "grpc_127": 35, "guarante": 40, "gui": [39, 41, 53], "guid": [40, 47, 49, 51, 53, 61], "guidanc": 40, "guidelin": 40, "gz": 53, "h": [41, 51, 58], "ha": [17, 30, 35, 39, 40, 51, 53, 58, 60, 61, 62], "had": 63, "hand": 39, "handl": [8, 39, 48], "handler": [14, 15, 19, 20, 21], "handshak": 39, "hang": 51, "hat": 39, "have": [13, 25, 39, 40, 41, 47, 48, 50, 51, 53, 61, 62, 66], "head": 51, "heal": 65, "hello_world": 8, "help": [2, 3, 10, 39, 41, 47, 51, 53, 59, 61], "helper": [34, 37], "henc": 53, "here": [35, 40, 46, 53, 61, 63], "hidden": 48, "high": 39, "higher": 63, "histori": 47, "home": [41, 50], "hood": 48, "hook": 40, "host": [13, 40, 47, 51, 54], "hostnam": [51, 53], "hostname1": 53, "hostname2": 53, "hostname3": 53, "hous": 39, "how": [25, 38, 39, 41, 42, 44, 47, 49, 51, 53, 58, 63, 65, 66], "howev": [13, 39, 40, 48, 51, 52, 53, 59, 62, 66], "howtodoinjava": 39, "hsec": 10, "html": 40, "http": [39, 40, 41], "hundr": 62, "hypothet": 39, "i": [2, 3, 4, 8, 9, 10, 12, 13, 14, 15, 17, 19, 20, 21, 23, 24, 25, 26, 28, 30, 31, 32, 35, 38, 39, 40, 41, 47, 50, 51, 53, 54, 57, 58, 59, 60, 61, 62, 63, 65, 66], "id": [39, 41], "idea": 54, "idempot": 39, "identifi": 41, "ignor": [13, 50], "illumin": 39, "imag": [49, 51, 61], "immedi": [12, 23, 38, 39, 63], "implement": [40, 54, 59], "implicitli": 62, "import": [8, 9, 12, 13, 14, 19, 23, 25, 29, 30, 32, 35, 38, 47, 48, 50, 51, 53, 56, 57, 58, 59, 60, 61, 63, 65, 66], "importantli": 39, "imposs": 53, "improv": [41, 53], "inc": [13, 23, 29, 30, 32, 38, 41, 50, 51, 53, 58, 66], "includ": [13, 39, 41, 47, 48, 51, 57, 58, 61, 63], "incorrectli": 62, "increas": 48, "increment": 62, "independ": 62, "index": [26, 28, 40, 50, 65], "indic": [40, 41], "individu": [39, 65], "infinit": 39, "info": [6, 8, 9, 13, 14, 15, 17, 19, 35], "inform": [17, 39, 40, 41, 47, 50, 52, 54, 58, 61, 63, 64, 65, 66], "inhibit": 4, "initi": [23, 35, 38, 53, 59, 61], "injuri": 62, "input": [13, 14, 17, 25, 28, 31, 32, 39, 41, 51, 54], "input_fil": 65, "inputs_quant": 41, "inputs_quantities_2": 41, "insid": [8, 9, 39, 50, 54, 57, 61], "inspect": 53, "instabl": [25, 28], "instal": [13, 30, 31, 37, 41, 49, 52, 58, 59, 66], "install_dir": 53, "instanc": [2, 3, 7, 10, 11, 12, 13, 14, 15, 17, 23, 24, 25, 26, 27, 28, 33, 35, 38, 40, 42, 44, 46, 47, 53, 56, 59, 61, 62, 63, 65], "instance_nam": 35, "instead": [15, 39, 53, 63], "instruct": [51, 53, 62], "int": [2, 8, 9, 10, 13, 14, 23, 26, 38, 53], "int32": 41, "integ": [51, 62], "integr": [39, 40, 48, 54, 61], "intel": 41, "intelmpi": 41, "intent": 62, "interact": [39, 48, 54, 61, 62, 63], "interest": 39, "interfac": [41, 48, 50, 51, 52, 53, 54, 57, 58, 61, 62], "intern": [39, 53], "internet": [39, 50, 53], "interpret": [39, 62], "interrupt": 41, "intrins": 62, "introduc": 39, "intuit": [39, 48], "invalid": 63, "invers": 39, "invoc": 50, "invok": 39, "io": [47, 53], "ip": [13, 36, 39, 40, 41, 47, 51], "ip6": 53, "ipconfig": 53, "ipv6": 53, "ipynb": 41, "ipython": 14, "ironpython": [39, 48], "isn": 51, "iso": 41, "isol": [40, 47, 50], "isort": 40, "issu": [53, 60], "item": [25, 41], "iter": [25, 28], "its": [13, 39, 40, 41, 51, 61], "itself": [39, 62], "jarvi": 58, "java": 39, "job": 41, "jobnam": 41, "join": [14, 19, 32, 41], "jul": 26, "jupyt": [41, 54], "just": 39, "keep": [2, 13], "keep_connection_al": [13, 36], "kernel": 41, "keyword": [23, 38, 65, 66], "kind": 39, "know": [39, 59, 66], "knowledg": 54, "known": 39, "kubernet": [47, 53], "kwarg": [23, 36, 38], "l": 41, "lai": 62, "lang": 53, "languag": [39, 59], "larg": [39, 47, 62], "larger": 54, "last": [8, 9, 53], "lastli": 31, "later": [41, 50, 51, 52, 53], "latest": [13, 30, 31, 40, 50, 54], "latter": 62, "launch": [13, 33, 47, 49, 53, 63], "launch_mechan": [14, 23, 35, 38, 40, 41, 50, 51, 53, 63, 66], "launcher": 53, "law": [39, 41], "layer": [39, 53], "lead": [25, 28, 62], "learn": 58, "least": 39, "leav": 47, "led": 62, "legaci": 52, "legal": 41, "len": [28, 65], "length": 41, "less": [2, 39], "let": [47, 62], "level": [6, 8, 9, 13, 14, 15, 17, 19, 20, 21, 35, 39, 60, 61, 62, 63], "leverag": [39, 54, 61], "li_port_numb": 53, "liabil": 41, "libgfortran": 53, "libgl": 53, "libglu": 53, "librari": [35, 39, 40, 41, 46, 48, 53, 54], "licens": [40, 41, 47, 50, 52], "license_serv": 47, "licensor": 41, "licserverinfo": 53, "like": [39, 40, 41, 47, 51, 52, 54, 57, 60, 62], "limit": [41, 51], "line": [8, 40, 41, 47, 53, 57, 58], "link": 48, "linux": [23, 29, 30, 38, 39, 40, 41, 49, 50, 52, 58, 66], "list": [2, 3, 5, 12, 13, 23, 25, 27, 28, 38, 51, 53], "list_fil": [2, 41], "listdir": 41, "listenaddr": 53, "listenaddress": 53, "listenport": 53, "liter": [30, 62], "ln": 53, "load": [50, 54, 56, 59], "loaddefinebi": 57, "local": [2, 3, 10, 12, 13, 32, 34, 35, 39, 40, 47, 50, 65], "local_file_path_list": [2, 3], "localhost": 53, "localmechanicalpool": [24, 25, 26, 27, 28, 65], "localnet": 53, "locat": [2, 10, 13, 30, 31, 32, 41, 50, 53, 59, 66], "log": [6, 8, 9, 13, 14, 15, 17, 19, 20, 21, 34, 53, 58, 63], "log_fil": [13, 36], "log_level": [6, 8, 9, 20, 21], "log_mechan": [13, 36], "log_to_fil": 14, "logger": [15, 16, 17, 18, 19, 20, 21, 22, 60], "login": 47, "loglevel": [13, 14, 36, 41], "long": [39, 62], "longer": 39, "look": [31, 39, 51], "loopback": 53, "lot": 48, "low": [39, 62], "lt": 41, "lxssmanag": 53, "m": [40, 41, 53], "mac": [50, 52], "machin": [39, 41, 50, 53, 62], "made": [13, 32, 39], "magnitud": [39, 41], "mai": [4, 41, 48, 51, 58, 59, 61, 62], "main": [15, 41, 51, 62], "maintain": [51, 52], "make": [13, 35, 39, 40, 41, 47, 51, 54, 59, 62], "makefil": 40, "manag": [12, 41, 48, 52, 53], "mani": [39, 48, 53, 57, 58, 61], "map": [47, 53, 65], "mapdl": 41, "mark": 58, "martin": 39, "matassign": 41, "match": [2, 25], "materi": [39, 47, 59, 61, 66], "math": [8, 9, 41], "matml": 41, "maximum": [13, 25, 28, 41], "mb": [2, 41, 43, 45, 55], "mcastprefix": 53, "mean": [39, 48, 53, 62], "meant": 39, "mech": [13, 41, 60], "mech_lock": 41, "mechan": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 19, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 40, 46, 49, 50, 52, 56, 57, 59, 60, 63, 64], "mechanical_inst": 17, "mechanical_path": 30, "mechapdl": 53, "mechdb": [41, 51], "meet": 40, "mem": [43, 45, 55], "memori": [39, 41, 54, 62], "mention": 53, "merg": 57, "mesa": 53, "mesh": [39, 48, 61], "meshdata": 61, "messag": [6, 8, 9, 13, 14, 19, 35, 39, 41, 51, 60], "met": [23, 38], "method": [2, 12, 14, 17, 23, 32, 33, 36, 37, 40, 41, 48, 51, 53, 54, 61, 63, 65, 66], "microservic": 39, "microsoft": 53, "might": [13, 23, 25, 28, 35, 38, 48, 51, 53, 62], "million": 62, "millisecond": [8, 9], "mind": 2, "minimum": 40, "minut": 41, "mishamosh": 53, "miss": [48, 51], "mix": 51, "mm": 41, "mode": [4, 13, 41, 48, 51, 58, 62, 63], "model": [39, 46, 48, 54, 58, 61], "modifi": [32, 35, 40], "modul": [14, 35, 37, 40, 48, 59, 63], "more": [2, 8, 15, 39, 41, 47, 48, 50, 51, 52, 53, 54, 58, 62, 63, 64, 65, 66], "most": [13, 39, 48, 59, 62, 66], "motif": 53, "move": 39, "mpa": 41, "mpi": 41, "much": [48, 62, 63], "multiphys": 54, "multipl": [8, 47, 58, 62, 65], "multiplay": 39, "multistageharmon": 51, "must": [2, 25, 28, 39, 40, 41, 47, 50, 51, 53, 62, 66], "mutat": 62, "mutex": 62, "my": [40, 47], "my_path": 65, "my_port": 47, "myremotemachin": 51, "n": [41, 45, 58], "n_instanc": [23, 38], "name": [2, 8, 10, 13, 14, 15, 16, 17, 19, 25, 35, 39, 41, 51, 56, 58, 61, 62], "namespac": [57, 58, 61], "nativ": 53, "natur": [41, 48], "necessari": [39, 50, 59], "necessarili": [25, 28], "need": [10, 39, 51, 53, 58, 59, 61, 62, 66], "negoti": 39, "net": [39, 54, 59], "netfirewallprofil": 53, "netsh": 53, "network": [39, 51], "never": 41, "new": [13, 15, 17, 32, 39, 40, 41, 48, 54], "new_path": 66, "newslett": 39, "next": [47, 53, 54], "nineti": 39, "no_act_addin": 56, "node": 61, "nolist": 41, "non": [41, 51, 62, 66], "none": [2, 3, 10, 12, 13, 15, 17, 18, 22, 25, 28, 29, 30, 31, 32, 36, 51], "noread": 41, "normal": [17, 39, 60], "nosplash": 58, "notabctrl": 58, "note": [2, 13, 25, 28, 32, 47], "notebook": [41, 54], "noth": 48, "notic": [39, 41, 53], "notif": 53, "novel": 54, "now": [47, 51, 62], "nsfixedsupportfac": 41, "nsfrictionlesssupportfac": 41, "nsinsidefac": 41, "number": [23, 25, 28, 38, 41, 51, 57, 59, 62], "number_lin": 41, "numpi": 58, "o": [14, 19, 32, 41, 63, 65], "obj": [39, 61], "object": [8, 17, 21, 39, 46, 54, 57, 58, 61], "observ": 39, "obtain": [32, 41, 51, 53], "occur": [58, 62], "offer": 39, "offici": [39, 52], "offload": 62, "often": [39, 62], "older": 52, "omit": 53, "onc": [25, 28, 53, 62], "one": [8, 39, 40, 53, 54, 62], "onli": [4, 10, 13, 17, 25, 28, 39, 41, 48, 51, 52, 53, 58, 62], "onlin": 41, "oop": 39, "open": [41, 48, 51, 54, 58], "openssh": 53, "openssl": 53, "oper": [39, 40, 41, 47, 51, 52, 62], "opinion": 39, "option": [2, 3, 4, 6, 8, 9, 10, 12, 13, 14, 15, 17, 19, 20, 21, 23, 24, 25, 26, 28, 31, 32, 38, 39, 40, 51, 53, 54, 56], "optislang": 48, "order": [25, 28, 32, 39, 59], "orient": [39, 40], "origin": 48, "other": [2, 33, 39, 41, 47, 50, 57, 58, 61, 62, 65], "otherwis": [10, 53], "our": 39, "out": [2, 39, 41, 48], "outcom": 62, "outlin": 61, "output": [13, 14, 16, 20, 25, 28, 41, 51, 60, 63, 65], "output_quant": 41, "output_quantities_2": 41, "outsid": [48, 54, 61], "over": [39, 48, 53, 65], "overal": 40, "overlap": 61, "overrid": [4, 13], "overview": 64, "own": [39, 40, 48], "p": [41, 47, 51, 53], "pa": 41, "packag": [39, 47, 51, 53, 54, 58], "packet": 39, "padt": 51, "page": [39, 40, 48, 50, 51, 53, 54, 64], "pane": 59, "panel": 53, "parallel": [41, 51], "paramet": [2, 3, 4, 6, 8, 9, 10, 12, 13, 14, 15, 16, 17, 19, 20, 21, 23, 24, 25, 26, 28, 29, 31, 32, 38, 47, 51], "parametr": 48, "part": [39, 41, 48, 54, 61], "part_file_path": 41, "parti": [39, 58], "particip": 41, "pass": [13, 36, 39, 40, 47, 51], "password": 47, "patch": 41, "path": [2, 3, 9, 10, 13, 14, 19, 29, 30, 31, 32, 34, 41, 50, 51, 53, 66], "pattern": 2, "pep8": 40, "per": [39, 41, 62], "perform": [32, 39, 40, 53, 54, 61, 62], "perhap": 66, "permiss": 47, "person": [41, 47, 51], "perspect": 53, "pessim": 62, "pg": 53, "physic": [39, 41, 54], "piec": 39, "pip": [40, 50, 51], "platform": [41, 49, 52, 58], "pleas": [41, 50], "plugin": 61, "pm": [47, 50, 51], "pmdb": 41, "point": [41, 57, 58], "polici": 41, "polyglot": 39, "pool": [12, 23, 24, 25, 26, 27, 28, 34], "popular": [39, 48, 62], "port": [12, 13, 23, 36, 38, 40, 47, 51], "port_rang": 12, "portabl": 47, "portal": [53, 54], "portproxi": 53, "pose": 53, "posix": 40, "possibl": [2, 39, 40, 41, 47, 48, 51, 53, 58, 59, 60, 62], "post": [39, 41, 48, 51, 54, 61, 62], "post1": 41, "postprocess": 41, "pow": [8, 9], "power": 39, "powershel": [40, 53, 58], "powertoi": 53, "practic": 39, "pre": [39, 40, 41, 65], "preced": [13, 50, 51, 53, 58, 62], "prep7": 41, "prepar": 54, "prepend": 50, "preprocess": 41, "present": [48, 54], "pressur": [41, 61], "previou": [48, 65], "previous": [40, 54], "primari": 54, "principl": 39, "print": [5, 8, 13, 32, 39, 41, 50, 51, 53, 61], "privaci": 41, "privat": [51, 62], "privileg": 62, "probabl": 62, "problem": [39, 53, 62], "process": [24, 25, 28, 39, 40, 41, 48, 51, 54, 62, 63, 65], "processnamedselect": 41, "processor": 41, "product": [26, 41, 47, 48, 50, 51], "product_flag": 53, "productfil": 53, "productvers": 8, "program": [13, 23, 29, 30, 32, 38, 39, 41, 50, 51, 58, 62, 66], "programm": 39, "progress": [2, 3, 10, 23, 25, 28, 38], "progress_bar": [2, 3, 10, 23, 25, 28, 38, 65], "progress_interv": [8, 9], "prohibit": 41, "project": [3, 7, 8, 10, 40, 41, 51, 54, 58, 63], "project_directori": 41, "project_mech_fil": [7, 41], "projectdirectori": [41, 63], "prompt": 58, "proof": 54, "properli": [39, 53], "properti": [7, 11, 27, 39, 61], "proprietari": 41, "protocol": [39, 53], "provid": [2, 13, 14, 33, 35, 37, 38, 39, 40, 47, 48, 50, 51, 53, 54, 58, 61, 62, 63, 64, 66], "provis": 41, "proxi": 53, "prune": 53, "ps1": 40, "purpos": [53, 54, 62], "push": 40, "py": [9, 28, 40, 41, 43, 55, 58, 59, 65], "pyansi": [40, 48, 53, 54], "pymechan": [12, 13, 14, 19, 26, 34, 35, 41, 46, 47, 49, 50, 54, 60, 61, 62, 63, 66], "pymechanical_ip": [40, 53], "pymechanical_log": 13, "pymechanical_port": [13, 40, 53], "pymechanical_start_inst": [13, 40, 53], "pymechanicalcustomadapt": 17, "pypi": [39, 50], "pypim": [13, 23, 38], "pytest": 40, "python": [8, 9, 13, 35, 39, 40, 41, 46, 48, 50, 54, 56, 57, 58, 59, 60, 61, 62, 63], "python2": 39, "qualiti": 40, "quantifi": 62, "quantiti": [41, 57], "queri": 32, "question": [40, 49, 54], "quickli": 62, "quotat": 58, "r": [41, 51, 58], "r1": [8, 13, 30, 41, 50, 51, 52], "r2": [51, 52], "radiat": 62, "rais": [17, 63], "ram": 62, "random": 62, "randomli": 53, "rang": [12, 28, 65], "rank": 41, "rare": 62, "rather": [54, 62], "raw": 61, "re": 41, "reach": [40, 54], "read": [39, 47, 53, 62], "reader": 39, "readi": [53, 54], "readm": 53, "real": 63, "realiti": 53, "reason": [39, 40, 47, 51], "recent": [39, 48, 52], "recommend": [2, 40, 41], "record": [35, 48], "recover": 41, "recurs": 2, "red": 39, "redhat": 39, "redirect": 16, "redo": 39, "reduc": 39, "redund": 39, "refer": [15, 39, 50, 51, 54, 61], "regardless": [39, 47], "regist": [39, 41], "rel": [10, 41], "relat": 65, "releas": [40, 41, 50, 52, 53, 54], "relev": 39, "remedi": 41, "rememb": 62, "remot": [2, 13, 43, 46, 48, 55, 57, 62], "remote_inst": 36, "remote_script": 41, "renam": [39, 61], "renamecommand": 39, "render": 61, "reopen": 48, "repetit": 39, "replac": 41, "replic": 53, "report": [40, 41, 54], "repositori": [40, 47, 48, 50], "repres": [61, 62], "represent": [39, 61], "reproduc": 62, "request": [39, 40, 41, 48, 54], "requir": [40, 49, 50, 51, 53, 58, 62], "rerun": 53, "reserv": 41, "resolv": 53, "resourc": [23, 38, 53], "respect": [13, 56, 62], "respond": 54, "respons": [39, 50, 51], "restart": [23, 38, 65], "restart_fail": [23, 38, 65], "restrict": [41, 62], "result": [8, 9, 39, 61, 62, 63], "result1": 65, "result2": 65, "result3": 65, "result4": 65, "result5": 65, "result6": 65, "result7": 65, "result8": 65, "result9": 65, "return": [2, 3, 5, 8, 9, 10, 12, 13, 15, 17, 25, 26, 28, 29, 30, 31, 32, 39, 63, 65], "return_index": 26, "review": 41, "revis": 51, "right": [40, 41, 54], "rigor": 39, "rise": 39, "risk": [53, 62], "rmi": 39, "root": 41, "roughli": [39, 62], "routin": [25, 62], "rpc": 39, "rpcerror": [8, 63], "rt": 41, "rule": [40, 53, 54], "run": [8, 9, 12, 13, 25, 28, 32, 39, 40, 47, 48, 49, 50, 51, 52, 54, 57, 59, 61, 62, 63, 66], "run_batch": 65, "run_python_script": [25, 41, 63], "run_python_script_from_fil": [41, 65], "runtim": [25, 28, 59], "safe": 62, "said": 39, "same": [2, 17, 25, 28, 39, 41, 42, 44, 46, 48, 51, 53, 54, 58, 60, 61, 62], "save": [47, 50, 63], "save_mechanical_path": [31, 50], "savea": 41, "scalabl": 39, "scale": [39, 47, 62], "scenario": 8, "schedul": 62, "scope": [57, 61], "scratch": [41, 50], "screen": 51, "script": [8, 9, 13, 25, 39, 40, 47, 50, 51, 53, 57, 59, 62, 63], "script_block": 8, "script_file_path": 41, "search": [2, 30, 31], "sec": 41, "second": [13, 25, 28, 41, 57, 62], "secret": 41, "section": [34, 36, 38, 39, 48, 51, 58, 61, 62, 63], "secur": 53, "see": [39, 41, 47, 50, 52, 53, 54, 58, 61, 62, 63, 64, 65, 66], "seek": 48, "seem": [53, 62], "select": [41, 51, 61], "selectionmanag": 41, "selectiontypeenum": [41, 57], "self": 65, "semicolon": 51, "send": [39, 47, 57, 63], "sent": [13, 62, 63], "sequenc": 61, "serious": 39, "serv": 39, "server": [2, 8, 9, 10, 13, 36, 39, 41, 47, 50, 51, 54, 62], "servic": [40, 50, 63], "session": [14, 39, 46, 48, 57, 62], "set": [13, 25, 28, 30, 35, 39, 40, 48, 50, 53, 56, 57, 60, 61, 62, 66], "settings_dir": 32, "setup": [46, 49, 51], "sever": [25, 47, 61], "share": [39, 41, 53, 54, 62], "sheet": 54, "ship": 59, "short": 47, "should": [13, 17, 25, 39, 48, 50, 51, 53], "show": [2, 3, 10, 23, 25, 28, 38, 47, 51, 53, 65], "shown": [2, 10, 23, 25, 28, 38, 53], "shuttl": 62, "side": [13, 39, 53], "significantli": 50, "silent": 53, "similar": [39, 40], "simpl": [8, 9, 57, 62], "simpli": [39, 48, 51], "simplif": 62, "simplifi": 65, "simul": [48, 54, 62], "sinc": 39, "singl": [2, 41, 53, 62], "singular": 47, "situat": 62, "size": [2, 10], "slow": 61, "slower": 39, "small": [59, 62], "smaller": 62, "snippet": 48, "so": [12, 39, 40, 53, 58, 62], "softwar": [26, 39, 41, 47, 48, 50, 51, 54, 62], "solut": [41, 48, 61], "solv": 52, "solver": [39, 41, 48, 54, 61], "some": [2, 25, 28, 32, 39, 48, 50, 51, 53, 56, 57, 58, 59, 61, 62], "someth": 39, "sometim": [51, 61], "sort": [25, 28], "sourc": [32, 40, 41, 48, 53, 54], "space": 39, "specif": [35, 39, 40, 41, 48, 50, 53, 61, 62], "specifi": [2, 13, 15, 23, 25, 28, 38, 47, 51, 58, 66], "speed": 62, "spent": 41, "sphinx": [40, 41, 44], "stabl": [40, 54], "stack": 39, "standalon": [48, 58], "standard": [14, 20, 30, 39, 40, 51, 53, 60, 66], "start": [2, 13, 23, 25, 28, 38, 40, 41, 47, 50, 51, 54, 60], "start_inst": [13, 53], "start_timeout": 13, "starting_port": [23, 38], "state": [15, 39, 41], "statement": [8, 9, 58], "static": 16, "staticstructur": 41, "statist": [41, 61], "statu": 47, "stdin": 47, "steel": 41, "step": [40, 49, 53], "still": [39, 51, 53], "stop": [25, 28, 41, 48, 65], "store": [17, 25, 39, 62, 66], "str": [2, 3, 6, 8, 9, 10, 11, 13, 14, 15, 16, 17, 19, 20, 21, 29, 30, 31, 32, 41], "stress": 41, "string": [8, 9, 17, 39], "structur": [41, 51, 53, 62], "structures_2022r2_linx64": 53, "studi": [48, 54], "style": 39, "subject": 41, "submit": 40, "subroutin": 62, "subsequ": 25, "subsidiari": 41, "subsystem": [49, 61], "success": [32, 53], "successfulli": 53, "sudo": 53, "suffer": 62, "suffix": [15, 61], "suitabl": 39, "sum": 41, "suppli": [32, 41, 56, 65, 66], "support": [39, 40, 48, 49, 50, 51, 52, 54, 61, 63], "supported_vers": 30, "surpris": 62, "survei": 41, "switch": [13, 40, 54], "sy": 48, "symbol": 53, "symmetr": 39, "syntax": 54, "system": [40, 41, 47, 48, 50, 51, 52, 58, 60], "t": [41, 51], "take": [31, 39, 40], "taken": 39, "talk": 39, "tap": 54, "tar": 53, "target": [2, 3], "target_dir": [2, 3, 41], "task": [33, 40, 54, 61, 62], "tcp": 53, "team": [40, 54], "technologi": [39, 54], "tell": 40, "templat": 40, "tempsel": 41, "term": 41, "termin": [41, 48, 51, 58], "tessel": 61, "test": [9, 28, 35, 39, 53, 65, 66], "text": [28, 39, 51, 63], "tgz": 53, "than": [2, 15, 39, 47, 50, 54, 62, 63], "thei": [39, 48, 62], "them": [2, 3, 39, 47, 48, 57, 59, 62, 63], "theoret": 39, "theori": 53, "therac": 62, "therefor": 39, "thermalshel": 51, "thi": [4, 12, 13, 14, 15, 17, 25, 26, 28, 32, 34, 35, 36, 38, 39, 40, 41, 42, 44, 47, 48, 50, 51, 53, 54, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66], "thick": 61, "thing": [39, 62], "third": [39, 58], "thoroughli": 40, "those": [48, 57, 61], "thought": 39, "thousand": 57, "thread": [12, 13, 41], "three": [13, 53, 62], "through": [46, 50, 52, 53, 54], "tight": 48, "time": [13, 41, 60, 61, 62, 63, 66], "timeout": [25, 28, 36], "titl": [40, 54], "tmp": [7, 41], "to_fil": 14, "to_stdout": [14, 60], "togeth": [48, 53], "token": [47, 63], "toler": 39, "tool": [29, 30, 31, 32, 34, 35, 39, 40, 50, 51], "toolbar": 53, "top": 39, "topic": 39, "total": [41, 43, 45, 55, 62], "toward": 40, "tqdm": [2, 3, 10], "track": [13, 15], "tracker": [25, 28], "trade": 41, "trademark": 41, "tradeoff": 62, "tradit": 62, "tradition": 62, "traffic": 53, "transact": [57, 61], "transfer": [39, 41, 48], "treat": [25, 28], "tree": [58, 61], "tri": [31, 39], "tricker": 62, "trillion": 62, "troubl": 48, "true": [4, 10, 12, 13, 14, 23, 25, 28, 31, 32, 36, 38, 41, 51, 56, 57, 60, 61, 65], "try": [8, 39, 41, 53, 62], "tupl": [2, 3, 25, 30], "turn": 39, "twine": 40, "two": [35, 39, 48, 53, 54, 62], "txt": [13, 32, 41, 47, 53], "type": [13, 29, 30, 31, 32, 35, 41, 51, 57, 58, 61], "typic": [31, 50, 53, 62], "u": [40, 41, 47], "ubuntu": [41, 53], "ui": [4, 13, 61, 62], "ul": 41, "unauthor": 41, "under": [41, 48, 51], "understand": 39, "undo": 39, "unexpect": 63, "union": 30, "uniqu": 39, "unit": [40, 41], "unix": 40, "unknown": 53, "unlik": 39, "unoffici": 53, "unreli": 39, "until": [24, 25, 26, 28, 61], "unzip": 50, "up": [12, 39, 40, 41, 48, 51, 56, 66], "up20231106": 41, "updat": [39, 41, 53, 57, 58, 61], "upgrad": [50, 53], "upload": 41, "upper": [40, 54], "us": [2, 3, 6, 10, 12, 13, 14, 15, 17, 19, 23, 25, 27, 29, 31, 35, 36, 38, 41, 42, 44, 46, 48, 49, 50, 52, 53, 54, 56, 57, 58, 59, 60, 61, 62, 63, 65, 66], "usabl": 57, "usag": [14, 41, 50, 51], "use_thread": 12, "user": [13, 25, 31, 32, 39, 41, 48, 51, 57, 58, 61, 62], "usernam": [7, 32, 47, 50], "usr": [30, 50, 51, 53, 58, 66], "usual": [31, 39, 40, 51, 61, 62], "util": [41, 51, 57], "v0": 50, "v23": 47, "v231": [13, 23, 29, 30, 38, 50, 51, 58, 66], "v241": [58, 59], "v4tov4": 53, "valid": [13, 53], "valu": [2, 8, 9, 25, 28, 47, 53, 61, 62], "valv": 41, "variabl": [4, 8, 13, 40, 47, 50, 51, 57, 60, 66], "varieti": 51, "venv": [40, 50], "verbose_mechan": [13, 51], "veri": 39, "verif": [28, 65], "verifi": [40, 41, 47, 49, 51], "version": [8, 13, 23, 26, 30, 31, 38, 39, 40, 41, 47, 48, 49, 50, 51, 53, 54, 58, 59, 65, 66], "version_from_path": 50, "vertic": 61, "vethernet": 53, "via": [13, 61], "view": [2, 3, 10, 39, 48, 51, 54, 61], "virtual": [40, 41, 50, 53, 58, 62], "visit": 39, "visual": 61, "volum": 61, "vpn": 53, "vulner": 62, "vxxx": 32, "w": 41, "wa": [39, 41, 48], "wai": [17, 39, 40, 48, 50, 51, 62], "wait": [23, 24, 25, 26, 28, 38, 65], "walk": [39, 53], "wall": 62, "want": [25, 28, 40, 48, 50, 53], "warn": [6, 8, 9, 13, 15, 17, 19, 36, 60, 63], "warranti": 41, "we": [39, 41], "web": 39, "websit": 39, "wed": 26, "wednesdai": [47, 50, 51], "week": 62, "welcom": [51, 54], "well": [39, 46, 59], "what": [39, 53, 61], "wheel": [40, 50], "wheelhous": 50, "when": [2, 8, 12, 13, 14, 23, 25, 28, 35, 38, 39, 40, 41, 47, 48, 51, 53, 56, 57, 60, 61, 62, 63, 65], "where": [13, 31, 39, 40, 51, 53, 58, 59, 62], "wherea": 53, "whether": [2, 3, 4, 8, 9, 10, 12, 13, 14, 23, 24, 25, 26, 28, 38, 39, 50, 53, 60, 63], "which": [2, 4, 10, 12, 13, 14, 15, 17, 19, 23, 25, 28, 32, 35, 38, 39, 40, 41, 42, 44, 47, 48, 53, 54, 60, 61, 62], "while": [23, 25, 38, 39, 40, 48, 51, 57, 65], "whose": [2, 39], "why": [39, 40, 51, 54], "wide": 39, "wikipedia": 53, "win": 53, "win64": [13, 29], "window": [23, 29, 30, 38, 39, 40, 41, 49, 50, 51, 52, 58, 66], "winhostip": 53, "winhttp": 53, "winsock": 53, "winx64": [23, 30, 38, 50, 51, 58, 66], "wire": 39, "within": [12, 13, 26, 28, 39, 46, 47, 48, 59, 62], "without": [13, 41, 47, 48, 50, 56, 58, 62, 63], "work": [2, 3, 5, 10, 19, 36, 38, 39, 48, 50, 51, 53, 59, 62], "workbench": [23, 29, 30, 38, 39, 50, 51, 58, 61, 66], "worker": 41, "worri": 63, "would": [17, 39, 40, 47, 51, 63], "wrap": [39, 63], "write": [13, 14, 19, 32, 48, 60, 62, 63], "write_file_contents_to_consol": 41, "written": [39, 58], "wrote": 63, "wsl": 49, "wsl1": 53, "wsl2": 53, "wsldl": 53, "www": [39, 41], "x": [39, 48], "x11": 53, "x64": 41, "x_t": 10, "xml": 41, "xorg": 53, "xvzf": 53, "xx": 53, "xxx": [47, 53], "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx": 47, "xyz": 53, "y": 41, "year": 48, "yet": [35, 53], "you": [2, 8, 12, 13, 14, 17, 25, 28, 32, 35, 39, 40, 41, 47, 50, 51, 52, 53, 54, 58, 59, 60, 61, 63, 65, 66], "your": [25, 29, 40, 41, 47, 48, 51, 53, 54, 57, 58, 61, 63, 66], "your_browser_nam": 40, "yum": 53, "zeromq": 39}, "titles": ["", "clear", "download", "download_project", "exit", "list_files", "log_message", "project_directory", "run_python_script", "run_python_script_from_file", "upload", "version", "close_all_local_instances", "launch_mechanical", "Logger", "add_child_logger", "add_handling_uncaught_exceptions", "add_instance_logger", "file_handler", "log_to_file", "log_to_stdout", "setLevel", "std_out_handler", "LocalMechanicalPool", "exit", "map", "next_available", "ports", "run_batch", "change_default_mechanical_path", "find_mechanical", "get_mechanical_path", "save_mechanical_path", "Helper functions", "API reference", "Logging", "Mechanical", "Ansys path tools", "Local Mechanical Pool", "PyMechanical architecture", "Contribute", "Remote & Embedding Example", "Embedding and Remote Session Example", "Computation times", "Embedding and Remote Session Example", "Computation times", "Examples", "Using Mechanical through Docker", "Frequently asked questions", "Getting started", "Installation guide", "Launching PyMechanical", "Versioning", "Windows Subsystem for Linux (WSL)", "Introduction", "Computation times", "Addin configuration", "Globals", "Embedded instances", "Libraries", "Logging", "Mechanical scripting", "Threading", "Remote sessions", "PyMechanical usage", "Create a pool of Mechanical servers", "Initial setup for launching a Mechanical session on the local machine"], "titleterms": {"": 62, "10": 53, "A": 39, "act": 48, "adapt": 53, "add": 41, "add_child_logg": 15, "add_handling_uncaught_except": 16, "add_instance_logg": 17, "addin": 56, "addit": [47, 51, 53, 58, 61], "address": 53, "all": 53, "an": [50, 53], "analysi": 41, "ansi": [37, 48, 53], "api": [34, 39, 61, 65, 66], "architectur": 39, "ask": 48, "assign": 41, "autom": 41, "back": 41, "background": 54, "between": 53, "boundari": 41, "call": 39, "centos7": 53, "change_default_mechanical_path": 29, "class": [35, 38], "clear": 1, "client": 53, "close_all_local_inst": 12, "code": [40, 51], "command": [39, 51], "commun": 53, "comput": [43, 45, 55], "concurr": 62, "condit": [41, 62], "configur": [56, 58], "connect": [47, 51], "consider": 47, "consol": 41, "contain": 47, "content": 41, "contribut": 40, "creat": [53, 65], "debug": 51, "defin": [41, 65], "delet": 53, "develop": 40, "diagnos": 58, "differ": 39, "directori": 41, "disabl": 53, "distribut": [39, 40, 53], "do": 48, "docker": [47, 53], "document": [40, 54], "download": [2, 41], "download_project": 3, "emb": [41, 51], "embed": [39, 41, 42, 44, 50, 52, 54, 58], "entiti": 61, "entri": 61, "environment": 53, "ethernet": 53, "exampl": [41, 42, 44, 46], "execut": 51, "exit": [4, 24, 41], "export": 41, "file": [41, 51, 53, 65], "file_handl": 18, "find_mechan": 30, "firewal": 53, "flag": 53, "forward": 53, "frequent": 48, "from": 51, "function": [33, 65], "gener": 41, "geometri": 41, "get": [41, 49], "get_mechanical_path": 31, "given": 53, "global": [41, 57], "guid": 50, "helper": 33, "host": 53, "how": 48, "i": 48, "imag": [47, 53], "implement": 39, "import": 41, "inform": [51, 53], "initi": [41, 66], "input": 65, "insid": 58, "instal": [40, 47, 50, 51, 53], "instanc": [39, 41, 50, 51, 52, 54, 58], "interfac": 39, "introduct": 54, "invoc": 39, "ip": 53, "ironpython": 58, "issu": [40, 48, 51, 54], "languag": 53, "launch": [41, 51, 66], "launch_mechan": 13, "librari": 59, "licens": [51, 53], "line": 51, "link": 53, "linux": [51, 53], "list": 41, "list_fil": 5, "local": [38, 41, 51, 53, 66], "localmechanicalpool": [23, 38], "locat": 51, "log": [35, 60], "log_messag": 6, "log_to_fil": 19, "log_to_stdout": 20, "logger": [14, 35], "machin": [51, 66], "manual": 51, "map": 25, "materi": 41, "mechan": [36, 38, 39, 41, 47, 48, 51, 53, 54, 58, 61, 62, 65, 66], "mesh": 41, "method": 39, "mitig": 62, "mode": 40, "model": [41, 62], "name": 53, "network": 53, "next_avail": 26, "offlin": 50, "open": 53, "other": 48, "overview": [58, 61, 63], "packag": 50, "path": 37, "pattern": 39, "point": [53, 61], "pool": [38, 65], "port": [27, 53], "posit": 48, "post": [40, 53], "problem": 58, "procedur": 39, "process": 53, "product": 53, "project_directori": 7, "pymechan": [39, 40, 48, 51, 52, 53, 58, 64], "python": 51, "question": 48, "race": 62, "record": 61, "refer": [34, 65, 66], "relat": 48, "relationship": 48, "remot": [39, 40, 41, 42, 44, 50, 51, 52, 54, 63], "report": 48, "requir": 41, "reset": 53, "resourc": 61, "respect": 48, "rest": 39, "restart": [48, 53], "result": 41, "run": [41, 53, 58, 65], "run_batch": 28, "run_python_script": 8, "run_python_script_from_fil": 9, "save": 41, "save_mechanical_path": 32, "script": [41, 48, 54, 58, 61], "server": [53, 65], "servic": 53, "session": [41, 42, 44, 50, 51, 52, 54, 63, 66], "set": [41, 51, 65], "setlevel": 21, "setup": [53, 66], "solv": 41, "specifi": 53, "start": 49, "static": 41, "std_out_handl": 22, "stop": 53, "strategi": 62, "style": 40, "subsystem": 53, "system": 39, "test": 40, "text": 41, "thread": 62, "through": 47, "time": [43, 45, 55], "tool": [37, 48], "tox": 40, "upload": 10, "us": [39, 40, 47, 51], "usag": 64, "user": 65, "valu": 41, "variabl": [41, 53], "verifi": 50, "version": [11, 52], "view": [40, 53], "vpn": 51, "what": 48, "window": 53, "without": 40, "work": 41, "workbench": 48, "workflow": 41, "write": 41, "wsl": 53, "xvfb": 53, "you": 48, "your": 50}})
\ No newline at end of file
diff --git a/version/0.10/sg_execution_times.html b/version/0.10/sg_execution_times.html
new file mode 100644
index 000000000..0737c5199
--- /dev/null
+++ b/version/0.10/sg_execution_times.html
@@ -0,0 +1,729 @@
+
+
+
+
+
+
+
+
+
+
+ Computation times — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PyAnsys
+
+
+
+
+
+
+
+
+ Computation times
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Computation times
+00:56.337 total execution time for 1 file from all galleries :
+
+
+
+
+
+
+
+Example
+Time
+Mem (MB)
+
+
+
+Remote & Embedding Example (../../examples/embedding_n_remote/embedding_remote.py
)
+00:56.337
+0.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/user_guide_embedding/announcement.html b/version/0.10/user_guide_embedding/announcement.html
new file mode 100644
index 000000000..a838ea4eb
--- /dev/null
+++ b/version/0.10/user_guide_embedding/announcement.html
@@ -0,0 +1,4 @@
+
+ You are not viewing the most recent version of this documentation.
+ The latest stable release is 0.11
+
diff --git a/version/0.10/user_guide_embedding/configuration.html b/version/0.10/user_guide_embedding/configuration.html
new file mode 100644
index 000000000..c4e8b8216
--- /dev/null
+++ b/version/0.10/user_guide_embedding/configuration.html
@@ -0,0 +1,737 @@
+
+
+
+
+
+
+
+
+
+
+ Addin configuration — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Addin configuration
+There are some configuration options that are respected when loading an embedded instance
+of Mechanical into python.
+The class Configuration
can be
+used to set up Addin configuration. This configuration can be supplied to the constructor
+of the class Configuration
.
+For example, to load an instance of Mechanical using the “Mechanical” configuration name and
+without loading any ACT Addins:
+from ansys.mechanical.core import App
+from ansys.mechanical.core.embedding import AddinConfiguration
+
+config = AddinConfiguration ( "Mechanical" )
+config . no_act_addins = True
+app = App ( config = config )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/user_guide_embedding/globals.html b/version/0.10/user_guide_embedding/globals.html
new file mode 100644
index 000000000..d98ea82de
--- /dev/null
+++ b/version/0.10/user_guide_embedding/globals.html
@@ -0,0 +1,746 @@
+
+
+
+
+
+
+
+
+
+
+ Globals — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Globals
+When using Mechanical scripting APIs (in either Mechanical’s graphical user interface or when
+sending scripts to a remote session of Mechanical), there are many global variables that are
+by default usable from Python. Some of these are API entry points, like those discussed in
+Mechanical scripting , while others are types and namespaces that are used by the
+scripting APIs. Examples of those are the Quantity
, Transaction
class or the DataModel
entry point.
+Embedding Mechanical into Python is as simple as constructing an application object. This can
+not automatically change the global variables available to the Python scope that constructed
+it. As a utility, a function that adds the API entry points is available. To use it, run the
+following code:
+from ansys.mechanical.core import App , global_variables
+
+app = App ()
+# The following line extracts the global API entry points and merges them into your global
+# Python global variables.
+globals () . update ( global_variables ( app ))
+
+
+Some enum types are available when scripting inside of mechanical, such as SelectionTypeEnum
+or LoadDefineBy
. Because these number in the thousands, by default, these enums are not
+included in these global variables. To include enums, set the second argument of
+global_variables
to True.
+globals () . update ( global_variables ( app , True ))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/user_guide_embedding/index.html b/version/0.10/user_guide_embedding/index.html
new file mode 100644
index 000000000..5c44c7447
--- /dev/null
+++ b/version/0.10/user_guide_embedding/index.html
@@ -0,0 +1,817 @@
+
+
+
+
+
+
+
+
+
+
+ Embedded instances — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PyAnsys
+
+
+
+
+
+
+
+
+ Embedded instances
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Embedded instances
+This section provides an overview of how you use PyMechanical to embed
+an instance of Mechanical in Python.
+
+
+
+Overview
+The Application
class provides
+a Mechanical instance:
+from ansys.mechanical.core import App
+
+app = App ()
+ns = app . DataModel . Project . Model . AddNamedSelection ()
+
+
+The Application
class has access
+to the global scripting entry points that are available from built-in Mechanical scripting:
+
+ExtAPI: Application.ExtAPI
+DataModel: Application.DataModel
+Model: Application.DataModel.Project.Model
+Tree: Application.DataModel.Tree
+Graphics: Application.ExtAPI.Graphics
+
+Besides scripting entry points, many other types and objects are available from
+built-in Mechanical scripting. To learn how to import scripting entry points,
+namespaces, and types, see Globals .
+
+
+Additional configuration
+By default, an instance of the Application
class
+uses the same Addin configuration as standalone Mechanical. To customize Addins, see
+Addin configuration .
+
+
+Diagnosing problems with embedding
+In some cases, debugging the embedded Mechanical instance may require additional logging.
+For information on how to configure logging, see Logging .
+
+
+Running PyMechanical embedding scripts inside Mechanical with IronPython
+If your PyMechanical embedding script does not use any other third-party Python package, such as NumPy ,
+it is possible to adapt it so that it can run inside of Mechanical with IronPython.
+The scripting occurs inside Mechanical’s command line interface. For instance, consider the following PyMechanical code:
+from ansys.mechanical.core import App , global_variables
+
+app = App ()
+globals () . update ( global_variables ( app ))
+ns = DataModel . Project . Model . AddNamedSelection ()
+ns . Name = "Jarvis"
+
+
+The above code can be written as a Python file, such as file.py
with only the following content:
+ns = DataModel . Project . Model . AddNamedSelection ()
+ns . Name = "Jarvis"
+
+
+Because the file does not contain the PyMechanical import statements, you can run
+file.py
using the command line inside Mechanical.
+Using command line interface (CLI)
+This can be achieved on both the Windows and Linux platforms using
+ansys-mechanical
cli from the virtual environment where ansys-mechanical-core
+has been installed. Activate the virtual environment and then use CLI to run the scripts.
+If multiple Mechanical versions are installed in the same system,
+versions can be specified using -r
flag. Use -h
for more information.
+ansys - mechanical - i file . py
+
+
+
+
Note
+
Alternately user can use the following commands in the command prompt of Windows and the terminal
+for Linux systems.
+
On Windows
+
"C:/Program Files/ANSYS Inc/v241/aisol/bin/winx64/AnsysWBU.exe -DSApplet -AppModeMech -script file.py"
+
+
+
PowerShell users can run the preceding command without including the opening and
+closing quotation marks.
+
On Linux
+
/ usr / ansys_inc / v231 / aisol /. workbench - DSApplet - AppModeMech - nosplash - notabctrl - script file . py
+
+
+
-nosplash
and -notabctrl
not needed for versions 23.2 or above
+
On either Windows or Linux, add the command line argument -b
to run the script in batch mode.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/user_guide_embedding/libraries.html b/version/0.10/user_guide_embedding/libraries.html
new file mode 100644
index 000000000..3767c94e1
--- /dev/null
+++ b/version/0.10/user_guide_embedding/libraries.html
@@ -0,0 +1,749 @@
+
+
+
+
+
+
+
+
+
+
+ Libraries — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Libraries
+
+
Note
+
This is an experimental feature. Some of these libraries may not work.
+
+Most of Mechanical’s scripting APIs are implemented in C#. However, there are a small number
+of Python modules that are distributed with the installation of Mechanical that can be used
+from within the Mechanical Scripting Pane. These modules are not available for use from an
+embedded instance of Mechanical in Python because Python does not know where to find them.
+But, in order to use these modules, you need to use the experimental function
+add_mechanical_python_libraries
to help Python locate them and make it possible to import
+them. In addition, it is necessary to first initialize the embedded instance of Mechanical
+because these libraries may expect the .NET Common Language Runtime to be initialized as well
+as for the appropriate C# libraries to be loaded.
+To use the above function, run the following:
+from ansys.mechanical.core import App , global_variables
+from ansys.mechanical.core.embedding import add_mechanical_python_libraries
+
+app = App ( version = 241 )
+
+add_mechanical_python_libraries ( app )
+import materials # This is materials.py that's shipped with Mechanical v241
+
+
+
+
Warning
+
Using version as argument to add_mechanical_python_libraries()
is deprecated.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/user_guide_embedding/logging.html b/version/0.10/user_guide_embedding/logging.html
new file mode 100644
index 000000000..4a2431126
--- /dev/null
+++ b/version/0.10/user_guide_embedding/logging.html
@@ -0,0 +1,744 @@
+
+
+
+
+
+
+
+
+
+
+ Logging — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Logging
+Mechanical has a logging system that is useful when debugging issues. Normally, it is
+enabled by setting environment variables before starting Mechanical. With PyMechanical,
+it is possible to configure logging at any time, whether it is before or after creating
+the embedded application, using the same Python API.
+Use the Configuration
class to
+configure logging to the standard output for all warning messages and above (which are error and fatal messages).
+For example:
+import logging
+import ansys.mechanical.core as mech
+from ansys.mechanical.core.embedding.logger import Configuration , Logger
+
+Configuration . configure ( level = logging . WARNING , to_stdout = True )
+_ = mech . App ()
+
+
+After the embedded application has been created, you can write messages to the same
+log using the Logger
class like this:
+from ansys.mechanical.core.embedding.logger import Logger
+
+Logger . error ( "message" )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/user_guide_scripting/announcement.html b/version/0.10/user_guide_scripting/announcement.html
new file mode 100644
index 000000000..a838ea4eb
--- /dev/null
+++ b/version/0.10/user_guide_scripting/announcement.html
@@ -0,0 +1,4 @@
+
+ You are not viewing the most recent version of this documentation.
+ The latest stable release is 0.11
+
diff --git a/version/0.10/user_guide_scripting/index.html b/version/0.10/user_guide_scripting/index.html
new file mode 100644
index 000000000..c70370556
--- /dev/null
+++ b/version/0.10/user_guide_scripting/index.html
@@ -0,0 +1,802 @@
+
+
+
+
+
+
+
+
+
+
+ Mechanical scripting — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PyAnsys
+
+
+
+
+
+
+
+
+ Mechanical scripting
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Mechanical scripting
+This section provides an overview of Mechanical scripting.
+
+
+
+Overview
+You could already perform scripting of Mechanical with Python from inside
+Mechanical. PyMechanical leverages the same APIs but allows you to run your
+automation from outside Mechanical.
+For comprehensive information on these APIs, see the Scripting in Mechanical Guide in the
+Ansys Help.
+
+
+Recording
+Mechanical supports some level of recording. When you initiate an action from the user
+interface (UI), the UI determines what API to run, executes this API, and prints it in the Mechanical Scripting
+View . Examples of these actions are assigning selections to scoping, changing values in
+the details view, and renaming an object in the Outline . In the following animated example,
+a Fixed Support and a Pressure are added to the Outline .
+
+
+
+
+
+Mechanical entities
+Mechanical has an extensive set of entities that represent all the functionality provided
+by Mechanical. Here are descriptions of the entities at Mechanical’s core:
+
+CAD: CAD entities, which are usually imported from a CAD application
+Mesh: The discretized geometry that is appropriate for Mechanical’s solvers
+Materials: Engineering material models that come from Engineering Data , which is a subsystem of Ansys Workbench
+Objects: The entities in the Outline that represent the model, analyses, solutions, and results
+Graphics: The 3D graphics engine that renders data from Mechanical visually and can export images and animations
+Solvers: The solver integrations that allow a Mechanical model to be used to run a specific solver
+Post: The engine that computes useful engineering results from solver runs
+Extensions: Plugins or extensions defined externally from Mechanical that extend Mechanical
+
+There is some overlap between these entities. For instance, the CAD data is represented visually in the 3D graphics
+engine but also has representation in the Outline . The raw CAD data, which includes the tessellations used to render the
+graphics and all the data needed to define vertices, edges, faces, volumes, and parts is collectively considered GeoData
.
+You may interact with these bodies and parts in the Outline , assigning materials, thickness, and other data that does
+not come from CAD entities. This is considered Geometry
. As a result, the API entry points for GeoData
and Geometry
+are different.
+The same is true for Mesh
. There is a representation in the Outline that contains the settings
+used to generate the mesh and statistics about the mesh. Then, there is MeshData
, which is the actual nodes and
+elements in the mesh. These have distinct API entry points.
+Executing a sequence of APIs can sometimes be slow because Mechanical may perform background tasks each time any of its
+entities are created, updated, or deleted. Mechanical scripting has a Transaction
class for deferring many of these
+tasks until after a block of commands are run. Here is an example:
+with Transaction ():
+ for obj in Tree :
+ obj . Name = obj . Name + " suffix"
+
+
+
+
+API entry points
+When running scripts inside of Mechanical, you can access the APIs via these entry points:
+
+ExtAPI
: Entry point for all APIs
+DataModel
: Entry point to access CAD and mesh entities and objects from the Outline
+Model
: The Model object from the Outline
+Tree
: The Outline
+Graphics
: The 3D graphics engine
+
+You also have access to several types and namespaces that are included in the scripting scope but are not available
+from those entry points.
+
+
+Additional resources
+The ACT API Reference Guide
+provides descriptions of the objects, methods, and properties for all namespaces.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/user_guide_scripting/threading.html b/version/0.10/user_guide_scripting/threading.html
new file mode 100644
index 000000000..221e0ef43
--- /dev/null
+++ b/version/0.10/user_guide_scripting/threading.html
@@ -0,0 +1,832 @@
+
+
+
+
+
+
+
+
+
+
+ Threading — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Threading
+
+Concurrency and threads
+
+
Note
+
The intent is not to provide an extensive explanation of concurrency and threads but
+rather to lay the groundwork for specific concurrency considerations for Mechanical’s
+scripting API. Some simplifications are employed for this purpose.
+
+CPUs can execute multiple subroutines of a program concurrently. One popular model
+for this concurrency is called threading . There are other possible models, such
+as co-routines.
+A thread is a CPU virtualization of a CPU core. Traditionally, a computer can have
+multiple CPUs, each executing multiple programs concurrently. Using clever scheduling,
+a CPU can simulate more cores than it actually has. A thread is an abstraction around
+either a CPU core executing a program or a virtual CPU core executing a program. Within
+a single process, there can be multiple threads running, and these threads can be
+executing in a single core or multiple cores.
+In a traditional computer instruction set architecture, memory is a store of data that
+stores the program itself and data used by the program. CPUs contain a small amount of
+memory that can be used to run a program, but often times an external memory store,
+typically using RAM, is used by the program. Frequently, when running a program, the
+CPU needs to fetch data from RAM or store data back into RAM.
+CPUs operate at the speed of electrons and can often do trillions of operations per
+second. If there is only one program running on a CPU and a private section of memory
+that the program needs, it can shuttle data to and from that memory extremely quickly.
+When there are multiple programs or threads running on a CPU, things can get tricker.
+Consider a (contrived) example with a simple program that increments an integer:
+
+If i
is a 32-bit integer, it is represented in binary. For example, the number 11
+is 00000000 00000000 00000000 00001011
, and the number 12 is 00000000 00000000 00000000 00001100
.
+To change a value from 11 to 12, a total of three bits must flip between 0 and 1.
+It is possible for a CPU to perform that operation with three independent bit flip instructions.
+Now consider that two concurrently running threads are both trying to increment this integer
+at roughly the same time, at the time scale of CPUs. The first thread flips one of
+the bits, making the binary value 00000000 00000000 00000000 00001111
, which represents the
+number 15. The second thread sees that binary amount and interprets the operation to be
+incrementing from 15 to 16, or from 00000000 00000000 00000000 00001111
to
+00000000 00000000 00000000 00010000
, which is performed using 5 bit flips. So one thread
+flips the latter 3 bits, and the other thread flips the latter 5 bits. This might result in the
+outcome 00000000 00000000 00000000 00010111
, which represents the number 21, a value
+certainly not two increments on the number 11. Depending on the interpretation of that integer
+value by the program, the behavior of the program might do literally anything, with erratic,
+random, and often difficult to reproduce (let alone fix) bugs.
+
+Race condition
+This preceding situation is called a race condition , where concurrent programs are incorrectly
+accessing or mutating the same memory in such a way that leads to surprising consequences. They may
+seem rare. However, remember that when a CPU situation has a probability of one in a million, it is
+likely to occur hundreds of times per second. If it has a much smaller probability than that, it can
+occur once every few days or once every few weeks. In the Therac-25 radiation machine, a race
+condition actually led to three deaths and more debilitating injuries.
+
+
+Mitigation strategies
+There are a number of strategies that software engineers use to benefit from the enhanced
+performance of concurrent programs without suffering from race conditions:
+
+Data copies: Algorithms operate on private copies of data, rather than shared memory.
+Thread-compatible data structures: These data structures are designed to allow for
+concurrent read-only access of data but not concurrent write access to data.
+Thread-safe data structures: These data structures allow both concurrent read and write
+access to data.
+Task posting: All calls to a set of functions implicitly schedule the function to run on a
+dedicated thread, allowing two calls to any of these functions to run concurrently.
+
+Adopting any of these strategies comes with a tradeoff. Namely, these strategies typically
+ask the CPU to do additional work in form of memory walls, mutexes, and other low-level
+CPU-intrinsic functions. Or, they require the program to do additional work in scheduling
+tasks. Usually, these are performance pessimizations for the 99% of cases where
+concurrency is not needed. As such, adopting these strategies causes performance
+problems for the typical user.
+
+
+
+Mechanical’s threading model
+Mechanical is a large-scale application with multiple concurrent threads running at
+any one time. However, it exhibits thread affinity , where a single thread is privileged above
+all others with respect to data access and mutation. If the user interface (UI) is running,
+this thread is typically called the UI thread, and in batch mode, it is typically called the
+main thread. Some of the data structures used by Mechanical’s code are thread-compatible.
+Some of the APIs use task posting. However, in the general case, using any Mechanical
+API on a non-privileged thread carries a risk of race conditions . It is difficult to quantify
+the risk or to distinguish which operations are most likely to be vulnerable to them due to
+the large scale of the Mechanical application’s code.
+As such, Mechanical APIs MUST only be run on the UI thread or main thread, in interactive and batch
+mode respectively. For PyMechanical, this means the following:
+
+For an embedded instance, all scripting APIs are executed on the Python thread that constructed
+the instance of Mechanical.
+For a remote session, the Python code that is sent to the server does not contain threading
+constructs that try to run APIs in a background thread.
+
+Given the preceding restrictions, it is possible to offload some work to a background
+thread, as long as that thread does not access Mechanical’s scripting API.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/user_guide_session/announcement.html b/version/0.10/user_guide_session/announcement.html
new file mode 100644
index 000000000..a838ea4eb
--- /dev/null
+++ b/version/0.10/user_guide_session/announcement.html
@@ -0,0 +1,4 @@
+
+ You are not viewing the most recent version of this documentation.
+ The latest stable release is 0.11
+
diff --git a/version/0.10/user_guide_session/index.html b/version/0.10/user_guide_session/index.html
new file mode 100644
index 000000000..9cda2313a
--- /dev/null
+++ b/version/0.10/user_guide_session/index.html
@@ -0,0 +1,771 @@
+
+
+
+
+
+
+
+
+
+
+ Remote sessions — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PyAnsys
+
+
+
+
+
+
+
+
+ Remote sessions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Remote sessions
+This section provides an overview of how you use PyMechanical as a client
+to a remote Mechanical session.
+
+
+
+Overview
+The launch_mechanical()
method
+creates an instance of the Mechanical
+class in the background and sends commands to it as a service. Because errors and warnings
+are processed Pythonically, you can develop a script in real time without worrying about
+whether the script runs correctly when deployed in batch mode.
+Here is how you use the launch_mechanical()
+method to launch Mechanical from Python in gRPC mode:
+import os
+from ansys.mechanical.core import launch_mechanical
+
+mechanical = launch_mechanical ()
+
+
+When Mechanical is active, you can send commands to it as a genuine
+Python class. For example, you can send a Python script:
+result = mechanical . run_python_script ( "2+3" )
+result = mechanical . run_python_script ( "ExtAPI.DataModel.Project.ProjectDirectory" )
+
+
+Mechanical interactively returns the result of each command that you send,
+saving the result to the logging module.
+Errors are caught immediately. In the following code, an invalid command is sent,
+and an error is raised:
+>>> mechanical . run_python_script ( "2****3" )
+grpc.RpcError:
+"unexpected token '**'"
+
+
+Because the error is caught immediately, you can write your Mechanical scripts in
+Python, run them interactively, and then run them in batch without worrying if the
+scripts run correctly. This would not be the case if you had instead outputted the
+scripts that you wrote to script files.
+The Mechanical
class supports
+much more than sending text to Mechanical. It includes higher-level wrapping
+that provides for better scripting and interaction with Mechanical. For information
+on advanced methods for interacting with Mechanical, see Examples .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/user_guide_session/mechanical.html b/version/0.10/user_guide_session/mechanical.html
new file mode 100644
index 000000000..84c7c8ed3
--- /dev/null
+++ b/version/0.10/user_guide_session/mechanical.html
@@ -0,0 +1,724 @@
+
+
+
+
+
+
+
+
+
+
+ PyMechanical usage — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+PyMechanical usage
+This page provides an overview of the
+Mechanical
class.
+For more information on this class, see Mechanical .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/user_guide_session/pool.html b/version/0.10/user_guide_session/pool.html
new file mode 100644
index 000000000..a0da22094
--- /dev/null
+++ b/version/0.10/user_guide_session/pool.html
@@ -0,0 +1,806 @@
+
+
+
+
+
+
+
+
+
+
+ Create a pool of Mechanical servers — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Create a pool of Mechanical servers
+The LocalMechanicalPool
+class simplifies creating and connecting to multiple servers of the
+Mechanical
class for batch
+processing. You can use this class for batch processing a set of input files or
+other batch-related processes.
+This code shows how to create a pool with 10 instances:
+>>> from ansys.mechanical.core import LocalMechanicalPool
+>>> pool = LocalMechanicalPool ( 10 , version = "231" )
+'Mechanical Pool with 10 active instances'
+
+
+When you are creating a pool, you can supply additional keyword arguments.
+For example, to restart failed instances, you can set restart_failed=True
:
+>>> import os
+>>> my_path = os . getcmd ()
+>>> pool = LocalMechanicalPool ( 10 , version = "231" , restart_failed = True )
+Creating Pool: 100%|########| 10/10 [00:01<00:00, 1.43it/s]
+
+
+You can access each individual instance of Mechanical with this code:
+>>> pool [ 0 ]
+<ansys.mechanical.core.mechanical.Mechanical at 0x7fabf0230d90>
+
+
+Because this is a self-healing pool , if an instance of Mechanical stops
+during a batch process, this instance is automatically restarted. When creating
+the pool, you can disable this behavior by setting restart_failed=False
.
+
+
+Run a user-defined function
+While the previous example uses the run_batch()
+method to run a set of inputs files, you can also use the
+map()
method to run a custom user-defined function on
+each instance of Mechanical over a set of input files.
+>>> completed_indices = []
+>>> def func ( mechanical , input_file , index ):
+... # input_file, index = args
+... mechanical . clear ()
+... output = mechanical . run_python_script_from_file ( input_file )
+... completed_indices . append ( index )
+... return output
+...
+>>> inputs = [( "test {index} .py" , i ) for i in range ( 1 , 10 )]
+>>> output = pool . map ( func , inputs , progress_bar = True , wait = True )
+['result1',
+ 'result2',
+ 'result3',
+ 'result4',
+ 'result5',
+ 'result6',
+ 'result7',
+ 'result8',
+ 'result9']
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.10/user_guide_session/server-launcher.html b/version/0.10/user_guide_session/server-launcher.html
new file mode 100644
index 000000000..8d718f404
--- /dev/null
+++ b/version/0.10/user_guide_session/server-launcher.html
@@ -0,0 +1,795 @@
+
+
+
+
+
+
+
+
+
+
+ Initial setup for launching a Mechanical session on the local machine — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PyAnsys
+
+
+
+
+
+
+
+
+
+ Remote sessions
+
+
+ Initial setup for launching a Mechanical session on the local machine
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Initial setup for launching a Mechanical session on the local machine
+To run, PyMechanical must know the location of your Mechanical installation.
+Most of the time, PyMechanical can determine this location automatically. However,
+if you have a non-standard installation, you must provide this location.
+To test and set up your installation of PyMechanical, run the
+launch_mechanical()
+method:
+from ansys.mechanical.core import launch_mechanical
+
+mechanical = launch_mechanical ()
+
+
+The first time that you run this method, PyMechanical attempts to detect the location
+of your Mechanical installation based on environment variables. If it cannot find
+a Mechanical installation, PyMechanical asks you to supply the location of the
+Mechanical executable file.
+On Linux
+Enter location of Mechanical executable : / usr / ansys_inc / v231 / aisol /. workbench
+
+
+On Windows
+Enter location of Mechanical executable : C : / Program Files / ANSYS Inc / v231 / aisol / bin / winx64 / AnsysWBU . exe
+
+
+The settings file for Mechanical is stored locally. You do not need to enter
+the path again. If you must change the path, perhaps to change the default
+version of Mechanical, run the following:
+from ansys.mechanical import core as pymechanical
+
+new_path = "C:/Program Files/ANSYS Inc/v231/aisol/bin/winx64/AnsysWBU.exe"
+pymechanical . change_default_mechanical_path ( new_path )
+
+
+For more information, see the change_default_mechanical_path()
+and find_mechanical()
methods.
+Additionally, you can use the exec_file
keyword argument to specify the location of the
+Mechanical executable file.
+On Linux
+from ansys.mechanical.core import launch_mechanical
+
+mechanical = launch_mechanical ( exec_file = "/usr/ansys_inc/v231/aisol/.workbench" )
+
+
+On Windows
+from ansys.mechanical.core import launch_mechanical
+
+mechanical = launch_mechanical (
+ exec_file = "C: \\ Program File \\ ANSYS Inc \\ v231 \\ aisol \\ bin \\ winx64 \\ AnsysWBU.exe"
+)
+
+
+You can use the additional_switches
keyword argument to specify additional arguments.
+from ansys.mechanical.core import launch_mechanical
+
+custom_exec = "/usr/ansys_inc/v231/aisol/.workbench"
+add_switch = f "-featureflags mechanical.material.import;"
+mechanical = launch_mechanical ( additional_switches = add_switch )
+
+
+
+API reference
+For more information on controlling how Mechanical launches locally, see the
+launch_mechanical()
method.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.11/.buildinfo b/version/0.11/.buildinfo
new file mode 100644
index 000000000..b7eb5480f
--- /dev/null
+++ b/version/0.11/.buildinfo
@@ -0,0 +1,4 @@
+# Sphinx build info version 1
+# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
+config: 392d8a88e6f5229c95988c1b8f0e2e80
+tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/version/0.11/404.html b/version/0.11/404.html
new file mode 100644
index 000000000..a9f0ab37a
--- /dev/null
+++ b/version/0.11/404.html
@@ -0,0 +1,718 @@
+
+
+
+
+
+
+
+
+
+
+ Oops — PyMechanical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
+ Back to top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Oops
+This is unexpected.
+The page you are requesting does not exist.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version/0.11/_downloads/646eadd3fb184729eb1e25eb7d637a0d/embedding_remote.py b/version/0.11/_downloads/646eadd3fb184729eb1e25eb7d637a0d/embedding_remote.py
new file mode 100644
index 000000000..c061151fd
--- /dev/null
+++ b/version/0.11/_downloads/646eadd3fb184729eb1e25eb7d637a0d/embedding_remote.py
@@ -0,0 +1,304 @@
+# Copyright (C) 2022 - 2024 ANSYS, Inc. and/or its affiliates.
+# SPDX-License-Identifier: MIT
+#
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+""" .. _ref_embedding_remote:
+
+Remote & Embedding Example
+--------------------------
+This code, which uses the same example, first demonstrates how to use
+a remote session and then demonstrates how to use an embedding instance.
+
+"""
+
+###############################################################################
+# --------------
+# Remote Session
+# --------------
+
+
+###############################################################################
+# Download required files
+# ~~~~~~~~~~~~~~~~~~~~~~~
+# Download the required files. Print the file paths for the geometry file and
+# script file.
+
+import os
+
+from ansys.mechanical.core import launch_mechanical
+from ansys.mechanical.core.examples import download_file
+
+geometry_path = download_file("Valve.pmdb", "pymechanical", "embedding")
+print(f"Downloaded the geometry file to: {geometry_path}")
+
+script_file_path = download_file("remote_script.py", "pymechanical", "embedding")
+print(f"Downloaded the script file to: {script_file_path}")
+
+
+###############################################################################
+#
+# Launch Mechanical
+# ~~~~~~~~~~~~~~~~~
+# Launch a new Mechanical session in batch, setting ``cleanup_on_exit`` to
+# ``False``. To close this Mechanical session when finished, this example
+# must call the ``mechanical.exit()`` method.
+
+import os
+
+from ansys.mechanical.core import launch_mechanical
+
+# Launch mechanical
+mechanical = launch_mechanical(batch=True, loglevel="DEBUG")
+print(mechanical)
+
+
+###############################################################################
+# Initialize variable for workflow
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+# Set the ``part_file_path`` variable on the server for later use.
+# Make this variable compatible for Windows, Linux, and Docker containers.
+
+project_directory = mechanical.project_directory
+print(f"project directory = {project_directory}")
+
+# Upload the file to the project directory.
+mechanical.upload(file_name=geometry_path, file_location_destination=project_directory)
+
+# Build the path relative to project directory.
+base_name = os.path.basename(geometry_path)
+combined_path = os.path.join(project_directory, base_name)
+part_file_path = combined_path.replace("\\", "\\\\")
+mechanical.run_python_script(f"part_file_path='{part_file_path}'")
+
+# Verify the path
+result = mechanical.run_python_script("part_file_path")
+print(f"part_file_path on server: {result}")
+
+
+###############################################################################
+# Run mechanical automation script
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+# Run remote_script.py in the mechanical remote session.
+
+mechanical.run_python_script_from_file(script_file_path)
+
+
+###############################################################################
+# Get list of generated files
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+list_files = mechanical.list_files()
+for file in list_files:
+ print(file)
+
+
+###############################################################################
+# Write the file contents to console
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+def write_file_contents_to_console(path, number_lines=-1):
+ count = 1
+ with open(path, "rt") as file:
+ for line in file:
+ if number_lines == -1 or count <= number_lines:
+ print(line, end="")
+ count = count + 1
+ else:
+ break
+
+
+###############################################################################
+# Download files back to local working directory
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+dest_dir = "download"
+dest_dir = os.path.join(os.getcwd(), dest_dir)
+for file in list_files:
+ downloaded = mechanical.download(file, target_dir=dest_dir)
+ if file.endswith(".out"):
+ print("contents of ", downloaded, " : ")
+ write_file_contents_to_console(downloaded[0], number_lines=-1)
+
+
+###############################################################################
+# Exit remote session
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+# Close the Mechanical instance.
+
+mechanical.exit()
+
+###############################################################################
+# -----------------
+# Embedded Instance
+# -----------------
+
+
+###############################################################################
+# Download the geometry file
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~
+# Download Valve.pmdb.
+
+import os
+
+import ansys.mechanical.core as mech
+from ansys.mechanical.core.examples import download_file
+
+geometry_path = download_file("Valve.pmdb", "pymechanical", "embedding")
+print(f"Downloaded the geometry file to: {geometry_path}")
+
+
+###############################################################################
+# Embed Mechanical and set global variables
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+# Find the mechanical installation path & version.
+# Open an embedded instance of Mechanical and set global variables.
+
+app = mech.App()
+app.update_globals(globals())
+print(app)
+
+
+###############################################################################
+# Add Static Analysis
+# ~~~~~~~~~~~~~~~~~~~
+# Add static analysis to the Model.
+
+analysis = Model.AddStaticStructuralAnalysis()
+
+
+###############################################################################
+# Import geometry
+# ~~~~~~~~~~~~~~~
+
+geometry_file = geometry_path
+geometry_import = Model.GeometryImportGroup.AddGeometryImport()
+geometry_import_format = Ansys.Mechanical.DataModel.Enums.GeometryImportPreference.Format.Automatic
+geometry_import_preferences = Ansys.ACT.Mechanical.Utilities.GeometryImportPreferences()
+geometry_import_preferences.ProcessNamedSelections = True
+geometry_import.Import(geometry_file, geometry_import_format, geometry_import_preferences)
+
+
+###############################################################################
+# Assign material
+# ~~~~~~~~~~~~~~~
+
+matAssignment = Model.Materials.AddMaterialAssignment()
+tempSel = ExtAPI.SelectionManager.CreateSelectionInfo(
+ Ansys.ACT.Interfaces.Common.SelectionTypeEnum.GeometryEntities
+)
+bodies = [
+ body
+ for body in ExtAPI.DataModel.Project.Model.Geometry.GetChildren(
+ Ansys.Mechanical.DataModel.Enums.DataModelObjectCategory.Body, True
+ )
+]
+geobodies = [body.GetGeoBody() for body in bodies]
+ids = System.Collections.Generic.List[System.Int32]()
+[ids.Add(item.Id) for item in geobodies]
+tempSel.Ids = ids
+matAssignment.Location = tempSel
+matAssignment.Material = "Structural Steel"
+
+
+###############################################################################
+# Define mesh settings
+# ~~~~~~~~~~~~~~~~~~~~
+
+mesh = Model.Mesh
+mesh.ElementSize = Quantity("25 [mm]")
+mesh.GenerateMesh()
+
+
+###############################################################################
+# Define boundary conditions
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+fixedSupport = analysis.AddFixedSupport()
+fixedSupport.Location = ExtAPI.DataModel.GetObjectsByName("NSFixedSupportFaces")[0]
+
+frictionlessSupport = analysis.AddFrictionlessSupport()
+frictionlessSupport.Location = ExtAPI.DataModel.GetObjectsByName("NSFrictionlessSupportFaces")[0]
+
+pressure = analysis.AddPressure()
+pressure.Location = ExtAPI.DataModel.GetObjectsByName("NSInsideFaces")[0]
+
+inputs_quantities = [Quantity("0 [s]"), Quantity("1 [s]")]
+output_quantities = [Quantity("0 [Pa]"), Quantity("15 [MPa]")]
+
+inputs_quantities_2 = System.Collections.Generic.List[Ansys.Core.Units.Quantity]()
+[inputs_quantities_2.Add(item) for item in inputs_quantities]
+
+output_quantities_2 = System.Collections.Generic.List[Ansys.Core.Units.Quantity]()
+[output_quantities_2.Add(item) for item in output_quantities]
+
+pressure.Magnitude.Inputs[0].DiscreteValues = inputs_quantities_2
+pressure.Magnitude.Output.DiscreteValues = output_quantities_2
+
+
+###############################################################################
+# Solve model
+# ~~~~~~~~~~~
+
+Model.Solve()
+
+
+###############################################################################
+# Add results
+# ~~~~~~~~~~~
+
+solution = analysis.Solution
+solution.AddTotalDeformation()
+solution.AddEquivalentStress()
+solution.EvaluateAllResults()
+
+
+###############################################################################
+# Save model
+# ~~~~~~~~~~
+
+project_directory = ExtAPI.DataModel.Project.ProjectDirectory
+print(f"project directory = {project_directory}")
+ExtAPI.DataModel.Project.SaveAs(os.path.join(project_directory, "file.mechdb"))
+
+
+###############################################################################
+# Export result values to a text file
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+fileExtension = r".txt"
+results = solution.GetChildren(
+ Ansys.Mechanical.DataModel.Enums.DataModelObjectCategory.Result, True
+)
+
+for result in results:
+ fileName = str(result.Name)
+ print(f"filename: {fileName}")
+ path = os.path.join(project_directory, fileName + fileExtension)
+ print(path)
+ result.ExportToTextFile(f"{path}")
+ print("Exported Text file Contents", path)
+ try:
+ write_file_contents_to_console(path, number_lines=20)
+ except:
+ print(os.listdir(project_directory))
+
+app.close()
diff --git a/version/0.11/_downloads/d2350e83994ba02bf011ae925124c802/embedding_remote.ipynb b/version/0.11/_downloads/d2350e83994ba02bf011ae925124c802/embedding_remote.ipynb
new file mode 100644
index 000000000..5caf8a481
--- /dev/null
+++ b/version/0.11/_downloads/d2350e83994ba02bf011ae925124c802/embedding_remote.ipynb
@@ -0,0 +1,388 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Remote & Embedding Example {#ref_embedding_remote}\n==========================\n\nThis code, which uses the same example, first demonstrates how to use a\nremote session and then demonstrates how to use an embedding instance.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Remote Session\n==============\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Download required files\n=======================\n\nDownload the required files. Print the file paths for the geometry file\nand script file.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "import os\n\nfrom ansys.mechanical.core import launch_mechanical\nfrom ansys.mechanical.core.examples import download_file\n\ngeometry_path = download_file(\"Valve.pmdb\", \"pymechanical\", \"embedding\")\nprint(f\"Downloaded the geometry file to: {geometry_path}\")\n\nscript_file_path = download_file(\"remote_script.py\", \"pymechanical\", \"embedding\")\nprint(f\"Downloaded the script file to: {script_file_path}\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Launch Mechanical\n=================\n\nLaunch a new Mechanical session in batch, setting `cleanup_on_exit` to\n`False`. To close this Mechanical session when finished, this example\nmust call the `mechanical.exit()` method.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "import os\n\nfrom ansys.mechanical.core import launch_mechanical\n\n# Launch mechanical\nmechanical = launch_mechanical(batch=True, loglevel=\"DEBUG\")\nprint(mechanical)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Initialize variable for workflow\n================================\n\nSet the `part_file_path` variable on the server for later use. Make this\nvariable compatible for Windows, Linux, and Docker containers.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "project_directory = mechanical.project_directory\nprint(f\"project directory = {project_directory}\")\n\n# Upload the file to the project directory.\nmechanical.upload(file_name=geometry_path, file_location_destination=project_directory)\n\n# Build the path relative to project directory.\nbase_name = os.path.basename(geometry_path)\ncombined_path = os.path.join(project_directory, base_name)\npart_file_path = combined_path.replace(\"\\\\\", \"\\\\\\\\\")\nmechanical.run_python_script(f\"part_file_path='{part_file_path}'\")\n\n# Verify the path\nresult = mechanical.run_python_script(\"part_file_path\")\nprint(f\"part_file_path on server: {result}\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Run mechanical automation script\n================================\n\nRun remote\\_script.py in the mechanical remote session.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "mechanical.run_python_script_from_file(script_file_path)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Get list of generated files\n===========================\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "list_files = mechanical.list_files()\nfor file in list_files:\n print(file)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Write the file contents to console\n==================================\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "def write_file_contents_to_console(path, number_lines=-1):\n count = 1\n with open(path, \"rt\") as file:\n for line in file:\n if number_lines == -1 or count <= number_lines:\n print(line, end=\"\")\n count = count + 1\n else:\n break"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Download files back to local working directory\n==============================================\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "dest_dir = \"download\"\ndest_dir = os.path.join(os.getcwd(), dest_dir)\nfor file in list_files:\n downloaded = mechanical.download(file, target_dir=dest_dir)\n if file.endswith(\".out\"):\n print(\"contents of \", downloaded, \" : \")\n write_file_contents_to_console(downloaded[0], number_lines=-1)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Exit remote session\n===================\n\nClose the Mechanical instance.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "mechanical.exit()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Embedded Instance\n=================\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Download the geometry file\n==========================\n\nDownload Valve.pmdb.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "import os\n\nimport ansys.mechanical.core as mech\nfrom ansys.mechanical.core.examples import download_file\n\ngeometry_path = download_file(\"Valve.pmdb\", \"pymechanical\", \"embedding\")\nprint(f\"Downloaded the geometry file to: {geometry_path}\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Embed Mechanical and set global variables\n=========================================\n\nFind the mechanical installation path & version. Open an embedded\ninstance of Mechanical and set global variables.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "app = mech.App()\napp.update_globals(globals())\nprint(app)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Add Static Analysis\n===================\n\nAdd static analysis to the Model.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "analysis = Model.AddStaticStructuralAnalysis()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Import geometry\n===============\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "geometry_file = geometry_path\ngeometry_import = Model.GeometryImportGroup.AddGeometryImport()\ngeometry_import_format = Ansys.Mechanical.DataModel.Enums.GeometryImportPreference.Format.Automatic\ngeometry_import_preferences = Ansys.ACT.Mechanical.Utilities.GeometryImportPreferences()\ngeometry_import_preferences.ProcessNamedSelections = True\ngeometry_import.Import(geometry_file, geometry_import_format, geometry_import_preferences)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Assign material\n===============\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "matAssignment = Model.Materials.AddMaterialAssignment()\ntempSel = ExtAPI.SelectionManager.CreateSelectionInfo(\n Ansys.ACT.Interfaces.Common.SelectionTypeEnum.GeometryEntities\n)\nbodies = [\n body\n for body in ExtAPI.DataModel.Project.Model.Geometry.GetChildren(\n Ansys.Mechanical.DataModel.Enums.DataModelObjectCategory.Body, True\n )\n]\ngeobodies = [body.GetGeoBody() for body in bodies]\nids = System.Collections.Generic.List[System.Int32]()\n[ids.Add(item.Id) for item in geobodies]\ntempSel.Ids = ids\nmatAssignment.Location = tempSel\nmatAssignment.Material = \"Structural Steel\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Define mesh settings\n====================\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "mesh = Model.Mesh\nmesh.ElementSize = Quantity(\"25 [mm]\")\nmesh.GenerateMesh()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Define boundary conditions\n==========================\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "fixedSupport = analysis.AddFixedSupport()\nfixedSupport.Location = ExtAPI.DataModel.GetObjectsByName(\"NSFixedSupportFaces\")[0]\n\nfrictionlessSupport = analysis.AddFrictionlessSupport()\nfrictionlessSupport.Location = ExtAPI.DataModel.GetObjectsByName(\"NSFrictionlessSupportFaces\")[0]\n\npressure = analysis.AddPressure()\npressure.Location = ExtAPI.DataModel.GetObjectsByName(\"NSInsideFaces\")[0]\n\ninputs_quantities = [Quantity(\"0 [s]\"), Quantity(\"1 [s]\")]\noutput_quantities = [Quantity(\"0 [Pa]\"), Quantity(\"15 [MPa]\")]\n\ninputs_quantities_2 = System.Collections.Generic.List[Ansys.Core.Units.Quantity]()\n[inputs_quantities_2.Add(item) for item in inputs_quantities]\n\noutput_quantities_2 = System.Collections.Generic.List[Ansys.Core.Units.Quantity]()\n[output_quantities_2.Add(item) for item in output_quantities]\n\npressure.Magnitude.Inputs[0].DiscreteValues = inputs_quantities_2\npressure.Magnitude.Output.DiscreteValues = output_quantities_2"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Solve model\n===========\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "Model.Solve()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Add results\n===========\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "solution = analysis.Solution\nsolution.AddTotalDeformation()\nsolution.AddEquivalentStress()\nsolution.EvaluateAllResults()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Save model\n==========\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "project_directory = ExtAPI.DataModel.Project.ProjectDirectory\nprint(f\"project directory = {project_directory}\")\nExtAPI.DataModel.Project.SaveAs(os.path.join(project_directory, \"file.mechdb\"))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Export result values to a text file\n===================================\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "fileExtension = r\".txt\"\nresults = solution.GetChildren(\n Ansys.Mechanical.DataModel.Enums.DataModelObjectCategory.Result, True\n)\n\nfor result in results:\n fileName = str(result.Name)\n print(f\"filename: {fileName}\")\n path = os.path.join(project_directory, fileName + fileExtension)\n print(path)\n result.ExportToTextFile(f\"{path}\")\n print(\"Exported Text file Contents\", path)\n try:\n write_file_contents_to_console(path, number_lines=20)\n except:\n print(os.listdir(project_directory))\n\napp.close()"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.10.14"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
\ No newline at end of file
diff --git a/version/0.11/_images/gmech_scripting_recording.gif b/version/0.11/_images/gmech_scripting_recording.gif
new file mode 100644
index 000000000..225a7ba87
Binary files /dev/null and b/version/0.11/_images/gmech_scripting_recording.gif differ
diff --git a/version/0.11/_images/pymechanical-logo-dark.png b/version/0.11/_images/pymechanical-logo-dark.png
new file mode 100644
index 000000000..f650076ab
Binary files /dev/null and b/version/0.11/_images/pymechanical-logo-dark.png differ
diff --git a/version/0.11/_images/pymechanical-logo-light.png b/version/0.11/_images/pymechanical-logo-light.png
new file mode 100644
index 000000000..8b0f9a776
Binary files /dev/null and b/version/0.11/_images/pymechanical-logo-light.png differ
diff --git a/version/0.11/_images/sphx_glr_embedding_remote_thumb.png b/version/0.11/_images/sphx_glr_embedding_remote_thumb.png
new file mode 100644
index 000000000..19cbde5a2
Binary files /dev/null and b/version/0.11/_images/sphx_glr_embedding_remote_thumb.png differ
diff --git a/version/0.11/_images/unified_install_2023R1.jpg b/version/0.11/_images/unified_install_2023R1.jpg
new file mode 100644
index 000000000..d4027c5fb
Binary files /dev/null and b/version/0.11/_images/unified_install_2023R1.jpg differ
diff --git a/version/0.11/_sources/404.rst.txt b/version/0.11/_sources/404.rst.txt
new file mode 100644
index 000000000..8af3b0c8b
--- /dev/null
+++ b/version/0.11/_sources/404.rst.txt
@@ -0,0 +1,8 @@
+:orphan:
+
+Oops
+====
+
+This is unexpected.
+
+The page you are requesting does not exist.
\ No newline at end of file
diff --git a/version/0.11/_sources/api/_autosummary/ansys.tools.path.change_default_mechanical_path.rst.txt b/version/0.11/_sources/api/_autosummary/ansys.tools.path.change_default_mechanical_path.rst.txt
new file mode 100644
index 000000000..3db4f18a5
--- /dev/null
+++ b/version/0.11/_sources/api/_autosummary/ansys.tools.path.change_default_mechanical_path.rst.txt
@@ -0,0 +1,6 @@
+change\_default\_mechanical\_path
+=================================
+
+.. currentmodule:: ansys.tools.path
+
+.. autofunction:: change_default_mechanical_path
\ No newline at end of file
diff --git a/version/0.11/_sources/api/_autosummary/ansys.tools.path.find_mechanical.rst.txt b/version/0.11/_sources/api/_autosummary/ansys.tools.path.find_mechanical.rst.txt
new file mode 100644
index 000000000..35dbeea5a
--- /dev/null
+++ b/version/0.11/_sources/api/_autosummary/ansys.tools.path.find_mechanical.rst.txt
@@ -0,0 +1,6 @@
+find\_mechanical
+================
+
+.. currentmodule:: ansys.tools.path
+
+.. autofunction:: find_mechanical
\ No newline at end of file
diff --git a/version/0.11/_sources/api/_autosummary/ansys.tools.path.get_mechanical_path.rst.txt b/version/0.11/_sources/api/_autosummary/ansys.tools.path.get_mechanical_path.rst.txt
new file mode 100644
index 000000000..78036d434
--- /dev/null
+++ b/version/0.11/_sources/api/_autosummary/ansys.tools.path.get_mechanical_path.rst.txt
@@ -0,0 +1,6 @@
+get\_mechanical\_path
+=====================
+
+.. currentmodule:: ansys.tools.path
+
+.. autofunction:: get_mechanical_path
\ No newline at end of file
diff --git a/version/0.11/_sources/api/_autosummary/ansys.tools.path.save_mechanical_path.rst.txt b/version/0.11/_sources/api/_autosummary/ansys.tools.path.save_mechanical_path.rst.txt
new file mode 100644
index 000000000..6281f3a9f
--- /dev/null
+++ b/version/0.11/_sources/api/_autosummary/ansys.tools.path.save_mechanical_path.rst.txt
@@ -0,0 +1,6 @@
+save\_mechanical\_path
+======================
+
+.. currentmodule:: ansys.tools.path
+
+.. autofunction:: save_mechanical_path
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/embedding/addins/AddinConfiguration.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/embedding/addins/AddinConfiguration.rst.txt
new file mode 100644
index 000000000..1e54f0dc9
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/embedding/addins/AddinConfiguration.rst.txt
@@ -0,0 +1,121 @@
+.. vale off
+
+
+
+:class:`AddinConfiguration`
+===========================
+
+.. py:class:: ansys.mechanical.core.embedding.addins.AddinConfiguration(addin_configuration: str = 'Mechanical', **kwargs)
+
+
+ Configuration class for Mechanical.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+.. py:currentmodule:: AddinConfiguration
+
+Overview
+--------
+
+.. tab-set::
+
+
+
+
+ .. tab-item:: Properties
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+ * - :py:attr:`~no_act_addins`
+ - Property to disable all ACT Addins.
+ * - :py:attr:`~addin_configuration`
+ - WB1 Addin configuration name.
+
+
+
+
+
+
+
+Import detail
+-------------
+
+ from ansys.mechanical.core.embedding.addins import AddinConfiguration
+
+
+Property detail
+---------------
+.. py:property:: no_act_addins
+ :type: bool
+
+
+ Property to disable all ACT Addins.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:property:: addin_configuration
+ :type: str
+
+
+ WB1 Addin configuration name.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/embedding/addins/index.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/embedding/addins/index.rst.txt
new file mode 100644
index 000000000..2f9e7a77d
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/embedding/addins/index.rst.txt
@@ -0,0 +1,122 @@
+.. vale off
+
+
+
+
+
+
+
+The ``addins.py`` module
+========================
+
+.. py:module:: ansys.mechanical.core.embedding.addins
+
+
+Summary
+-------
+
+
+
+
+
+
+
+
+
+
+.. py:currentmodule:: addins
+.. tab-set::
+
+
+
+
+ .. tab-item:: Classes
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~ansys.mechanical.core.embedding.addins.AddinConfiguration`
+ - Configuration class for Mechanical.
+
+
+
+
+
+ .. tab-item:: Functions
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~configure`
+ - Apply the given configuration.
+
+
+
+
+
+
+
+
+
+.. toctree::
+ :titlesonly:
+ :maxdepth: 1
+ :hidden:
+
+ AddinConfiguration
+
+
+
+
+
+
+
+
+
+Description
+-----------
+
+Configuration system for embedded mechanical.
+
+..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+Module detail
+-------------
+
+.. py:function:: configure(configuration: AddinConfiguration)
+
+
+ Apply the given configuration.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/embedding/app/App.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/embedding/app/App.rst.txt
new file mode 100644
index 000000000..ffbb824eb
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/embedding/app/App.rst.txt
@@ -0,0 +1,627 @@
+.. vale off
+
+
+
+:class:`App`
+============
+
+.. py:class:: ansys.mechanical.core.embedding.app.App(db_file=None, private_appdata=False, **kwargs)
+
+
+ Mechanical embedding Application.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+
+
+.. py:currentmodule:: App
+
+Overview
+--------
+
+.. tab-set::
+
+
+
+ .. tab-item:: Methods
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+ * - :py:attr:`~open`
+ - Open the db file.
+ * - :py:attr:`~save`
+ - Save the project.
+ * - :py:attr:`~save_as`
+ - Save the project as.
+ * - :py:attr:`~new`
+ - Clear to a new application.
+ * - :py:attr:`~close`
+ - Close the active project.
+ * - :py:attr:`~exit`
+ - Exit the application.
+ * - :py:attr:`~execute_script`
+ - Execute the given script with the internal IronPython engine.
+ * - :py:attr:`~plot`
+ - Visualize the model in 3d.
+ * - :py:attr:`~update_globals`
+ - Use to update globals variables.
+ * - :py:attr:`~print_tree`
+ - Print the hierarchical tree representation of the Mechanical project structure.
+
+
+ .. tab-item:: Properties
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+ * - :py:attr:`~poster`
+ - Returns an instance of Poster.
+ * - :py:attr:`~DataModel`
+ - Return the DataModel.
+ * - :py:attr:`~ExtAPI`
+ - Return the ExtAPI object.
+ * - :py:attr:`~Tree`
+ - Return the ExtAPI object.
+ * - :py:attr:`~Model`
+ - Return the ExtAPI object.
+ * - :py:attr:`~readonly`
+ - Return whether the Mechanical object is read-only.
+ * - :py:attr:`~version`
+ - Returns the version of the app.
+
+
+
+
+ .. tab-item:: Special methods
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+ * - :py:attr:`~__repr__`
+ - Get the product info.
+ * - :py:attr:`~__enter__`
+ - Enter the scope.
+ * - :py:attr:`~__exit__`
+ - Exit the scope.
+
+
+
+
+Import detail
+-------------
+
+ from ansys.mechanical.core.embedding.app import App
+
+
+Property detail
+---------------
+.. py:property:: poster
+ :type: ansys.mechanical.core.embedding.poster.Poster
+
+
+ Returns an instance of Poster.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:property:: DataModel
+
+ Return the DataModel.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:property:: ExtAPI
+
+ Return the ExtAPI object.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:property:: Tree
+
+ Return the ExtAPI object.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:property:: Model
+
+ Return the ExtAPI object.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:property:: readonly
+
+ Return whether the Mechanical object is read-only.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:property:: version
+
+ Returns the version of the app.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+
+
+Method detail
+-------------
+.. py:method:: __repr__()
+
+
+ Get the product info.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: __enter__()
+
+
+ Enter the scope.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: __exit__(exc_type, exc_val, exc_tb)
+
+
+ Exit the scope.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: open(db_file)
+
+
+ Open the db file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: save(path=None)
+
+
+ Save the project.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: save_as(path)
+
+
+ Save the project as.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: new()
+
+
+ Clear to a new application.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: close()
+
+
+ Close the active project.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: exit()
+
+
+ Exit the application.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: execute_script(script: str) -> Any
+
+
+ Execute the given script with the internal IronPython engine.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: plot() -> None
+
+
+ Visualize the model in 3d.
+
+ Requires installation using the viz option. E.g.
+ pip install ansys-mechanical-core[viz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: update_globals(globals_dict: Dict[str, Any], enums: bool = True) -> None
+
+
+ Use to update globals variables.
+
+ When scripting inside Mechanical, the Mechanical UI will automatically
+ set global variables in python. PyMechanical can not do that automatically,
+ but this method can be used.
+ `app.update_globals(globals())`
+
+ By default, all enums will be imported too. To avoid including enums, set
+ the `enums` argument to False.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: print_tree(node, max_lines=80, lines_count=0, indentation='')
+
+
+ Print the hierarchical tree representation of the Mechanical project structure.
+
+ Each object in the tree is expected to have the following attributes:
+ - Name: The name of the object.
+ - Suppressed : Print as suppressed, if object is suppressed.
+ - Children: Checks if object have children.
+ Each child node is expected to have the all these attributes.
+
+ :Parameters:
+
+ **node: ExtAPI object**
+ The starting object of the tree.
+
+ **max_lines: int, optional**
+ The maximum number of lines to print. Default is 80. If set to -1, no limit is applied.
+
+
+
+
+
+ :Raises:
+
+ :obj:`AttributeError`
+ If the node does not have the required attributes.
+
+
+
+
+
+
+ .. rubric:: Examples
+
+ >>> import ansys.mechanical.core as mech
+ >>> app = mech.App()
+ >>> app.update_globals(globals())
+ >>> app.print_tree(DataModel.Project)
+ ... ├── Project
+ ... | ├── Model
+ ... | | ├── Geometry Imports
+ ... | | ├── Geometry
+ ... | | ├── Materials
+ ... | | ├── Coordinate Systems
+ ... | | | ├── Global Coordinate System
+ ... | | ├── Remote Points
+ ... | | ├── Mesh
+
+ >>> app.print_tree(DataModel.Project, 1)
+ ... ├── Project
+ ... ... truncating after 1 lines
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/embedding/app/GetterWrapper.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/embedding/app/GetterWrapper.rst.txt
new file mode 100644
index 000000000..0e6597b8e
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/embedding/app/GetterWrapper.rst.txt
@@ -0,0 +1,123 @@
+.. vale off
+
+
+
+:class:`GetterWrapper`
+======================
+
+.. py:class:: ansys.mechanical.core.embedding.app.GetterWrapper(obj, getter)
+
+ Bases: :py:obj:`object`
+
+
+
+ Wrapper class around an attribute of an object.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+
+.. py:currentmodule:: GetterWrapper
+
+Overview
+--------
+
+.. tab-set::
+
+
+
+
+
+
+
+ .. tab-item:: Special methods
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+ * - :py:attr:`~__getattr__`
+ - Wrap getters to the wrapped object.
+ * - :py:attr:`~__setattr__`
+ - Wrap setters to the wrapped object.
+
+
+
+
+Import detail
+-------------
+
+ from ansys.mechanical.core.embedding.app import GetterWrapper
+
+
+
+
+
+Method detail
+-------------
+.. py:method:: __getattr__(attr)
+
+
+ Wrap getters to the wrapped object.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: __setattr__(attr, value)
+
+
+ Wrap setters to the wrapped object.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/embedding/app/index.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/embedding/app/index.rst.txt
new file mode 100644
index 000000000..fc16cbbee
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/embedding/app/index.rst.txt
@@ -0,0 +1,160 @@
+.. vale off
+
+
+
+
+
+
+
+The ``app.py`` module
+=====================
+
+.. py:module:: ansys.mechanical.core.embedding.app
+
+
+Summary
+-------
+
+
+
+
+
+
+
+
+
+
+
+
+.. py:currentmodule:: app
+.. tab-set::
+
+
+
+
+ .. tab-item:: Classes
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~ansys.mechanical.core.embedding.app.GetterWrapper`
+ - Wrapper class around an attribute of an object.
+
+
+ * - :py:obj:`~ansys.mechanical.core.embedding.app.App`
+ - Mechanical embedding Application.
+
+
+
+
+
+
+
+ .. tab-item:: Constants
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~HAS_PYVISTA`
+ - Whether or not PyVista exists.
+
+
+ * - :py:obj:`~INSTANCES`
+ - List of instances.
+
+
+
+
+
+
+
+.. toctree::
+ :titlesonly:
+ :maxdepth: 1
+ :hidden:
+
+ GetterWrapper
+ App
+
+
+
+
+
+
+
+
+
+Description
+-----------
+
+Main application class for embedded Mechanical.
+
+..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+Module detail
+-------------
+
+.. py:data:: HAS_PYVISTA
+ :value: True
+
+
+
+ Whether or not PyVista exists.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:data:: INSTANCES
+ :value: []
+
+
+
+ List of instances.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/embedding/app_libraries/index.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/embedding/app_libraries/index.rst.txt
new file mode 100644
index 000000000..d7117eabe
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/embedding/app_libraries/index.rst.txt
@@ -0,0 +1,126 @@
+.. vale off
+
+
+
+
+
+
+
+The ``app_libraries.py`` module
+===============================
+
+.. py:module:: ansys.mechanical.core.embedding.app_libraries
+
+
+Summary
+-------
+
+
+
+
+
+
+
+
+.. py:currentmodule:: app_libraries
+.. tab-set::
+
+
+
+
+
+
+
+ .. tab-item:: Functions
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~add_mechanical_python_libraries`
+ - Add the Mechanical libraries path to sys.path.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Description
+-----------
+
+System to add python libraries shipped with mechanical to the path.
+
+Mechanical ships some pure Python modules that can be imported within
+Mechanical's console window. These modules are located in
+
+`/path/to/Ansys Inc/vNnn/Addins/ACT/libraries/Mechanical`
+
+For example, the following files can be found there:
+
+- ansys.py
+- chart.py
+- comhelper.py
+- dialogs.py
+- engineeringdata.py
+- graphics.py
+- materials.py
+- mechanical.py
+- units.py
+- wbjn.py
+
+Some (but not all) of these are usable from within an embedded instance
+of Mechanical in Python.
+
+This module provides a method to add that path to `sys.path` so that they
+can be imported with the `import` statement.
+
+..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+Module detail
+-------------
+
+.. py:function:: add_mechanical_python_libraries(app_or_version)
+
+
+ Add the Mechanical libraries path to sys.path.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/embedding/appdata/UniqueUserProfile.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/embedding/appdata/UniqueUserProfile.rst.txt
new file mode 100644
index 000000000..dd385ebc6
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/embedding/appdata/UniqueUserProfile.rst.txt
@@ -0,0 +1,256 @@
+.. vale off
+
+
+
+:class:`UniqueUserProfile`
+==========================
+
+.. py:class:: ansys.mechanical.core.embedding.appdata.UniqueUserProfile(profile_name: str, dry_run: bool = False)
+
+
+ Create Unique User Profile (for AppData).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+.. py:currentmodule:: UniqueUserProfile
+
+Overview
+--------
+
+.. tab-set::
+
+
+
+ .. tab-item:: Methods
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+ * - :py:attr:`~initialize`
+ - Initialize the new profile location.
+ * - :py:attr:`~cleanup`
+ - Cleanup unique user profile.
+ * - :py:attr:`~update_environment`
+ - Set environment variables for new user profile.
+ * - :py:attr:`~exists`
+ - Check if unique profile name already exists.
+ * - :py:attr:`~mkdirs`
+ - Create a unique user profile & set up the directory tree.
+ * - :py:attr:`~copy_profiles`
+ - Copy current user directories into a new user profile.
+
+
+ .. tab-item:: Properties
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+ * - :py:attr:`~location`
+ - Return the profile name.
+
+
+
+
+
+
+
+Import detail
+-------------
+
+ from ansys.mechanical.core.embedding.appdata import UniqueUserProfile
+
+
+Property detail
+---------------
+.. py:property:: location
+ :type: str
+
+
+ Return the profile name.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+
+
+Method detail
+-------------
+.. py:method:: initialize(copy_profiles=True) -> None
+
+
+ Initialize the new profile location.
+
+ Args:
+ copy_profiles (bool): If False, the copy_profiles method will be skipped.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: cleanup() -> None
+
+
+ Cleanup unique user profile.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: update_environment(env) -> None
+
+
+ Set environment variables for new user profile.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: exists() -> bool
+
+
+ Check if unique profile name already exists.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: mkdirs() -> None
+
+
+ Create a unique user profile & set up the directory tree.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: copy_profiles() -> None
+
+
+ Copy current user directories into a new user profile.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/embedding/appdata/index.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/embedding/appdata/index.rst.txt
new file mode 100644
index 000000000..4950a3264
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/embedding/appdata/index.rst.txt
@@ -0,0 +1,84 @@
+.. vale off
+
+
+
+
+
+
+
+The ``appdata.py`` module
+=========================
+
+.. py:module:: ansys.mechanical.core.embedding.appdata
+
+
+Summary
+-------
+
+
+
+
+
+
+
+
+
+
+.. py:currentmodule:: appdata
+.. tab-set::
+
+
+
+
+ .. tab-item:: Classes
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~ansys.mechanical.core.embedding.appdata.UniqueUserProfile`
+ - Create Unique User Profile (for AppData).
+
+
+
+
+
+
+
+
+
+
+
+
+.. toctree::
+ :titlesonly:
+ :maxdepth: 1
+ :hidden:
+
+ UniqueUserProfile
+
+
+
+
+
+
+
+
+
+Description
+-----------
+
+Temporary Appdata for Ansys Mechanical.
+
+..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/embedding/enum_importer/index.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/embedding/enum_importer/index.rst.txt
new file mode 100644
index 000000000..2bce9cf0c
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/embedding/enum_importer/index.rst.txt
@@ -0,0 +1,53 @@
+.. vale off
+
+
+
+
+
+
+
+The ``enum_importer.py`` module
+===============================
+
+.. py:module:: ansys.mechanical.core.embedding.enum_importer
+
+
+Summary
+-------
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Description
+-----------
+
+Library to import Mechanical enums.
+
+A useful subset of what is imported by
+Ansys Inc/v{NNN}/ACT/apis/Mechanical.py
+
+..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/embedding/imports/Transaction.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/embedding/imports/Transaction.rst.txt
new file mode 100644
index 000000000..532e00241
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/embedding/imports/Transaction.rst.txt
@@ -0,0 +1,120 @@
+.. vale off
+
+
+
+:class:`Transaction`
+====================
+
+.. py:class:: ansys.mechanical.core.embedding.imports.Transaction
+
+
+ A class to speed up bulk user interactions using Ansys ACT Mechanical Transaction.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+
+.. py:currentmodule:: Transaction
+
+Overview
+--------
+
+.. tab-set::
+
+
+
+
+
+
+
+ .. tab-item:: Special methods
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+ * - :py:attr:`~__enter__`
+ - Enter the context of the transaction.
+ * - :py:attr:`~__exit__`
+ - Exit the context of the transaction and disposes of resources.
+
+
+
+
+Import detail
+-------------
+
+ from ansys.mechanical.core.embedding.imports import Transaction
+
+
+
+
+
+Method detail
+-------------
+.. py:method:: __enter__()
+
+
+ Enter the context of the transaction.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: __exit__(exc_type, exc_val, exc_tb)
+
+
+ Exit the context of the transaction and disposes of resources.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/embedding/imports/index.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/embedding/imports/index.rst.txt
new file mode 100644
index 000000000..9644029d5
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/embedding/imports/index.rst.txt
@@ -0,0 +1,181 @@
+.. vale off
+
+
+
+
+
+
+
+The ``imports.py`` module
+=========================
+
+.. py:module:: ansys.mechanical.core.embedding.imports
+
+
+Summary
+-------
+
+
+
+
+
+
+
+
+
+
+.. py:currentmodule:: imports
+.. tab-set::
+
+
+
+
+ .. tab-item:: Classes
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~ansys.mechanical.core.embedding.imports.Transaction`
+ - A class to speed up bulk user interactions using Ansys ACT Mechanical Transaction.
+
+
+
+
+
+ .. tab-item:: Functions
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~global_entry_points`
+ - Return the global entry points of the application.
+
+
+ * - :py:obj:`~global_variables`
+ - Return the Mechanical scripting global variables as a dict.
+
+
+ * - :py:obj:`~get_all_enums`
+ - Get all the enums as a dictionary.
+
+
+
+
+
+
+
+
+
+.. toctree::
+ :titlesonly:
+ :maxdepth: 1
+ :hidden:
+
+ Transaction
+
+
+
+
+
+
+
+
+
+Description
+-----------
+
+Additional imports for embedded Mechanical.
+
+..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+Module detail
+-------------
+
+.. py:function:: global_entry_points(app: ansys.mechanical.core.App) -> Dict
+
+
+ Return the global entry points of the application.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:function:: global_variables(app: ansys.mechanical.core.App, enums: bool = False) -> Dict
+
+
+ Return the Mechanical scripting global variables as a dict.
+
+ It can be used to add all of these as global variables in python
+ with this command:
+ `globals().update(global_variables(embedded_app))`
+
+ To also import all the enums, set the parameter enums to true.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:function:: get_all_enums() -> Dict[str, Any]
+
+
+ Get all the enums as a dictionary.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/embedding/index.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/embedding/index.rst.txt
new file mode 100644
index 000000000..77cc5da9d
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/embedding/index.rst.txt
@@ -0,0 +1,184 @@
+.. vale off
+
+
+
+
+
+
+
+The ``embedding`` package
+=============================
+
+.. py:module:: ansys.mechanical.core.embedding
+
+
+Summary
+-------
+
+
+
+
+
+
+
+
+.. py:currentmodule:: embedding
+.. tab-set::
+
+ .. tab-item:: Subpackages
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~ansys.mechanical.core.embedding.logger`
+ - Embedding logger.
+
+
+ * - :py:obj:`~ansys.mechanical.core.embedding.viz`
+ - Namespace module for embedding visualization.
+
+
+
+ .. tab-item:: Submodules
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~ansys.mechanical.core.embedding.addins`
+ - Configuration system for embedded mechanical.
+
+
+ * - :py:obj:`~ansys.mechanical.core.embedding.app`
+ - Main application class for embedded Mechanical.
+
+
+ * - :py:obj:`~ansys.mechanical.core.embedding.app_libraries`
+ - System to add python libraries shipped with mechanical to the path.
+
+
+ * - :py:obj:`~ansys.mechanical.core.embedding.appdata`
+ - Temporary Appdata for Ansys Mechanical.
+
+
+ * - :py:obj:`~ansys.mechanical.core.embedding.enum_importer`
+ - Library to import Mechanical enums.
+
+
+ * - :py:obj:`~ansys.mechanical.core.embedding.imports`
+ - Additional imports for embedded Mechanical.
+
+
+ * - :py:obj:`~ansys.mechanical.core.embedding.initializer`
+ - Initializer for Mechanical embedding. Sets up paths and resolvers.
+
+
+ * - :py:obj:`~ansys.mechanical.core.embedding.loader`
+ - clr_loader for pymechanical embedding. This loads the CLR on both windows and linux.
+
+
+ * - :py:obj:`~ansys.mechanical.core.embedding.poster`
+ - Use the Poster class to post functions to Mechanical's main thread.
+
+
+ * - :py:obj:`~ansys.mechanical.core.embedding.resolver`
+ - This is the .NET assembly resolving for embedding Ansys Mechanical.
+
+
+ * - :py:obj:`~ansys.mechanical.core.embedding.runtime`
+ - Runtime initialize for pythonnet in embedding.
+
+
+ * - :py:obj:`~ansys.mechanical.core.embedding.shims`
+ - Shims for embedded Mechanical.
+
+
+ * - :py:obj:`~ansys.mechanical.core.embedding.utils`
+ - Miscellaneous utilities.
+
+
+ * - :py:obj:`~ansys.mechanical.core.embedding.warnings`
+ - Hook to register obsolete warnings.
+
+
+
+
+
+
+
+
+
+
+
+.. toctree::
+ :titlesonly:
+ :maxdepth: 1
+ :hidden:
+
+ logger
+ viz
+
+
+.. toctree::
+ :titlesonly:
+ :maxdepth: 1
+ :hidden:
+
+ addins
+ app
+ app_libraries
+ appdata
+ enum_importer
+ imports
+ initializer
+ loader
+ poster
+ resolver
+ runtime
+ shims
+ utils
+ warnings
+
+
+
+
+
+
+
+
+
+
+
+Description
+-----------
+
+
+Imports for the embedding sub-package.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/embedding/initializer/index.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/embedding/initializer/index.rst.txt
new file mode 100644
index 000000000..508c08ad8
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/embedding/initializer/index.rst.txt
@@ -0,0 +1,165 @@
+.. vale off
+
+
+
+
+
+
+
+The ``initializer.py`` module
+=============================
+
+.. py:module:: ansys.mechanical.core.embedding.initializer
+
+
+Summary
+-------
+
+
+
+
+
+
+
+
+.. py:currentmodule:: initializer
+.. tab-set::
+
+
+
+
+
+
+
+ .. tab-item:: Functions
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~initialize`
+ - Initialize Mechanical embedding.
+
+
+
+
+ .. tab-item:: Constants
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~INITIALIZED_VERSION`
+ - Constant for the initialized version.
+
+
+ * - :py:obj:`~SUPPORTED_MECHANICAL_EMBEDDING_VERSIONS_WINDOWS`
+ - Supported Mechanical embedding versions on Windows.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Description
+-----------
+
+Initializer for Mechanical embedding. Sets up paths and resolvers.
+
+..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+Module detail
+-------------
+
+.. py:function:: initialize(version: int = None)
+
+
+ Initialize Mechanical embedding.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:data:: INITIALIZED_VERSION
+ :value: None
+
+
+
+ Constant for the initialized version.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:data:: SUPPORTED_MECHANICAL_EMBEDDING_VERSIONS_WINDOWS
+
+
+ Supported Mechanical embedding versions on Windows.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/embedding/loader/index.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/embedding/loader/index.rst.txt
new file mode 100644
index 000000000..ef96335c6
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/embedding/loader/index.rst.txt
@@ -0,0 +1,102 @@
+.. vale off
+
+
+
+
+
+
+
+The ``loader.py`` module
+========================
+
+.. py:module:: ansys.mechanical.core.embedding.loader
+
+
+Summary
+-------
+
+
+
+
+
+
+
+
+.. py:currentmodule:: loader
+.. tab-set::
+
+
+
+
+
+
+
+ .. tab-item:: Functions
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~load_clr`
+ - Load the clr, the outcome of this function is that `clr` is usable.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Description
+-----------
+
+clr_loader for pymechanical embedding. This loads the CLR on both windows and linux.
+
+..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+Module detail
+-------------
+
+.. py:function:: load_clr(install_loc: str) -> None
+
+
+ Load the clr, the outcome of this function is that `clr` is usable.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/embedding/logger/Configuration.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/embedding/logger/Configuration.rst.txt
new file mode 100644
index 000000000..640bbed59
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/embedding/logger/Configuration.rst.txt
@@ -0,0 +1,254 @@
+.. vale off
+
+
+
+:class:`Configuration`
+======================
+
+.. py:class:: ansys.mechanical.core.embedding.logger.Configuration
+
+
+ Configures logger for Mechanical embedding.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+
+
+.. py:currentmodule:: Configuration
+
+Overview
+--------
+
+.. tab-set::
+
+
+ .. tab-item:: Constructors
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+ * - :py:attr:`~configure`
+ - Configure the logger for PyMechanical embedding.
+ * - :py:attr:`~set_log_to_stdout`
+ - Configure logging to write to the standard output.
+ * - :py:attr:`~set_log_to_file`
+ - Configure logging to write to a file.
+ * - :py:attr:`~set_log_level`
+ - Set the log level for all configured sinks.
+ * - :py:attr:`~set_log_directory`
+ - Configure logging to write to a directory.
+ * - :py:attr:`~set_log_base_directory`
+ - Configure logging to write in a time-stamped subfolder in this directory.
+
+
+
+
+
+
+
+
+
+Import detail
+-------------
+
+ from ansys.mechanical.core.embedding.logger import Configuration
+
+
+
+
+
+Method detail
+-------------
+.. py:method:: configure(level=logging.WARNING, directory=None, base_directory=None, to_stdout=True)
+ :classmethod:
+
+
+
+ Configure the logger for PyMechanical embedding.
+
+
+ :Parameters:
+
+ **level** : :class:`python:int`, :obj:`optional`
+ Level of logging that is defined in the ``logging`` package. The default is 'DEBUG'.
+ Options are ``"DEBUG"``, ``"INFO"``, ``"WARNING"``, and ``"ERROR"``.
+
+ **directory** : :class:`python:str`, :obj:`optional`
+ Directory to write log file to. The default is ``None``, but by default the log
+ will appear somewhere in the system temp folder.
+
+ **base_directory: str, optional**
+ Base directory to write log files to. Each instance of Mechanical will write its
+ log to a time-stamped subfolder within this directory. This is only possible to set
+ before Mechanical is initialized.
+
+ **to_stdout** : :ref:`bool `, :obj:`optional`
+ Whether to write log messages to the standard output, which is the
+ command line. The default is ``True``.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: set_log_to_stdout(value: bool) -> None
+ :classmethod:
+
+
+
+ Configure logging to write to the standard output.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: set_log_to_file(value: bool) -> None
+ :classmethod:
+
+
+
+ Configure logging to write to a file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: set_log_level(level: int) -> None
+ :classmethod:
+
+
+
+ Set the log level for all configured sinks.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: set_log_directory(value: str) -> None
+ :classmethod:
+
+
+
+ Configure logging to write to a directory.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: set_log_base_directory(directory: str) -> None
+ :classmethod:
+
+
+
+ Configure logging to write in a time-stamped subfolder in this directory.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/embedding/logger/Logger.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/embedding/logger/Logger.rst.txt
new file mode 100644
index 000000000..d8272e2f1
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/embedding/logger/Logger.rst.txt
@@ -0,0 +1,264 @@
+.. vale off
+
+
+
+:class:`Logger`
+===============
+
+.. py:class:: ansys.mechanical.core.embedding.logger.Logger
+
+
+ Provides the ``Logger`` class for embedding.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+
+
+
+.. py:currentmodule:: Logger
+
+Overview
+--------
+
+.. tab-set::
+
+
+ .. tab-item:: Constructors
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+ * - :py:attr:`~flush`
+ - Flush the log.
+ * - :py:attr:`~can_log_message`
+ - Get whether a message at this level is logged.
+ * - :py:attr:`~debug`
+ - Write a debug message to the log.
+ * - :py:attr:`~error`
+ - Write a error message to the log.
+ * - :py:attr:`~info`
+ - Write an info message to the log.
+ * - :py:attr:`~warning`
+ - Write a warning message to the log.
+ * - :py:attr:`~fatal`
+ - Write a fatal message to the log.
+
+
+
+
+
+
+
+
+
+Import detail
+-------------
+
+ from ansys.mechanical.core.embedding.logger import Logger
+
+
+
+
+
+Method detail
+-------------
+.. py:method:: flush()
+ :classmethod:
+
+
+
+ Flush the log.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: can_log_message(level: int) -> bool
+ :classmethod:
+
+
+
+ Get whether a message at this level is logged.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: debug(msg: str)
+ :classmethod:
+
+
+
+ Write a debug message to the log.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: error(msg: str)
+ :classmethod:
+
+
+
+ Write a error message to the log.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: info(msg: str)
+ :classmethod:
+
+
+
+ Write an info message to the log.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: warning(msg: str)
+ :classmethod:
+
+
+
+ Write a warning message to the log.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: fatal(msg: str)
+ :classmethod:
+
+
+
+ Write a fatal message to the log.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/embedding/logger/environ/EnvironBackend.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/embedding/logger/environ/EnvironBackend.rst.txt
new file mode 100644
index 000000000..cd2f8e6a2
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/embedding/logger/environ/EnvironBackend.rst.txt
@@ -0,0 +1,296 @@
+.. vale off
+
+
+
+:class:`EnvironBackend`
+=======================
+
+.. py:class:: ansys.mechanical.core.embedding.logger.environ.EnvironBackend
+
+
+ Provides the environment variable backend for Mechanical logging.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+.. py:currentmodule:: EnvironBackend
+
+Overview
+--------
+
+.. tab-set::
+
+
+
+ .. tab-item:: Methods
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+ * - :py:attr:`~flush`
+ - Flush the log.
+ * - :py:attr:`~enable`
+ - Enable the given sink.
+ * - :py:attr:`~disable`
+ - Disable the log level for this sink.
+ * - :py:attr:`~set_log_level`
+ - Set the log level for this sink based on the Python log level.
+ * - :py:attr:`~set_auto_flush`
+ - Set whether to auto flush to the standard log file.
+ * - :py:attr:`~set_directory`
+ - Set the location to write the log file to.
+ * - :py:attr:`~set_base_directory`
+ - Set the base location to write the log file to.
+ * - :py:attr:`~can_log_message`
+ - Return whether a message with the given severity is outputted to the log.
+ * - :py:attr:`~log_message`
+ - Log the message to the configured logging mechanism.
+
+
+
+
+
+
+
+
+Import detail
+-------------
+
+ from ansys.mechanical.core.embedding.logger.environ import EnvironBackend
+
+
+
+
+
+Method detail
+-------------
+.. py:method:: flush()
+
+
+ Flush the log.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: enable(sink: int = sinks.StandardSinks.CONSOLE)
+
+
+ Enable the given sink.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: disable(sink: int = sinks.StandardSinks.CONSOLE)
+
+
+ Disable the log level for this sink.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: set_log_level(level: int, sink: int = sinks.StandardSinks.CONSOLE)
+
+
+ Set the log level for this sink based on the Python log level.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: set_auto_flush(flush: bool) -> None
+
+
+ Set whether to auto flush to the standard log file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: set_directory(directory: str) -> None
+
+
+ Set the location to write the log file to.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: set_base_directory(base_directory: str) -> None
+
+
+ Set the base location to write the log file to.
+
+ The base directory contains time-stamped subfolders where the log file
+ is actually written to. If a base directory is set, it takes precedence over the
+ ``set_directory`` location.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: can_log_message(level: int) -> bool
+
+
+ Return whether a message with the given severity is outputted to the log.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: log_message(level: int, context: str, message: str) -> None
+
+
+ Log the message to the configured logging mechanism.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/embedding/logger/environ/index.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/embedding/logger/environ/index.rst.txt
new file mode 100644
index 000000000..d2e842575
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/embedding/logger/environ/index.rst.txt
@@ -0,0 +1,84 @@
+.. vale off
+
+
+
+
+
+
+
+The ``environ.py`` module
+=========================
+
+.. py:module:: ansys.mechanical.core.embedding.logger.environ
+
+
+Summary
+-------
+
+
+
+
+
+
+
+
+
+
+.. py:currentmodule:: environ
+.. tab-set::
+
+
+
+
+ .. tab-item:: Classes
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~ansys.mechanical.core.embedding.logger.environ.EnvironBackend`
+ - Provides the environment variable backend for Mechanical logging.
+
+
+
+
+
+
+
+
+
+
+
+
+.. toctree::
+ :titlesonly:
+ :maxdepth: 1
+ :hidden:
+
+ EnvironBackend
+
+
+
+
+
+
+
+
+
+Description
+-----------
+
+Environment variables for mechanical logging.
+
+..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/embedding/logger/index.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/embedding/logger/index.rst.txt
new file mode 100644
index 000000000..d53d2697e
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/embedding/logger/index.rst.txt
@@ -0,0 +1,210 @@
+.. vale off
+
+
+
+
+
+
+
+The ``logger`` package
+==========================
+
+.. py:module:: ansys.mechanical.core.embedding.logger
+
+
+Summary
+-------
+
+
+
+
+
+
+
+
+
+
+
+
+.. py:currentmodule:: logger
+.. tab-set::
+
+
+ .. tab-item:: Submodules
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~ansys.mechanical.core.embedding.logger.environ`
+ - Environment variables for mechanical logging.
+
+
+ * - :py:obj:`~ansys.mechanical.core.embedding.logger.linux_api`
+ - Internal Mechanical logging Linux API.
+
+
+ * - :py:obj:`~ansys.mechanical.core.embedding.logger.sinks`
+ - Mechanical application logging sinks.
+
+
+ * - :py:obj:`~ansys.mechanical.core.embedding.logger.windows_api`
+ - Windows API for internal Mechanical logging.
+
+
+
+
+ .. tab-item:: Classes
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~ansys.mechanical.core.embedding.logger.Configuration`
+ - Configures logger for Mechanical embedding.
+
+
+ * - :py:obj:`~ansys.mechanical.core.embedding.logger.Logger`
+ - Provides the ``Logger`` class for embedding.
+
+
+
+
+
+
+
+ .. tab-item:: Constants
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~LOGGING_SINKS`
+ - Constant for logging sinks.
+
+
+ * - :py:obj:`~LOGGING_CONTEXT`
+ - Constant for logging context.
+
+
+
+
+
+.. toctree::
+ :titlesonly:
+ :maxdepth: 1
+ :hidden:
+
+ environ
+ linux_api
+ sinks
+ windows_api
+
+
+
+.. toctree::
+ :titlesonly:
+ :maxdepth: 1
+ :hidden:
+
+ Configuration
+ Logger
+
+
+
+
+
+
+
+
+
+Description
+-----------
+
+
+Embedding logger.
+
+Module to interact with the built-in logging system of Mechanical.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+Module detail
+-------------
+
+.. py:data:: LOGGING_SINKS
+ :type: Set[int]
+
+
+ Constant for logging sinks.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:data:: LOGGING_CONTEXT
+ :type: str
+ :value: 'PYMECHANICAL'
+
+
+
+ Constant for logging context.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/embedding/logger/linux_api/APIBackend.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/embedding/logger/linux_api/APIBackend.rst.txt
new file mode 100644
index 000000000..7b54dd5bf
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/embedding/logger/linux_api/APIBackend.rst.txt
@@ -0,0 +1,298 @@
+.. vale off
+
+
+
+:class:`APIBackend`
+===================
+
+.. py:class:: ansys.mechanical.core.embedding.logger.linux_api.APIBackend
+
+
+ Provides the API backend for the Mechanical logging system.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+.. py:currentmodule:: APIBackend
+
+Overview
+--------
+
+.. tab-set::
+
+
+
+ .. tab-item:: Methods
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+ * - :py:attr:`~flush`
+ - Flush the log manually.
+ * - :py:attr:`~enable`
+ - Enable logging.
+ * - :py:attr:`~disable`
+ - Disable logging.
+ * - :py:attr:`~set_log_level`
+ - Set the log level for Mechanical based on the Python log level.
+ * - :py:attr:`~set_auto_flush`
+ - Set whether to auto flush to the standard log file.
+ * - :py:attr:`~set_directory`
+ - Set the location to write the log file to.
+ * - :py:attr:`~set_base_directory`
+ - Set the base location to write the log file to.
+ * - :py:attr:`~can_log_message`
+ - Return whether a message with the given severity is outputted to the log.
+ * - :py:attr:`~log_message`
+ - Log the message to the configured logging mechanism.
+
+
+
+
+
+
+
+
+Import detail
+-------------
+
+ from ansys.mechanical.core.embedding.logger.linux_api import APIBackend
+
+
+
+
+
+Method detail
+-------------
+.. py:method:: flush() -> None
+
+
+ Flush the log manually.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: enable(sink: int = sinks.StandardSinks.CONSOLE) -> None
+
+
+ Enable logging.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: disable(sink: int = sinks.StandardSinks.CONSOLE) -> None
+
+
+ Disable logging.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: set_log_level(level: int, sink: int = sinks.StandardSinks.CONSOLE) -> None
+
+
+ Set the log level for Mechanical based on the Python log level.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: set_auto_flush(flush: bool) -> None
+
+
+ Set whether to auto flush to the standard log file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: set_directory(directory: str) -> None
+
+
+ Set the location to write the log file to.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: set_base_directory(base_directory: str) -> None
+
+
+ Set the base location to write the log file to.
+
+ The base directory contains time-stamped subfolders where the log file
+ is actually written to. If a base directory is set, it takes precedence over the
+ ``set_directory`` location.
+
+ This does not have an API to set at runtime.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: can_log_message(level: int) -> bool
+
+
+ Return whether a message with the given severity is outputted to the log.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: log_message(level: int, context: str, message: str) -> None
+
+
+ Log the message to the configured logging mechanism.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/embedding/logger/linux_api/index.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/embedding/logger/linux_api/index.rst.txt
new file mode 100644
index 000000000..e2834869e
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/embedding/logger/linux_api/index.rst.txt
@@ -0,0 +1,88 @@
+.. vale off
+
+
+
+
+
+
+
+The ``linux_api.py`` module
+===========================
+
+.. py:module:: ansys.mechanical.core.embedding.logger.linux_api
+
+
+Summary
+-------
+
+
+
+
+
+
+
+
+
+
+.. py:currentmodule:: linux_api
+.. tab-set::
+
+
+
+
+ .. tab-item:: Classes
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~ansys.mechanical.core.embedding.logger.linux_api.APIBackend`
+ - Provides the API backend for the Mechanical logging system.
+
+
+
+
+
+
+
+
+
+
+
+
+.. toctree::
+ :titlesonly:
+ :maxdepth: 1
+ :hidden:
+
+ APIBackend
+
+
+
+
+
+
+
+
+
+Description
+-----------
+
+Internal Mechanical logging Linux API.
+
+.. note::
+ The Linux API is needed for version 2023 R2, where the .NET backend is Windows-only.
+ This API does not support some options, namely the base directory and log filename.
+
+..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/embedding/logger/sinks/StandardSinks.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/embedding/logger/sinks/StandardSinks.rst.txt
new file mode 100644
index 000000000..25c0fb218
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/embedding/logger/sinks/StandardSinks.rst.txt
@@ -0,0 +1,98 @@
+.. vale off
+
+
+
+:class:`StandardSinks`
+======================
+
+.. py:class:: ansys.mechanical.core.embedding.logger.sinks.StandardSinks
+
+
+ Provides built-in sinks.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+.. py:currentmodule:: StandardSinks
+
+Overview
+--------
+
+.. tab-set::
+
+
+
+
+
+ .. tab-item:: Attributes
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+ * - :py:attr:`~STANDARD_LOG_FILE`
+ -
+ * - :py:attr:`~CONSOLE`
+ -
+ * - :py:attr:`~WINDOWS_DEBUGGER`
+ -
+ * - :py:attr:`~WINDOWS_ERROR_MESSAGE_BOX`
+ -
+ * - :py:attr:`~WINDOWS_FATAL_MESSAGE_BOX`
+ -
+
+
+
+
+
+
+Import detail
+-------------
+
+ from ansys.mechanical.core.embedding.logger.sinks import StandardSinks
+
+
+
+Attribute detail
+----------------
+.. py:attribute:: STANDARD_LOG_FILE
+ :value: 0
+
+
+.. py:attribute:: CONSOLE
+ :value: 1
+
+
+.. py:attribute:: WINDOWS_DEBUGGER
+ :value: 2
+
+
+.. py:attribute:: WINDOWS_ERROR_MESSAGE_BOX
+ :value: 3
+
+
+.. py:attribute:: WINDOWS_FATAL_MESSAGE_BOX
+ :value: 4
+
+
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/embedding/logger/sinks/index.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/embedding/logger/sinks/index.rst.txt
new file mode 100644
index 000000000..b84194cf2
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/embedding/logger/sinks/index.rst.txt
@@ -0,0 +1,84 @@
+.. vale off
+
+
+
+
+
+
+
+The ``sinks.py`` module
+=======================
+
+.. py:module:: ansys.mechanical.core.embedding.logger.sinks
+
+
+Summary
+-------
+
+
+
+
+
+
+
+
+
+
+.. py:currentmodule:: sinks
+.. tab-set::
+
+
+
+
+ .. tab-item:: Classes
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~ansys.mechanical.core.embedding.logger.sinks.StandardSinks`
+ - Provides built-in sinks.
+
+
+
+
+
+
+
+
+
+
+
+
+.. toctree::
+ :titlesonly:
+ :maxdepth: 1
+ :hidden:
+
+ StandardSinks
+
+
+
+
+
+
+
+
+
+Description
+-----------
+
+Mechanical application logging sinks.
+
+..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/embedding/logger/windows_api/APIBackend.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/embedding/logger/windows_api/APIBackend.rst.txt
new file mode 100644
index 000000000..1122e9856
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/embedding/logger/windows_api/APIBackend.rst.txt
@@ -0,0 +1,298 @@
+.. vale off
+
+
+
+:class:`APIBackend`
+===================
+
+.. py:class:: ansys.mechanical.core.embedding.logger.windows_api.APIBackend
+
+
+ Provides API backend for Mechanical logging system.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+.. py:currentmodule:: APIBackend
+
+Overview
+--------
+
+.. tab-set::
+
+
+
+ .. tab-item:: Methods
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+ * - :py:attr:`~flush`
+ - Flush the log manually.
+ * - :py:attr:`~enable`
+ - Enable logging.
+ * - :py:attr:`~disable`
+ - Disable logging.
+ * - :py:attr:`~set_log_level`
+ - Set the log level for Mechanical based on the Python log level.
+ * - :py:attr:`~set_auto_flush`
+ - Set whether to auto flush to the standard log file.
+ * - :py:attr:`~set_directory`
+ - Set the location to write the log file to.
+ * - :py:attr:`~set_base_directory`
+ - Set the base location to write the log file to.
+ * - :py:attr:`~can_log_message`
+ - Return whether a message with the given severity is outputted to the log.
+ * - :py:attr:`~log_message`
+ - Log the message to the configured logging mechanism.
+
+
+
+
+
+
+
+
+Import detail
+-------------
+
+ from ansys.mechanical.core.embedding.logger.windows_api import APIBackend
+
+
+
+
+
+Method detail
+-------------
+.. py:method:: flush() -> None
+
+
+ Flush the log manually.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: enable(sink: int = sinks.StandardSinks.CONSOLE) -> None
+
+
+ Enable logging.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: disable(sink: int = sinks.StandardSinks.CONSOLE) -> None
+
+
+ Disable logging.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: set_log_level(level: int, sink: int = sinks.StandardSinks.CONSOLE) -> None
+
+
+ Set the log level for Mechanical based on the Python log level.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: set_auto_flush(flush: bool) -> None
+
+
+ Set whether to auto flush to the standard log file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: set_directory(directory: str) -> None
+
+
+ Set the location to write the log file to.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: set_base_directory(base_directory: str) -> None
+
+
+ Set the base location to write the log file to.
+
+ The base directory contains time-stamped subfolders where the log file
+ is actually written to. If a base directory is set, it takes precedence over the
+ ``set_directory`` location.
+
+ This does not have an API to set at runtime.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: can_log_message(level: int) -> bool
+
+
+ Return whether a message with the given severity is outputted to the log.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: log_message(level: int, context: str, message: str) -> None
+
+
+ Log the message to the configured logging mechanism.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/embedding/logger/windows_api/index.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/embedding/logger/windows_api/index.rst.txt
new file mode 100644
index 000000000..359d3c145
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/embedding/logger/windows_api/index.rst.txt
@@ -0,0 +1,88 @@
+.. vale off
+
+
+
+
+
+
+
+The ``windows_api.py`` module
+=============================
+
+.. py:module:: ansys.mechanical.core.embedding.logger.windows_api
+
+
+Summary
+-------
+
+
+
+
+
+
+
+
+
+
+.. py:currentmodule:: windows_api
+.. tab-set::
+
+
+
+
+ .. tab-item:: Classes
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~ansys.mechanical.core.embedding.logger.windows_api.APIBackend`
+ - Provides API backend for Mechanical logging system.
+
+
+
+
+
+
+
+
+
+
+
+
+.. toctree::
+ :titlesonly:
+ :maxdepth: 1
+ :hidden:
+
+ APIBackend
+
+
+
+
+
+
+
+
+
+Description
+-----------
+
+Windows API for internal Mechanical logging.
+
+.. note::
+ This API does not support some options, namely the base directory
+ and log filename.
+
+..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/embedding/poster/Poster.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/embedding/poster/Poster.rst.txt
new file mode 100644
index 000000000..c7403008c
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/embedding/poster/Poster.rst.txt
@@ -0,0 +1,99 @@
+.. vale off
+
+
+
+:class:`Poster`
+===============
+
+.. py:class:: ansys.mechanical.core.embedding.poster.Poster
+
+
+ Class which can post a python callable function to Mechanical's main thread.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+.. py:currentmodule:: Poster
+
+Overview
+--------
+
+.. tab-set::
+
+
+
+ .. tab-item:: Methods
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+ * - :py:attr:`~post`
+ - Post the callable to Mechanical's main thread.
+
+
+
+
+
+
+
+
+Import detail
+-------------
+
+ from ansys.mechanical.core.embedding.poster import Poster
+
+
+
+
+
+Method detail
+-------------
+.. py:method:: post(callable: Callable)
+
+
+ Post the callable to Mechanical's main thread.
+
+ The main thread needs to be receiving posted messages
+ in order for this to work from a background thread. Use
+ the `sleep` routine from the `utils` module to make
+ Mechanical available to receive messages.
+
+ Returns the result of `callable` if any.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/embedding/poster/index.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/embedding/poster/index.rst.txt
new file mode 100644
index 000000000..edd954f0b
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/embedding/poster/index.rst.txt
@@ -0,0 +1,84 @@
+.. vale off
+
+
+
+
+
+
+
+The ``poster.py`` module
+========================
+
+.. py:module:: ansys.mechanical.core.embedding.poster
+
+
+Summary
+-------
+
+
+
+
+
+
+
+
+
+
+.. py:currentmodule:: poster
+.. tab-set::
+
+
+
+
+ .. tab-item:: Classes
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~ansys.mechanical.core.embedding.poster.Poster`
+ - Class which can post a python callable function to Mechanical's main thread.
+
+
+
+
+
+
+
+
+
+
+
+
+.. toctree::
+ :titlesonly:
+ :maxdepth: 1
+ :hidden:
+
+ Poster
+
+
+
+
+
+
+
+
+
+Description
+-----------
+
+Use the Poster class to post functions to Mechanical's main thread.
+
+..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/embedding/resolver/index.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/embedding/resolver/index.rst.txt
new file mode 100644
index 000000000..1a1333077
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/embedding/resolver/index.rst.txt
@@ -0,0 +1,106 @@
+.. vale off
+
+
+
+
+
+
+
+The ``resolver.py`` module
+==========================
+
+.. py:module:: ansys.mechanical.core.embedding.resolver
+
+
+Summary
+-------
+
+
+
+
+
+
+
+
+.. py:currentmodule:: resolver
+.. tab-set::
+
+
+
+
+
+
+
+ .. tab-item:: Functions
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~resolve`
+ - Resolve function for all versions of Ansys Mechanical.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Description
+-----------
+
+This is the .NET assembly resolving for embedding Ansys Mechanical.
+
+Note that for some Mechanical Addons - additional resolving may be
+necessary. A resolve handler is shipped with Ansys Mechanical on windows
+starting in version 23.1 and on linux starting in version 23.2
+
+..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+Module detail
+-------------
+
+.. py:function:: resolve(version)
+
+
+ Resolve function for all versions of Ansys Mechanical.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/embedding/runtime/index.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/embedding/runtime/index.rst.txt
new file mode 100644
index 000000000..8909b5e52
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/embedding/runtime/index.rst.txt
@@ -0,0 +1,107 @@
+.. vale off
+
+
+
+
+
+
+
+The ``runtime.py`` module
+=========================
+
+.. py:module:: ansys.mechanical.core.embedding.runtime
+
+
+Summary
+-------
+
+
+
+
+
+
+
+
+.. py:currentmodule:: runtime
+.. tab-set::
+
+
+
+
+
+
+
+ .. tab-item:: Functions
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~initialize`
+ - Initialize the runtime.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Description
+-----------
+
+Runtime initialize for pythonnet in embedding.
+
+..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+Module detail
+-------------
+
+.. py:function:: initialize(version: int) -> None
+
+
+ Initialize the runtime.
+
+ Pythonnet is already initialized but we need to
+ do some special codec handling to make sure the
+ interop works well for Mechanical. These are
+ need to handle (among other things) list and other
+ container conversions between C# and python
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/embedding/shims/index.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/embedding/shims/index.rst.txt
new file mode 100644
index 000000000..ae0daf0b7
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/embedding/shims/index.rst.txt
@@ -0,0 +1,105 @@
+.. vale off
+
+
+
+
+
+
+
+The ``shims.py`` module
+=======================
+
+.. py:module:: ansys.mechanical.core.embedding.shims
+
+
+Summary
+-------
+
+
+
+
+
+
+
+
+.. py:currentmodule:: shims
+.. tab-set::
+
+
+
+
+
+
+
+ .. tab-item:: Functions
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~import_materials`
+ - Import material from matml file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Description
+-----------
+
+Shims for embedded Mechanical.
+
+These shims are used when APIs are released in newer versions of Mechanical,
+but workarounds exist in an older release
+
+..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+Module detail
+-------------
+
+.. py:function:: import_materials(app: ansys.mechanical.core.embedding.Application, material_file: str) -> None
+
+
+ Import material from matml file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/embedding/utils/index.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/embedding/utils/index.rst.txt
new file mode 100644
index 000000000..713aacdbb
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/embedding/utils/index.rst.txt
@@ -0,0 +1,130 @@
+.. vale off
+
+
+
+
+
+
+
+The ``utils.py`` module
+=======================
+
+.. py:module:: ansys.mechanical.core.embedding.utils
+
+
+Summary
+-------
+
+
+
+
+
+
+
+
+.. py:currentmodule:: utils
+.. tab-set::
+
+
+
+
+
+
+
+ .. tab-item:: Functions
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~sleep`
+ - Non-blocking sleep for `ms` milliseconds.
+
+
+ * - :py:obj:`~load_library_windows`
+ - Load a library into the python process on windows.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Description
+-----------
+
+Miscellaneous utilities.
+
+..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+Module detail
+-------------
+
+.. py:function:: sleep(ms: int) -> None
+
+
+ Non-blocking sleep for `ms` milliseconds.
+
+ Mechanical should still work during the sleep.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:function:: load_library_windows(library: str) -> int
+
+
+ Load a library into the python process on windows.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/embedding/viz/index.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/embedding/viz/index.rst.txt
new file mode 100644
index 000000000..389dfe4e6
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/embedding/viz/index.rst.txt
@@ -0,0 +1,106 @@
+.. vale off
+
+
+
+
+
+
+
+The ``viz`` package
+=======================
+
+.. py:module:: ansys.mechanical.core.embedding.viz
+
+
+Summary
+-------
+
+
+
+
+
+
+
+
+.. py:currentmodule:: viz
+.. tab-set::
+
+
+ .. tab-item:: Submodules
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~ansys.mechanical.core.embedding.viz.pyvista_plotter`
+ - PyVista plotter.
+
+
+ * - :py:obj:`~ansys.mechanical.core.embedding.viz.usd_converter`
+ - Converter to OpenUSD.
+
+
+ * - :py:obj:`~ansys.mechanical.core.embedding.viz.utils`
+ - Common plotting utilities.
+
+
+
+
+
+
+
+
+
+
+
+
+.. toctree::
+ :titlesonly:
+ :maxdepth: 1
+ :hidden:
+
+ pyvista_plotter
+ usd_converter
+ utils
+
+
+
+
+
+
+
+
+
+
+
+Description
+-----------
+
+
+Namespace module for embedding visualization.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/embedding/viz/pyvista_plotter/index.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/embedding/viz/pyvista_plotter/index.rst.txt
new file mode 100644
index 000000000..2b4c62241
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/embedding/viz/pyvista_plotter/index.rst.txt
@@ -0,0 +1,129 @@
+.. vale off
+
+
+
+
+
+
+
+The ``pyvista_plotter.py`` module
+=================================
+
+.. py:module:: ansys.mechanical.core.embedding.viz.pyvista_plotter
+
+
+Summary
+-------
+
+
+
+
+
+
+
+
+.. py:currentmodule:: pyvista_plotter
+.. tab-set::
+
+
+
+
+
+
+
+ .. tab-item:: Functions
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~to_pyvista_plotter`
+ - Convert the app's geometry to a pyvista plotter instance.
+
+
+ * - :py:obj:`~plot_model`
+ - Plot the model.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Description
+-----------
+
+PyVista plotter.
+
+..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+Module detail
+-------------
+
+.. py:function:: to_pyvista_plotter(app: ansys.mechanical.core.embedding.App)
+
+
+ Convert the app's geometry to a pyvista plotter instance.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:function:: plot_model(app: ansys.mechanical.core.embedding.App)
+
+
+ Plot the model.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/embedding/viz/usd_converter/index.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/embedding/viz/usd_converter/index.rst.txt
new file mode 100644
index 000000000..42b1a0ab8
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/embedding/viz/usd_converter/index.rst.txt
@@ -0,0 +1,129 @@
+.. vale off
+
+
+
+
+
+
+
+The ``usd_converter.py`` module
+===============================
+
+.. py:module:: ansys.mechanical.core.embedding.viz.usd_converter
+
+
+Summary
+-------
+
+
+
+
+
+
+
+
+.. py:currentmodule:: usd_converter
+.. tab-set::
+
+
+
+
+
+
+
+ .. tab-item:: Functions
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~to_usd_stage`
+ - Convert mechanical scene to usd stage.
+
+
+ * - :py:obj:`~to_usd_file`
+ - Export mechanical scene to usd file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Description
+-----------
+
+Converter to OpenUSD.
+
+..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+Module detail
+-------------
+
+.. py:function:: to_usd_stage(app: ansys.mechanical.core.embedding.App, name: str) -> None
+
+
+ Convert mechanical scene to usd stage.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:function:: to_usd_file(app, path: str) -> None
+
+
+ Export mechanical scene to usd file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/embedding/viz/utils/index.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/embedding/viz/utils/index.rst.txt
new file mode 100644
index 000000000..8b1372d62
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/embedding/viz/utils/index.rst.txt
@@ -0,0 +1,131 @@
+.. vale off
+
+
+
+
+
+
+
+The ``utils.py`` module
+=======================
+
+.. py:module:: ansys.mechanical.core.embedding.viz.utils
+
+
+Summary
+-------
+
+
+
+
+
+
+
+
+.. py:currentmodule:: utils
+.. tab-set::
+
+
+
+
+
+
+
+ .. tab-item:: Functions
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~bgr_to_rgb_tuple`
+ - Convert bgr integer to rgb tuple.
+
+
+ * - :py:obj:`~get_nodes_and_coords`
+ - Extract the nodes and coordinates from the TriTessellationNode.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Description
+-----------
+
+Common plotting utilities.
+
+..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+Module detail
+-------------
+
+.. py:function:: bgr_to_rgb_tuple(bgr_int: int) -> Tuple[int, int, int]
+
+
+ Convert bgr integer to rgb tuple.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:function:: get_nodes_and_coords(tri_tessellation: Ansys.Mechanical.Scenegraph.TriTessellationNode)
+
+
+ Extract the nodes and coordinates from the TriTessellationNode.
+
+ The TriTessellationNode contains "Coordinates" and "Indices"
+ that are flat arrays. This function converts them to numpy arrays
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/embedding/warnings/index.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/embedding/warnings/index.rst.txt
new file mode 100644
index 000000000..dbc5f4e40
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/embedding/warnings/index.rst.txt
@@ -0,0 +1,129 @@
+.. vale off
+
+
+
+
+
+
+
+The ``warnings.py`` module
+==========================
+
+.. py:module:: ansys.mechanical.core.embedding.warnings
+
+
+Summary
+-------
+
+
+
+
+
+
+
+
+.. py:currentmodule:: warnings
+.. tab-set::
+
+
+
+
+
+
+
+ .. tab-item:: Functions
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~connect_warnings`
+ - Connect Mechanical warnings to the `warnings` Python module.
+
+
+ * - :py:obj:`~disconnect_warnings`
+ - Disconnect Mechanical warnings from the `warnings` Python module.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Description
+-----------
+
+Hook to register obsolete warnings.
+
+..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+Module detail
+-------------
+
+.. py:function:: connect_warnings(app: ansys.mechanical.core.embedding.app.App)
+
+
+ Connect Mechanical warnings to the `warnings` Python module.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:function:: disconnect_warnings(app)
+
+
+ Disconnect Mechanical warnings from the `warnings` Python module.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/errors/MechanicalExitedError.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/errors/MechanicalExitedError.rst.txt
new file mode 100644
index 000000000..f26393745
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/errors/MechanicalExitedError.rst.txt
@@ -0,0 +1,47 @@
+.. vale off
+
+
+
+:class:`MechanicalExitedError`
+==============================
+
+.. py:exception:: ansys.mechanical.core.errors.MechanicalExitedError(msg='Mechanical has exited.')
+
+ Bases: :py:obj:`RuntimeError`
+
+
+
+ Raises an error when Mechanical has exited.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+Import detail
+-------------
+
+ from ansys.mechanical.core.errors import MechanicalExitedError
+
+
+
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/errors/MechanicalRuntimeError.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/errors/MechanicalRuntimeError.rst.txt
new file mode 100644
index 000000000..eb00834a5
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/errors/MechanicalRuntimeError.rst.txt
@@ -0,0 +1,47 @@
+.. vale off
+
+
+
+:class:`MechanicalRuntimeError`
+===============================
+
+.. py:exception:: ansys.mechanical.core.errors.MechanicalRuntimeError
+
+ Bases: :py:obj:`RuntimeError`
+
+
+
+ Raises an error when Mechanical passes a runtime error.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+Import detail
+-------------
+
+ from ansys.mechanical.core.errors import MechanicalRuntimeError
+
+
+
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/errors/VersionError.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/errors/VersionError.rst.txt
new file mode 100644
index 000000000..93e0f9a48
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/errors/VersionError.rst.txt
@@ -0,0 +1,47 @@
+.. vale off
+
+
+
+:class:`VersionError`
+=====================
+
+.. py:exception:: ansys.mechanical.core.errors.VersionError(msg='Invalid Mechanical version')
+
+ Bases: :py:obj:`ValueError`
+
+
+
+ Raises an error when the version of Mechanical is invalid.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+Import detail
+-------------
+
+ from ansys.mechanical.core.errors import VersionError
+
+
+
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/errors/index.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/errors/index.rst.txt
new file mode 100644
index 000000000..90fdc75c8
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/errors/index.rst.txt
@@ -0,0 +1,197 @@
+.. vale off
+
+
+
+
+
+
+
+The ``errors.py`` module
+========================
+
+.. py:module:: ansys.mechanical.core.errors
+
+
+Summary
+-------
+
+
+
+
+
+
+
+
+.. py:currentmodule:: errors
+.. tab-set::
+
+
+
+
+
+
+ .. tab-item:: Exceptions
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~ansys.mechanical.core.errors.VersionError`
+ - Raises an error when the version of Mechanical is invalid.
+
+
+ * - :py:obj:`~ansys.mechanical.core.errors.MechanicalRuntimeError`
+ - Raises an error when Mechanical passes a runtime error.
+
+
+ * - :py:obj:`~ansys.mechanical.core.errors.MechanicalExitedError`
+ - Raises an error when Mechanical has exited.
+
+
+
+ .. tab-item:: Functions
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~handler`
+ - Pass signal to custom interrupt handler.
+
+
+ * - :py:obj:`~protect_grpc`
+ - Capture gRPC exceptions and return a more succinct error message.
+
+
+
+
+ .. tab-item:: Constants
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~SIGINT_TRACKER`
+ - List of SIGINT keyboard interrupts.
+
+
+
+
+
+
+
+
+
+.. toctree::
+ :titlesonly:
+ :maxdepth: 1
+ :hidden:
+
+ VersionError
+ MechanicalRuntimeError
+ MechanicalExitedError
+
+
+
+
+
+
+
+Description
+-----------
+
+PyMechanical-specific errors.
+
+..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+Module detail
+-------------
+
+.. py:function:: handler(sig, frame)
+
+
+ Pass signal to custom interrupt handler.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:function:: protect_grpc(func)
+
+
+ Capture gRPC exceptions and return a more succinct error message.
+
+ Capture KeyboardInterrupt to avoid segfaulting Mechanical.
+
+ This works some of the time, but not all the time. For some
+ reason gRPC still captures SIGINT.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:data:: SIGINT_TRACKER
+ :value: []
+
+
+
+ List of SIGINT keyboard interrupts.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/examples/downloads/index.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/examples/downloads/index.rst.txt
new file mode 100644
index 000000000..dcc499f1f
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/examples/downloads/index.rst.txt
@@ -0,0 +1,167 @@
+.. vale off
+
+
+
+
+
+
+
+The ``downloads.py`` module
+===========================
+
+.. py:module:: ansys.mechanical.core.examples.downloads
+
+
+Summary
+-------
+
+
+
+
+
+
+
+
+.. py:currentmodule:: downloads
+.. tab-set::
+
+
+
+
+
+
+
+ .. tab-item:: Functions
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~download_file`
+ - Download a file from PyAnsys examples Github repo.
+
+
+ * - :py:obj:`~delete_downloads`
+ - Delete all downloaded examples to free space or update the files.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Description
+-----------
+
+Functions to download sample datasets from the PyAnsys data repository.
+
+..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+Module detail
+-------------
+
+.. py:function:: download_file(filename: str, *directory: str, destination: Optional[str] = None, force: bool = False)
+
+
+ Download a file from PyAnsys examples Github repo.
+
+
+ :Parameters:
+
+ **filename: str**
+ Name of the file to download
+
+ **directory: tuple[str]**
+ Path under the PyAnsys Github examples repo
+
+ **destination: Optional[str]**
+ Optional destination to download the directory to
+
+ **force: bool**
+ Flag to force download even if the file exists in cache
+
+ :Returns:
+
+ :obj:`Tuple`\[:class:`python:str`, :class:`python:str`]
+ Tuple containing filepath to be used and the local filepath of the downloaded directory
+ The two are different in case of containers.
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Examples
+
+ Download a file from the server
+
+ >>> from ansys.mechanical.core import examples
+ >>> filename = examples.download_file('example_01_geometry.agdb', 'pymechanical', '00_basic')
+ >>> filename
+ 'C:/Users/user/AppData/Local/ansys_mechanical_core/ansys_mechanical_core/examples/example_01_geometry.agdb'
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:function:: delete_downloads() -> bool
+
+
+ Delete all downloaded examples to free space or update the files.
+
+
+
+ :Returns:
+
+ :ref:`bool `
+ ``True`` if delete_downlaods succeeds, ``False`` otherwise.
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Examples
+
+ Delete all downloaded examples
+
+ >>> from ansys.mechanical.core import examples
+ >>> return_value = examples.delete_downloads()
+ >>> return_value
+ 'True'
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/examples/index.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/examples/index.rst.txt
new file mode 100644
index 000000000..457a296d7
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/examples/index.rst.txt
@@ -0,0 +1,96 @@
+.. vale off
+
+
+
+
+
+
+
+The ``examples`` package
+============================
+
+.. py:module:: ansys.mechanical.core.examples
+
+
+Summary
+-------
+
+
+
+
+
+
+
+
+.. py:currentmodule:: examples
+.. tab-set::
+
+
+ .. tab-item:: Submodules
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~ansys.mechanical.core.examples.downloads`
+ - Functions to download sample datasets from the PyAnsys data repository.
+
+
+
+
+
+
+
+
+
+
+
+
+.. toctree::
+ :titlesonly:
+ :maxdepth: 1
+ :hidden:
+
+ downloads
+
+
+
+
+
+
+
+
+
+
+
+Description
+-----------
+
+
+Initialize the package level imports.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/feature_flags/FeatureFlags.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/feature_flags/FeatureFlags.rst.txt
new file mode 100644
index 000000000..0c353132a
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/feature_flags/FeatureFlags.rst.txt
@@ -0,0 +1,80 @@
+.. vale off
+
+
+
+:class:`FeatureFlags`
+=====================
+
+.. py:class:: ansys.mechanical.core.feature_flags.FeatureFlags
+
+
+ Supported feature flag names.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+.. py:currentmodule:: FeatureFlags
+
+Overview
+--------
+
+.. tab-set::
+
+
+
+
+
+ .. tab-item:: Attributes
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+ * - :py:attr:`~ThermalShells`
+ -
+ * - :py:attr:`~MultistageHarmonic`
+ -
+
+
+
+
+
+
+Import detail
+-------------
+
+ from ansys.mechanical.core.feature_flags import FeatureFlags
+
+
+
+Attribute detail
+----------------
+.. py:attribute:: ThermalShells
+ :value: 'Mechanical.ThermalShells'
+
+
+.. py:attribute:: MultistageHarmonic
+ :value: 'Mechanical.MultistageHarmonic'
+
+
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/feature_flags/index.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/feature_flags/index.rst.txt
new file mode 100644
index 000000000..9ff815722
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/feature_flags/index.rst.txt
@@ -0,0 +1,149 @@
+.. vale off
+
+
+
+
+
+
+
+The ``feature_flags.py`` module
+===============================
+
+.. py:module:: ansys.mechanical.core.feature_flags
+
+
+Summary
+-------
+
+
+
+
+
+
+
+
+
+
+.. py:currentmodule:: feature_flags
+.. tab-set::
+
+
+
+
+ .. tab-item:: Classes
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~ansys.mechanical.core.feature_flags.FeatureFlags`
+ - Supported feature flag names.
+
+
+
+
+
+ .. tab-item:: Functions
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~get_feature_flag_names`
+ - Get the available feature flags.
+
+
+ * - :py:obj:`~get_command_line_arguments`
+ - Get the command line arguments as an array for the given flags.
+
+
+
+
+
+
+
+
+
+.. toctree::
+ :titlesonly:
+ :maxdepth: 1
+ :hidden:
+
+ FeatureFlags
+
+
+
+
+
+
+
+
+
+Description
+-----------
+
+Mechanical beta feature flags.
+
+..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+Module detail
+-------------
+
+.. py:function:: get_feature_flag_names() -> List[str]
+
+
+ Get the available feature flags.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:function:: get_command_line_arguments(flags: List[str])
+
+
+ Get the command line arguments as an array for the given flags.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/index.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/index.rst.txt
new file mode 100644
index 000000000..ba2a57682
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/index.rst.txt
@@ -0,0 +1,335 @@
+.. vale off
+
+
+
+
+
+
+
+The ``ansys.mechanical.core`` library
+=====================================
+
+.. py:module:: ansys.mechanical.core
+
+
+Summary
+-------
+
+
+
+
+
+
+
+
+.. py:currentmodule:: core
+.. tab-set::
+
+ .. tab-item:: Subpackages
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~ansys.mechanical.core.embedding`
+ - Imports for the embedding sub-package.
+
+
+ * - :py:obj:`~ansys.mechanical.core.examples`
+ - Initialize the package level imports.
+
+
+
+ .. tab-item:: Submodules
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~ansys.mechanical.core.errors`
+ - PyMechanical-specific errors.
+
+
+ * - :py:obj:`~ansys.mechanical.core.feature_flags`
+ - Mechanical beta feature flags.
+
+
+ * - :py:obj:`~ansys.mechanical.core.launcher`
+ - Launch Mechanical in batch or UI mode.
+
+
+ * - :py:obj:`~ansys.mechanical.core.logging`
+ - Logging module.
+
+
+ * - :py:obj:`~ansys.mechanical.core.mechanical`
+ - Connect to Mechanical gRPC server and issues commands.
+
+
+ * - :py:obj:`~ansys.mechanical.core.misc`
+ - Contain miscellaneous functions and methods at the module level.
+
+
+ * - :py:obj:`~ansys.mechanical.core.pool`
+ - This module is for threaded implementations of the Mechanical interface.
+
+
+ * - :py:obj:`~ansys.mechanical.core.run`
+ - Convenience CLI to run mechanical.
+
+
+
+
+
+
+
+
+
+ .. tab-item:: Constants
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~USER_DATA_PATH`
+ - User data directory.
+
+
+ * - :py:obj:`~EXAMPLES_PATH`
+ - Examples path.
+
+
+ * - :py:obj:`~LOG`
+ - Create logger for package level use.
+
+
+ * - :py:obj:`~HAS_EMBEDDING`
+ - Whether or not Mechanical embedding is being used.
+
+
+ * - :py:obj:`~LOCAL_PORTS`
+ - Manage the package level ports.
+
+
+ * - :py:obj:`~BUILDING_GALLERY`
+ - Whether or not to build gallery examples.
+
+
+
+
+.. toctree::
+ :titlesonly:
+ :maxdepth: 1
+ :hidden:
+
+ embedding
+ examples
+
+
+.. toctree::
+ :titlesonly:
+ :maxdepth: 1
+ :hidden:
+
+ errors
+ feature_flags
+ launcher
+ logging
+ mechanical
+ misc
+ pool
+ run
+
+
+
+
+
+
+
+
+
+
+
+Description
+-----------
+
+
+Initialize the package level imports.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+Module detail
+-------------
+
+.. py:data:: USER_DATA_PATH
+
+
+ User data directory.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:data:: EXAMPLES_PATH
+
+
+ Examples path.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:data:: LOG
+
+
+ Create logger for package level use.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:data:: HAS_EMBEDDING
+ :value: True
+
+
+
+ Whether or not Mechanical embedding is being used.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:data:: LOCAL_PORTS
+ :value: []
+
+
+
+ Manage the package level ports.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:data:: BUILDING_GALLERY
+ :value: False
+
+
+
+ Whether or not to build gallery examples.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/launcher/MechanicalLauncher.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/launcher/MechanicalLauncher.rst.txt
new file mode 100644
index 000000000..93e881d59
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/launcher/MechanicalLauncher.rst.txt
@@ -0,0 +1,132 @@
+.. vale off
+
+
+
+:class:`MechanicalLauncher`
+===========================
+
+.. py:class:: ansys.mechanical.core.launcher.MechanicalLauncher(batch, port, exe_path, additional_args=None, additional_envs=None, verbose=False)
+
+
+ Launches Mechanical in batch or UI mode.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+.. py:currentmodule:: MechanicalLauncher
+
+Overview
+--------
+
+.. tab-set::
+
+
+
+ .. tab-item:: Methods
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+ * - :py:attr:`~launch`
+ - Launch Mechanical with the gRPC server.
+
+
+
+
+ .. tab-item:: Static methods
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+ * - :py:attr:`~verify_path_exists`
+ - Throw an exception if the given exe_path does not exist.
+
+
+
+
+
+Import detail
+-------------
+
+ from ansys.mechanical.core.launcher import MechanicalLauncher
+
+
+
+
+
+Method detail
+-------------
+.. py:method:: launch()
+
+
+ Launch Mechanical with the gRPC server.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: verify_path_exists(exe_path)
+ :staticmethod:
+
+
+
+ Throw an exception if the given exe_path does not exist.
+
+
+ :Parameters:
+
+ **exe_path** : :class:`python:str`
+ Path to verify.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/launcher/index.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/launcher/index.rst.txt
new file mode 100644
index 000000000..29c9ae210
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/launcher/index.rst.txt
@@ -0,0 +1,84 @@
+.. vale off
+
+
+
+
+
+
+
+The ``launcher.py`` module
+==========================
+
+.. py:module:: ansys.mechanical.core.launcher
+
+
+Summary
+-------
+
+
+
+
+
+
+
+
+
+
+.. py:currentmodule:: launcher
+.. tab-set::
+
+
+
+
+ .. tab-item:: Classes
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~ansys.mechanical.core.launcher.MechanicalLauncher`
+ - Launches Mechanical in batch or UI mode.
+
+
+
+
+
+
+
+
+
+
+
+
+.. toctree::
+ :titlesonly:
+ :maxdepth: 1
+ :hidden:
+
+ MechanicalLauncher
+
+
+
+
+
+
+
+
+
+Description
+-----------
+
+Launch Mechanical in batch or UI mode.
+
+..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/logging/InstanceFilter.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/logging/InstanceFilter.rst.txt
new file mode 100644
index 000000000..232803379
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/logging/InstanceFilter.rst.txt
@@ -0,0 +1,96 @@
+.. vale off
+
+
+
+:class:`InstanceFilter`
+=======================
+
+.. py:class:: ansys.mechanical.core.logging.InstanceFilter(name='')
+
+ Bases: :py:obj:`logging.Filter`
+
+
+
+ Ensures that the instance name record always exists.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+.. py:currentmodule:: InstanceFilter
+
+Overview
+--------
+
+.. tab-set::
+
+
+
+ .. tab-item:: Methods
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+ * - :py:attr:`~filter`
+ - Check the log record and return ``True`` to log it or ``False`` to discard it.
+
+
+
+
+
+
+
+
+Import detail
+-------------
+
+ from ansys.mechanical.core.logging import InstanceFilter
+
+
+
+
+
+Method detail
+-------------
+.. py:method:: filter(record)
+
+
+ Check the log record and return ``True`` to log it or ``False`` to discard it.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/logging/Logger.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/logging/Logger.rst.txt
new file mode 100644
index 000000000..0a1b6946c
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/logging/Logger.rst.txt
@@ -0,0 +1,393 @@
+.. vale off
+
+
+
+:class:`Logger`
+===============
+
+.. py:class:: ansys.mechanical.core.logging.Logger(level=logging.DEBUG, to_file=False, to_stdout=True, filename=FILE_NAME)
+
+
+ Provides for adding handlers to the logger for each Mechanical session.
+
+ This class allows you to add handlers to the logger to output to a file or
+ the standard output.
+
+ :Parameters:
+
+ **level** : :class:`python:int`, :obj:`optional`
+ Logging level for filtering the messages that are allowed in the logger.
+ The default is ``10``, in which case the ``DEBUG`` level is used.
+
+ **to_file** : :ref:`bool `, :obj:`optional`
+ Whether to write log messages to a file. The default is ``False``.
+
+ **to_stdout** : :ref:`bool `, :obj:`optional`
+ Whether to write log messages to the standard output. The default is
+ ``True``.
+
+ **filename** : :class:`python:str`, :obj:`optional`
+ Name of the file to write log messages to. The default is ``pymechanical.log``.
+
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Examples
+
+ Demonstrate logger usage from a Mechanical instance. The logger is automatically
+ created when a Mechanical instance is created.
+
+ >>> from ansys.mechanical.core import launch_mechanical
+ >>> mechanical = launch_mechanical(loglevel='DEBUG')
+ >>> mechanical.log.info('This is a useful message')
+ INFO - - - - This is LOG debug message.
+
+ Import the PyMechanical global logger and add a file output handler.
+
+ >>> import os
+ >>> from ansys.mechanical.core import LOG
+ >>> file_path = os.path.join(os.getcwd(), 'pymechanical.log')
+ >>> LOG.log_to_file(file_path)
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+
+.. py:currentmodule:: Logger
+
+Overview
+--------
+
+.. tab-set::
+
+
+
+ .. tab-item:: Methods
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+ * - :py:attr:`~log_to_file`
+ - Add a file handler to the logger.
+ * - :py:attr:`~log_to_stdout`
+ - Add a standard output handler to the logger.
+ * - :py:attr:`~setLevel`
+ - Change the log level of the object and the attached handlers.
+ * - :py:attr:`~add_child_logger`
+ - Add a child logger to the main logger.
+ * - :py:attr:`~add_instance_logger`
+ - Add a logger for a Mechanical instance.
+
+
+
+ .. tab-item:: Attributes
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+ * - :py:attr:`~file_handler`
+ -
+ * - :py:attr:`~std_out_handler`
+ -
+
+
+ .. tab-item:: Static methods
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+ * - :py:attr:`~add_handling_uncaught_exceptions`
+ - Redirect the output of an exception to a logger.
+
+
+ .. tab-item:: Special methods
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+ * - :py:attr:`~__getitem__`
+ - Get the instance logger based on a key.
+
+
+
+
+Import detail
+-------------
+
+ from ansys.mechanical.core.logging import Logger
+
+
+
+Attribute detail
+----------------
+.. py:attribute:: file_handler
+ :value: None
+
+
+.. py:attribute:: std_out_handler
+ :value: None
+
+
+
+
+Method detail
+-------------
+.. py:method:: log_to_file(filename=FILE_NAME, level=LOG_LEVEL)
+
+
+ Add a file handler to the logger.
+
+
+ :Parameters:
+
+ **filename** : :class:`python:str`, :obj:`optional`
+ Name of the file to write log messages to. The default is
+ ``'pymechanical.log'``.
+
+ **level** : :class:`python:str`, :obj:`optional`
+ Level of logging. The default is ``10``, in which case the ``"DEBUG"``
+ level is used. Options are ``"DEBUG"``, ``"INFO"``,
+ ``"WARNING"`` and ``"ERROR"``.
+
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Examples
+
+ Write to the ``pymechanical.log`` file in the current working directory.
+
+ >>> from ansys.mechanical.core import LOG
+ >>> import os
+ >>> file_path = os.path.join(os.getcwd(), 'pymechanical.log')
+ >>> LOG.log_to_file(file_path)
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: log_to_stdout(level=LOG_LEVEL)
+
+
+ Add a standard output handler to the logger.
+
+
+ :Parameters:
+
+ **level** : :class:`python:str`, :obj:`optional`
+ Level of logging, such as ``DUBUG``. The default is ``LOG_LEVEL``.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: setLevel(level='DEBUG')
+
+
+ Change the log level of the object and the attached handlers.
+
+
+ :Parameters:
+
+ **level** : :class:`python:str`, :obj:`optional`
+ Level of logging, such as ``DUBUG``. The default is ``LOG_LEVEL``.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: add_child_logger(suffix, level=None)
+
+
+ Add a child logger to the main logger.
+
+ This child logger is more general than an instance logger, which is designed to
+ track the state of a Mechanical instance.
+
+ If the logging level is specified in the arguments, a new logger with a reference
+ to the ``_global`` logger handlers is created instead of a child logger.
+
+ :Parameters:
+
+ **suffix** : :class:`python:str`
+ Name for the child logger.
+
+ **level** : :class:`python:str`, :obj:`optional`
+ Level of logging. The default is ``None``, in which case the ``"DEBUG"``
+ level is used. Options are ``"DEBUG"``, ``"INFO"``, ``"WARNING"``,
+ and ``"ERROR"``.
+
+ :Returns:
+
+ :obj:`logging.logger`
+ Logger class.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: add_instance_logger(name, mechanical_instance, level=None)
+
+
+ Add a logger for a Mechanical instance.
+
+ The logger for a Mechanical instance has an adapter that adds contextual information,
+ such as the name of the Mechanical instance. This logger is returned, and you can use it to
+ log events as a normal logger. It is also stored in the ``_instances`` field.
+
+ :Parameters:
+
+ **name** : :class:`python:str`
+ Name for the new logger.
+
+ **mechanical_instance** : :obj:`ansys.mechanical.core.mechanical.Mechanical`
+ Mechanical instance object. This object should contain the ``name``
+ attribute.
+
+ **level** : :class:`python:str`, :obj:`optional`
+ Level of logging. The default is ``None``, in which case the ``"DEBUG"``
+ level is used. Options are ``"DEBUG"``, ``"INFO"``, ``"WARNING"``,
+ and ``"ERROR"``.
+
+ :Returns:
+
+ :obj:`ansys.mechanical.core.logging.PyMechanicalCustomAdapter`
+ Logger adapter customized to add Mechanical information to the
+ logs. You can use this class to log events in the same
+ way you would with the ``logger`` class.
+
+
+
+
+ :Raises:
+
+ :obj:`Exception`
+ You can only input strings as ``name`` to this method.
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: __getitem__(key)
+
+
+ Get the instance logger based on a key.
+
+
+ :Parameters:
+
+ **key**
+ ..
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: add_handling_uncaught_exceptions(logger)
+ :staticmethod:
+
+
+
+ Redirect the output of an exception to a logger.
+
+
+ :Parameters:
+
+ **logger** : :class:`python:str`
+ Name of the logger.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/logging/PyMechanicalCustomAdapter.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/logging/PyMechanicalCustomAdapter.rst.txt
new file mode 100644
index 000000000..c8fdd9a10
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/logging/PyMechanicalCustomAdapter.rst.txt
@@ -0,0 +1,224 @@
+.. vale off
+
+
+
+:class:`PyMechanicalCustomAdapter`
+==================================
+
+.. py:class:: ansys.mechanical.core.logging.PyMechanicalCustomAdapter(logger, extra=None)
+
+ Bases: :py:obj:`logging.LoggerAdapter`
+
+
+
+ Keeps the reference to the name of the Mechanical instance dynamic.
+
+ The standard approach supplies extra input to the logger. If this approach
+ was used, Mechanical instances would have to be inputted every time a log
+ is created.
+
+ Using an adapter means that the reference to the Mechanical instance must only
+ be specified once.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+.. py:currentmodule:: PyMechanicalCustomAdapter
+
+Overview
+--------
+
+.. tab-set::
+
+
+
+ .. tab-item:: Methods
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+ * - :py:attr:`~process`
+ - Process the message.
+ * - :py:attr:`~log_to_file`
+ - Add a file handler to the logger.
+ * - :py:attr:`~log_to_stdout`
+ - Add a standard output handler to the logger.
+ * - :py:attr:`~setLevel`
+ - Change the log level of the object and the attached handlers.
+
+
+
+ .. tab-item:: Attributes
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+ * - :py:attr:`~level`
+ -
+ * - :py:attr:`~file_handler`
+ -
+ * - :py:attr:`~stdout_handler`
+ -
+
+
+
+
+
+
+Import detail
+-------------
+
+ from ansys.mechanical.core.logging import PyMechanicalCustomAdapter
+
+
+
+Attribute detail
+----------------
+.. py:attribute:: level
+ :value: None
+
+
+.. py:attribute:: file_handler
+ :value: None
+
+
+.. py:attribute:: stdout_handler
+ :value: None
+
+
+
+
+Method detail
+-------------
+.. py:method:: process(msg, kwargs)
+
+
+ Process the message.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: log_to_file(filename=FILE_NAME, level=LOG_LEVEL)
+
+
+ Add a file handler to the logger.
+
+
+ :Parameters:
+
+ **filename** : :class:`python:str`, :obj:`optional`
+ Name of the file where logs are recorded. The default is ``FILE_NAME``.
+
+ **level** : :class:`python:str`, :obj:`optional`
+ Level of logging. The default is ``None``, in which case the ``"DEBUG"``
+ level is used. Options are ``"DEBUG"``, ``"INFO"``, ``"WARNING"``,
+ and ``"ERROR"``.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: log_to_stdout(level=LOG_LEVEL)
+
+
+ Add a standard output handler to the logger.
+
+
+ :Parameters:
+
+ **level** : :class:`python:str`, :obj:`optional`
+ Level of logging. The default is ``None``, in which case the ``"DEBUG"``
+ level is used. Options are ``"DEBUG"``, ``"INFO"``, ``"WARNING"``,
+ and ``"ERROR"``.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: setLevel(level='DEBUG')
+
+
+ Change the log level of the object and the attached handlers.
+
+
+ :Parameters:
+
+ **level** : :class:`python:str`, :obj:`optional`
+ Level of logging. The default is ``"DEBUG"``. Options are ``"DEBUG"``,
+ ``"INFO"``, ``"WARNING"``, and ``"ERROR"``.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/logging/PyMechanicalFormatter.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/logging/PyMechanicalFormatter.rst.txt
new file mode 100644
index 000000000..0fd8cac35
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/logging/PyMechanicalFormatter.rst.txt
@@ -0,0 +1,60 @@
+.. vale off
+
+
+
+:class:`PyMechanicalFormatter`
+==============================
+
+.. py:class:: ansys.mechanical.core.logging.PyMechanicalFormatter(fmt=STDOUT_MSG_FORMAT, datefmt=None, style='%', validate=True, defaults=None)
+
+ Bases: :py:obj:`logging.Formatter`
+
+
+
+ Provides for overwriting default format styles with custom format styles.
+
+
+ :Parameters:
+
+ **fmt** : :obj:`optional`
+ The default is ``STDOUT_MSG_FORMAT``.
+
+ **datefmt** : :obj:`optional`
+ The default is ``None``.
+
+ **style** : :obj:`optional`
+ The default is ``%``.
+
+ **validate** : :ref:`bool `, :obj:`optional`
+ The default is ``None``.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+Import detail
+-------------
+
+ from ansys.mechanical.core.logging import PyMechanicalFormatter
+
+
+
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/logging/PyMechanicalPercentStyle.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/logging/PyMechanicalPercentStyle.rst.txt
new file mode 100644
index 000000000..68e6456cc
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/logging/PyMechanicalPercentStyle.rst.txt
@@ -0,0 +1,47 @@
+.. vale off
+
+
+
+:class:`PyMechanicalPercentStyle`
+=================================
+
+.. py:class:: ansys.mechanical.core.logging.PyMechanicalPercentStyle(fmt, *, defaults=None)
+
+ Bases: :py:obj:`logging.PercentStyle`
+
+
+
+ Controls the way PyMechanical formats the percent style.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+Import detail
+-------------
+
+ from ansys.mechanical.core.logging import PyMechanicalPercentStyle
+
+
+
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/logging/index.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/logging/index.rst.txt
new file mode 100644
index 000000000..8cc6b5ccd
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/logging/index.rst.txt
@@ -0,0 +1,681 @@
+.. vale off
+
+
+
+
+
+
+
+The ``logging.py`` module
+=========================
+
+.. py:module:: ansys.mechanical.core.logging
+
+
+Summary
+-------
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+.. py:currentmodule:: logging
+.. tab-set::
+
+
+
+
+ .. tab-item:: Classes
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~ansys.mechanical.core.logging.PyMechanicalCustomAdapter`
+ - Keeps the reference to the name of the Mechanical instance dynamic.
+
+
+ * - :py:obj:`~ansys.mechanical.core.logging.PyMechanicalPercentStyle`
+ - Controls the way PyMechanical formats the percent style.
+
+
+ * - :py:obj:`~ansys.mechanical.core.logging.PyMechanicalFormatter`
+ - Provides for overwriting default format styles with custom format styles.
+
+
+ * - :py:obj:`~ansys.mechanical.core.logging.InstanceFilter`
+ - Ensures that the instance name record always exists.
+
+
+ * - :py:obj:`~ansys.mechanical.core.logging.Logger`
+ - Provides for adding handlers to the logger for each Mechanical session.
+
+
+
+
+
+ .. tab-item:: Functions
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~addfile_handler`
+ - Add a file handler to the input.
+
+
+ * - :py:obj:`~add_stdout_handler`
+ - Add a file handler to the stand output handler.
+
+
+
+ .. tab-item:: Attributes
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~string_to_loglevel`
+ -
+
+
+
+ .. tab-item:: Constants
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~LOG_LEVEL`
+ - Default log level configuration.
+
+
+ * - :py:obj:`~FILE_NAME`
+ - Default file name.
+
+
+ * - :py:obj:`~DEBUG`
+ - Constant for logging.DEBUG.
+
+
+ * - :py:obj:`~INFO`
+ - Constant for logging.INFO.
+
+
+ * - :py:obj:`~WARN`
+ - Constant for logging.WARN.
+
+
+ * - :py:obj:`~ERROR`
+ - Constant for logging.ERROR.
+
+
+ * - :py:obj:`~CRITICAL`
+ - Constant for logging.CRITICAL.
+
+
+ * - :py:obj:`~STDOUT_MSG_FORMAT`
+ - Standard output message format.
+
+
+ * - :py:obj:`~FILE_MSG_FORMAT`
+ - File message format.
+
+
+ * - :py:obj:`~DEFAULT_STDOUT_HEADER`
+ - Default standard output header.
+
+
+ * - :py:obj:`~DEFAULT_FILE_HEADER`
+ - Default file header.
+
+
+ * - :py:obj:`~NEW_SESSION_HEADER`
+ - Default new session header containing date and time.
+
+
+
+
+
+
+
+.. toctree::
+ :titlesonly:
+ :maxdepth: 1
+ :hidden:
+
+ PyMechanicalCustomAdapter
+ PyMechanicalPercentStyle
+ PyMechanicalFormatter
+ InstanceFilter
+ Logger
+
+
+
+
+
+
+
+
+
+Description
+-----------
+
+Logging module.
+
+This module supplies the general framework for logging in PyMechanical. This module is
+built upon the `logging `_ package.
+The intent is not for this module to replace the ``logging`` package but rather to provide
+a way for the ``logging`` package and PyMechancial to interact.
+
+The loggers used in the module include the name of the instance, which
+is intended to be unique. This name is printed in all the active
+outputs and is used to track the different Mechanical instances.
+
+
+Usage
+-----
+
+Global logger
+~~~~~~~~~~~~~
+There is a global logger named ``pymechanical_global``, which is created at
+``ansys.mechanical.core.__init__``. If you want to use this global logger,
+you must call it at the top of your module:
+
+.. code:: python
+
+ from ansys.mechanical.core import LOG
+
+You can rename this logger to avoid conflicts with other loggers (if any):
+
+.. code:: python
+
+ from ansys.mechanical.core import LOG as logger
+
+
+The default logging level of ``LOG`` is ``ERROR``. To change this and output
+lower-level messages, you can use this code:
+
+.. code:: python
+
+ LOG.logger.setLevel("DEBUG")
+ LOG.file_handler.setLevel("DEBUG") # If present.
+ LOG.stdout_handler.setLevel("DEBUG") # If present.
+
+
+Alternatively, you can use this code:
+
+.. code:: python
+
+ LOG.setLevel("DEBUG")
+
+This alternative code ensures that all the handlers are set to the
+input log level.
+
+By default, this logger does not log to a file. If you want,
+you can add a file handler:
+
+.. code:: python
+
+ import os
+
+ file_path = os.path.join(os.getcwd(), "pymechanical.log")
+ LOG.log_to_file(file_path)
+
+The preceding code sets the logger to also be redirected to this file. If you
+want to change the characteristics of this global logger from the beginning
+of the execution, you must edit the file ``__init__`` in the
+``ansys.mechanical.core`` directory.
+
+To log using this logger, call the desired method as a normal logger:
+
+.. code:: pycon
+
+ >>> import logging
+ >>> from ansys.mechanical.core.logging import Logger
+ >>> LOG = Logger(level=logging.DEBUG, to_file=False, to_stdout=True)
+ >>> LOG.debug("This is LOG debug message.")
+
+ DEBUG - - - - This is the LOG debug message.
+
+
+Instance Logger
+~~~~~~~~~~~~~~~
+Every time an instance of the :class:`Mechanical `
+ckass is created, a logger is created and stored here:
+
+* ``LOG._instances``. This field is a ``dict`` where the key is the name of the
+ created logger.
+
+These logger instances inherit the ``pymechanical_global`` output handlers and
+logging level unless otherwise specified. The way this logger works is very
+similar to the global logger. You can add a file handler if you want using the
+:func:`log_to_file() ` method or change
+the log level using the :func:`logger.Logging.setLevel` method.
+
+You can use this logger like this:
+
+.. code:: pycon
+
+ >>> from ansys.mechanical.core import launch_mechanical
+ >>> mechanical = launch_mechanical()
+ >>> mechanical.log.info("This is a useful message")
+
+ INFO - GRPC_127.0.0.1:50056 - - -
+ This is a useful message
+
+Other loggers
+~~~~~~~~~~~~~
+You can create your own loggers using the Python ``logging`` package as
+you would do in any other script. There are no conflicts between these loggers.
+
+..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+Module detail
+-------------
+
+.. py:function:: addfile_handler(logger, filename=FILE_NAME, level=LOG_LEVEL, write_headers=False)
+
+
+ Add a file handler to the input.
+
+
+ :Parameters:
+
+ **logger** : :obj:`logging.Logger` or :obj:`logging.Logger`
+ Logger to add the file handler to.
+
+ **filename** : :class:`python:str`, :obj:`optional`
+ Name of the output file. The default is ``FILE_NAME``.
+
+ **level** : :class:`python:str`, :obj:`optional`
+ Level of logging. The default is ``None``. Options are ``"DEBUG"``, ``"INFO"``,
+ ``"WARNING"`` and ``"ERROR"``.
+
+ **write_headers** : :ref:`bool `, :obj:`optional`
+ Whether to write headers to the file. The default is ``False``.
+
+ :Returns:
+
+ :obj:`logger`
+ Logger object.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:function:: add_stdout_handler(logger, level=LOG_LEVEL, write_headers=False)
+
+
+ Add a file handler to the stand output handler.
+
+
+ :Parameters:
+
+ **logger** : :obj:`logging.Logger` or :obj:`logging.Logger`
+ Logger to add the file handler to.
+
+ **level** : :class:`python:str`, :obj:`optional`
+ Level of logging. The default is ``None``. Options are ``"DEBUG"``, ``"INFO"``,
+ ``"WARNING"`` and ``"ERROR"``.
+
+ **write_headers** : :ref:`bool `, :obj:`optional`
+ Whether to write headers to the file. The default is ``False``.
+
+ :Returns:
+
+ :obj:`logger`
+ Logger object.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:data:: LOG_LEVEL
+
+
+ Default log level configuration.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:data:: FILE_NAME
+ :value: 'pymechanical.log'
+
+
+
+ Default file name.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:data:: DEBUG
+
+
+ Constant for logging.DEBUG.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:data:: INFO
+
+
+ Constant for logging.INFO.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:data:: WARN
+
+
+ Constant for logging.WARN.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:data:: ERROR
+
+
+ Constant for logging.ERROR.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:data:: CRITICAL
+
+
+ Constant for logging.CRITICAL.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:data:: STDOUT_MSG_FORMAT
+ :value: '%(levelname)s - %(instance_name)s - %(module)s - %(funcName)s - %(message)s'
+
+
+
+ Standard output message format.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:data:: FILE_MSG_FORMAT
+
+
+ File message format.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:data:: DEFAULT_STDOUT_HEADER
+ :value: Multiline-String
+
+ .. raw:: html
+
+ Show Value
+
+ .. code-block:: python
+
+ """
+ LEVEL - INSTANCE NAME - MODULE - FUNCTION - MESSAGE
+ """
+
+ .. raw:: html
+
+
+
+
+
+
+ Default standard output header.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:data:: DEFAULT_FILE_HEADER
+
+
+ Default file header.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:data:: NEW_SESSION_HEADER
+
+
+ Default new session header containing date and time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:data:: string_to_loglevel
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/mechanical/Mechanical.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/mechanical/Mechanical.rst.txt
new file mode 100644
index 000000000..96d6125ed
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/mechanical/Mechanical.rst.txt
@@ -0,0 +1,1222 @@
+.. vale off
+
+
+
+:class:`Mechanical`
+===================
+
+.. py:class:: ansys.mechanical.core.mechanical.Mechanical(ip=None, port=None, timeout=60.0, loglevel='WARNING', log_file=False, log_mechanical=None, cleanup_on_exit=False, channel=None, remote_instance=None, keep_connection_alive=True, **kwargs)
+
+ Bases: :py:obj:`object`
+
+
+
+ Connects to a gRPC Mechanical server and allows commands to be passed.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+.. py:currentmodule:: Mechanical
+
+Overview
+--------
+
+.. tab-set::
+
+
+
+ .. tab-item:: Methods
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+ * - :py:attr:`~get_product_info`
+ - Get product information by running a script on the Mechanical gRPC server.
+ * - :py:attr:`~launch`
+ - Launch Mechanical in batch or UI mode.
+ * - :py:attr:`~wait_till_mechanical_is_ready`
+ - Wait until Mechanical is ready.
+ * - :py:attr:`~run_python_script`
+ - Run a Python script block inside Mechanical.
+ * - :py:attr:`~run_python_script_from_file`
+ - Run the contents a python file inside Mechanical.
+ * - :py:attr:`~exit`
+ - Exit Mechanical.
+ * - :py:attr:`~upload`
+ - Upload a file to the Mechanical instance.
+ * - :py:attr:`~get_file_chunks`
+ - Construct the file upload request for the server.
+ * - :py:attr:`~list_files`
+ - List the files in the working directory of Mechanical.
+ * - :py:attr:`~download`
+ - Download files from the working directory of the Mechanical instance.
+ * - :py:attr:`~save_chunks_to_file`
+ - Save chunks to a local file.
+ * - :py:attr:`~download_project`
+ - Download all project files in the working directory of the Mechanical instance.
+ * - :py:attr:`~clear`
+ - Clear the database.
+ * - :py:attr:`~log_message`
+ - Log the message using the given log level.
+ * - :py:attr:`~log_debug`
+ - Log the debug message.
+ * - :py:attr:`~log_info`
+ - Log the info message.
+ * - :py:attr:`~log_warning`
+ - Log the warning message.
+ * - :py:attr:`~log_error`
+ - Log the error message.
+ * - :py:attr:`~verify_valid_connection`
+ - Verify whether the connection to Mechanical is valid.
+
+
+ .. tab-item:: Properties
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+ * - :py:attr:`~log`
+ - Log associated with the current Mechanical instance.
+ * - :py:attr:`~version`
+ - Get the Mechanical version based on the instance.
+ * - :py:attr:`~name`
+ - Name (unique identifier) of the Mechanical instance.
+ * - :py:attr:`~busy`
+ - Return True when the Mechanical gRPC server is executing a command.
+ * - :py:attr:`~locked`
+ - Instance is in use within a pool.
+ * - :py:attr:`~is_alive`
+ - Whether there is an active connection to the Mechanical gRPC server.
+ * - :py:attr:`~project_directory`
+ - Get the project directory for the currently connected Mechanical instance.
+ * - :py:attr:`~exited`
+ - Whether Mechanical already exited.
+
+
+
+ .. tab-item:: Static methods
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+ * - :py:attr:`~set_log_level`
+ - Set the log level.
+ * - :py:attr:`~convert_to_server_log_level`
+ - Convert the log level to the server log level.
+
+
+ .. tab-item:: Special methods
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+ * - :py:attr:`~__del__`
+ - Clean up on exit.
+ * - :py:attr:`~__repr__`
+ - Get the user-readable string form of the Mechanical instance.
+
+
+
+
+Import detail
+-------------
+
+ from ansys.mechanical.core.mechanical import Mechanical
+
+
+Property detail
+---------------
+.. py:property:: log
+
+ Log associated with the current Mechanical instance.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:property:: version
+ :type: str
+
+
+ Get the Mechanical version based on the instance.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Examples
+
+ Get the version of the connected Mechanical instance.
+
+ >>> mechanical.version
+ '231'
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:property:: name
+
+ Name (unique identifier) of the Mechanical instance.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:property:: busy
+
+ Return True when the Mechanical gRPC server is executing a command.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:property:: locked
+
+ Instance is in use within a pool.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:property:: is_alive
+ :type: bool
+
+
+ Whether there is an active connection to the Mechanical gRPC server.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:property:: project_directory
+
+ Get the project directory for the currently connected Mechanical instance.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Examples
+
+ Get the project directory of the connected Mechanical instance.
+
+ >>> mechanical.project_directory
+ '/tmp/ANSYS.username.1/AnsysMech3F97/Project_Mech_Files/'
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:property:: exited
+
+ Whether Mechanical already exited.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+
+
+Method detail
+-------------
+.. py:method:: __del__()
+
+
+ Clean up on exit.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: set_log_level(loglevel)
+ :staticmethod:
+
+
+
+ Set the log level.
+
+
+ :Parameters:
+
+ **loglevel** : :class:`python:str`, :class:`python:int`
+ Level of logging. Options are ``"DEBUG"``, ``"INFO"``, ``"WARNING"``
+ and ``"ERROR"``.
+
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Examples
+
+ Set the log level to the ``"DEBUG"`` level.
+
+ # >>> mechanical.set_log_level('DEBUG')
+ #
+ # Set the log level to info
+ #
+ # >>> mechanical.set_log_level('INFO')
+ #
+ # Set the log level to warning
+ #
+ # >>> mechanical.set_log_level('WARNING')
+ #
+ # Set the log level to error
+ #
+ # >>> mechanical.set_log_level('ERROR')
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: get_product_info()
+
+
+ Get product information by running a script on the Mechanical gRPC server.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: __repr__()
+
+
+ Get the user-readable string form of the Mechanical instance.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: launch(cleanup_on_exit=True)
+
+
+ Launch Mechanical in batch or UI mode.
+
+
+ :Parameters:
+
+ **cleanup_on_exit** : :ref:`bool `, :obj:`optional`
+ Whether to exit Mechanical when Python exits. The default is ``True``.
+ When ``False``, Mechanical is not exited when the garbage for this
+ Mechanical instance is collected.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: wait_till_mechanical_is_ready(wait_time=-1)
+
+
+ Wait until Mechanical is ready.
+
+
+ :Parameters:
+
+ **wait_time** : :class:`python:float`, :obj:`optional`
+ Maximum allowable time in seconds for connecting to the Mechanical gRPC server.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: convert_to_server_log_level(log_level)
+ :staticmethod:
+
+
+
+ Convert the log level to the server log level.
+
+
+ :Parameters:
+
+ **log_level** : :class:`python:str`
+ Level of logging. Options are ``"DEBUG"``, ``"INFO"``, ``"WARNING"``,
+ ``"ERROR"``, and ``"CRITICAL"``.
+
+ :Returns:
+
+ :obj:`Converted` :obj:`log` :obj:`level` :obj:`for` :obj:`the` server.
+ ..
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: run_python_script(script_block: str, enable_logging=False, log_level='WARNING', progress_interval=2000)
+
+
+ Run a Python script block inside Mechanical.
+
+ It returns the string value of the last executed statement. If the value cannot be
+ returned as a string, it will return an empty string.
+
+ :Parameters:
+
+ **script_block** : :class:`python:str`
+ Script block (one or more lines) to run.
+
+ **enable_logging: bool, optional**
+ Whether to enable logging. The default is ``False``.
+
+ **log_level: str**
+ Level of logging. The default is ``"WARNING"``. Options are ``"DEBUG"``,
+ ``"INFO"``, ``"WARNING"``, and ``"ERROR"``.
+
+ **progress_interval: int, optional**
+ Frequency in milliseconds for getting log messages from the server.
+ The default is ``2000``.
+
+ :Returns:
+
+ :class:`python:str`
+ Script result.
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Examples
+
+ Return a value from a simple calculation.
+
+ >>> mechanical.run_python_script('2+3')
+ '5'
+
+ Return a string value from Project object.
+
+ >>> mechanical.run_python_script('ExtAPI.DataModel.Project.ProductVersion')
+ '2023 R1'
+
+ Return an empty string, when you try to return the Project object.
+
+ >>> mechanical.run_python_script('ExtAPI.DataModel.Project')
+ ''
+
+ Return an empty string for assignments.
+
+ >>> mechanical.run_python_script('version = ExtAPI.DataModel.Project.ProductVersion')
+ ''
+
+ Return value from the last executed statement from a variable.
+
+ >>> script='''
+ addition = 2 + 3
+ multiplication = 3 * 4
+ multiplication
+ '''
+ >>> mechanical.run_python_script(script)
+ '12'
+
+ Return value from last executed statement from a function call.
+
+ >>> script='''
+ import math
+ math.pow(2,3)
+ '''
+ >>> mechanical.run_python_script(script)
+ '8'
+
+ Handle an error scenario.
+
+ >>> script = 'hello_world()'
+ >>> import grpc
+ >>> try:
+ mechanical.run_python_script(script)
+ except grpc.RpcError as error:
+ print(error.details())
+ name 'hello_world' is not defined
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: run_python_script_from_file(file_path, enable_logging=False, log_level='WARNING', progress_interval=2000)
+
+
+ Run the contents a python file inside Mechanical.
+
+ It returns the string value of the last executed statement. If the value cannot be
+ returned as a string, it will return an empty string.
+
+ :Parameters:
+
+ **file_path**
+ Path for the Python file.
+
+ **enable_logging: bool, optional**
+ Whether to enable logging. The default is ``False``.
+
+ **log_level: str**
+ Level of logging. The default is ``"WARNING"``. Options are ``"DEBUG"``,
+ ``"INFO"``, ``"WARNING"``, and ``"ERROR"``.
+
+ **progress_interval: int, optional**
+ Frequency in milliseconds for getting log messages from the server.
+ The default is ``2000``.
+
+ :Returns:
+
+ :class:`python:str`
+ Script result.
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Examples
+
+ Return a value from a simple calculation.
+
+ Contents of **simple.py** file
+
+ 2+3
+
+ >>> mechanical.run_python_script_from_file('simple.py')
+ '5'
+
+ Return a value from a simple function call.
+
+ Contents of **test.py** file
+
+ import math
+
+ math.pow(2,3)
+
+ >>> mechanical.run_python_script_from_file('test.py')
+ '8'
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: exit(force=False)
+
+
+ Exit Mechanical.
+
+
+ :Parameters:
+
+ **force** : :ref:`bool `, :obj:`optional`
+ Whether to force Mechanical to exit. The default is ``False``, in which case
+ only Mechanical in UI mode asks for confirmation. This parameter overrides
+ any environment variables that may inhibit exiting Mechanical.
+
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Examples
+
+ Exit Mechanical.
+
+ >>> mechanical.Exit(force=True)
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: upload(file_name, file_location_destination=None, chunk_size=DEFAULT_FILE_CHUNK_SIZE, progress_bar=True)
+
+
+ Upload a file to the Mechanical instance.
+
+
+ :Parameters:
+
+ **file_name** : :class:`python:str`
+ Local file to upload. Only the file name is needed if the file
+ is relative to the current working directory. Otherwise, the full path
+ is needed.
+
+ **file_location_destination** : :class:`python:str`, :obj:`optional`
+ File location on the Mechanical server to upload the file to. The default is
+ ``None``, in which case the project directory is used.
+
+ **chunk_size** : :class:`python:int`, :obj:`optional`
+ Chunk size in bytes. The default is ``1048576``.
+
+ **progress_bar** : :ref:`bool `, :obj:`optional`
+ Whether to show a progress bar using ``tqdm``. The default is ``True``.
+ A progress bar is helpful for viewing upload progress.
+
+ :Returns:
+
+ :class:`python:str`
+ Base name of the uploaded file.
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Examples
+
+ Upload the ``hsec.x_t`` file with the progress bar not shown.
+
+ >>> mechanical.upload('hsec.x_t', progress_bar=False)
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: get_file_chunks(file_location, file_name, chunk_size, progress_bar)
+
+
+ Construct the file upload request for the server.
+
+
+ :Parameters:
+
+ **file_location_destination** : :class:`python:str`, :obj:`optional`
+ Directory where the file to upload to the server is located.
+
+ **file_name** : :class:`python:str`
+ Name of the file to upload.
+
+ **chunk_size** : :class:`python:int`
+ Chunk size in bytes.
+
+ **progress_bar** : :ref:`bool `
+ Whether to show a progress bar using ``tqdm``.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: list_files()
+
+
+ List the files in the working directory of Mechanical.
+
+
+
+ :Returns:
+
+ :class:`python:list`
+ List of files in the working directory of Mechanical.
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Examples
+
+ List the files in the working directory.
+
+ >>> files = mechanical.list_files()
+ >>> for file in files: print(file)
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: download(files, target_dir=None, chunk_size=DEFAULT_CHUNK_SIZE, progress_bar=None, recursive=False)
+
+
+ Download files from the working directory of the Mechanical instance.
+
+ It downloads them from the working directory to the target directory. It returns the list
+ of local file paths for the downloaded files.
+
+ :Parameters:
+
+ **files** : :class:`python:str`, :class:`python:list`\[:class:`python:str`], :class:`python:tuple`\(:class:`python:str`)
+ One or more files on the Mechanical server to download. The files must be
+ in the same directory as the Mechanical instance. You can use the
+ :func:`Mechanical.list_files `
+ function to list current files. Alternatively, you can specify *glob expressions* to
+ match file names. For example, you could use ``file*`` to match every file whose
+ name starts with ``file``.
+
+ **target_dir: str**
+ Default directory to copy the downloaded files to. The default is ``None`` and
+ current working directory will be used as target directory.
+
+ **chunk_size** : :class:`python:int`, :obj:`optional`
+ Chunk size in bytes. The default is ``262144``. The value must be less than 4 MB.
+
+ **progress_bar** : :ref:`bool `, :obj:`optional`
+ Whether to show a progress bar using ``tqdm``. The default is ``None``, in
+ which case a progress bar is shown. A progress bar is helpful for viewing download
+ progress.
+
+ **recursive** : :ref:`bool `, :obj:`optional`
+ Whether to use recursion when using a glob pattern search. The default is ``False``.
+
+ :Returns:
+
+ :obj:`List`\[:class:`python:str`]
+ List of local file paths.
+
+
+
+
+
+
+
+
+ .. rubric:: Notes
+
+ There are some considerations to keep in mind when using the ``download()`` method:
+
+ * The glob pattern search does not search recursively in remote instances.
+ * In a remote instance, it is not possible to list or download files in a
+ location other than the Mechanical working directory.
+ * If you are connected to a local instance and provide a file path, downloading files
+ from a different folder is allowed but is not recommended.
+
+
+ .. rubric:: Examples
+
+ Download a single file.
+
+ >>> local_file_path_list = mechanical.download('file.out')
+
+ Download all files starting with ``file``.
+
+ >>> local_file_path_list = mechanical.download('file*')
+
+ Download every file in the Mechanical working directory.
+
+ >>> local_file_path_list = mechanical.download('*.*')
+
+ Alternatively, the recommended method is to use the
+ :func:`download_project() `
+ method to download all files.
+
+ >>> local_file_path_list = mechanical.download_project()
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: save_chunks_to_file(responses, filename, progress_bar=False, target_name='')
+
+
+ Save chunks to a local file.
+
+
+ :Parameters:
+
+ **responses**
+ ..
+
+ **filename** : :class:`python:str`
+ Name of the local file to save chunks to.
+
+ **progress_bar** : :ref:`bool `, :obj:`optional`
+ Whether to show a progress bar using ``tqdm``. The default is ``False``.
+
+ **target_name** : :class:`python:str`, :obj:`optional`
+ Name of the target file on the server. The default is ``""``. The file
+ must be in the same directory as the Mechanical instance. You can use the
+ ``mechanical.list_files()`` function to list current files.
+
+ :Returns:
+
+ **file_size** : :class:`python:int`
+ File size saved in bytes. If ``0`` is returned, no file was written.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: download_project(extensions=None, target_dir=None, progress_bar=False)
+
+
+ Download all project files in the working directory of the Mechanical instance.
+
+ It downloads them from the working directory to the target directory. It returns the list
+ of local file paths for the downloaded files.
+
+ :Parameters:
+
+ **extensions** : :class:`python:list`\[:class:`python:str`], :class:`python:tuple`\[:class:`python:str`], :obj:`optional`
+ List of extensions for filtering files before downloading them. The
+ default is ``None``.
+
+ **target_dir** : :class:`python:str`, :obj:`optional`
+ Path for downloading the files to. The default is ``None``.
+
+ **progress_bar** : :ref:`bool `, :obj:`optional`
+ Whether to show a progress bar using ``tqdm``. The default is ``False``.
+ A progress bar is helpful for viewing download progress.
+
+ :Returns:
+
+ :obj:`List`\[:class:`python:str`]
+ List of local file paths.
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Examples
+
+ Download all the files in the project.
+
+ >>> local_file_path_list = mechanical.download_project()
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: clear()
+
+
+ Clear the database.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Examples
+
+ Clear the database.
+
+ >>> mechanical.clear()
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: log_message(log_level, message)
+
+
+ Log the message using the given log level.
+
+
+ :Parameters:
+
+ **log_level: str**
+ Level of logging. Options are ``"DEBUG"``, ``"INFO"``, ``"WARNING"``,
+ and ``"ERROR"``.
+
+ **message** : :class:`python:str`
+ Message to log.
+
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Examples
+
+ Log a debug message.
+
+ >>> mechanical.log_message('DEBUG', 'debug message')
+
+ Log an info message.
+
+ >>> mechanical.log_message('INFO', 'info message')
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: log_debug(message)
+
+
+ Log the debug message.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: log_info(message)
+
+
+ Log the info message.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: log_warning(message)
+
+
+ Log the warning message.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: log_error(message)
+
+
+ Log the error message.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: verify_valid_connection()
+
+
+ Verify whether the connection to Mechanical is valid.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/mechanical/index.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/mechanical/index.rst.txt
new file mode 100644
index 000000000..8aecae2c9
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/mechanical/index.rst.txt
@@ -0,0 +1,885 @@
+.. vale off
+
+
+
+
+
+
+
+The ``mechanical.py`` module
+============================
+
+.. py:module:: ansys.mechanical.core.mechanical
+
+
+Summary
+-------
+
+
+
+
+
+
+
+
+
+
+.. py:currentmodule:: mechanical
+.. tab-set::
+
+
+
+
+ .. tab-item:: Classes
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~ansys.mechanical.core.mechanical.Mechanical`
+ - Connects to a gRPC Mechanical server and allows commands to be passed.
+
+
+
+
+
+ .. tab-item:: Functions
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~setup_logger`
+ - Initialize the logger for the given mechanical instance.
+
+
+ * - :py:obj:`~suppress_logging`
+ - Decorate a function to suppress the logging for a Mechanical instance.
+
+
+ * - :py:obj:`~port_in_use`
+ - Check whether a port is in use at the given host.
+
+
+ * - :py:obj:`~check_ports`
+ - Check the state of ports in a port range.
+
+
+ * - :py:obj:`~close_all_local_instances`
+ - Close all Mechanical instances within a port range.
+
+
+ * - :py:obj:`~create_ip_file`
+ - Create the ``mylocal.ip`` file needed to change the IP address of the gRPC server.
+
+
+ * - :py:obj:`~get_mechanical_path`
+ - Get path.
+
+
+ * - :py:obj:`~check_valid_mechanical`
+ - Change to see if the default Mechanical path is valid.
+
+
+ * - :py:obj:`~change_default_mechanical_path`
+ - Change default path.
+
+
+ * - :py:obj:`~save_mechanical_path`
+ - Save path.
+
+
+ * - :py:obj:`~get_start_instance`
+ - Check if the ``PYMECHANICAL_START_INSTANCE`` environment variable exists and is valid.
+
+
+ * - :py:obj:`~launch_grpc`
+ - Start Mechanical locally in gRPC mode.
+
+
+ * - :py:obj:`~launch_remote_mechanical`
+ - Start Mechanical remotely using the Product Instance Management (PIM) API.
+
+
+ * - :py:obj:`~launch_mechanical`
+ - Start Mechanical locally.
+
+
+
+ .. tab-item:: Attributes
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~client_to_server_loglevel`
+ -
+
+
+
+ .. tab-item:: Constants
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~MAX_MESSAGE_LENGTH`
+ - Default message length.
+
+
+ * - :py:obj:`~DEFAULT_CHUNK_SIZE`
+ - Default chunk size.
+
+
+ * - :py:obj:`~DEFAULT_FILE_CHUNK_SIZE`
+ - Default file chunk size.
+
+
+ * - :py:obj:`~LOCALHOST`
+ - Localhost address.
+
+
+ * - :py:obj:`~MECHANICAL_DEFAULT_PORT`
+ - Default Mechanical port.
+
+
+ * - :py:obj:`~GALLERY_INSTANCE`
+ - List of gallery instances.
+
+
+
+
+
+
+
+.. toctree::
+ :titlesonly:
+ :maxdepth: 1
+ :hidden:
+
+ Mechanical
+
+
+
+
+
+
+
+
+
+Description
+-----------
+
+Connect to Mechanical gRPC server and issues commands.
+
+..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+Module detail
+-------------
+
+.. py:function:: setup_logger(loglevel='INFO', log_file=True, mechanical_instance=None)
+
+
+ Initialize the logger for the given mechanical instance.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:function:: suppress_logging(func)
+
+
+ Decorate a function to suppress the logging for a Mechanical instance.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:function:: port_in_use(port, host=LOCALHOST)
+
+
+ Check whether a port is in use at the given host.
+
+ You must actually *bind* the address. Just checking if you can create
+ a socket is insufficient because it is possible to run into permission
+ errors like::
+
+ An attempt was made to access a socket in a way forbidden by its
+ access permissions.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:function:: check_ports(port_range, ip='localhost')
+
+
+ Check the state of ports in a port range.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:function:: close_all_local_instances(port_range=None, use_thread=True)
+
+
+ Close all Mechanical instances within a port range.
+
+ You can use this method when cleaning up from a failed pool or
+ batch run.
+
+ :Parameters:
+
+ **port_range** : :class:`python:list`, :obj:`optional`
+ List of a range of ports to use when cleaning up Mechanical. The
+ default is ``None``, in which case the ports managed by
+ PyMechanical are used.
+
+ **use_thread** : :ref:`bool `, :obj:`optional`
+ Whether to use threads to close the Mechanical instances.
+ The default is ``True``. So this call will return immediately.
+
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Examples
+
+ Close all Mechanical instances connected on local ports.
+
+ >>> import ansys.mechanical.core as pymechanical
+ >>> pymechanical.close_all_local_instances()
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:function:: create_ip_file(ip, path)
+
+
+ Create the ``mylocal.ip`` file needed to change the IP address of the gRPC server.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:function:: get_mechanical_path(allow_input=True)
+
+
+ Get path.
+
+ Deprecated - use `ansys.tools.path.get_mechanical_path` instead
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:function:: check_valid_mechanical()
+
+
+ Change to see if the default Mechanical path is valid.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:function:: change_default_mechanical_path(exe_loc)
+
+
+ Change default path.
+
+ Deprecated - use `ansys.tools.path.change_default_mechanical_path` instead.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:function:: save_mechanical_path(exe_loc=None)
+
+
+ Save path.
+
+ Deprecated - use `ansys.tools.path.save_mechanical_path` instead.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:function:: get_start_instance(start_instance_default=True)
+
+
+ Check if the ``PYMECHANICAL_START_INSTANCE`` environment variable exists and is valid.
+
+
+ :Parameters:
+
+ **start_instance_default** : :ref:`bool `, :obj:`optional`
+ Value to return when ``PYMECHANICAL_START_INSTANCE`` is unset.
+
+ :Returns:
+
+ :ref:`bool `
+ ``True`` when the ``PYMECHANICAL_START_INSTANCE`` environment variable exists
+ and is valid, ``False`` when this environment variable does not exist or is not valid.
+ If it is unset, ``start_instance_default`` is returned.
+
+
+
+
+ :Raises:
+
+ :obj:`OSError`
+ Raised when ``PYMECHANICAL_START_INSTANCE`` is not either ``True`` or ``False``
+ (case independent).
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:function:: launch_grpc(exec_file='', batch=True, port=MECHANICAL_DEFAULT_PORT, additional_switches=None, additional_envs=None, verbose=False) -> int
+
+
+ Start Mechanical locally in gRPC mode.
+
+
+ :Parameters:
+
+ **exec_file** : :class:`python:str`, :obj:`optional`
+ Path for the Mechanical executable file. The default is ``None``, in which
+ case the cached location is used.
+
+ **batch** : :ref:`bool `, :obj:`optional`
+ Whether to launch Mechanical in batch mode. The default is ``True``.
+ When ``False``, Mechanical is launched in UI mode.
+
+ **port** : :class:`python:int`, :obj:`optional`
+ Port to launch the Mechanical instance on. The default is
+ ``MECHANICAL_DEFAULT_PORT``. The final port is the first
+ port available after (or including) this port.
+
+ **additional_switches** : :class:`python:list`, :obj:`optional`
+ List of additional arguments to pass. The default is ``None``.
+
+ **additional_envs** : :obj:`dictionary`, :obj:`optional`
+ Dictionary of additional environment variables to pass. The default
+ is ``None``.
+
+ **verbose** : :ref:`bool `, :obj:`optional`
+ Whether to print all output when launching and running Mechanical. The
+ default is ``False``. Printing all output is not recommended unless
+ you are debugging the startup of Mechanical.
+
+ :Returns:
+
+ :class:`python:int`
+ Port number that the Mechanical instance started on.
+
+
+
+
+
+
+
+
+ .. rubric:: Notes
+
+ If ``PYMECHANICAL_START_INSTANCE`` is set to FALSE, the ``launch_mechanical``
+ method looks for an existing instance of Mechanical at ``PYMECHANICAL_IP`` on port
+ ``PYMECHANICAL_PORT``, with default to ``127.0.0.1`` and ``10000`` if unset.
+ This is typically used for automated documentation and testing.
+
+
+ .. rubric:: Examples
+
+ Launch Mechanical using the default configuration.
+
+ >>> from ansys.mechanical.core import launch_mechanical
+ >>> mechanical = launch_mechanical()
+
+ Launch Mechanical using a specified executable file.
+
+ >>> exec_file_path = 'C:/Program Files/ANSYS Inc/v231/aisol/bin/win64/AnsysWBU.exe'
+ >>> mechanical = launch_mechanical(exec_file_path)
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:function:: launch_remote_mechanical(version=None) -> (grpc.Channel, ansys.platform.instancemanagement.Instance)
+
+
+ Start Mechanical remotely using the Product Instance Management (PIM) API.
+
+ When calling this method, you must ensure that you are in an environment
+ where PyPIM is configured. You can use the
+ :func:`pypim.is_configured `
+ method to verify that PyPIM is configured.
+
+ :Parameters:
+
+ **version** : :class:`python:str`, :obj:`optional`
+ Mechanical version to run in the three-digit format. For example, ``"231"`` to
+ run 2023 R1. The default is ``None``, in which case the server runs the latest
+ installed version.
+
+ :Returns:
+
+ :obj:`Tuple` :obj:`containing` :obj:`channel`, remote_instance.
+ ..
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:function:: launch_mechanical(allow_input=True, exec_file=None, batch=True, loglevel='ERROR', log_file=False, log_mechanical=None, additional_switches=None, additional_envs=None, start_timeout=120, port=None, ip=None, start_instance=None, verbose_mechanical=False, clear_on_connect=False, cleanup_on_exit=True, version=None, keep_connection_alive=True) -> Mechanical
+
+
+ Start Mechanical locally.
+
+
+ :Parameters:
+
+ **allow_input: bool, optional**
+ Whether to allow user input when discovering the path to the Mechanical
+ executable file.
+
+ **exec_file** : :class:`python:str`, :obj:`optional`
+ Path for the Mechanical executable file. The default is ``None``,
+ in which case the cached location is used. If PyPIM is configured
+ and this parameter is set to ``None``, PyPIM launches Mechanical
+ using its ``version`` parameter.
+
+ **batch** : :ref:`bool `, :obj:`optional`
+ Whether to launch Mechanical in batch mode. The default is ``True``.
+ When ``False``, Mechanical launches in UI mode.
+
+ **loglevel** : :class:`python:str`, :obj:`optional`
+ Level of messages to print to the console.
+ Options are:
+
+ - ``"WARNING"``: Prints only Ansys warning messages.
+ - ``"ERROR"``: Prints only Ansys error messages.
+ - ``"INFO"``: Prints all Ansys messages.
+
+ The default is ``WARNING``.
+
+ **log_file** : :ref:`bool `, :obj:`optional`
+ Whether to copy the messages to a file named ``logs.log``, which is
+ located where the Python script is executed. The default is ``False``.
+
+ **log_mechanical** : :class:`python:str`, :obj:`optional`
+ Path to the output file on the local disk to write every script
+ command to. The default is ``None``. However, you might set
+ ``"log_mechanical='pymechanical_log.txt'"`` to write all commands that are
+ sent to Mechanical via PyMechanical to this file. You can then use these
+ commands to run a script within Mechanical without PyMechanical.
+
+ **additional_switches** : :class:`python:list`, :obj:`optional`
+ Additional switches for Mechanical. The default is ``None``.
+
+ **additional_envs** : :obj:`dictionary`, :obj:`optional`
+ Dictionary of additional environment variables to pass. The default
+ is ``None``.
+
+ **start_timeout** : :class:`python:float`, :obj:`optional`
+ Maximum allowable time in seconds to connect to the Mechanical server.
+ The default is ``120``.
+
+ **port** : :class:`python:int`, :obj:`optional`
+ Port to launch the Mechanical gRPC server on. The default is ``None``,
+ in which case ``10000`` is used. The final port is the first
+ port available after (or including) this port. You can override the
+ default behavior of this parameter with the
+ ``PYMECHANICAL_PORT=`` environment variable.
+
+ **ip** : :class:`python:str`, :obj:`optional`
+ IP address to use only when ``start_instance`` is ``False``. The
+ default is ``None``, in which case ``"127.0.0.1"`` is used. If you
+ provide an IP address, ``start_instance`` is set to ``False``.
+ A host name can be provided as an alternative to an IP address.
+
+ **start_instance** : :ref:`bool `, :obj:`optional`
+ Whether to launch and connect to a new Mechanical instance. The default
+ is ``None``, in which case an attempt is made to connect to an existing
+ Mechanical instance at the given ``ip`` and ``port`` parameters, which have
+ defaults of ``"127.0.0.1"`` and ``10000`` respectively. When ``True``,
+ a local instance of Mechanical is launched. You can override the default
+ behavior of this parameter with the ``PYMECHANICAL_START_INSTANCE=FALSE``
+ environment variable.
+
+ **verbose_mechanical** : :ref:`bool `, :obj:`optional`
+ Whether to enable printing of all output when launching and running
+ a Mechanical instance. The default is ``False``. This parameter should be
+ set to ``True`` for debugging only as output can be tracked within
+ PyMechanical.
+
+ **clear_on_connect** : :ref:`bool `, :obj:`optional`
+ When ``start_instance`` is ``False``, whether to clear the environment
+ when connecting to Mechanical. The default is ``False``. When ``True``,
+ a fresh environment is provided when you connect to Mechanical.
+
+ **cleanup_on_exit** : :ref:`bool `, :obj:`optional`
+ Whether to exit Mechanical when Python exits. The default is ``True``.
+ When ``False``, Mechanical is not exited when the garbage for this Mechanical
+ instance is collected.
+
+ **version** : :class:`python:str`, :obj:`optional`
+ Mechanical version to run in the three-digit format. For example, ``"231"``
+ for 2023 R1. The default is ``None``, in which case the server runs the
+ latest installed version. If PyPIM is configured and ``exce_file=None``,
+ PyPIM launches Mechanical using its ``version`` parameter.
+
+ **keep_connection_alive** : :ref:`bool `, :obj:`optional`
+ Whether to keep the gRPC connection alive by running a background thread
+ and making dummy calls for remote connections. The default is ``True``.
+
+ :Returns:
+
+ :obj:`ansys.mechanical.core.mechanical.Mechanical`
+ Instance of Mechanical.
+
+
+
+
+
+
+
+
+ .. rubric:: Notes
+
+ If the environment is configured to use `PyPIM `_
+ and ``start_instance=True``, then starting the instance is delegated to PyPIM.
+ In this case, most of the preceding parameters are ignored because the server-side
+ configuration is used.
+
+
+ .. rubric:: Examples
+
+ Launch Mechanical.
+
+ >>> from ansys.mechanical.core import launch_mechanical
+ >>> mech = launch_mechanical()
+
+ Launch Mechanical using a specified executable file.
+
+ >>> exec_file_path = 'C:/Program Files/ANSYS Inc/v231/aisol/bin/win64/AnsysWBU.exe'
+ >>> mech = launch_mechanical(exec_file_path)
+
+ Connect to an existing Mechanical instance at IP address ``192.168.1.30`` on port
+ ``50001``.
+
+ >>> mech = launch_mechanical(start_instance=False, ip='192.168.1.30', port=50001)
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:data:: MAX_MESSAGE_LENGTH
+
+
+ Default message length.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:data:: DEFAULT_CHUNK_SIZE
+
+
+ Default chunk size.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:data:: DEFAULT_FILE_CHUNK_SIZE
+
+
+ Default file chunk size.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:data:: LOCALHOST
+ :value: '127.0.0.1'
+
+
+
+ Localhost address.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:data:: MECHANICAL_DEFAULT_PORT
+ :value: 10000
+
+
+
+ Default Mechanical port.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:data:: GALLERY_INSTANCE
+ :value: [None]
+
+
+
+ List of gallery instances.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:data:: client_to_server_loglevel
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/misc/index.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/misc/index.rst.txt
new file mode 100644
index 000000000..88c434a6c
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/misc/index.rst.txt
@@ -0,0 +1,329 @@
+.. vale off
+
+
+
+
+
+
+
+The ``misc.py`` module
+======================
+
+.. py:module:: ansys.mechanical.core.misc
+
+
+Summary
+-------
+
+
+
+
+
+
+
+
+.. py:currentmodule:: misc
+.. tab-set::
+
+
+
+
+
+
+
+ .. tab-item:: Functions
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~is_windows`
+ - Check if the host machine is on Windows.
+
+
+ * - :py:obj:`~get_mechanical_bin`
+ - Get the path for the Mechanical executable file based on the release version.
+
+
+ * - :py:obj:`~threaded`
+ - Decorate a function with this decorator to call it using a thread.
+
+
+ * - :py:obj:`~threaded_daemon`
+ - Decorate a function with this decorator to call it using a daemon thread.
+
+
+ * - :py:obj:`~check_valid_ip`
+ - Check if the IP address is valid.
+
+
+ * - :py:obj:`~check_valid_port`
+ - Check if the port is valid.
+
+
+ * - :py:obj:`~check_valid_start_instance`
+ - Check if the value obtained from the environmental variable is valid.
+
+
+ * - :py:obj:`~is_float`
+ - Check if a string can be converted to a float.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Description
+-----------
+
+Contain miscellaneous functions and methods at the module level.
+
+..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+Module detail
+-------------
+
+.. py:function:: is_windows()
+
+
+ Check if the host machine is on Windows.
+
+
+
+ :Returns:
+
+ ``True`` :obj:`if` :obj:`the` :obj:`host` :obj:`machine` :obj:`is` :obj:`on` :obj:`Windows`, ``False`` otherwise.
+ ..
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:function:: get_mechanical_bin(release_version)
+
+
+ Get the path for the Mechanical executable file based on the release version.
+
+
+ :Parameters:
+
+ **release_version: str**
+ Mechanical version using the three-digit format. For example, ``"231"`` for
+ 2023 R1.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:function:: threaded(func)
+
+
+ Decorate a function with this decorator to call it using a thread.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:function:: threaded_daemon(func)
+
+
+ Decorate a function with this decorator to call it using a daemon thread.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:function:: check_valid_ip(ip)
+
+
+ Check if the IP address is valid.
+
+
+ :Parameters:
+
+ **ip** : :class:`python:str`
+ IP address to check.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:function:: check_valid_port(port, lower_bound=1000, high_bound=60000)
+
+
+ Check if the port is valid.
+
+ Parameters
+ ---------
+ port : int
+ Port to check.
+ lower_bound : int, optional
+ Lowest possible value for the port. The default is ``1000``.
+ high_bound : int, optional
+ Highest possible value for the port. The default is ``60000``.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:function:: check_valid_start_instance(start_instance)
+
+
+ Check if the value obtained from the environmental variable is valid.
+
+
+ :Parameters:
+
+ **start_instance** : :class:`python:str`, :ref:`bool `
+ Value obtained from the corresponding environment variable.
+
+ :Returns:
+
+ :ref:`bool `
+ ``True`` if ``start_instance`` is ``True`` or ``"True"``,
+ ``False`` otherwise.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:function:: is_float(input_string)
+
+
+ Check if a string can be converted to a float.
+
+
+ :Parameters:
+
+ **input_string** : :class:`python:str`
+ String to check.
+
+ :Returns:
+
+ :ref:`bool `
+ ``True`` when conversion is possible, ``False`` otherwise.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/pool/LocalMechanicalPool.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/pool/LocalMechanicalPool.rst.txt
new file mode 100644
index 000000000..7b1866fe6
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/pool/LocalMechanicalPool.rst.txt
@@ -0,0 +1,532 @@
+.. vale off
+
+
+
+:class:`LocalMechanicalPool`
+============================
+
+.. py:class:: ansys.mechanical.core.pool.LocalMechanicalPool(n_instances, wait=True, port=MECHANICAL_DEFAULT_PORT, progress_bar=True, restart_failed=True, **kwargs)
+
+
+ Create a pool of Mechanical instances.
+
+
+ :Parameters:
+
+ **n_instance** : :class:`python:int`
+ Number of Mechanical instances to create in the pool.
+
+ **wait** : :ref:`bool `, :obj:`optional`
+ Whether to wait for the pool to be initialized. The default is
+ ``True``. When ``False``, the pool starts in the background, in
+ which case all resources might not be immediately available.
+
+ **starting_port** : :class:`python:int`, :obj:`optional`
+ Starting port for the instances. The default is ``10000``.
+
+ **progress_bar** : :ref:`bool `, :obj:`optional`
+ Whether to show a progress bar when starting the pool. The default
+ is ``True``, but the progress bar is not shown when ``wait=False``.
+
+ **restart_failed** : :ref:`bool `, :obj:`optional`
+ Whether to restart any failed instances in the pool. The default is
+ ``True``.
+
+ **\*\*kwargs** : :class:`python:dict`, :obj:`optional`
+ Additional keyword arguments. For a list of all keyword
+ arguments, use the :func:`ansys.mechanical.core.launch_mechanical`
+ function. If the ``exec_file`` keyword argument is found, it is used to
+ start instances. PyPIM is used to create instances if the following
+ conditions are met:
+
+ - PyPIM is configured.
+ - ``version`` is specified.
+ - ``exec_file`` is not specified.
+
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Examples
+
+ Create a pool of 10 Mechanical instances.
+
+ >>> from ansys.mechanical.core import LocalMechanicalPool
+ >>> pool = LocalMechanicalPool(10)
+ Creating Pool: 100%|########| 10/10 [00:01<00:00, 1.43it/s]
+
+ On Windows, create a pool while specifying the Mechanical executable file.
+
+ >>> exec_file = 'C:/Program Files/ANSYS Inc/v231/aisol/bin/winx64/AnsysWBU.exe'
+ >>> pool = LocalMechanicalPool(10, exec_file=exec_file)
+ Creating Pool: 100%|########| 10/10 [00:01<00:00, 1.43it/s]
+
+ On Linux, create a pool while specifying the Mechanical executable file.
+
+ >>> exec_file = '/ansys_inc/v231/aisol/.workbench'
+ >>> pool = LocalMechanicalPool(10, exec_file=exec_file)
+ Creating Pool: 100%|########| 10/10 [00:01<00:00, 1.43it/s]
+
+ In the PyPIM environment, create a pool.
+
+ >>> pool = LocalMechanicalPool(10, version="231")
+ Creating Pool: 100%|########| 10/10 [00:01<00:00, 1.43it/s]
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+
+.. py:currentmodule:: LocalMechanicalPool
+
+Overview
+--------
+
+.. tab-set::
+
+
+
+ .. tab-item:: Methods
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+ * - :py:attr:`~map`
+ - Run a user-defined function on each Mechanical instance in the pool.
+ * - :py:attr:`~run_batch`
+ - Run a batch of input files on the Mechanical instances in the pool.
+ * - :py:attr:`~next_available`
+ - Wait until a Mechanical instance is available and return this instance.
+ * - :py:attr:`~exit`
+ - Exit all Mechanical instances in the pool.
+
+
+ .. tab-item:: Properties
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+ * - :py:attr:`~ports`
+ - Get a list of the ports that are used.
+
+
+
+
+ .. tab-item:: Special methods
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+ * - :py:attr:`~__del__`
+ - Clean up when complete.
+ * - :py:attr:`~__len__`
+ - Get the number of instances in the pool.
+ * - :py:attr:`~__getitem__`
+ - Get an instance by an index.
+ * - :py:attr:`~__iter__`
+ - Iterate through active instances.
+ * - :py:attr:`~__str__`
+ - Get the string representation of this object.
+
+
+
+
+Import detail
+-------------
+
+ from ansys.mechanical.core.pool import LocalMechanicalPool
+
+
+Property detail
+---------------
+.. py:property:: ports
+
+ Get a list of the ports that are used.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Examples
+
+ Get the list of ports used by the pool of Mechanical instances.
+
+ >>> pool.ports
+ [10001, 10002]
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+
+
+Method detail
+-------------
+.. py:method:: map(func, iterable=None, clear_at_start=True, progress_bar=True, close_when_finished=False, timeout=None, wait=True)
+
+
+ Run a user-defined function on each Mechanical instance in the pool.
+
+
+ :Parameters:
+
+ **func** : :obj:`function`
+ Function with ``mechanical`` as the first argument. The subsequent
+ arguments should match the number of items in each iterable (if any).
+
+ **iterable** : :class:`python:list`, :class:`python:tuple`, :obj:`optional`
+ An iterable containing a set of arguments for the function.
+ The default is ``None``, in which case the function runs
+ once on each instance of Mechanical.
+
+ **clear_at_start** : :ref:`bool `, :obj:`optional`
+ Clear Mechanical at the start of execution. The default is
+ ``True``. Setting this to ``False`` might lead to instability.
+
+ **progress_bar** : :ref:`bool `, :obj:`optional`
+ Whether to show a progress bar when running the batch of input
+ files. The default is ``True``, but the progress bar is not shown
+ when ``wait=False``.
+
+ **close_when_finished** : :ref:`bool `, :obj:`optional`
+ Whether to close the instances when the function finishes running
+ on all instances in the pool. The default is ``False``.
+
+ **timeout** : :class:`python:float`, :obj:`optional`
+ Maximum runtime in seconds for each iteration. The default is
+ ``None``, in which case there is no timeout. If you specify a
+ value, each iteration is allowed to run only this number of
+ seconds. Once this value is exceeded, the batch process is
+ stopped and treated as a failure.
+
+ **wait** : :ref:`bool `, :obj:`optional`
+ Whether block execution must wait until the batch process is
+ complete. The default is ``True``.
+
+ :Returns:
+
+ :class:`python:list`
+ A list containing the return values for the function.
+ Failed runs do not return an output. Because return values
+ are not necessarily in the same order as the iterable,
+ you might want to add some sort of tracker to the return
+ of your function.
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Examples
+
+ Run several input files while storing the final routine. Note
+ how the function to map must use ``mechanical`` as the first argument.
+ The function can have any number of additional arguments.
+
+ >>> from ansys.mechanical.core import LocalMechanicalPool
+ >>> pool = LocalMechanicalPool(10)
+ >>> completed_indices = []
+ >>> def function(mechanical, name, script):
+ # name, script = args
+ mechanical.clear()
+ output = mechanical.run_python_script(script)
+ return name, output
+ >>> inputs = [("first","2+3"), ("second", "3+4")]
+ >>> output = pool.map(function, inputs, progress_bar=False, wait=True)
+ [('first', '5'), ('second', '7')]
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: run_batch(files, clear_at_start=True, progress_bar=True, close_when_finished=False, timeout=None, wait=True)
+
+
+ Run a batch of input files on the Mechanical instances in the pool.
+
+
+ :Parameters:
+
+ **files** : :class:`python:list`
+ List of input files.
+
+ **clear_at_start** : :ref:`bool `, :obj:`optional`
+ Whether to clear Mechanical when execution starts. The default is
+ ``True``. Setting this parameter to ``False`` might lead to
+ instability.
+
+ **progress_bar** : :ref:`bool `, :obj:`optional`
+ Whether to show a progress bar when running the batch of input
+ files. The default is ``True``, but the progress bar is not shown
+ when ``wait=False``.
+
+ **close_when_finished** : :ref:`bool `, :obj:`optional`
+ Whether to close the instances when running the batch
+ of input files is finished. The default is ``False``.
+
+ **timeout** : :class:`python:float`, :obj:`optional`
+ Maximum runtime in seconds for each iteration. The default is
+ ``None``, in which case there is no timeout. If you specify a
+ value, each iteration is allowed to run only this number of
+ seconds. Once this value is exceeded, the batch process is stopped
+ and treated as a failure.
+
+ **wait** : :ref:`bool `, :obj:`optional`
+ Whether block execution must wait until the batch process is complete.
+ The default is ``True``.
+
+ :Returns:
+
+ :class:`python:list`
+ List of text outputs from Mechanical for each batch run. The outputs
+ are not necessarily listed in the order of the inputs. Failed runs do
+ not return an output. Because the return outputs are not
+ necessarily in the same order as ``iterable``, you might
+ want to add some sort of tracker or note within the input files.
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Examples
+
+ Run 20 verification files on the pool.
+
+ >>> files = [f"test{index}.py" for index in range(1, 21)]
+ >>> outputs = pool.run_batch(files)
+ >>> len(outputs)
+ 20
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: next_available(return_index=False)
+
+
+ Wait until a Mechanical instance is available and return this instance.
+
+
+ :Parameters:
+
+ **return_index** : :ref:`bool `, :obj:`optional`
+ Whether to return the index along with the instance. The default
+ is ``False``.
+
+ :Returns:
+
+ :obj:`pymechanical.Mechanical`
+ Instance of Mechanical.
+
+ :class:`python:int`
+ Index within the pool of Mechanical instances. This index
+ is not returned by default.
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Examples
+
+ >>> mechanical = pool.next_available()
+ >>> mechanical
+ Ansys Mechanical [Ansys Mechanical Enterprise]
+ Product Version:231
+ Software build date:Wed Jul 13 14:29:54 2022
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: __del__()
+
+
+ Clean up when complete.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: exit(block=False)
+
+
+ Exit all Mechanical instances in the pool.
+
+
+ :Parameters:
+
+ **block** : :ref:`bool `, :obj:`optional`
+ Whether to wait until all processes close before exiting
+ all instances in the pool. The default is ``False``.
+
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Examples
+
+ >>> pool.exit()
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: __len__()
+
+
+ Get the number of instances in the pool.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: __getitem__(key)
+
+
+ Get an instance by an index.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: __iter__()
+
+
+ Iterate through active instances.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:method:: __str__()
+
+
+ Get the string representation of this object.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/pool/index.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/pool/index.rst.txt
new file mode 100644
index 000000000..d6a674283
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/pool/index.rst.txt
@@ -0,0 +1,130 @@
+.. vale off
+
+
+
+
+
+
+
+The ``pool.py`` module
+======================
+
+.. py:module:: ansys.mechanical.core.pool
+
+
+Summary
+-------
+
+
+
+
+
+
+
+
+
+
+.. py:currentmodule:: pool
+.. tab-set::
+
+
+
+
+ .. tab-item:: Classes
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~ansys.mechanical.core.pool.LocalMechanicalPool`
+ - Create a pool of Mechanical instances.
+
+
+
+
+
+ .. tab-item:: Functions
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~available_ports`
+ - Get a list of a given number of available ports starting from a specified port number.
+
+
+
+
+
+
+
+
+
+.. toctree::
+ :titlesonly:
+ :maxdepth: 1
+ :hidden:
+
+ LocalMechanicalPool
+
+
+
+
+
+
+
+
+
+Description
+-----------
+
+This module is for threaded implementations of the Mechanical interface.
+
+..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+Module detail
+-------------
+
+.. py:function:: available_ports(n_ports, starting_port=MECHANICAL_DEFAULT_PORT)
+
+
+ Get a list of a given number of available ports starting from a specified port number.
+
+
+ :Parameters:
+
+ **n_ports** : :class:`python:int`
+ Number of available ports to return.
+
+ **starting_port: int, option**
+ Number of the port to start the search from. The default is
+ ``MECHANICAL_DEFAULT_PORT``.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/ansys/mechanical/core/run/index.rst.txt b/version/0.11/_sources/api/ansys/mechanical/core/run/index.rst.txt
new file mode 100644
index 000000000..2b41b6641
--- /dev/null
+++ b/version/0.11/_sources/api/ansys/mechanical/core/run/index.rst.txt
@@ -0,0 +1,145 @@
+.. vale off
+
+
+
+
+
+
+
+The ``run.py`` module
+=====================
+
+.. py:module:: ansys.mechanical.core.run
+
+
+Summary
+-------
+
+
+
+
+
+
+
+
+.. py:currentmodule:: run
+.. tab-set::
+
+
+
+
+
+
+
+ .. tab-item:: Functions
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~cli`
+ - CLI tool to run mechanical.
+
+
+
+
+ .. tab-item:: Constants
+
+ .. list-table::
+ :header-rows: 0
+ :widths: auto
+
+
+ * - :py:obj:`~DRY_RUN`
+ - Dry run constant.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Description
+-----------
+
+Convenience CLI to run mechanical.
+
+..
+ !! processed by numpydoc !!
+
+
+
+
+
+
+Module detail
+-------------
+
+.. py:function:: cli(project_file: str, port: int, debug: bool, input_script: str, revision: int, graphical: bool, show_welcome_screen: bool, private_appdata: bool, exit: bool, features: str)
+
+
+ CLI tool to run mechanical.
+
+ USAGE:
+
+ The following example demonstrates the main use of this tool:
+
+ $ ansys-mechanical -r 241 -g
+
+ Starting Ansys Mechanical version 2023R2 in graphical mode...
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+.. py:data:: DRY_RUN
+ :value: False
+
+
+
+ Dry run constant.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..
+ !! processed by numpydoc !!
+
+
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/index.rst.txt b/version/0.11/_sources/api/index.rst.txt
new file mode 100644
index 000000000..89c9008f3
--- /dev/null
+++ b/version/0.11/_sources/api/index.rst.txt
@@ -0,0 +1,18 @@
+.. vale off
+
+API reference
+=============
+
+This section describes ansys.mechanical.core endpoints, their capabilities, and how
+to interact with them programmatically.
+
+.. toctree::
+ :titlesonly:
+ :maxdepth: 3
+
+ ansys.mechanical.core
+
+Additionally, see the API references for ``ansys-tools-path`` `here `_ .
+
+
+.. vale on
\ No newline at end of file
diff --git a/version/0.11/_sources/api/path.rst.txt b/version/0.11/_sources/api/path.rst.txt
new file mode 100644
index 000000000..db5cc7aad
--- /dev/null
+++ b/version/0.11/_sources/api/path.rst.txt
@@ -0,0 +1,18 @@
+.. _ref_ansys_tools_path_api:
+
+Ansys tools path
+================
+
+These methods on the ``ansys-tools-path`` module provide helper functions for configuration and discovery
+of the installation path of the Mechanical application.
+
+.. currentmodule:: ansys.tools.path
+
+.. autosummary::
+ :toctree: _autosummary
+
+
+ find_mechanical
+ get_mechanical_path
+ change_default_mechanical_path
+ save_mechanical_path
\ No newline at end of file
diff --git a/version/0.11/_sources/architecture.rst.txt b/version/0.11/_sources/architecture.rst.txt
new file mode 100644
index 000000000..4dd8fc2c1
--- /dev/null
+++ b/version/0.11/_sources/architecture.rst.txt
@@ -0,0 +1,225 @@
+.. _ref_architecture:
+
+PyMechanical architecture
+=========================
+
+PyMechanical provides a Python interface to Ansys Mechanical. Mechanical is a
+polyglot [#f1]_ desktop app whose graphical user interface (GUI) runs on either
+the Windows or Linux operating system. Mechanical's APIs are implemented in C#
+using .NET Framework 4.x. They are exposed to both C# and two implementations
+[#f2]_ of Python, namely IronPython [#f3]_ and CPython.
+
+Within Mechanical, Python scripting enables you to automate repetitive GUI
+actions. This is not unlike other apps developed either by Ansys or other
+software companies. Python scripting leverages the Mechanical API.
+
+Mechanical, like some other apps, is customizable. Using the same API that you
+would use for scripting, you can implement extensions that add to the
+capabilities of Mechanical. For example, buttons can be added to the GUI and
+custom objects can be added to the data model. Even third-party or in-house
+solvers can be integrated into Mechanical and can take advantage of the
+powerful meshing, generic CAD reader, and the intuitive pre- and post-
+processing experience of Mechanical.
+
+Before discussing how Mechanical's API is implemented, the software design
+pattern known as the *command pattern* is explored. This pattern can be used in many
+programming languages. For a general description (using the Java programming
+language) of the command pattern, see `Command Design Pattern
+ `_ in the
+*HowToDoInJava* newsletter.
+
+Command pattern
+---------------
+
+Many interactive apps use the command pattern. It turns anything that the user
+does within the app into a command object, which is immediately executed. This
+approach carries some additional benefits [#f4]_.
+
+More relevant to this discussion is how command patterns can be used to
+implement automation APIs. If every action is a command, then that Command can
+serve as the API. So long as the Commands can be encoded in text, a scripting
+language can be used to execute them. In fact, this approach is roughly how the
+Ansys Electronics Desktop, Ansys Mechanical APDL, and the Ansys Workbench apps
+implement automation APIs for scripting.
+
+Using the command pattern as a scripting API has disadvantages. Most
+importantly, command APIs are not symmetric. The four fundamental operations on
+data within a software app are ``Create``, ``Read``, ``Update``, and
+``Delete``. These are often abbreviated as CRUD. While you can conceptually
+update, create, and delete using commands, you can not read using a command.
+This makes it difficult to "visit" the app's data model.
+
+Mechanical API implementation
+-----------------------------
+
+Mechanical's API serves the needs of both *automation* and *customization*. For
+customization, it is necessary to read the data model. For example, when
+integrating a third-party solver, you must access boundary conditions,
+geometry, material properties, mesh, and connections to properly input them to
+the solver. As discussed earlier, the command pattern does not allow this kind
+of access. Due to this fact, the Mechanical API exposes its data model directly
+to the user. This is how a hypothetical command-based API would look for
+renaming an object.
+
+.. code:: python
+
+ RenameCommand(id=100, name="New name")
+
+Instead, an API based on a data model, like Mechanical's API, looks like this:
+
+.. code:: python
+
+ obj = GetObject(id=100)
+ print(obj.Name)
+ obj.Name = "New name"
+
+Notice that you could print the name by Reading a property of the object. A
+command-based API can not provide the same experience.
+
+
+PyMechanical remote interface
+-----------------------------
+
+One way to interact with the Mechanical API from Python is as a remote session.
+You can run Mechanical as a server and send a *Remote Procedure Call* (RPC).
+The server handles the RPC and returns the response to the client. Currently,
+sending commands as a string and getting the result as a string is the only
+option.
+
+PyMechanical embedded instance
+--------------------------------
+
+The embedded instance used by PyMechanical embeds an entire instance of the
+Mechanical app in-memory inside of a Python program. There is no additional
+running process associated with it. Mechanical's data model is directly
+available within Python, which means that the fully CRUD data model of the
+Mechanical API can be used.
+
+
+
+Distributed systems
+===================
+
+This section contains a very basic explanation of *distributed systems*. It is
+not meant be exhaustive and rigorous, but it instead introduces just the topics
+necessary as simply as possible to help you understand the choices made by the
+designers of PyMechanical.
+
+A distributed system is a software system that uses a network to distribute
+software across physical machines. With a distributed system, the individual
+pieces of that system do not share an address space and therefore cannot call
+functions of each other directly. Instead, they communicate with each other by
+sending messages to each other. Examples include email, multiplayer games, web
+apps, and high-performance computing, among other things.
+
+Distributed systems have unique characteristics when compared to classical
+software systems that share an address space. For instance, in a distributed
+system, any call can fail because of a problem with the network, and the caller
+can not always know whether a call has failed. For this reason, features of
+interest to distributed system designers, such as fault tolerance, redundancy,
+and idempotency, are not emphasized by classical software systems.
+
+In a distributed system, any computer can theoretically talk to any other
+computer. However, it is useful to divide them conceptually into clients and
+servers. Clients send requests to servers. Servers are expected return a
+response to the client.
+
+There are protocols [#f5]_ that describe how information moves between
+computers. The next section begins with an explanation of remote procedure calls.
+
+Remote procedure calls
+----------------------
+
+When one computer invokes a procedure on another computer using a network, it
+is said to have done an RPC. Unlike a normal procedure call, it can be
+unreliable and orders of magnitude slower. There also needs to be a handshake
+so that both sides understand how to interpret the bytes that move between
+computers [#f6]_. This handshake can be negotiated byte-per-byte, but in
+practice, the internet protocols provide useful conventions and standards that
+have been tried and tested.
+
+While standards are useful, it is not practical for every developer to craft
+packets to send over the wire by hand. In many programming languages, libraries,
+and tools wrap around the most popular conventions of internet protocols. These
+libraries and tools can be opinionated in how RPCs can and should be written.
+Some offer low-level method invocation facilities, like gRPC and zeroMQ. Others
+take a view on how RPCs should be done. Two such views are *Representational
+State Transfer* (REST) and *Remote Method Invocation* (RMI).
+
+REST
+----
+
+The design principles of REST are often credited as being responsible for the
+infinite scalability of the internet. It can be thought of as a set of styles
+or constraints that most web apps comply with or at least try to. Since REST
+is not an official standard, it can be implemented on any protocol. Since it
+was designed for HTTP, it is usually associated with it and its direct
+descendants [#f7]_. However, the principles of REST can be applied on any
+protocol.
+
+Applications that conform to REST are said to provide RESTful APIs. For a more
+detailed description, see `What is a REST API
+` on the *Red Hat
+Technology Topics* page.
+
+Remote method invocation
+------------------------
+
+In the nineties, *Object Oriented Programming* (OOP) exploded in popularity.
+Among other things, OOP allows programmers to add abstractions on top of data
+in their code using objects. When done well, objects can reduce code complexity
+and makes large scale software easier to reason about. It was thought that even
+the difference between RPCs and calls made in a program's address space could
+be abstracted. In effect, the user of an object does not need to know whether
+an object exists remotely or locally. Operations on that object could be done
+in the same way, regardless.
+
+This approach is known as *Remote Method Invocation* (RMI). RMI was widely
+implemented using CORBA, DCOM, Remoting (.NET), and Java RMI. However, this
+approach has fallen out of favor with the rise of the internet, as it was
+observed that it does not scale in the same way that something like REST does.
+As it became less popular, tools, and library support fell away. For instance,
+recent versions of .NET do not implement the Remoting library, and COM/DCOM are
+no longer taken seriously by web apps.
+
+For an illuminating discussion of the problems with RMI, see `Microservices and
+the First Law of Distributed Objects
+`_ on
+Martin Fowler's website.
+
+Remote mechanical
+=================
+
+Mechanical's official API is that of an object model, and PyMechanical provides
+exactly that API to Python. Because object models are not suitable as remote
+APIs, PyMechanical does not provide that API in a remote fashion. This is why
+the remote session API is based on strings, while the embedded instance API can
+provide the Mechanical API directly to Python.
+
+A different remote interface
+----------------------------
+
+An alternative remote API for Mechanical is practical so long as it is not
+using RMI. In fact, Mechanical uses a REST API internally as part of its GUI.
+This is not the official Mechanical API and is not currently documented. A new
+remote interface for Mechanical is not an immediate goal of PyMechanical.
+
+Using PyMechanical in a distributed system
+------------------------------------------
+
+You can still build a distributed system where Mechanical is run remotely using
+the embedded instance of Mechanical in PyMechanical. For this to work, Python
+itself would run remotely, and therefore the embedded instance would run
+remotely. The communication across the network in that system would be done in
+Python.
+
+
+.. rubric:: Footnotes
+
+.. [#f1] This means that it is implemented using more than one programming language.
+.. [#f2] The Python programming language is in fact only a specification of a language. CPython is the reference implementation developed by the creator of Python. There are others, including IronPython, PyPy, Cinder, and GraalPy.
+.. [#f3] IronPython is an implementation of the Python programming language using the DLR from .NET. It does not implement the Python/C API, which is why many Python packages cannot run within IronPython. It also currently only implements Python2.7.
+.. [#f4] *Undo* and *redo* are often implemented using a command pattern. They store all executed commands in a stack. Each command not only has the ability to execute, it also has the ability to undo itself. Undo and redo are then implemented by walking up and down the stack and executing the Command or its inverse function.
+.. [#f5] The Internet Protocol (IP) model is a layered description and specification that describes how information moves on the internet.
+.. [#f6] Actually, for normal procedure calls within an address space, there needs to be a similar handshake about how the inputs and arguments are passed. This is called a calling convention, and describes what to do with CPU registers.
+.. [#f7] HTTPS, HTTP/2, and HTTP/3.
\ No newline at end of file
diff --git a/version/0.11/_sources/changelog.rst.txt b/version/0.11/_sources/changelog.rst.txt
new file mode 100644
index 000000000..49c8e4faa
--- /dev/null
+++ b/version/0.11/_sources/changelog.rst.txt
@@ -0,0 +1,993 @@
+.. _ref_release_notes:
+
+Release notes
+#############
+
+This document contains the release notes for the project.
+
+.. vale off
+
+.. towncrier release notes start
+
+`0.11.1 `_ - 2024-06-21
+
+
+Added
+^^^^^
+
+- FEAT: Add an App method to print project tree for embedding scenario `#779 `_
+
+
+Changed
+^^^^^^^
+
+- Test specific version `#771 `_
+- chore: update CHANGELOG for v0.11.0 `#777 `_
+- chore: bump add-license-headers version to 0.3.2 `#782 `_
+
+
+Fixed
+^^^^^
+
+- fix sharing app instances, clarify contract `#784 `_
+
+`0.11.0 `_ - 2024-06-18
+===================================================================================
+
+
+Added
+^^^^^
+
+- feat: raise an exception if port or input script aren't provided in batch mode `#753 `_
+- feat: use changelog.rst instead of CHANGELOG.md for release notes `#757 `_
+- Doc: Add embedding api references `#758 `_
+- feat: implement autoapi `#761 `_
+
+
+Changed
+^^^^^^^
+
+- chore: update CHANGELOG for v0.10.11 `#749 `_
+- MAINT: Delete the apt-get lists after installing packages `#750 `_
+- [pre-commit.ci] pre-commit autoupdate `#774 `_
+
+
+Fixed
+^^^^^
+
+- FIX: Modify pre-commit hook `#763 `_
+- fix lifetime issue `#768 `_
+- fix pythonnet issue `#772 `_
+- Fix: Remove disable sec check `#776 `_
+
+
+Dependencies
+^^^^^^^^^^^^
+
+- MAINT: Bump the doc group with 4 updates `#751 `_
+- [pre-commit.ci] pre-commit autoupdate `#752 `_
+- MAINT: Bump the doc group with 3 updates `#755 `_
+- MAINT: Update files as per pyansys standards `#762 `_
+- MAINT: Bump grpcio from 1.64.0 to 1.64.1 in the core group `#764 `_
+- MAINT: Bump pytest from 8.2.1 to 8.2.2 in the tests group `#765 `_
+- MAINT: Bump the doc group with 2 updates `#766 `_
+
+
+Miscellaneous
+^^^^^^^^^^^^^
+
+- add method to update globals `#767 `_
+
+`0.10.11 `__ - 2024-05-23
+======================================================================================
+
+Added
+^^^^^
+
+- feat: Add tests for animation exports
+ `#729 `__
+- add feature flags to ansys-mechanical cli
+ `#735 `__
+- feat: Add test for deprecation warning
+ `#739 `__
+
+Changed
+^^^^^^^
+
+- chore: update CHANGELOG for v0.10.10
+ `#716 `__
+- Maint: Display image info
+ `#717 `__
+- [pre-commit.ci] pre-commit autoupdate
+ `#726 `__
+- set mono trace env vars before loading mono
+ `#734 `__
+
+Fixed
+^^^^^
+
+- fix: merging coverage step in ci_cd
+ `#720 `__
+- fix: Publish coverage for remote connect
+ `#721 `__
+- fix: Restrict ``protobuf`` <6
+ `#722 `__
+- Fix: add return for poster
+ `#727 `__
+- fix: cli test are not getting coverage
+ `#737 `__
+- fix: adding mechanical libraries
+ `#740 `__
+- feat: Add more coverage on logging
+ `#744 `__
+- fix: Display image and build info only for scheduled run
+ `#746 `__
+- fix: upload coverage files only for latest stable version on release
+ workflow `#748 `__
+
+Dependencies
+^^^^^^^^^^^^
+
+- MAINT: Bump pytest from 8.1.1 to 8.2.0 in the tests group
+ `#724 `__
+- MAINT: Bump the doc group with 3 updates
+ `#725 `__,
+ `#743 `__
+- MAINT: Bump grpcio from 1.62.2 to 1.63.0 in the core group
+ `#731 `__
+- MAINT: Bump the doc group with 2 updates
+ `#732 `__
+- MAINT: Bump grpcio from 1.63.0 to 1.64.0 in the core group
+ `#741 `__
+- MAINT: Bump pytest from 8.2.0 to 8.2.1 in the tests group
+ `#742 `__
+
+Miscellaneous
+^^^^^^^^^^^^^
+
+- Split pyvista into two methods and remove the stability workaround
+ for 242 `#718 `__
+- Update conf.py
+ `#723 `__
+- catch the mono version warning
+ `#733 `__
+
+
+`0.10.10 `__ - 2024-04-23
+======================================================================================
+
+
+Added
+^^^^^
+
+- Add embedding_scripts marker
+ `#662 `__
+- FEAT: Group dependabot alerts
+ `#666 `__
+- add windows library loader util
+ `#672 `__
+- Feat: Add reports for remote connect tests
+ `#690 `__
+- Feat: Add link check
+ `#693 `__
+- Feat: Add app libraries test
+ `#696 `__
+- Feat: Update ``get_mechanical_path``
+ `#707 `__
+- Feat: ``mechanical-env`` check before running embedding
+ `#708 `__
+- feat: set up doc-deploy-changelog action
+ `#710 `__
+
+
+Changed
+^^^^^^^
+
+- Doc: fix docs and vale warning
+ `#656 `__
+- Maint: post release change log update 10.9
+ `#665 `__
+- Maint: Auto approve and merge dependabot PR
+ `#674 `__
+- [pre-commit.ci] pre-commit autoupdate
+ `#691 `__,
+ `#706 `__
+- Maint: Add code cov report
+ `#692 `__
+- Maint: Modify nightly run
+ `#712 `__
+
+
+Fixed
+^^^^^
+
+- Fix: Assign ci bot for dependabot PR
+ `#677 `__
+- Fix: Add matrix python in embedding test
+ `#681 `__
+- Fix: Remove warning message test for remote session launch
+ `#682 `__
+- fix transformation matrix
+ `#683 `__
+- Fix: Modify retrieving path of Mechanical in tests
+ `#688 `__
+- work around instability in 2024R1
+ `#695 `__
+
+
+Dependencies
+^^^^^^^^^^^^
+
+- MAINT: Bump the doc group with 2 updates
+ `#668 `__,
+ `#673 `__
+- MAINT: Bump the doc group with 1 update
+ `#678 `__
+- first version of 3d visualization with pyvista
+ `#680 `__
+- MAINT: Bump the doc group with 3 updates
+ `#689 `__
+- add open-usd exporter
+ `#701 `__
+- MAINT: Bump the doc group with 5 updates
+ `#705 `__,
+ `#715 `__
+- MAINT: Bump grpcio from 1.62.1 to 1.62.2 in the core group
+ `#713 `__
+- MAINT: Bump ansys/actions from 5 to 6
+ `#714 `__
+
+
+Miscellaneous
+^^^^^^^^^^^^^
+
+- cleanup `#702 `__
+- update graphics based on backend changes
+ `#711 `__
+
+
+`0.10.9