From e5d679881c3fdef89f876b4ccde5dcf57975c8b6 Mon Sep 17 00:00:00 2001 From: kaleseed Date: Mon, 14 Oct 2024 21:49:24 -0400 Subject: [PATCH] replace the old material UI pictures; --- 404.html | 2 +- beamsection/beamsection_getstart/index.html | 2 +- beamsection/beamsection_overview/index.html | 4 +- curvefitter/curvefit_getstart/index.html | 2 +- curvefitter/curvefit_io/index.html | 2 +- curvefitter/curvefit_overview/index.html | 4 +- curvefitter/curvefit_theory/index.html | 2 +- features/index.html | 2 +- glossary/index.html | 2 +- img/3_guide/ch2_start_ex1_mat_al.png | Bin 46937 -> 216779 bytes img/3_guide/ch2_start_gui_mat.png | Bin 532307 -> 163570 bytes img/3_guide/ch3_guide_mat_build.png | Bin 24748 -> 179301 bytes img/3_guide/ch3_guide_mat_lib.png | Bin 25688 -> 146173 bytes img/3_guide/ch3_guide_mat_ui_build.png | Bin 40160 -> 172575 bytes img/3_guide/ch3_guide_mat_ui_lib.png | Bin 41397 -> 153433 bytes img/3_guide/ch3_guide_obj_mat.png | Bin 36754 -> 186161 bytes index.html | 2 +- install/licensing/index.html | 4 +- install/linux/index.html | 4 +- install/windows/index.html | 2 +- legal/LGPL/index.html | 2 +- legal/contact/index.html | 2 +- legal/index.html | 2 +- legal/trademarks/index.html | 2 +- license/index.html | 2 +- mateditor/mat_core_loss/index.html | 4 +- mateditor/mat_file_format/index.html | 2 +- mateditor/mat_gui/index.html | 4 +- .../mat_hyperelasticity_curvefit/index.html | 2 +- mateditor/mat_io/index.html | 2 +- mateditor/mat_io_openradioss/index.html | 2 +- mateditor/mat_mutually_exclusive/index.html | 2 +- mateditor/mat_overview/index.html | 4 +- mateditor/mat_properties/index.html | 2 +- mateditor/mat_table_data/index.html | 2 +- mateditor/mat_theory/index.html | 2 +- mateditor/mat_theory_eos/index.html | 2 +- mateditor/mat_theory_failure/index.html | 2 +- .../mat_theory_hyper-elasticity/index.html | 4 +- mateditor/mat_theory_io/index.html | 2 +- mateditor/mat_theory_plasticity/index.html | 2 +- mateditor/mat_workflow/index.html | 2 +- mateditor/mateditor_overview/index.html | 4 +- mateditor/material_data/index.html | 2 +- misc/index.html | 2 +- search/search_index.json | 2 +- sitemap.xml | 152 +++++++++--------- sitemap.xml.gz | Bin 787 -> 787 bytes support/index.html | 4 +- unitconverter/unitconverter/index.html | 4 +- .../electromagnetics/electrostatic/index.html | 2 +- welsim/get_started/quick_start/index.html | 2 +- .../structural/structural_modal/index.html | 2 +- .../structural/structural_static/index.html | 2 +- .../structural_transient/index.html | 2 +- .../get_started/thermal/thermal_ss/index.html | 2 +- .../thermal/thermal_transient/index.html | 2 +- welsim/material/mat_overview/index.html | 4 +- welsim/mesh/mesh_usage/index.html | 2 +- welsim/mesh/meshing/index.html | 4 +- welsim/release_notes/index.html | 2 +- welsim/theory/contact/index.html | 2 +- welsim/theory/electromagnetic/index.html | 4 +- welsim/theory/elements/index.html | 2 +- welsim/theory/geometricnl/index.html | 2 +- welsim/theory/introduction/index.html | 2 +- welsim/theory/materialnl/index.html | 2 +- welsim/theory/modal/index.html | 2 +- welsim/theory/shapefunction/index.html | 2 +- welsim/theory/structures/index.html | 2 +- welsim/theory/thermal/index.html | 2 +- welsim/theory/transient/index.html | 2 +- welsim/troubleshooting/index.html | 2 +- welsim/users/analysistypes/index.html | 2 +- welsim/users/bcs/index.html | 2 +- welsim/users/connections/index.html | 2 +- welsim/users/geometry/index.html | 2 +- welsim/users/gui/index.html | 4 +- welsim/users/objects/index.html | 2 +- welsim/users/overview/index.html | 2 +- welsim/users/results/index.html | 4 +- welsim/users/steps/index.html | 4 +- welsim/users/study/index.html | 2 +- welsim/vm/electromagnetic/index.html | 2 +- welsim/vm/introduction/index.html | 2 +- welsim/vm/structural/index.html | 2 +- welsim/vm/thermal/index.html | 2 +- 87 files changed, 171 insertions(+), 171 deletions(-) diff --git a/404.html b/404.html index bd6da7a..fe98353 100755 --- a/404.html +++ b/404.html @@ -1 +1 @@ - WelSim Documentation

404 - Not found

\ No newline at end of file + WelSim Documentation

404 - Not found

\ No newline at end of file diff --git a/beamsection/beamsection_getstart/index.html b/beamsection/beamsection_getstart/index.html index 7548882..058bac2 100644 --- a/beamsection/beamsection_getstart/index.html +++ b/beamsection/beamsection_getstart/index.html @@ -1 +1 @@ - Getting Started - WelSim Documentation
Skip to content

Getting Started

Using BeamSection is straightforward, this section shows you how to calculate the beam properties step by step.

Graphical Interface

An overview of the Graphical User Interface (GUI) with notation is shown in the figure below.

finite_element_analysis_curvefit_gui_notation

This section provides you basic actions in using CurveFitter. The actions include:

  • Exit: Quits the program.
  • Help: Runs your default web browser and visits official website welsim.com/curvefit.
  • About: Displays About dialog and shows software and hardware information.

Toolbox

This section lists all available curves for you to choose from. The default curve is the straight line (first-order polynomial). The curves are grouped by the characteristics as follows.

Basic Curves

Straight line, Natural logarithm, Exponential, Power, Gaussian

Polynomial Curves

2nd Order Polynomial, 3rd Order Polynomial, 4th Order Polynomial, 5th Order Polynomial

Nonlinear Curves

Symmetrical Sigmoidal, Asymmetrical Sigmoidal, Rectangular Hyperbola, Basic Exponential, Half-Life Exponential, Proportional Rate Growth or Decrease

Hyperelastic Material Model Curves

Arruda-Boyce, Gent, Mooney-Rivlin 2, 3, 5, and 9 Parameters, Neo-Hookean, Ogden 1st-3rd Orders, Polynomial 1st-3rd Orders, Yeoh 1st-3rd Orders

Electromagnetic Model Curves

Electrical Steel, Power Ferrite

Curve Description

This section contains details about the selected curve, such as the function or energy functional, parameters to fit, variable descriptions.

For the hyperelastic model curves, additional Hyperelastic Test Data checkboxes shows in this seciton. It allows users to set/edit the test data at different deformations.

Fitted Parameters

This section outputs the fitted parameters for users. You also can edit the constants in the line edit widget and review the curves in the Chart window.

Actions

There are three actions provided for users to analyze or fit the test data.

  • Check button: examines the input data in the tabular data window.
  • Solve button: solves the curve fitting based on the input tabular data. The check process is implemented before the solution. If the curve fitting succeeded, the fitted constants will be set in the Fitted Parameters section, the curves will be plotted in the Chart window as well.
  • Update Chart button: allows you to update the curves in the Chart window with the current constants.

Chart Windows

This section displays the test data dots and fitted curves in the same window, these dots and curves can be differentiated by legends and colors. Zoom in and out showing area are supported. You also can set the logarithmic axis for the curve display.

Workflow

This section demonstrates the procedures in applying curve fitting. The steps are followed:

  1. Select the designated curve type from the toolbox.
    finite_element_analysis_curvefit_select_curve

  2. Edit table data or import data from an external file.
    finite_element_analysis_curvefit_edit_table

  3. Review the test data in the Chart.
    finite_element_analysis_curvefit_review_testdata

  4. Check the input data (Optional). A pop-up message box indicates the status of the input data.
    finite_element_analysis_curvefit_check

  5. Solve the curves with the input tabular data. If it succeeded, the Constants line edits are filled with fitted parameters, and the Chart window displays the fitted curves along with the test data. These fitted parameters are the answers that we want.
    finite_element_analysis_curvefit_solve

  6. Adjust parameters to evaluate the similar curves (Optional). You can change the parameters and hit the Update Chart button to see the new curves with modified parameters.

Note

Your test data is critical for your fitted constants, please ensure that the test data cover the entire range of your curve expreience.

\ No newline at end of file + Getting Started - WelSim Documentation
Skip to content

Getting Started

Using BeamSection is straightforward, this section shows you how to calculate the beam properties step by step.

Graphical Interface

An overview of the Graphical User Interface (GUI) with notation is shown in the figure below.

finite_element_analysis_curvefit_gui_notation

This section provides you basic actions in using CurveFitter. The actions include:

  • Exit: Quits the program.
  • Help: Runs your default web browser and visits official website welsim.com/curvefit.
  • About: Displays About dialog and shows software and hardware information.

Toolbox

This section lists all available curves for you to choose from. The default curve is the straight line (first-order polynomial). The curves are grouped by the characteristics as follows.

Basic Curves

Straight line, Natural logarithm, Exponential, Power, Gaussian

Polynomial Curves

2nd Order Polynomial, 3rd Order Polynomial, 4th Order Polynomial, 5th Order Polynomial

Nonlinear Curves

Symmetrical Sigmoidal, Asymmetrical Sigmoidal, Rectangular Hyperbola, Basic Exponential, Half-Life Exponential, Proportional Rate Growth or Decrease

Hyperelastic Material Model Curves

Arruda-Boyce, Gent, Mooney-Rivlin 2, 3, 5, and 9 Parameters, Neo-Hookean, Ogden 1st-3rd Orders, Polynomial 1st-3rd Orders, Yeoh 1st-3rd Orders

Electromagnetic Model Curves

Electrical Steel, Power Ferrite

Curve Description

This section contains details about the selected curve, such as the function or energy functional, parameters to fit, variable descriptions.

For the hyperelastic model curves, additional Hyperelastic Test Data checkboxes shows in this seciton. It allows users to set/edit the test data at different deformations.

Fitted Parameters

This section outputs the fitted parameters for users. You also can edit the constants in the line edit widget and review the curves in the Chart window.

Actions

There are three actions provided for users to analyze or fit the test data.

  • Check button: examines the input data in the tabular data window.
  • Solve button: solves the curve fitting based on the input tabular data. The check process is implemented before the solution. If the curve fitting succeeded, the fitted constants will be set in the Fitted Parameters section, the curves will be plotted in the Chart window as well.
  • Update Chart button: allows you to update the curves in the Chart window with the current constants.

Chart Windows

This section displays the test data dots and fitted curves in the same window, these dots and curves can be differentiated by legends and colors. Zoom in and out showing area are supported. You also can set the logarithmic axis for the curve display.

Workflow

This section demonstrates the procedures in applying curve fitting. The steps are followed:

  1. Select the designated curve type from the toolbox.
    finite_element_analysis_curvefit_select_curve

  2. Edit table data or import data from an external file.
    finite_element_analysis_curvefit_edit_table

  3. Review the test data in the Chart.
    finite_element_analysis_curvefit_review_testdata

  4. Check the input data (Optional). A pop-up message box indicates the status of the input data.
    finite_element_analysis_curvefit_check

  5. Solve the curves with the input tabular data. If it succeeded, the Constants line edits are filled with fitted parameters, and the Chart window displays the fitted curves along with the test data. These fitted parameters are the answers that we want.
    finite_element_analysis_curvefit_solve

  6. Adjust parameters to evaluate the similar curves (Optional). You can change the parameters and hit the Update Chart button to see the new curves with modified parameters.

Note

Your test data is critical for your fitted constants, please ensure that the test data cover the entire range of your curve expreience.

\ No newline at end of file diff --git a/beamsection/beamsection_overview/index.html b/beamsection/beamsection_overview/index.html index 08be021..c0ec733 100644 --- a/beamsection/beamsection_overview/index.html +++ b/beamsection/beamsection_overview/index.html @@ -1,4 +1,4 @@ - Overview - WelSim Documentation
Skip to content

Beam Cross-Section Overview

BeamSection is a free beam cross-section software program for engineers. This tool provides you comprehensive beam property calculations those are often used in engineering simulation and practice.

finite_element_analysis_curvefit_gui

WelSim/docs

Beam Cross-Section Overview

BeamSection is a free beam cross-section software program for engineers. This tool provides you comprehensive beam property calculations those are often used in engineering simulation and practice.

finite_element_analysis_curvefit_gui

Questions or Comments?

Feel free to send questions, comments, requests, bug reports, and success stories. Asking for a new feature usually results in adding the request to the TODO list or, if it already is in the list, in assigning higher priority to it.

\ No newline at end of file +![finite_element_analysis_curvefit_coreloss](../img/curvefitter/curve_fitter_coreloss.png "Core Loss curve fitting example in CurveFitter") -->

Questions or Comments?

Feel free to send questions, comments, requests, bug reports, and success stories. Asking for a new feature usually results in adding the request to the TODO list or, if it already is in the list, in assigning higher priority to it.

\ No newline at end of file diff --git a/curvefitter/curvefit_getstart/index.html b/curvefitter/curvefit_getstart/index.html index f894082..30d2b0f 100755 --- a/curvefitter/curvefit_getstart/index.html +++ b/curvefitter/curvefit_getstart/index.html @@ -1 +1 @@ - Getting Started - WelSim Documentation
Skip to content

Getting Started

Using CurveFitter is straightforward, this section shows you how to conduct the curve fitting step by step.

Graphical Interface

An overview of the Graphical User Interface (GUI) with notation is shown in the figure below.

finite_element_analysis_curvefit_gui_notation

This section provides you basic actions in using CurveFitter. The actions include:

  • Exit: Quits the program.
  • Help: Runs your default web browser and visits official website welsim.com/curvefit.
  • About: Displays About dialog and shows software and hardware information.

Toolbox

This section lists all available curves for you to choose from. The default curve is the straight line (first-order polynomial). The curves are grouped by the characteristics as follows.

Basic Curves

Straight line, Natural logarithm, Exponential, Power, Gaussian

Polynomial Curves

2nd Order Polynomial, 3rd Order Polynomial, 4th Order Polynomial, 5th Order Polynomial

Nonlinear Curves

Symmetrical Sigmoidal, Asymmetrical Sigmoidal, Rectangular Hyperbola, Basic Exponential, Half-Life Exponential, Proportional Rate Growth or Decrease

Hyperelastic Material Model Curves

Arruda-Boyce, Gent, Mooney-Rivlin 2, 3, 5, and 9 Parameters, Neo-Hookean, Ogden 1st-3rd Orders, Polynomial 1st-3rd Orders, Yeoh 1st-3rd Orders

Electromagnetic Model Curves

Electrical Steel, Power Ferrite

Curve Description

This section contains details about the selected curve, such as the function or energy functional, parameters to fit, variable descriptions.

For the hyperelastic model curves, additional Hyperelastic Test Data checkboxes shows in this seciton. It allows users to set/edit the test data at different deformations.

Fitted Parameters

This section outputs the fitted parameters for users. You also can edit the constants in the line edit widget and review the curves in the Chart window.

Actions

There are three actions provided for users to analyze or fit the test data.

  • Check button: examines the input data in the tabular data window.
  • Solve button: solves the curve fitting based on the input tabular data. The check process is implemented before the solution. If the curve fitting succeeded, the fitted constants will be set in the Fitted Parameters section, the curves will be plotted in the Chart window as well.
  • Update Chart button: allows you to update the curves in the Chart window with the current constants.

Tabular Data Windows

This section enables you to edit and review the table data. For most of curves, the tables have two columns. The frequency-dependent curves have a sub-table for each frequency row. You can input tabular values cell by cell, or import a plain text or Excel file to input massive data. The external file formats are depicted here.

You also can export the tabular data to an external file in plain text or Excel format.

Chart Windows

This section displays the test data dots and fitted curves in the same window, these dots and curves can be differentiated by legends and colors. Zoom in and out showing area are supported. You also can set the logarithmic axis for the curve display.

Workflow

This section demonstrates the procedures in applying curve fitting. The steps are followed:

  1. Select the designated curve type from the toolbox.
    finite_element_analysis_curvefit_select_curve

  2. Edit table data or import data from an external file.
    finite_element_analysis_curvefit_edit_table

  3. Review the test data in the Chart.
    finite_element_analysis_curvefit_review_testdata

  4. Check the input data (Optional). A pop-up message box indicates the status of the input data.
    finite_element_analysis_curvefit_check

  5. Solve the curves with the input tabular data. If it succeeded, the Constants line edits are filled with fitted parameters, and the Chart window displays the fitted curves along with the test data. These fitted parameters are the answers that we want.
    finite_element_analysis_curvefit_solve

  6. Adjust parameters to evaluate the similar curves (Optional). You can change the parameters and hit the Update Chart button to see the new curves with modified parameters.

Note

Your test data is critical for your fitted constants, please ensure that the test data cover the entire range of your curve expreience.

\ No newline at end of file + Getting Started - WelSim Documentation
Skip to content

Getting Started

Using CurveFitter is straightforward, this section shows you how to conduct the curve fitting step by step.

Graphical Interface

An overview of the Graphical User Interface (GUI) with notation is shown in the figure below.

finite_element_analysis_curvefit_gui_notation

This section provides you basic actions in using CurveFitter. The actions include:

  • Exit: Quits the program.
  • Help: Runs your default web browser and visits official website welsim.com/curvefit.
  • About: Displays About dialog and shows software and hardware information.

Toolbox

This section lists all available curves for you to choose from. The default curve is the straight line (first-order polynomial). The curves are grouped by the characteristics as follows.

Basic Curves

Straight line, Natural logarithm, Exponential, Power, Gaussian

Polynomial Curves

2nd Order Polynomial, 3rd Order Polynomial, 4th Order Polynomial, 5th Order Polynomial

Nonlinear Curves

Symmetrical Sigmoidal, Asymmetrical Sigmoidal, Rectangular Hyperbola, Basic Exponential, Half-Life Exponential, Proportional Rate Growth or Decrease

Hyperelastic Material Model Curves

Arruda-Boyce, Gent, Mooney-Rivlin 2, 3, 5, and 9 Parameters, Neo-Hookean, Ogden 1st-3rd Orders, Polynomial 1st-3rd Orders, Yeoh 1st-3rd Orders

Electromagnetic Model Curves

Electrical Steel, Power Ferrite

Curve Description

This section contains details about the selected curve, such as the function or energy functional, parameters to fit, variable descriptions.

For the hyperelastic model curves, additional Hyperelastic Test Data checkboxes shows in this seciton. It allows users to set/edit the test data at different deformations.

Fitted Parameters

This section outputs the fitted parameters for users. You also can edit the constants in the line edit widget and review the curves in the Chart window.

Actions

There are three actions provided for users to analyze or fit the test data.

  • Check button: examines the input data in the tabular data window.
  • Solve button: solves the curve fitting based on the input tabular data. The check process is implemented before the solution. If the curve fitting succeeded, the fitted constants will be set in the Fitted Parameters section, the curves will be plotted in the Chart window as well.
  • Update Chart button: allows you to update the curves in the Chart window with the current constants.

Tabular Data Windows

This section enables you to edit and review the table data. For most of curves, the tables have two columns. The frequency-dependent curves have a sub-table for each frequency row. You can input tabular values cell by cell, or import a plain text or Excel file to input massive data. The external file formats are depicted here.

You also can export the tabular data to an external file in plain text or Excel format.

Chart Windows

This section displays the test data dots and fitted curves in the same window, these dots and curves can be differentiated by legends and colors. Zoom in and out showing area are supported. You also can set the logarithmic axis for the curve display.

Workflow

This section demonstrates the procedures in applying curve fitting. The steps are followed:

  1. Select the designated curve type from the toolbox.
    finite_element_analysis_curvefit_select_curve

  2. Edit table data or import data from an external file.
    finite_element_analysis_curvefit_edit_table

  3. Review the test data in the Chart.
    finite_element_analysis_curvefit_review_testdata

  4. Check the input data (Optional). A pop-up message box indicates the status of the input data.
    finite_element_analysis_curvefit_check

  5. Solve the curves with the input tabular data. If it succeeded, the Constants line edits are filled with fitted parameters, and the Chart window displays the fitted curves along with the test data. These fitted parameters are the answers that we want.
    finite_element_analysis_curvefit_solve

  6. Adjust parameters to evaluate the similar curves (Optional). You can change the parameters and hit the Update Chart button to see the new curves with modified parameters.

Note

Your test data is critical for your fitted constants, please ensure that the test data cover the entire range of your curve expreience.

\ No newline at end of file diff --git a/curvefitter/curvefit_io/index.html b/curvefitter/curvefit_io/index.html index f7bedb3..f78c3e9 100755 --- a/curvefitter/curvefit_io/index.html +++ b/curvefitter/curvefit_io/index.html @@ -1 +1 @@ - I/O File Format - WelSim Documentation
Skip to content

I/O File Format

The I/O file format is consistent to the Import/Export format in MatEditor module. For more details please refer to the Import/Export Tabular Data

\ No newline at end of file + I/O File Format - WelSim Documentation
Skip to content

I/O File Format

The I/O file format is consistent to the Import/Export format in MatEditor module. For more details please refer to the Import/Export Tabular Data

\ No newline at end of file diff --git a/curvefitter/curvefit_overview/index.html b/curvefitter/curvefit_overview/index.html index fb7c45e..873f572 100755 --- a/curvefitter/curvefit_overview/index.html +++ b/curvefitter/curvefit_overview/index.html @@ -1,4 +1,4 @@ - Overview - WelSim Documentation
Skip to content

Curve Fitter Overview

CurveFitter is a free software program for nonlinear curve fitting of analytical functions to experimental data. It provides tools for linear, polynomial, exponential, power, Schulz-Flory, nonlinear, hyperelastic materials, magnetic core loss curve fitting along with validation, and goodness-of-fit tests. The easy-to-use graphical user interface enables you to start fitting projects with no learning curves. You can summarize and present your results with customized fitting reports. There are many time-saving options such as an import-export feature which allows you to quickly input/output massive tabular data from/to external files.

finite_element_analysis_curvefit_gui

Curve fitting is one of the most widely used analysis methods in science and technology. Curve fitting examines the relationship between one or more predictors (independent variables) and a response variable (dependent variable), with the goal of defining a "best fit" model of the relationship. It is reportedly used in crystallography, chromatography, photoluminescence and photoelectron spectroscopy, infrared, Raman spectroscopy, and finite element analysis.

Specification

The system requirements for running CurveFitter are given in the table below.

Specification Description
Operation system Microsoft Windows 10 to 11; 64-bit
Physical memory At least 4 GB
Import/Export file format Plain text, Excel

The supported functions/curves are listed in the table below.

Category Materials
Basic Straight line, Natural logarithm, Exponential, Power, Gaussian
Polynomial 2nd-5th Order Polynomial
Schulz-Flory 1nd-6th Order Schulz-Flory
Nonlinear Symmetrical Sigmoidal, Asymmetrical Sigmoidal, Rectangular Hyperbola, Basic Exponential, Half-Life Exponential, Proportional Rate Growth or Decrease
Hyperelastic material model Arruda-Boyce, Gent, Mooney-Rivlin 2 3 5 and 9 Parameters, Neo-Hookean, 1st-3rd Order Ogden, 1st-3rd Order Polynomial, 1st-3rd Order Yeoh
Electromagnetic Core loss Model Electrical Steel, Power Ferrite (Steinmetz)

Linear, Polynomial Regression

Linear and Polynomial regressions in CurveFitter make use of the least-square method to fit a linear model function or a polynomial model function to data, respectively.

finite_element_analysis_curvefit_polynomial

Nonlinear Curve Fitting

CurveFitter's nonlinear fit tool is powerful, flexible, and easy to use. This tool includes more than 10 built-in fitting functions, selected from a wide range of categories and disciplines.

finite_element_analysis_curvefit_nonlinear

WelSim/docs

Curve Fitter Overview

CurveFitter is a free software program for nonlinear curve fitting of analytical functions to experimental data. It provides tools for linear, polynomial, exponential, power, Schulz-Flory, nonlinear, hyperelastic materials, magnetic core loss curve fitting along with validation, and goodness-of-fit tests. The easy-to-use graphical user interface enables you to start fitting projects with no learning curves. You can summarize and present your results with customized fitting reports. There are many time-saving options such as an import-export feature which allows you to quickly input/output massive tabular data from/to external files.

finite_element_analysis_curvefit_gui

Curve fitting is one of the most widely used analysis methods in science and technology. Curve fitting examines the relationship between one or more predictors (independent variables) and a response variable (dependent variable), with the goal of defining a "best fit" model of the relationship. It is reportedly used in crystallography, chromatography, photoluminescence and photoelectron spectroscopy, infrared, Raman spectroscopy, and finite element analysis.

Specification

The system requirements for running CurveFitter are given in the table below.

Specification Description
Operation system Microsoft Windows 10 to 11; 64-bit
Physical memory At least 4 GB
Import/Export file format Plain text, Excel

The supported functions/curves are listed in the table below.

Category Materials
Basic Straight line, Natural logarithm, Exponential, Power, Gaussian
Polynomial 2nd-5th Order Polynomial
Schulz-Flory 1nd-6th Order Schulz-Flory
Nonlinear Symmetrical Sigmoidal, Asymmetrical Sigmoidal, Rectangular Hyperbola, Basic Exponential, Half-Life Exponential, Proportional Rate Growth or Decrease
Hyperelastic material model Arruda-Boyce, Gent, Mooney-Rivlin 2 3 5 and 9 Parameters, Neo-Hookean, 1st-3rd Order Ogden, 1st-3rd Order Polynomial, 1st-3rd Order Yeoh
Electromagnetic Core loss Model Electrical Steel, Power Ferrite (Steinmetz)

Linear, Polynomial Regression

Linear and Polynomial regressions in CurveFitter make use of the least-square method to fit a linear model function or a polynomial model function to data, respectively.

finite_element_analysis_curvefit_polynomial

Nonlinear Curve Fitting

CurveFitter's nonlinear fit tool is powerful, flexible, and easy to use. This tool includes more than 10 built-in fitting functions, selected from a wide range of categories and disciplines.

finite_element_analysis_curvefit_nonlinear

Hyperelastic Material Model Fitting

CurveFitter's hyperelastic model fitting tool allows you to obtain material constants from the uniaxial, biaxial, or shear test data. You can choose the available test data type by toggling the corresponding checkbox. The supported hyperelastic models are: Arruda-Boyce, Gent, Mooney-Rivlin, Neo-Hookean, Ogden, Polynomial, and Yeoh. The input test data is engineering strain and engineering stress.

finite_element_analysis_curvefit_hyperelastic

Magnetic Core Loss Model Fitting

Core Loss Model fitting tool enables you to fit the parameters in estimating energy loss analysis. The tabular data window contains both regular tables and sub-tables for you to input multiple frequency-based data. The chart supports the logarithmic axis to better review the frequency-based curves.

finite_element_analysis_curvefit_coreloss

Questions or Comments?

Feel free to send questions, comments, requests, bug reports, and success stories. Asking for a new feature usually results in adding the request to the TODO list or, if it already is in the list, in assigning higher priority to it.

\ No newline at end of file +![finite_element_analysis_curvefit_surface](../img/curvefitter/curve_fitter_surface.png "Surface fitting example") -->

Hyperelastic Material Model Fitting

CurveFitter's hyperelastic model fitting tool allows you to obtain material constants from the uniaxial, biaxial, or shear test data. You can choose the available test data type by toggling the corresponding checkbox. The supported hyperelastic models are: Arruda-Boyce, Gent, Mooney-Rivlin, Neo-Hookean, Ogden, Polynomial, and Yeoh. The input test data is engineering strain and engineering stress.

finite_element_analysis_curvefit_hyperelastic

Magnetic Core Loss Model Fitting

Core Loss Model fitting tool enables you to fit the parameters in estimating energy loss analysis. The tabular data window contains both regular tables and sub-tables for you to input multiple frequency-based data. The chart supports the logarithmic axis to better review the frequency-based curves.

finite_element_analysis_curvefit_coreloss

Questions or Comments?

Feel free to send questions, comments, requests, bug reports, and success stories. Asking for a new feature usually results in adding the request to the TODO list or, if it already is in the list, in assigning higher priority to it.

\ No newline at end of file diff --git a/curvefitter/curvefit_theory/index.html b/curvefitter/curvefit_theory/index.html index c2f9bd7..e4bc013 100755 --- a/curvefitter/curvefit_theory/index.html +++ b/curvefitter/curvefit_theory/index.html @@ -1 +1 @@ - Theory - WelSim Documentation
Skip to content

Curve Fitting Theory

The section shows you the theoretical details of each curve or function.

Basic Curves

The group of Basic contains all commonly used curves.

Straight line

The function of this curve is given by

\[ y(x)=a+bx \]

where \(a\) and \(b\) are constants to fit, \(x\) and \(y\) are the test data pair. This function is also called 1st order polynomial.

Natural logarithm

The function of this curve is given by

\[ y(x)=a+b \cdot ln(x) \]

where \(a\) and \(b\) are constants to fit, \(x\) and \(y\) are the test data pair.

Note

Independent variable \(x\) must be larger than zero.

Exponential

The function of this curve is given by

\[ y(x)=ae^{bx} \]

where \(a\) and \(b\) are constants to fit, \(x\) and \(y\) are the test data pair.

Note

Dependent variable \(y\) must be larger than zero.

Power

The function of this curve is given by

\[ y(x)=ax^{b} \]

where \(a\) and \(b\) are constants to fit, \(x\) and \(y\) are the test data pair.

Note

Variables \(x\) and \(y\) must be larger than zero.

Gaussian

The function of this curve is given by

\[ y(x)=a \exp{(-\dfrac{(x-b)^2}{2c^2})} \]

where \(a\), \(b\), and \(c\) are constants to fit, \(x\) and \(y\) are the test data pair.

Note

Dependent variables \(y\) must be larger than zero.

Polynomial Curves

The group of Polynomial contains polynomial curves. The first-order polynomial is located in the Basic group as Straight Line.

2nd Order Polynomial

The function of this curve is given by

\[ y(x)=a+bx+cx^2 \]

where \(a\), \(b\), and \(c\) are constants to fit, \(x\) and \(y\) are the test data pair.

3rd Order Polynomial

The function of this curve is given by

\[ y(x)=a+bx+cx^2+dx^3 \]

where \(a\), \(b\), \(c\), and \(d\) are constants to fit, \(x\) and \(y\) are the test data pair.

4th Order Polynomial

The function of this curve is given by

\[ y(x)=a+bx+cx^2+dx^3+ex^4 \]

where \(a\), \(b\), \(c\), \(d\), and \(e\) are constants to fit, \(x\) and \(y\) are the test data pair.

5th Order Polynomial

The function of this curve is given by

\[ y(x)=a+bx+cx^2+dx^3+ex^4+ex^5 \]

where \(a\), \(b\), \(c\), \(d\), \(e\), and \(f\) are constants to fit, \(x\) and \(y\) are the test data pair.

Schulz-Flory functions

Schulz Flory distribution function to describe relative ratios of polymers after a polymerization process. The function of this curve is given by

\[ y(x) = \sum_{i=1}^{n} ln(10) \dfrac{a_i}{b_i^2} \exp{(4.6x-\dfrac{\exp{(2.3x)}}{b_i})} \]

where \(a_i\) and \(b_i\) are constants to fit, \(x\) and \(y\) are the test data pair. The parameter must satisfy the condition: \(0<a_i<1\).

Nonlinear Curves

The group of Nonlinear curves contains nonlinear curves that do not belong to the polynomial.

Symmetrical Sigmoidal

The function of this curve is given by

\[ y(x)=d + \dfrac{a-d}{1+(\dfrac{x}{c})^b} \]

where \(a\), \(b\), \(c\), and \(d\) are constants to fit, \(x\) and \(y\) are the test data pair.

Asymmetrical Sigmoidal

The function of this curve is given by

\[ y(x)=d + \dfrac{a-d}{ (1+(\dfrac{x}{c})^b)^m } \]

where \(a\), \(b\), \(c\), \(d\), and \(m\) are constants to fit, \(x\) and \(y\) are the test data pair.

Rectangular Hyperbola

The function of this curve is given by

\[ y(x)=\dfrac{V_{max}x}{ K_m + x} \]

where \(V_{max}\) and \(K_m\) are constants to fit, \(x\) and \(y\) are the test data pair.

Basic Exponential

The function of this curve is given by

\[ y(x)=a + be^{-cx} \]

where \(a\), \(b\), and \(c\) are constants to fit, \(x\) and \(y\) are the test data pair.

Half-Life Exponential

The function of this curve is given by

\[ y(x)=a + \dfrac{b}{2^{(\dfrac{x}{c})}} \]

where \(a\), \(b\), and \(c\) are constants to fit, \(x\) and \(y\) are the test data pair.

Proportional Rate Growth or Decrease

The function of this curve is given by

\[ y(x)=Y_0 + \dfrac{V_0}{K}(1-e^{-Kx}) \]

where \(Y_0\), \(V_0\), and \(K\) are constants to fit, \(x\) and \(y\) are the test data pair.

Log-Normal Particle Size Distribution

The function of this curve is given by

\[ \dfrac{dy(x)}{d\ln{x}}=\dfrac{C_t}{\sigma_g\sqrt{2}\pi} \exp{(-\dfrac{(\ln{x}-\ln{D_m})^2}{2\ln{\sigma_g}^2})} \]

where \(D_m\), \(\sigma_g\), and \(C_t\) are constants to fit, x and y are test data pair. In the computation, the Left-Hand-Side term (\(dy(x)/d\ln{x}\)) is calculated using finite difference scheme.

Note

Independent variables \(x\) must be larger than zero. The number of input x-y pairs must be large than 3.

Hyperelastic Material Model Curves

The group of hyperelastic material models contains the commonly used hyperelastic models in the finite element analysis. The test data pair is engineering strain and stress.

Arruda-Boyce

The form of the strain-energy potential for Arruda-Boyce model is

\[ \begin{array}{ccl} W & = & \mu[\dfrac{1}{2}(\bar{I}_{1}-3)+\dfrac{1}{20\lambda_{m}^{2}}(\bar{I_{1}^{2}}-9)+\dfrac{11}{1050\lambda_{m}^{4}}(\bar{I_{1}^{3}}-27)\\ & + & \dfrac{19}{7000\lambda_{m}^{6}}(\bar{I_{1}^{4}}-81) + \dfrac{519}{673750\lambda_{m}^{8}}(\bar{I_{1}^{5}}-243)] \end{array} \]

where \(\mu\) is the initial shear modulus of the material, \(\lambda_{m}\) is limiting network stretch.

Gent

The form of the strain-energy potential for the Gent model is:

\[ W=-\frac{\mu J_{m}}{2}\mathrm{ln}\left(1-\frac{\bar{I}_{1}-3}{J_{m}}\right) \]

where \(\mu\) is the initial shear modulus of the material, \(J_m\) is limiting value of \(\bar{I}_1-3\).

Mooney-Rivlin 2 3 5 and 9 Parameters

This model includes two-, three-, five-, and nine-terma Mooney-Rivlin models. The form of the strain-energy potential for a two-parameter Mooney-Rivlin model is

\[ W=C_{10}\left(\bar{I}_{1}-3\right)+C_{01}\left(\bar{I}_{2}-3\right) \]

where \(C_{10}\), \(C_{01}\), and \(D_{1}\) are the material constants.

The form of strain-energy potential for a three-parameter Mooney-Rivlin model is

\[ W=C_{10}\left(\bar{I}_{1}-3\right)+C_{01}\left(\bar{I}_{2}-3\right)+C_{11}\left(\bar{I}_{1}-3\right)\left(\bar{I}_{2}-3\right) \]

where \(C_{10}\), \(C_{01}\), and \(C_{11}\) are material constants.

The form of strain-energy potential for a five-parameter Mooney-Rivlin model is

\[ \begin{array}{ccl} W & = & C_{10}\left(\bar{I}_{1}-3\right)+C_{01}\left(\bar{I}_{2}-3\right)+C_{20}\left(\bar{I}_{1}-3\right)^{2}\\ & + & C_{11}\left(\bar{I}_{1}-3\right)\left(\bar{I}_{2}-3\right)+C_{02}\left(\bar{I}_{2}-3\right)^{2} \end{array} \]

where \(C_{10}\), \(C_{01}\), \(C_{20}\), \(C_{11}\), and \(C_{02}\) are material constants.

The form of strain-energy potential for a nine-parameter Mooney-Rivlin model is

\[ \begin{array}{ccl} W & = & C_{10}\left(\bar{I}_{1}-3\right)+C_{01}\left(\bar{I}_{2}-3\right)+C_{20}\left(\bar{I}_{1}-3\right)^{2}\\ & + & C_{11}\left(\bar{I}_{1}-3\right)\left(\bar{I}_{2}-3\right)+C_{02}\left(\bar{I}_{2}-3\right)^{2}+C_{30}\left(\bar{I}_{1}-3\right)^{3}\\ & + & C_{21}\left(\bar{I}_{1}-3\right)^{2}\left(\bar{I}_{2}-3\right)+C_{12}\left(\bar{I}_{1}-3\right)\left(\bar{I}_{2}-3\right)^{2}+C_{03}\left(\bar{I}_{2}-3\right)^{3} \end{array} \]

where \(C_{10}\), \(C_{01}\), \(C_{20}\), \(C_{11}\), \(C_{02}\), \(C_{30}\), \(C_{21}\), \(C_{12}\), and \(C_{03}\) are material constants.

Neo-Hookean

The Neo-Hookean model is a well-known hyperelastic model with an expanded linear rule (Hooke rule) having isotropy so that it can respond to finite deformation problems. The elastic potential is as follows.

\[ W=\frac{\mu}{2}(\bar{I}_{1}-3) \]

where \(\mu\) is initial shear modulus of materials.

Ogden

The strain-energy potential of the Ogden compressible foam model is based on the principal stretches of left Cauchy strain tensor, which has the form:

\[ W=\sum_{i=1}^{N}\frac{\mu_{i}}{\alpha_{i}}\left(\bar{\lambda}_{1}^{\alpha_{i}}+\bar{\lambda}_{2}^{\alpha_{i}}+\bar{\lambda}_{3}^{\alpha_{i}}-3\right)+\sum_{k=1}^{N}\frac{1}{D_{k}}\left(J-1\right)^{2k} \]

where N determines the order of the polynomial, \(\mu_i\), \(\alpha_i\) are material constants. The reduced principal strench is defined by:

\[ \bar{\lambda}_{p}=J^{-\frac{1}{3}}\lambda_p,\; J=(\lambda_{1}\lambda_{2}\lambda_{3})^{\frac{1}{2}} \]

When parameters N=1, \(\alpha_1\)=2, the Ogden model is converted to the neo-Hookean model. When parameters N=2, \(\alpha_1\)=2 and \(\alpha_2\)=-2, the Ogden model is converted to the 2-parameter Mooney-Rivlin model.

Polynomial

The polynomial form of strain-energy potential is:

\[ W=\sum_{i+j=1}^{N}c_{ij}\left(\bar{I}_{1}-3\right)^{i}\left(\bar{I_{2}}-3\right)^{j} \]

where \(N\) determines the order of the polynomial, \(c_{ij}\) are material constants.

The Polynomial model is converted to following models with specific parameters:

Parameters of Polynomial model Equivalent model
N=1, \(C_{01}\)=0 neo-Hookean
N=1 2-parameter Mooney-Rivlin
N=2 5-parameter Mooney-Rivlin
N=3 9-parameter Mooney-Rivlin

Yeoh

The Yeoh model is also called the reduced polynomial form. The strain-energy potential is

\[ W=\sum_{i=1}^{N}c_{i0}\left(\bar{I}_{1}-3\right)^{i} \]

where N denotes the order of the polynomial, \(C_{i0}\) are material constants. When N=1, Yeoh becomes neo-Hookean model.

Electromagnetic Model Curves

This group includes the commonly used fitting curves in the electromagnetic analysis.

Electrical Steel

The iron-core loss without DC flux bias is expressed as the following:

\[ p_v=P_h+P_c+P_e=K_{f} f (B_m)^2 + K_c (fB_m)^2 + K_e(fB_m)^{1.5} \]

where

  • \(B_m\) is the amplitude of the AC flux component,
  • \(f\) is the frequency,
  • \(K_h\) is the hysteresis core loss coefficient,
  • \(K_c\) is the eddy-current core loss coefficient, and
  • \(K_e\) is the excess core loss coefficient,

Power Ferrite

The iron-core loss is expressed as the Steinmetz approximation

\[ p_v=C_m f^x B_m^y \]

where \(p_v\) is the average power density, \(f\) is the excitation frequency, and \(B_m\) is the peak flux density, is commonly used to characterize core loss data for sinusoidal excitation, but can also be applied to square-wave data.

To linearize the equation for curve fitting, we used base-10 logarithms. The equation above can be rewritten to

\[ log(p_v)=c + x\cdot log(f) + y \cdot(B_m) \]

where \(c=log(C_m)\).

\ No newline at end of file + Theory - WelSim Documentation
Skip to content

Curve Fitting Theory

The section shows you the theoretical details of each curve or function.

Basic Curves

The group of Basic contains all commonly used curves.

Straight line

The function of this curve is given by

\[ y(x)=a+bx \]

where \(a\) and \(b\) are constants to fit, \(x\) and \(y\) are the test data pair. This function is also called 1st order polynomial.

Natural logarithm

The function of this curve is given by

\[ y(x)=a+b \cdot ln(x) \]

where \(a\) and \(b\) are constants to fit, \(x\) and \(y\) are the test data pair.

Note

Independent variable \(x\) must be larger than zero.

Exponential

The function of this curve is given by

\[ y(x)=ae^{bx} \]

where \(a\) and \(b\) are constants to fit, \(x\) and \(y\) are the test data pair.

Note

Dependent variable \(y\) must be larger than zero.

Power

The function of this curve is given by

\[ y(x)=ax^{b} \]

where \(a\) and \(b\) are constants to fit, \(x\) and \(y\) are the test data pair.

Note

Variables \(x\) and \(y\) must be larger than zero.

Gaussian

The function of this curve is given by

\[ y(x)=a \exp{(-\dfrac{(x-b)^2}{2c^2})} \]

where \(a\), \(b\), and \(c\) are constants to fit, \(x\) and \(y\) are the test data pair.

Note

Dependent variables \(y\) must be larger than zero.

Polynomial Curves

The group of Polynomial contains polynomial curves. The first-order polynomial is located in the Basic group as Straight Line.

2nd Order Polynomial

The function of this curve is given by

\[ y(x)=a+bx+cx^2 \]

where \(a\), \(b\), and \(c\) are constants to fit, \(x\) and \(y\) are the test data pair.

3rd Order Polynomial

The function of this curve is given by

\[ y(x)=a+bx+cx^2+dx^3 \]

where \(a\), \(b\), \(c\), and \(d\) are constants to fit, \(x\) and \(y\) are the test data pair.

4th Order Polynomial

The function of this curve is given by

\[ y(x)=a+bx+cx^2+dx^3+ex^4 \]

where \(a\), \(b\), \(c\), \(d\), and \(e\) are constants to fit, \(x\) and \(y\) are the test data pair.

5th Order Polynomial

The function of this curve is given by

\[ y(x)=a+bx+cx^2+dx^3+ex^4+ex^5 \]

where \(a\), \(b\), \(c\), \(d\), \(e\), and \(f\) are constants to fit, \(x\) and \(y\) are the test data pair.

Schulz-Flory functions

Schulz Flory distribution function to describe relative ratios of polymers after a polymerization process. The function of this curve is given by

\[ y(x) = \sum_{i=1}^{n} ln(10) \dfrac{a_i}{b_i^2} \exp{(4.6x-\dfrac{\exp{(2.3x)}}{b_i})} \]

where \(a_i\) and \(b_i\) are constants to fit, \(x\) and \(y\) are the test data pair. The parameter must satisfy the condition: \(0<a_i<1\).

Nonlinear Curves

The group of Nonlinear curves contains nonlinear curves that do not belong to the polynomial.

Symmetrical Sigmoidal

The function of this curve is given by

\[ y(x)=d + \dfrac{a-d}{1+(\dfrac{x}{c})^b} \]

where \(a\), \(b\), \(c\), and \(d\) are constants to fit, \(x\) and \(y\) are the test data pair.

Asymmetrical Sigmoidal

The function of this curve is given by

\[ y(x)=d + \dfrac{a-d}{ (1+(\dfrac{x}{c})^b)^m } \]

where \(a\), \(b\), \(c\), \(d\), and \(m\) are constants to fit, \(x\) and \(y\) are the test data pair.

Rectangular Hyperbola

The function of this curve is given by

\[ y(x)=\dfrac{V_{max}x}{ K_m + x} \]

where \(V_{max}\) and \(K_m\) are constants to fit, \(x\) and \(y\) are the test data pair.

Basic Exponential

The function of this curve is given by

\[ y(x)=a + be^{-cx} \]

where \(a\), \(b\), and \(c\) are constants to fit, \(x\) and \(y\) are the test data pair.

Half-Life Exponential

The function of this curve is given by

\[ y(x)=a + \dfrac{b}{2^{(\dfrac{x}{c})}} \]

where \(a\), \(b\), and \(c\) are constants to fit, \(x\) and \(y\) are the test data pair.

Proportional Rate Growth or Decrease

The function of this curve is given by

\[ y(x)=Y_0 + \dfrac{V_0}{K}(1-e^{-Kx}) \]

where \(Y_0\), \(V_0\), and \(K\) are constants to fit, \(x\) and \(y\) are the test data pair.

Log-Normal Particle Size Distribution

The function of this curve is given by

\[ \dfrac{dy(x)}{d\ln{x}}=\dfrac{C_t}{\sigma_g\sqrt{2}\pi} \exp{(-\dfrac{(\ln{x}-\ln{D_m})^2}{2\ln{\sigma_g}^2})} \]

where \(D_m\), \(\sigma_g\), and \(C_t\) are constants to fit, x and y are test data pair. In the computation, the Left-Hand-Side term (\(dy(x)/d\ln{x}\)) is calculated using finite difference scheme.

Note

Independent variables \(x\) must be larger than zero. The number of input x-y pairs must be large than 3.

Hyperelastic Material Model Curves

The group of hyperelastic material models contains the commonly used hyperelastic models in the finite element analysis. The test data pair is engineering strain and stress.

Arruda-Boyce

The form of the strain-energy potential for Arruda-Boyce model is

\[ \begin{array}{ccl} W & = & \mu[\dfrac{1}{2}(\bar{I}_{1}-3)+\dfrac{1}{20\lambda_{m}^{2}}(\bar{I_{1}^{2}}-9)+\dfrac{11}{1050\lambda_{m}^{4}}(\bar{I_{1}^{3}}-27)\\ & + & \dfrac{19}{7000\lambda_{m}^{6}}(\bar{I_{1}^{4}}-81) + \dfrac{519}{673750\lambda_{m}^{8}}(\bar{I_{1}^{5}}-243)] \end{array} \]

where \(\mu\) is the initial shear modulus of the material, \(\lambda_{m}\) is limiting network stretch.

Gent

The form of the strain-energy potential for the Gent model is:

\[ W=-\frac{\mu J_{m}}{2}\mathrm{ln}\left(1-\frac{\bar{I}_{1}-3}{J_{m}}\right) \]

where \(\mu\) is the initial shear modulus of the material, \(J_m\) is limiting value of \(\bar{I}_1-3\).

Mooney-Rivlin 2 3 5 and 9 Parameters

This model includes two-, three-, five-, and nine-terma Mooney-Rivlin models. The form of the strain-energy potential for a two-parameter Mooney-Rivlin model is

\[ W=C_{10}\left(\bar{I}_{1}-3\right)+C_{01}\left(\bar{I}_{2}-3\right) \]

where \(C_{10}\), \(C_{01}\), and \(D_{1}\) are the material constants.

The form of strain-energy potential for a three-parameter Mooney-Rivlin model is

\[ W=C_{10}\left(\bar{I}_{1}-3\right)+C_{01}\left(\bar{I}_{2}-3\right)+C_{11}\left(\bar{I}_{1}-3\right)\left(\bar{I}_{2}-3\right) \]

where \(C_{10}\), \(C_{01}\), and \(C_{11}\) are material constants.

The form of strain-energy potential for a five-parameter Mooney-Rivlin model is

\[ \begin{array}{ccl} W & = & C_{10}\left(\bar{I}_{1}-3\right)+C_{01}\left(\bar{I}_{2}-3\right)+C_{20}\left(\bar{I}_{1}-3\right)^{2}\\ & + & C_{11}\left(\bar{I}_{1}-3\right)\left(\bar{I}_{2}-3\right)+C_{02}\left(\bar{I}_{2}-3\right)^{2} \end{array} \]

where \(C_{10}\), \(C_{01}\), \(C_{20}\), \(C_{11}\), and \(C_{02}\) are material constants.

The form of strain-energy potential for a nine-parameter Mooney-Rivlin model is

\[ \begin{array}{ccl} W & = & C_{10}\left(\bar{I}_{1}-3\right)+C_{01}\left(\bar{I}_{2}-3\right)+C_{20}\left(\bar{I}_{1}-3\right)^{2}\\ & + & C_{11}\left(\bar{I}_{1}-3\right)\left(\bar{I}_{2}-3\right)+C_{02}\left(\bar{I}_{2}-3\right)^{2}+C_{30}\left(\bar{I}_{1}-3\right)^{3}\\ & + & C_{21}\left(\bar{I}_{1}-3\right)^{2}\left(\bar{I}_{2}-3\right)+C_{12}\left(\bar{I}_{1}-3\right)\left(\bar{I}_{2}-3\right)^{2}+C_{03}\left(\bar{I}_{2}-3\right)^{3} \end{array} \]

where \(C_{10}\), \(C_{01}\), \(C_{20}\), \(C_{11}\), \(C_{02}\), \(C_{30}\), \(C_{21}\), \(C_{12}\), and \(C_{03}\) are material constants.

Neo-Hookean

The Neo-Hookean model is a well-known hyperelastic model with an expanded linear rule (Hooke rule) having isotropy so that it can respond to finite deformation problems. The elastic potential is as follows.

\[ W=\frac{\mu}{2}(\bar{I}_{1}-3) \]

where \(\mu\) is initial shear modulus of materials.

Ogden

The strain-energy potential of the Ogden compressible foam model is based on the principal stretches of left Cauchy strain tensor, which has the form:

\[ W=\sum_{i=1}^{N}\frac{\mu_{i}}{\alpha_{i}}\left(\bar{\lambda}_{1}^{\alpha_{i}}+\bar{\lambda}_{2}^{\alpha_{i}}+\bar{\lambda}_{3}^{\alpha_{i}}-3\right)+\sum_{k=1}^{N}\frac{1}{D_{k}}\left(J-1\right)^{2k} \]

where N determines the order of the polynomial, \(\mu_i\), \(\alpha_i\) are material constants. The reduced principal strench is defined by:

\[ \bar{\lambda}_{p}=J^{-\frac{1}{3}}\lambda_p,\; J=(\lambda_{1}\lambda_{2}\lambda_{3})^{\frac{1}{2}} \]

When parameters N=1, \(\alpha_1\)=2, the Ogden model is converted to the neo-Hookean model. When parameters N=2, \(\alpha_1\)=2 and \(\alpha_2\)=-2, the Ogden model is converted to the 2-parameter Mooney-Rivlin model.

Polynomial

The polynomial form of strain-energy potential is:

\[ W=\sum_{i+j=1}^{N}c_{ij}\left(\bar{I}_{1}-3\right)^{i}\left(\bar{I_{2}}-3\right)^{j} \]

where \(N\) determines the order of the polynomial, \(c_{ij}\) are material constants.

The Polynomial model is converted to following models with specific parameters:

Parameters of Polynomial model Equivalent model
N=1, \(C_{01}\)=0 neo-Hookean
N=1 2-parameter Mooney-Rivlin
N=2 5-parameter Mooney-Rivlin
N=3 9-parameter Mooney-Rivlin

Yeoh

The Yeoh model is also called the reduced polynomial form. The strain-energy potential is

\[ W=\sum_{i=1}^{N}c_{i0}\left(\bar{I}_{1}-3\right)^{i} \]

where N denotes the order of the polynomial, \(C_{i0}\) are material constants. When N=1, Yeoh becomes neo-Hookean model.

Electromagnetic Model Curves

This group includes the commonly used fitting curves in the electromagnetic analysis.

Electrical Steel

The iron-core loss without DC flux bias is expressed as the following:

\[ p_v=P_h+P_c+P_e=K_{f} f (B_m)^2 + K_c (fB_m)^2 + K_e(fB_m)^{1.5} \]

where

  • \(B_m\) is the amplitude of the AC flux component,
  • \(f\) is the frequency,
  • \(K_h\) is the hysteresis core loss coefficient,
  • \(K_c\) is the eddy-current core loss coefficient, and
  • \(K_e\) is the excess core loss coefficient,

Power Ferrite

The iron-core loss is expressed as the Steinmetz approximation

\[ p_v=C_m f^x B_m^y \]

where \(p_v\) is the average power density, \(f\) is the excitation frequency, and \(B_m\) is the peak flux density, is commonly used to characterize core loss data for sinusoidal excitation, but can also be applied to square-wave data.

To linearize the equation for curve fitting, we used base-10 logarithms. The equation above can be rewritten to

\[ log(p_v)=c + x\cdot log(f) + y \cdot(B_m) \]

where \(c=log(C_m)\).

\ No newline at end of file diff --git a/features/index.html b/features/index.html index 866c3e9..b3cadf7 100755 --- a/features/index.html +++ b/features/index.html @@ -1 +1 @@ - Features - WelSim Documentation
Skip to content

Features

As a general-purpose engineering simulation software program, WELSIM contains tons of features those allow you to conduct various simulation studies.

Specification

Specification Description
Operaton system Microsoft Windows 10/11, 64-bit;
Linux: Ubuntu 22.04 LTS and higher versions, 64-bit;
3D rendering driver: OpenGL 3.2 or higher
Physical memory At least 4 GB, and 32 GB and higher is recommended
Geometry modules Imported geometry formats: STEP, IGES, STL, GDS
Built-in geometry generation: Box, Cylinder, Sphere, Plane, Line, Circle, Vertex
Boolean operations: Union, Intersection, Cut
Supported automatic mesh Tet10, Tet4, Tri6, Tri3
  • Project data: file with suffix "wsdb" and the associated folder (same file name).
  • Export mesh formats: UNV, MFEM, SU2, VTK.
  • Export result formats: VTK, Tecplot, Plain Text.
  • Export solver scripts: FrontISTR, OpenRadioss, MFEM, SU2, Palace, etc.

Structural

Structural analysis Description
Types Static, transient, and modal
Materials Isotropic elastic, hyper-elastic, plastic, visco-elastic, and creep
Deformation types Small, and finite
Contact types bonded, frictionless, and frictional; small and finite sliding
Boundary conditions constraints, displacement, force, pressure, velocity, acceleration
Body conditions body force, acceleration, standard earth gravity, rotational velocity
Results deformations, stresses, strains, velocity, acceleration
Probe results reaction force (total, x, y, z)
  • Nonlinear materials.
  • Contact analysis.
  • Multi-body analysis.
  • Multi-step quasi-static analysis.
  • Implicit dynamics.

Explicit Structural Dynamics (using OpenRadioss)

Structural analysis Description
Materials Isotropic elasto-plastic (Johnson-Cook, Zerillii-Armstrong, Gray, Cowper-Symonds, Yoshida-Uemori, Hensel-Spittel, voce), Isotropic linear elastic (Hooke's law, Johnson-Cook), hyper-elastic (Ogden, Neo-Hookean, Mooney–Rivlin), visco-elastic (Boltamann, Generalized Maxwell-Kelvin), creep, explosive (JWL), Rock (Drucker-Prager), Hill orthotropic
Equation of state Compaction, Gruneisen, ideal gas, linear, LSZK, Murnaghan, NASG, Noble, Polynomial, Puff, Sesame, Tillotson
Failure models Alter, Biquad, Chang, Cockcroft, EMC, Energy, Fabric, forming limit diagram, Gurson, Hashin, Johnson, Ladeveze, Mullins effect with Ogden and Roxburgh criteria, NXT, orthotropic biquad, Puck, Spalling, Wierzbicki
Element type Solid, shell
Contact types bonded, frictionless, and frictional; small and finite sliding
Boundary conditions constraints, displacement, force, pressure, velocity, acceleration, etc.
Body conditions rigid body, body force, acceleration, standard earth gravity, rotational velocity, etc.
Results deformations, stresses, strains, velocity, acceleration, etc

Thermal

Thermal analysis Description
Types Static, and transient
Materials linear and nonlinear
Initial conditions Initial temperature
Boundary conditions temperature, convection, radiation, heat flux, heat flow, perfectly insulated
Body conditions Internal heat generation
Results temperature
  • Multi-body analysis.
  • Temperature-dependent nonlinear material.
  • Implicit transient analysis.
  • Orthotropic thermal conductivity material.
  • Heat flux results.

Computational Fluid Dynamics (through SU2)

Fluid analysis Description
Types Steady-state, and transient
Governing equation Euler, Navier-Stokes, RANS
Boundary conditions wall, inlet, outlet, pressure, velocity, temperature, convection, heat flux
Results velocity, pressure, mass density, pressure coefficient, mach number, energy
  • incompressible fluids.
  • compressible fluids.

Electromangetic

Electromagnetic analysis Description
Types Electrostatic, magnetostatic, eigenmode, driven, full-wave transient
Materials linear
Boundary conditions ground, voltage, symmetry, zero charge, surface charge density, electric displacement, insulting, magnetic vector potential, magnetic flux density
Results voltage, electric field, electric displacement, magnetic vector potential, magnetic flux density, magnetic field, energy density
  • Vector result display.
  • Parallel computing.
  • Multi-body analysis.
  • Nonlinear materials.

Need new features?

Feel free to send questions, comments, requests, bug reports, and success stories. Asking for a new feature usually results in adding the request to the TODO list or, if it already is in the list, in assigning higher priority to it.

\ No newline at end of file + Features - WelSim Documentation
Skip to content

Features

As a general-purpose engineering simulation software program, WELSIM contains tons of features those allow you to conduct various simulation studies.

Specification

Specification Description
Operaton system Microsoft Windows 10/11, 64-bit;
Linux: Ubuntu 22.04 LTS and higher versions, 64-bit;
3D rendering driver: OpenGL 3.2 or higher
Physical memory At least 4 GB, and 32 GB and higher is recommended
Geometry modules Imported geometry formats: STEP, IGES, STL, GDS
Built-in geometry generation: Box, Cylinder, Sphere, Plane, Line, Circle, Vertex
Boolean operations: Union, Intersection, Cut
Supported automatic mesh Tet10, Tet4, Tri6, Tri3
  • Project data: file with suffix "wsdb" and the associated folder (same file name).
  • Export mesh formats: UNV, MFEM, SU2, VTK.
  • Export result formats: VTK, Tecplot, Plain Text.
  • Export solver scripts: FrontISTR, OpenRadioss, MFEM, SU2, Palace, etc.

Structural

Structural analysis Description
Types Static, transient, and modal
Materials Isotropic elastic, hyper-elastic, plastic, visco-elastic, and creep
Deformation types Small, and finite
Contact types bonded, frictionless, and frictional; small and finite sliding
Boundary conditions constraints, displacement, force, pressure, velocity, acceleration
Body conditions body force, acceleration, standard earth gravity, rotational velocity
Results deformations, stresses, strains, velocity, acceleration
Probe results reaction force (total, x, y, z)
  • Nonlinear materials.
  • Contact analysis.
  • Multi-body analysis.
  • Multi-step quasi-static analysis.
  • Implicit dynamics.

Explicit Structural Dynamics (using OpenRadioss)

Structural analysis Description
Materials Isotropic elasto-plastic (Johnson-Cook, Zerillii-Armstrong, Gray, Cowper-Symonds, Yoshida-Uemori, Hensel-Spittel, voce), Isotropic linear elastic (Hooke's law, Johnson-Cook), hyper-elastic (Ogden, Neo-Hookean, Mooney–Rivlin), visco-elastic (Boltamann, Generalized Maxwell-Kelvin), creep, explosive (JWL), Rock (Drucker-Prager), Hill orthotropic
Equation of state Compaction, Gruneisen, ideal gas, linear, LSZK, Murnaghan, NASG, Noble, Polynomial, Puff, Sesame, Tillotson
Failure models Alter, Biquad, Chang, Cockcroft, EMC, Energy, Fabric, forming limit diagram, Gurson, Hashin, Johnson, Ladeveze, Mullins effect with Ogden and Roxburgh criteria, NXT, orthotropic biquad, Puck, Spalling, Wierzbicki
Element type Solid, shell
Contact types bonded, frictionless, and frictional; small and finite sliding
Boundary conditions constraints, displacement, force, pressure, velocity, acceleration, etc.
Body conditions rigid body, body force, acceleration, standard earth gravity, rotational velocity, etc.
Results deformations, stresses, strains, velocity, acceleration, etc

Thermal

Thermal analysis Description
Types Static, and transient
Materials linear and nonlinear
Initial conditions Initial temperature
Boundary conditions temperature, convection, radiation, heat flux, heat flow, perfectly insulated
Body conditions Internal heat generation
Results temperature
  • Multi-body analysis.
  • Temperature-dependent nonlinear material.
  • Implicit transient analysis.
  • Orthotropic thermal conductivity material.
  • Heat flux results.

Computational Fluid Dynamics (through SU2)

Fluid analysis Description
Types Steady-state, and transient
Governing equation Euler, Navier-Stokes, RANS
Boundary conditions wall, inlet, outlet, pressure, velocity, temperature, convection, heat flux
Results velocity, pressure, mass density, pressure coefficient, mach number, energy
  • incompressible fluids.
  • compressible fluids.

Electromangetic

Electromagnetic analysis Description
Types Electrostatic, magnetostatic, eigenmode, driven, full-wave transient
Materials linear
Boundary conditions ground, voltage, symmetry, zero charge, surface charge density, electric displacement, insulting, magnetic vector potential, magnetic flux density
Results voltage, electric field, electric displacement, magnetic vector potential, magnetic flux density, magnetic field, energy density
  • Vector result display.
  • Parallel computing.
  • Multi-body analysis.
  • Nonlinear materials.

Need new features?

Feel free to send questions, comments, requests, bug reports, and success stories. Asking for a new feature usually results in adding the request to the TODO list or, if it already is in the list, in assigning higher priority to it.

\ No newline at end of file diff --git a/glossary/index.html b/glossary/index.html index ff0fae9..04d195d 100755 --- a/glossary/index.html +++ b/glossary/index.html @@ -1 +1 @@ - Glossary - WelSim Documentation
Skip to content

Glossary

A

  • ACCELERATION: The second time derivative of the displacement (the first time derivative of the velocity).
  • ADAPTIVE FINITE ELEMENT METHOD/ADAPTIVE MESHING: An adaptive finite element solver iteratively performs finite element analysis, determines the areas of the mesh where the solution is not sufficiently accurate and refines the mesh in those areas until the solution obtains the prescribed degree of accuracy. Adaptive Meshing involves automatically improving the mesh where necessary to meet specified convergence criteria.
  • ASPECT RATIO: The ratio of the longest to shortest side lengths on an element.
  • ASSEMBLY: Geometric:Two or more parts mated together. FEA: The process of assembling the element matrices together to form the global matrix. Typically element stiffness matrices are assembled to form the complete stiffness matrix of the structure.
  • AUTOMATIC MESH GENERATION: The process of generating a mesh of elements over the volume that is being analyzed. There are two forms of automatic mesh generation: Free Meshing -Where the mesh has no structure to it. Free meshing generally uses triangular and tetrahedral elements. Mapped Meshing -Where large regions, if not all, of the volume is covered with regular meshes. This can use any form of element. Free meshing can be used to fill any shape. Mapped meshing can only be used on some shapes without elements being excessively distorted.
  • AXISYMMETRY: If a shape can be defined by rotating a cross- section about a line (e.g. a cone) then it is said to be axisymmetric. This can be used to simplify the analysis of the system. Such models are sometimes called two and a half dimensional since a 2D cross- section represents a 3D body.

B

  • BARLOW POINTS: The set of Gauss integration points that give the best estimates of the stress for an element. For triangles and tetrahedra these are the full Gauss integration points. For quadrilateral and brick elements they are the reduced Gauss points.
  • BASIS SPACE: When an element is being constructed it is derived from a simple regular shape in non-dimensional coordinates. The coordinates used to define the simple shape form the basis space. In its basis space a general quadrilateral is a 2×2 square and a general triangle is an isosceles triangle with unit side lengths.
  • BEAM ELEMENT: A line element that has both translational and rotational degrees of freedom. It represents both membrane and bending actions.
  • BENDING: Bending behavior is where the strains vary linearly from the centerline of a beam or center surface of a plate or shell.There is zero strain on the centerline for pure bending. Plane sections are assumed to remain plane. If the stresses are constant normal to the centerline then this is called membrane behavior.
  • BENDING STRESS: A compressive and/or tensile stress resulting from the application of a nonaxial force to a structural member.
  • BODY FORCE VECTOR: Mechanical loadings within the interior of the volume, typically inertia loadings in a stiffness analysis.
  • BOUNDARY CONDITIONS: The boundary conditions of a function are values of the function at the edge of the range of some of its variables. Knowledge of some of the boundary conditions is needed to solve an engineering problem or to find an unknown function.
  • BOUNDARY ELEMENT/INTEGRAL: A method of solving differential equations by taking exact solutions to the field equations loaded by a point source and then finding the strengths of sources distributed around the boundary of the body required to satisfy the boundary conditions on the body.
  • BUBBLE FUNCTIONS: Element shape functions that are zero along the edges of the element. They are non-zero within the interior of the element.
  • BUCKLING (SNAP THROUGH): The situation where the elastic stiffness of the structure is cancelled by the effects of compressive stress within the structure. If the effect of this causes the structure to suddenly displace a large amount in a direction normal to the load direction then it is classical bifurcation buckling. If there is a sudden large movement in the direction of the loading it is snap through buckling.

C

  • CAE: computer aided engineering.
  • CENTRAL DIFFERENCE METHOD: A method for numerically integrating second order dynamic equations of motion. It is widely used as a technique for solving non-linear dynamic problems.
  • CHARACTERISTIC VALUE: Same as the eigenvalue.
  • CHARACTERISTIC VECTOR: Same as the eigenvector.
  • CHOLESKY FACTORISATION (SKYLINE): A method of solving a set of simultaneous equations that is especially well suited to the finite element method. It is sometimes called a skyline solution. Choose to optimize the profile o f the matrix if a renumbering scheme is used.
  • COEFFICIENT OF VISCOUS DAMPING: The system parameter relating force to velocity.
  • COMPATIBILITY OF STRAINS: Compatibility of strain is satisfied if strains that are continuous before loading are continuous after.
  • COMPLETE DISPLACEMENT FIELD: When the functions interpolating the field variable (typically the displacements) form a complete nth order polynomial in all directions.
  • COMPLEX EIGENVALUES: The eigenvectors of a damped system. For proportionally damped systems they are the same as the undamped eigenvectors. For non-proportionally damped systems with damping in all modes less th an critical they are complex numbers and occur as complex conjugate pairs.
  • COMPLEX EIGENVECTORS: The eigenvalues of any damped system. If the damping is less than critical they will occur as complex conjugate pairs even for proportionally damped systems. The real part of the complex eigenvalue is a measure of the damping in the mode and should always be negative. The imaginary part is a measure of the resonant frequency.
  • COMPOSITE MATERIAL: A material that is made up of discrete components, typically a carbon-epoxy composite material or a glass-fiber material. Layered material and foam materials are also forms of composite materials.
  • COMPUTATIONAL FLUID DYNAMICS (CFD): A computer-based numerical study of turbulent fluid flow using approximate methods such as the finite element method, the fine difference method, the boundary element method, the finite volume methods, and so on.
  • CONDITION NUMBER: The ratio of the highest eigenvalue to the lowest eigenvalue of a matrix. The exponent of this number gives a measure of the number of digits required in the computation to maintain numerical accuracy. The higher the condition number the more chance of numerical error and the slower the rate of convergence for iterative solutions.
  • CONDITIONAL/UNCONDITIONAL STABILITY: Any scheme for numerically integrating dynamic equations of motion in a step-by- step form is conditionally stable if there is a maximum time step value that can be used. It is unconditionally stable (but not necessarily accurate) if any length of time step can be used.
  • CONJUGATE GRADIENT METHOD: A method for solving simultaneous equations iteratively. It is closely related to the Lanczos method for finding the first few eigenvalues and eigenvectors of a set of equations.
  • CONSISTENT DISPLACEMENTS AND FORCES: The displacements and forces act at the same point and in the same direction so that the sum of their products give a work quantity. If consistent displacements and forces are used the resulting stiffness and mass matrices are symmetric.
  • CONSTANT STRAIN CONSTANTSTRESS: For structural analysis an element must be able to reproduce a state of constant stress and strain under a suitable loading to ensure that it will converge to the correct solution. This is tested for using the patch test.
  • CONSTITUTIVE RELATIONSHIPS: The equations defining the material behavior for an infinitesimal volume of material. For structures these are the stress -strain laws and include Hookes law for elasticity and the Prandle-Reuss equations for plasticity.
  • CONSTRAINT EQUATIONS (MULTI POINT CONSTRAINTS): If one group of variables can be defined in terms of another group then the relationship between the two are constraint equations. Typically the displacements on the face of an element can be constrained to remain plane but the plane itself can move.
  • CONSTRAINTS: Known values of, or relationships between, the displacements in the coordinate system.
  • CONTACT PROBLEMS: A contact problem occurs when two bodies that are originally apart can come together, or two bodies that are originally connected can separate.
  • CONTINUOUS MASS MODELS: The system mass is distributed between the degrees of freedom. The mass matrix is not diagonal.
  • CONTOUR PLOTTING: A graphical representation of the variation of a field variable over a surface, such as stress, displacement, or temperature. A contour line is a line of constant value for the variable. A contour band is an area of a single color for values of the variable within two limit values.
  • CONVERGENCE REQUIREMENTS: For a structural finite element to converge as the mesh is refined it must be able to represent a state of constant stress and strain free rigid body movements exactly. There are equivalent requirements for other problem types.
  • CRANK-NICHOLSON SCHEME: A method for numerically integrating first order dynamic equations of motion. It is widely used as a technique for solving thermal transient problems.
  • CRITICAL ENERGY RELEASE: This is a material property defining the minimum energy that a propagating crack must release in order for it to propagate. Three critical energies, or modes of crack propagation, have been identified. Mode 1 is the two surfaces of the crack moving apart. Mode 2 is where the two surfaces slide from front to back. Mode 3 is where the to surfaces slide sideways.
  • CRITICALLY DAMPED SYSTEM CRITICAL DAMPING: The dividing line between under damped and over damped systems where the equation of motion has a damping value that is equal to the critical damping.
  • CYCLIC SYMMETRY: A generalization of axisymmetry. The structure is composed of a series of identical sectors that are arranged circumferentially to form a ring. A turbine disc with blades attached is atypical example.

D

  • DAMPED EIGENVALUES: Same as complex eigenvalues.
  • DAMPED EIGENVECTORS: Same as complex eigenvectors.
  • DAMPED NATURAL FREQUENCY: The frequency at which the damped system vibrates naturally when only an initial disturbance is applied.
  • DAMPING: Any mechanism that dissipates energy in a vibrating system.
  • DAMPING FACTOR (DECAY FACTOR): The damping factor is the ratio of the actual damping to the critical damping. It is often specified as a percentage. If the damping factor is less than one then the system can undergo free vibrations. The free vibrations will decay to zero with time. If the damping factor is greater than one then the decay is exponential and no vibrations occur. For most structures the damping factor is very small.
  • DEGENERATE ELEMENTS: Elements that are defined as one shape in the basis space but they are a simpler shape in the real space. A quadrilateral can degenerate into a triangle. A brick element can degenerate into a wedge, a pyramid or a tetrahedron. Degenerate elements should be avoided in practice.
  • DEGREES OF FREEDOM: The number of equations of equilibrium for the system. In dynamics, the number of displacement quantities which must be considered in order to represent the effects of all of the significant inertia forces. Degrees of freedom define the ability of a given node to move in any direction in space. There are six types of DOF for any given node: 3 possible translations (one each in the X,Y and Z directions) and 3 possible rotations (one rotation about each of the X,Y, and X axes). DOF are defined and restricted by the elements and constraints associated with each node.
  • DET(J) DET J: The Jacobian matrix is used to relate derivatives in the basis space to the real space. The determinant of the Jacobian – det(j) -is a measure of the distortion of the element when mapping from the basis to the real space.
  • DEVIATORIC STRESS STRESS DEVIATORS: A measure of stress where the hydrostatic stress has been subtracted from the actual stress. Material failures that are flow failures (plasticity and creep) fail independently of the hydrostatic stress. The failure is a function of the deviatoric stress.
  • DIAGONAL GENERALIZED MATRIX: The eigenvectors of a system can be used to define a coordinate transformation such that, in these generalized coordinates the coefficient matrices (typically mass and stiffness) are diagonal.
  • DIE-AWAY LENGTH: If there is a stress concentration in a structure the high stress will reduce rapidly with distance from the peak value. The distance over which it drops to some small value is called the die-away length. A fine mesh is required over this die-away length for accurate stress results.
  • DIRECT INTEGRATION: The name for various techniques for numerically integrating equations of motion. These are either implicit or explicit methods and include central difference, Crank-Nicholson, Runge-Kutta, Newmark beta and Wilson theta.
  • DISCRETE PARAMETER MODELS (DISCRETISED APPROACH): The model is defined in terms of an ordinary differential equation and the system has a finite number of degrees of freedom.
  • DISCRETIZATION: The process of dividing geometry into smaller pieces (finite elements) to prepare for analysis, i.e. Meshing.
  • DISPLACEMENT METHOD (DISPLACEMENT SOLUTION) :A form of discrete parameter model where the displacements of the system are the basic unknowns.
  • DISPLACEMENT: The distance, translational and rotational, that a node travels from its initial position to its post-analysis position. The total displacement is represented by components in each of the 3 translational directions and the 3 rotational directions.
  • DISPLACEMENT PLOTS: Plots showing the deformed shape of the structure. For linear small deflection problems the displacements are usually multiplied by a magnifying factor before plotting the deformed shape.
  • DISPLACEMENT VECTOR: The nodal displacements written as a column vector.
  • DOMAIN: In mathematics, a domain is the set of independent variables for which a function is defined. In finite element analysis, a domain is a continuous system (region) over which the laws of physics govern. In structural engineering, a domain could be a beam or a complete building frame. In mechanical engineering, a domain could be a piece of machine parts or a thermal field.

  • DRUCKER-PRAGER EQUIVALENT STRESSES: An equivalent stress measure for friction materials (typically sand). The effect of hydrostatic stress is included in the equivalent stress.

  • DYNAMIC ANALYSIS: An analysis that includes the effect of the variables changing with time as well as space.

  • DYNAMIC FLEXIBILITY MATRIX: The factor relating the steady state displacement response of a system to a sinusoidal force input. It is the same as the recep tance.

  • DYNAMIC MODELLING: A modeling process where consideration as to time effects in addition to spatial effects are included. A dynamic model can be the same as a static model or it can differ significantly depending upon the nature of the problem.
  • DYNAMIC RESPONSE: The time dependent response of a dynamic system in terms of its displacement, velocity or acceleration at any given point of the system.
  • DYNAMIC STIFFNESS MATRIX: If the structure is vibrating steadily at a frequency w then the dynamic stiffness is (K+iwC w2M) It is the inverse of the dynamic flexibility matrix.
  • DYNAMIC STRESSES:Stresses that vary with time and space.
  • DYNAMIC SUBSTRUCTURING: Special forms of substructuring used within a dynamic analysis. Dynamic substructuring is always approximate and causes some loss of accuracy in the dynamic solution.

E

  • EIGENVALUE PROBLEM: Problems that require calculation of eigenvalues and eigenvectors for their solution. Typically solving free vibration problems or finding buckling loads.
  • ELASTIC FOUNDATION: If a structure is sitting on a flexible foundation the supports are treated as a continuous elastic foundation. The elastic foundation can have a significant effect upon the structural response.
  • ELASTIC STIFFNESS: If the relationship between loads and displacements is linear then the problem is elastic. For a multi-degree of freedom system the forces and displacements are related by the elastic stiffness matrix.
  • ELECTRIC FIELDS: Electro-magnetic and electro-static problems form electric field problems.
  • ELEMENT: An element is a portion of the problem domain, and is typically some simple shape like a triangle or quadrilateral in 2D, or tetrahedron or hex solid in 3D.

  • ELEMENT ASSEMBLY: Individual element matrices have to be assembled into the complete stiffness matrix. This is basically a process of summing the element matrices. This summation has to be of the correct form. For the stiffness method the summation is based upon the fact that element displacements at common nodes must be the same.

  • ELEMENT STRAINS/STRESSES: Stresses and strains within elements are usually defined at the Gauss points (ideally at the Barlow points) and the node points. The most accurate estimates are at the reduced Gauss points (more specifically the Barlow points). Stresses and strains are usually calculated here and extrapolated to the node points.
  • ENERGY METHODS HAMILTONS PRINCIPLE: Methods for defining equations of equilibrium and compatibility through consideration of possible variations of the energies of the system. The general form is Hamiltons principle and sub-sets of this are the principle of virtual work including the principle of virtual displacements (PVD) and the principle of virtual forces (PVF).
  • ENGINEERING/MATHEMATICAL NORMALIZATION: Each eigenvector (mode shape or normal mode) can be multiplied by an arbitrary constant and still satisfy the eigenvalue equation. Various methods of scaling the eigenvector are used Engineering normalization -The vector is scaled so that the largest absolute value of any term in the eigenvector is unity. This is useful for inspecting printed tables of eigenvectors. Mathematical normalization -The vector is scaled so that the diagonal modal mass matrix is the unit matrix. The diagonal modal stiffness matrix is the system eigenvalues. This is useful for response calculations.
  • EQUILIBRIUM EQUATIONS:Internal forces and external forces must balance. At the infinitesimal level the stresses and the body forces must balance. The equations of equilibrium define these force balance conditions.
  • EQUILIBRIUM FINITE ELEMENTS: Most of the current finite elements used for structural analysis are defined by assuming displacement variations over the element. An alternative approach assumes the stress variation over the element. This leads to equilibrium finite elements.
  • EQUIVALENT MATERIAL PROPERTIES: Equivalent material properties are defined where real material properties are smeared over the volume of the element. Typically, for composite materials the discrete fiber and matrix material properties are smeared to give average equivalent material properties.
  • EQUIVALENT STRESS: A three dimensional solid has six stress components. If material properties have been found experimentally by a uniaxial stress test then the real stress system is related to this by combining the six stress components to a single equivalent stress. There are various forms of equivalent stress for different situations. Common ones are Tresca, Von-Mises, Mohr-Coulomb and Drucker-Prager.
  • EULERIAN/LAGRANGIAN METHOD: For non-linear large deflection problems the equations can be defined in various ways. If the material is flowing though a fixed grid the equations are defined in Eulerian coordinates. Here the volume of the element is constant but the mass in the element can change. If the grid moves with the body then the equations are defined in Lagrangian coordinates. Here the mass in the element is fixed but the volume changes.
  • EXACT SOLUTIONS: Solutions that satisfy the differential equations and the associated boundary conditions exactly. There are very few such solutions and they are for relatively simple geometries and loadings.
  • EXPLICIT/IMPLICIT METHOD: These are methods for integrating equations of motion. Explicit methods can deal with highly non-linear systems but need small steps. Implicit methods can deal with mildly nonlinear problems but with large steps.
  • EXTRAPOLATION INTERPOLATION: The process of estimating a value of a variable from a tabulated set of values. For interpolation values inside the table are estimated. For extrapolation values outside the table are estimated. Interpolation is generally accurate and extrapolation is only accurate for values slightly outside the table. It becomes very inaccurate for other cases.

F

  • FACETED GEOMETRY: If a curved line or surface is modeled by straight lines or flat surfaces then the modeling is said to produce a faceted geometry.
  • FAST FOURIER TRANSFORM: A method for calculating Fourier transforms that is computationally very efficient.
  • FIELD PROBLEMS: Problems that can be defined by a set of partial differential equations are field problems. Any such problem can be solved approximately by the finite element method.
  • FINITE DIFFERENCES: A numerical method for solving partial differential equations by expressing them in a difference form rather than an integral form. Finite difference methods are very similar to finite element methods and in some cases are identical.
  • FINITE ELEMENT MODELING (FEM): The process of setting up a model for analysis, typically involving graphical generation of the model geometry, meshing it into finite elements, defining material properties, and applying loads and boundary conditions.
  • FINITE VOLUME METHODS: A technique related to the finite element method. The equations are integrated approximately using t he weighted residual method, but a different form of weighting function is used from that in the finite element method. For the finite element method the Galerkin form of the weighted residual method is used.
  • FIXED BOUNDARY CONDITIONS: All degrees of freedom are restrained for this condition. The nodes on the fixed boundary can not move: translation or rotation.
  • FLEXIBILITY MATRIX FORCE METHOD: The conventional form of the finite element treats the displacements as unknowns, which leads to a stiffness matrix form. Alternative methods treating the stresses (internal forces) as unknowns lead to force methods with an associated flexibility matrix. The inverse of the stiffness matrix is the flexibility matrix.
  • FORCED RESPONSE: The dynamic motion results from a time varying forcing function.
  • FORCING FUNCTIONS: The dynamic forces that are applied to the system.
  • FOURIER EXPANSIONS FOURIER SERIES: Functions that repeat themselves in a regular manner can be expanded in terms of a Fourier series.
  • FOURIER TRANSFORM: A method for finding the frequency content of a time varying signal. If the signal is periodic it gives the same result as the Fourier series.
  • FOURIER TRANSFORM PAIR:The Fourier transform and its inverse which, together, allow the complete system to be transformed freely in either direction between the time domain and the frequency domain.
  • FRAMEWORK ANALYSIS: If a structure is idealized as a series interconnected line elements then this forms a framework analysis model. If the connections between the line elements a re pins then it is a pin-jointed framework analysis. If the joints are rigid then the lines must be beam elements.
  • FREE VIBRATION: The dynamic motion which results from specified initial conditions. The forcing function is zero.
  • FREQUENCY DOMAIN: The structures forcing function and the consequent response is defined in terms of their frequency content. The inverse Fourier transform of the frequency domain gives the corresponding quantity in the time domain.
  • FRONTAL SOLUTION WAVEFRONT SOLUTION: A form of solving the finite element equations using Gauss elimination that is very efficient for the finite element form of equations.

G

  • GAP/CONTACT ELEMENT: These are special forms of non-linear element that have a very high stiffness in compression and a low stiffness in tension. They are used to model contact conditions between surfaces. Most of these elements also contain a model for sliding friction between the contacting surfaces. Some gap elements are just line springs between points and others are more general forms of quadrilateral or brick element elements. The line spring elements should only be used in meshes of first order finite elements.
  • GAUSS POINT EXTRAPOLATION GAUSS POINT STRESSES: Stresses calculated internally within the element at the Gauss integration points are called the Gauss point stresses. These stresses are usually more accurate at these points than the nodal points.

  • GAUSS POINTS GAUSS WEIGHTS: The Gauss points are the sample points used within the elements for the numerical integration of the matrices and loadings. They are also the points at which the stresses can be recovered. The Gauss weights are associated factors used in the numerical integration process. They represent the volume of influence of the Gauss points. The positions of the Gauss points, together with the associated Gauss weights, are available in tables for integrations of polynomials of various orders.

  • GAUSSIAN ELIMINATION: A form of solving a large set of simultaneous equations. Within most finite element systems a form of Gaussian elimination forms the basic solution process.
  • GAUSSIAN INTEGRATION GAUSSIAN QUADRATURE: A form of numerically integrating functions that is especially efficient for integrating polynomials. The functions are evaluated at the Gauss points, multiplied by the Gauss weights and summed to give the integral.
  • GENERALIZED COORDINATES: A set of linearly independent displacement coordinates which are consistent with the constraints and are just sufficient to describe any arbitrary configuration of the system. Generalized coordinates are usually patterns of displacements, typically the system eigenvectors.
  • GENERALIZED MASS: The mass associated with a generalized displacement.
  • GENERALIZED STIFFNESS: The stiffness associated with a generalized displacement.
  • GEOMETRIC PROPERTIES: Various shape dependent properties of real structures, such as thickness, cross sectional area, sectional moments of inertia, centroid location and others that are applied as properties of finite elements.
  • GEOMETRIC/STRESS STIFFNESS: The component of the stiffness matrix that arises from the rotation of the internal stresses in a large deflection problem. This stiffness is positive for tensile stresses and negative for compressive stresses. If the compressive stresses are sufficiently high then the structure will buckle when the geometric stiffness cancels the elastic stiffness.
  • GEOMETRICAL ERRORS: Errors in the geometrical representation of the model. These generally arise from the approximations inherent in the finite element approximation.
  • GLOBAL STIFFNESS MATRIX: The assembled stiffness matrix of the complete structure.

  • GROSS DEFORMATIONS: Deformations sufficiently high to make it necessary to include their effect in the solution process. The problem requires a large deflection non-linear analysis.

  • GOVERNING EQUATIONS: The governing equations for a system are the equations derived from the physics of the system. Many engineering systems can be described by governing equations, which determine the system's characteristics and behaviors.
  • GUARD VECTORS: The subspace iteration (simultaneous vector iteration) method uses extra guard vectors in addition to the number of vectors requested by the user. These guard the desired vectors from being contaminated by the higher mode vectors and speed up convergence.
  • GUI: GUI stands for graphical user interface, which provides a visual tool to build a finite element model for a domain with complex geometry and boundary conditions.

H

  • HARDENING STRUCTURE: A structure where the stiffness increases with load.
  • HARMONIC LOADING: A dynamic loading that is periodic and can be represented by a Fourier series.
  • HEAT CONDUCTION: The analysis of the steady state heat flow within solids and fluids. The equilibrium balance between internal and external heat flows.
  • HERMITIAN SHAPE FUNCTIONS: Shape functions that provide both variable and variable first derivative continuity (displacement and slope continuity in structural terms) across element boundaries.
  • HEXAHEDRON ELEMENTS: Type of 3D element which has six quadrilateral faces.
  • HIGH/LOW ASPECT RATIO: The ratio of the longest side length of a body to the shortest is termed its aspect ratio. Generally bodies with high aspect ratios (long and thin) are more ill conditioned for numerical solution than bodies with an aspect ratio of one.
  • HOOKES LAW: The material property equations relating stress to strain for linear elasticity. They involve the material properties of Young’s modulus and Poisson ratio.
  • HOURGLASS MODE: Zero energy modes of low order quadrilateral and brick elements that arise from using reduced integration. These modes can propagate through the complete body.
  • H-CONVERGENCE: Convergence towards a more accurate solution by subdividing the elements into a number of smaller elements. This approach is referred to as H-convergence because of improved discretization due to reduced element size.
  • H-METHOD: A finite element method which requires an increasing number of elements to improve the solution.
  • H/P-REFINEMENT: Making the mesh finer over parts or all of the body is termed h-refinement. Making the element order higher is termed p-refinement.
  • HYBRID ELEMENTS: Elements that use stress interpolation within their volume and displacement interpolation around their boundary.
  • HYDROSTATIC STRESS: The stress arising from a uniform pressure load on a cube of material. It is the average value of the direct stress components at any point in the body.
  • HYSTERETIC DAMPING: A damping model representing internal material loss damping. The energy loss per unit cycle is independent of frequency. It is only valid for harmonic response.

I

  • ILL-CONDITIONING ERRORS: Numerical (rounding) errors that arise when using ill-conditioned equations.
  • ILL-CONDITIONING ILL-CONDITIONED EQUATIONS: Equations that are sensitive to rounding errors in a numerical operation. The numerical operation must also be defined. Equations can be ill conditioned for solving simultaneous equations but not for finding eigenvalues.
  • IMPULSE RESPONSE FUNCTION: The response of the system to an applied impulse.
  • IMPULSE RESPONSE MATRIX: The matrix of all system responses to all possible impulses. It is always symmetric for linear systems. It is the inverse Fourier transform of the dynamic flexibility matrix.
  • INCREMENTAL SOLUTION: A solutions process that involves applying the loading in small increments and finding the equilibrium conditions at the end of each step. Such solutions are generally used for solving non-linear problems.
  • INELASTIC MATERIAL BEHAVIOR: A material behavior where residual stresses or strains can remain in the body after a loading cycle, typically plasticity and creep.
  • INERTANCE (ACCELERANCE): The ratio of the steady state acceleration response to the value of the forcing function for a sinusoidal excitation.
  • INERTIA FORCE: The force that is equal to the mass times the acceleration.
  • INITIAL BUCKLING: The load at which a structure first buckles.
  • INITIAL STRAINS: The components of the strains that are non-elastic. Typically thermal strain and plastic strain.
  • INTEGRATION BY PARTS: A method of integrating a function where high order derivative terms are partially integrated to reduce their order.
  • INTERPOLATION FUNCTIONS SHAPE FUNCTIONS: The polynomial functions used to define the form of interpolation within an element. When these are expressed as interpolations associated with each node they become the element shape functions.
  • ISOPARAMETRIC ELEMENT: Elements that use the same shape functions (interpolations) to define the geometry as were used to define the displacements. If these elements satisfy the convergence requirements of constant stress representation and strain free rigid body motions for one geometry then it will satisfy the conditions for any geometry.
  • ISOTROPIC MATERIAL: Materials where the material properties are independent of the co-ordinate system.

J

  • JACOBI METHOD: A method for finding eigenvalues and eigenvectors of a symmetric matrix.
  • JACOBIAN MATRIX: A square matrix relating derivatives of a variable in one coordinate system to the derivatives of the same variable in a second coordinate system. It arises when the chain rule for differentiation is written in matrix form.
  • J-INTEGRAL METHODS: A method for finding the stress intensity factor for fracture mechanics problems.
  • JOINTS: The interconnections between components. Joints can be difficult to model in finite element terms but they can significantly affect dynamic behavior.

K

  • KINEMATIC BOUNDARY CONDITIONS: The necessary displacement boundary conditions for a structural analysis. These are the essential boundary conditions in a finite element analysis.
  • KINEMATICALLY EQUIVALENT FORCES (LOADS): A method for finding equivalent nodal loads when the actual load is distributed over a surface of a volume. The element shape functions are used so that the virtual work done by the equivalent loads is equal to the virtual work done by the real loads over the same virtual displacements. This gives the most accurate load representation for the finite element model. These are the non-essential stress boundary conditions in a finite element analysis.
  • KINEMATICALLY EQUIVALENT MASS: If the mass and stiffness are defined by the same displacement assumptions then a kinematically equivalent mass matrix is produced. This is not a diagonal (lumped) mass matrix.
  • KINETIC ENERGY: The energy stored in the system arising from its velocity. In some cases it can also be a function of the structural displacements.

L

  • LAGRANGE INTERPOLATION LAGRANGE SHAPE FUNCTIONS: A method of interpolation over a volume by means of simple polynomials. This is the basis of most of the shape function definitions for elements.
  • LAGRANGE MULTIPLIER TECHNIQUE: A method for introducing constraints into an analysis where the effects of the constraint are represented in terms of the unknown Lagrange multiplying factors.
  • LANCZOS METHOD: A method for finding the first few eigenvalues and eigenvectors of a set of equations. It is very well suited to the form of equations generated by the finite element method. It is closely related to the method of conjugate gradients used for solving simultaneous equations iteratively.
  • LEAST SQUARES FIT: Minimization of the sum of the squares of the distances between a set of sample points and a smooth surface . The finite element method gives a solution that is a least squares fit to the equilibrium equations.
  • LINEAR DEPENDENCE: One or more rows (columns) of a matrix are linear combinations of the other rows (columns). This means that the matrix is singular.
  • LINEAR ANALYSIS: Linear Finite Element Analysis is based on the following assumptions: (1) Static; (2) Small displacements; (3) Material is linearly elastic.
  • LINEAR SYSTEM: When the coefficients of stiffness, mass and damping are all constant then the system is linear. Superposition can be used to solve the response equation.
  • LOADINGS:The loads applied to a structure that result in deflections and consequent strains and stresses.
  • LOCAL STRESSES: Areas of stress that are significantly different from (usually higher than) the general stress level.
  • LOWER BOUND SOLUTION UPPER BOUND SOLUTION: The assumed displacement form of the finite element solution gives a lower bound on the maximum displacements and strain energy (i.e. these are under estimated) for a given set of forces. This is the usual form of the finite element method. The assumed stress form of the finite element solution gives an upper bound on the maximum stresses and strain energy (i.e. these are over estimated) for a given set of displacements.
  • LUMPED MASS MODEL: When the coefficients of the mass matrix are combined to produce a diagonal matrix. The total mass and the position of the structures center of gravity are preserved.

M

  • MASS: The constant(s) of proportionality relating the acceleration(s) to the force(s). For a discrete parameter multi degree of freedom model this is usually given as a mass matrix.
  • MASS ELEMENT: An element lumped at a node representing the effect of a concentrated mass in different coordinate directions.
  • MASS MATRIX: The matrix relating acceleration to forces in a dynamic analysis. This can often be approximated as a diagonal matrix with no significant loss of accuracy.
  • MASTER FREEDOMS: The freedoms chosen to control the structural response when using a Guyan reduction or sub structuring methods.
  • MATERIAL LOSS FACTOR: A measure of the damping inherent within a material when it is dynamically loaded.
  • MATERIAL PROPERTIES: The physical properties required to define the material behavior for analysis purposes. For stress analysis typical required material properties are Young’s modulus, Poisson’s ratio, density and coefficient of linear expansion. The material properties must have been obtained by experiment.
  • MATERIAL STIFFNESS MATRIX MATERIAL FLEXIBILITY MATRIX: The material stiffness matrix allows the stresses to be found from a given set of strains at a point. The material flexibility is the inverse of this, allowing the strains to be found from a given set of stresses. Both of these matrices must be symmetric and positive definite.
  • MATRIX DISPLACEMENT METHOD: A form (the standard form) of the finite element method where displacements are assumed over the element. This gives a lower bound solution.
  • MATRIX FORCE METHOD: A form of the finite element method where stresses (internal forces) are assumed over the element. This gives an upper bound solution.
  • MATRIX INVERSE: If matrix A times matrix B gives the unit matrix then A is the inverse of B (B is the inverse of A). A matrix has no inverse if it is singular.
  • MATRIX NOTATION MATRIX ALGEBRA: A form of notation for writing sets of equations in a compact manner. Matrix notation highlights the generality of various classes of problem formulation and solution. Matrix algebra can be easily programmed on a digital computer.
  • MATRIX PRODUCTS: Two matrices A and B can be multiplied together if A is of size (j*k) and B is of size (k*l). The resulting matrix is of size (j*l).
  • MATRIX TRANSPOSE: The process of interchanging rows and columns of a matrix so that the j’th column becomes the j’th row.
  • MEAN SQUARE CONVERGENCE: A measure of the rate of convergence of a solution process. A mean square convergence indicates a rapid rate of convergence.
  • MEMBRANE: Membrane behavior is where the strains are constant from the center line of a beam or center surface of a plate or shell. Plane sections are assumed to remain plane. A membrane line element only has stiffness along the line, it has zero stiffness normal to the line. A membrane plate has zero stiffness normal to the plate. This can cause zero energy (no force required) displacements in these normal directions. If the stresses vary linearly along the normal to the centerline then this is called bending behavior.

  • Mesh (Grid): The elements and nodes, together, form a mesh (grid), which is the central data structure in FEA.

  • MESH DENSITY MESH REFINEMENT: The mesh density indicates the size of the elements in relation to the size of the body being analyzed. The mesh density need not be uniform all over the body There can be areas of mesh refinement (more dense meshes) in some parts of the body. Making the mesh finer is generally referred to as h -refinement. Making the element order higher is referred to as p -refinement.
  • MESH GENERATION ELEMENT GENERATION: The process of generating a mesh of elements over the structure. This is normally done automatically or semi-automatically.
  • MESH SPECIFICATION: The process of choosing and specifying a suitable mesh of elements for an analysis.
  • MESH SUITABILITY: The appropriate choice of element types and mesh density to give a solution to the required degree of accuracy.
  • MINDLIN ELEMENTS: A form of thick shell element.
  • MOBILITY: The ratio of the steady state velocity response to the value of the forcing function for a sinusoidal excitation.
  • MODAL DAMPING: The damping associated with the generalized displacements defined by the eigenvectors. Its value has no physical significance since the eigenvector contains an arbitrary normalizing factor.
  • MODAL MASS: The mass associated with the generalized displacements defined by the eigenvectors. Its value has no physical significance since the eigenvector contains an arbitrary normalizing factor but the ratio of modal stiffness to modal mass is always the eigenvalue.
  • MODAL STIFFNESS: The stiffness associated with the generalized displacements defined by the eigenvectors. Its value has no physical significance since the eigenvector contains an arbitrary normalizing factor but the ratio of modal stiffness to modal mass is always the eigenvalue.
  • MODAL TESTING: The experimental technique for measuring resonant frequencies (eigenvalues) and mode shapes (eigenvectors).
  • MODE PARTICIPATION FACTOR: The generalized force in each modal equation of a dynamic system.
  • MODE SHAPE: Same as the e igenvector. The mode shape often refers to the measure mode, found from a modal test.
  • MODELLING: The process of idealizing a system and its loading to produce a numerical (finite element) model.
  • MODIFIED NEWTON-RAPHSON: A form of the Newton-Raphson process f or solving non-linear equations where the tangent stiffness matrix is held constant for some steps. It is suitable for mildly non-linear problems.
  • MOHR COULOMB EQUIVALENT STRESS: A form of equivalent stress that includes the effects of friction in granular (e.g. sand) materials.
  • MULTI DEGREE OF FREEDOM: The system is defined by more than one force/displacement equation.
  • MULTI-POINT CONSTRAINTS: Where the constraint is defined by a relationship between more than one displacement at different node points.

N

  • NATURAL FREQUENCY: The frequency at which a structure will vibrate in the absence of any external forcing. If a model has n degrees of freedom then it has n natural frequencies. The eigenvalues of a dynamic system are the squares of the natural frequencies.
  • NATURAL MODE: Same as the eigenvector.
  • NEWMARK METHOD NEWMARK BETA METHOD: An implicit solution method for integrating second order equations of motion. It can be made unconditionally stable.
  • NEWTON COTES FORMULAE: A family of methods for numerically integrating a function.
  • NEWTON-RAPHSON NON-LINEAR SOLUTION: A general technique for solving non-linear equations. If the function and its derivative are known at any point then the Newton-Raphson method is second order convergent.
  • NODAL VALUES: The value of variables at the node points. For a structure typical possible nodal values are force, displacement, temperature, velocity, x, y, and z.
  • NODE: A node is a point in the domain, and is often the vertex of several elements. A node is also called a nodal point. computers to generate finite element mesh automatically. There are many different algorithms for automatic mesh generation. Click here to see some automatically generated mesh samples.
  • NON-CONFORMING ELEMENTS: Elements that do not satisfy compatibility either within the element or across element boundaries or both. Such elements are not generally reliable although they might give very good solutions in some circumstances.
  • NON-HOLONOMIC CONSTRAINTS: Constraints that can only be defined at the level of infinitesimal displacements. They cannot be integrated to give global constraints.
  • NON-LINEAR SYSTEM/ANALYSIS: Nonlinear Finite Element Analysis considers material nonlinearity and/or geometric nonlinearity of an engineering system. Geometric nonlinear analysis is also called large deformation analysis.
  • NON-STATIONARY RANDOM: A force or response that is random and its statistical properties vary with time.
  • NON-STRUCTURAL MASS: Mass that is present in the system and will affect the dynamic response but it is not a part of the structural mass (e.g. the payload).
  • NORM: A scalar measure of the magnitude of a vector or a matrix.
  • NUMERICAL INTEGRATION: The process of finding the approximate integral of a function by numerical sampling and summing. In the finite element method the element matrices are usually formed by the Gaussian quadrature form of numerical integration.

O

  • OPTIMAL SAMPLING POINTS: The minimum number of Gauss points required to integrate an element matrix. Also the Gauss points at which the stresses are most accurate (see reduced Gauss points).
  • OVER DAMPED SYSTEM: A system which has an equation of motion where the damping is greater than critical. It has an exponentially decaying, non-oscillatory impulse response.
  • OVERSTIFF SOLUTIONS: Lower bound solutions. These are associated with the assumed displacement method.

P

  • PARTICIPATION FACTOR: The fraction of the mass that is active for a given mode with a given distribution of dynamic loads. Often this is only defined for the specific load case of inertia (seismic) loads.
  • PATCH TEST: A test to prove that a mesh of distorted elements can represent constant stress situations and strain free rigid body motions (i.e. the mesh convergence requirements) exactly.
  • PDEs: partial differential equations.
  • PERIODIC RESPONSE FORCE: A response (force) that regularly repeats itself exactly.
  • PHASE ANGLE: The ratio of the in phase component of a signal to its out of phase component gives the tangent of the phase angle of the signal relative to some reference.
  • PLANE STRAIN/STRESS: A two dimensional analysis is plane stress if the stress in the third direction is assumed zero. This is valid if the dimension of the body in this direction is very small, e.g. a thin plate. A two dimensional analysis is plane strain if the strain in the third direction is assumed zero. This is valid if the dimension of the body in this direction is very large, e.g. a cross- sectional slice of a long body.
  • PLATE BENDING ELEMENTS: Two-dimensional shell elements where the in plane behavior of the element is ignored. Only the out of plane bending is considered.
  • POISSONS RATIO: The material property in Hooke s law relating strain in one direction arising from a stress in a perpendicular direction to this. Poissons' ratio can be defined in WELSIM material module.
  • POST-PROCESSING: The interrogation of the results after the analysis phase. This is usually done with a combination of graphics and numerics.
  • POTENTIAL ENERGY: The energy associated with the static behavior of a system. For a structure this is the strain energy.
  • POWER METHOD: A method for finding the lowest or the highest eigenvalue of a system.
  • PRANDTL-REUSS EQUATIONS: The equations relating an increment of stress to an increment of plastic strain for a metal undergoing plastic flow.
  • PREPROCESSING: The process of preparing finite element input data involving model creation, mesh generation,material definition, and load and boundary condition application.
  • PRIMARY COMPONENT: Those parts of the structure that are of direct interest for the analysis. Other parts are secondary components.
  • PRINCIPAL CURVATURE: The maximum and minimum radii of curvature at a point.
  • PRINCIPAL STRESSES: The maximum direct stress values at a point. They are the eigenvalues of the stress tensor.
  • PROPORTIONAL DAMPING: A damping matrix that is a linear combination of the mass and stiffness matrices. The eigenvectors of a proportionally damped system are identical to those of the undamped system.
  • P-METHOD: A method of finite element analysis that uses P- convergence to iteratively minimize the error of analysis.
  • QR METHOD: A technique for finding eigenvalues. This is currently the most stable method for finding eigenvalues but it is restricted in the size of problem that it can solve.
  • RANDOM VIBRATIONS: The applied loading is only known in terms of its statistical properties. The loading is nondeterministic in that its value is not known exactly at any time but its mean, mean square, variance and other statistical quantities are known.

R

  • RANK DEFICIENCY: A measure of how singular a matrix is.
  • RAYLEIGH DAMPING: Damping that is proportional to a linear combination of the stiffness and mass. This assumption has no physical basis but it is mathematically convenient to approximate low damping in this way when exact damping values are not known.
  • RAYLELGH QUOTIENT: The ratio of stiffness times displacement squared (2*strain energy) to mass times displacement squared. The minimum values of the Rayleigh quotient are the eigenvalues.
  • REACTION FORCES: The forces generated at support points when a structure is loaded. Reaction force is supported in WELSIM.
  • REFERENCE TEMPERATURE: The reference temperature defines the temperature at which strain in the design does not result from thermal expansion or contraction. For many situations, reference temperature is adequately defined as room temperature. Define reference temperature in the properties of an environment.
  • REDUCED INTEGRATION: If an element requires an l*m*n Gauss rule to integrate the element matrix exactly then (l-1)(m-1)(n-1) is the reduced integration rule. For many elements the stresses are most accurate at the reduced integration points. For some elements the matrices are best evaluated by use of the reduced integration points. Use of reduced integration for integrating the elements can lead to zero energy and hour glassing modes.
  • RESPONSE SPECTRUM METHOD: A method for characterizing a dynamic transient forcing function and the associated solution technique. It is used for seismic and shock type loads.
  • RIGID BODY DEFORMATIONS: A non-zero displacement pattern that h as zero strain energy associate with it.
  • RIGID BODY DISPLACEMENT: A non-zero displacement pattern that has zero strain energy associate with it.
  • RIGID BODY MODES: If a displaced shape does not give rise to any strain energy in the structure then this a rigid body mode. A general three-dimensional unsupported structure has 6 rigid body modes, 3 translation and 3 rotation.
  • RIGID LINKS/OFFSETS: This is a connection between two non-coincident nodes assuming that the connection is infinitely stiff. This allows the degrees of freedom at one of the nodes (the slave node) to be deleted from the system. It is a form of multi-point constraint.
  • ROUNDOFF ERROR: Computers have a fixed word length and hence only hold numbers to a certain number of significant figures. If two close numbers are subtracted one from another then the result loses the first set of significant figures and hence loses accuracy. This is round off error.

S

  • SECANT STIFFNESS: The stiffness defined by the slope of the line from the origin to the current point of interest on a load/deflection curve.
  • SECONDARY COMPONENTS: Components of a structure not of direct interest but they may have some influence of the behavior of the part of the structure that is of interest (the primary component) and have to be included in the analysis in some approximate form.
  • SEEPAGE FLOW: Flows in porous materials
  • SEISMIC ANALYSIS: The calculation of the dynamic displacement and stress response arising from earthquake excitations.
  • SELECTED REDUCED INTEGRATION: A form of Gaussian quadrature where different sets of Gauss points are used for different strain components.
  • SELF ADJOINT EQUATIONS: A form of matrix products that preserves symmetry of equations. The product A*B*A(transpose) is self -adjoint if the matrix B is symmetric. The result of the product will be symmetric for any form of A that is of a size compatible with B. This form o f equation occurs regularly within the finite element method. Typically it means that for a structural analysis the stiffness (and mass) matrices for any element or element assembly will be symmetric.
  • SELF EQUILIBRATING LOADS: A load set is self -equilibrating if all of its resultants are zero. Both translation and moment resultants are zero.
  • SEMI-LOOF ELEMENT: A form of thick shell element.
  • SHAKEDOWN: If a structure is loaded cyclically and initially undergoes some plastic deformation then it is said to shakedown if the behavior is entirely elastic after a small number of load cycles.
  • SIMULTANEOUS VECTOR ITERATION: A method for finding the first few eigenvalues and eigenvectors of a finite element system. This is also known as subspace vector iteration.
  • SINGLE DEGREE OF FREEDOM: The system is defined by a single force/displacement equation.
  • SINGLE POINT CONSTRAINT: Where the constraint is unique to a single node point.
  • SINGULAR MATRIX: A square matrix that cannot be inverted.
  • SKEW DISTORTION (ANGULAR DISTORTION): A measure of the angular distortion arising between two vectors that are at right angles in the basis space when these are mapped to the real coordinate space. If this angle approaches zero the element becomes ill-conditioned.
  • SOLUTION DIAGNOSTICS: Messages that are generated as the finite element solution progresses. These should always be checked for relevance but the are often only provided for information purposes
  • SOLUTION EFFICIENCY: A comparative measure between two solutions of a given problem defining which is the ‘best’. The measures can include accuracy, time of solution, memory requirements and disc storage space.
  • SPARSE MATRIX METHODS: Solution methods that exploit the sparse nature of finite element equations. Such methods include the frontal solution and Cholesky (skyline) factorization for direct solutions, conjugate gradient methods for iterative solutions and the Lanczos method and subspace iteration (simultaneous vector iteration) for eigenvalue solutions.
  • SPECTRAL DENSITY: The Fourier transform of the correlation function. In random vibrations it gives a measure of the significant frequency content in a system. White noise has a constant spectral density for all frequencies.
  • SPLINE CURVES: A curve fitting technique that preserves zero, first and second derivative continuity across segment boundaries.
  • STATIC ANALYSIS: Analysis of stresses and displacements in a structure when the applied loads do not vary with time.
  • STATICALLY DETERMINATE STRUCTURE: A structure where all of the unknowns can be found from equilibrium considerations alone.
  • STATICALLY EQUIVALENT LOADS: Equivalent nodal loads that have the same equilibrium resultants as the applied loads but do not necessarily do the same work as the applied loads.
  • STATICALLY INDETERMINATE STRUCTURE REDUNDANT: A structure where all of the unknowns can not be found from equilibrium considerations alone. The compatibility equations must also be used. In this case the structure is said to be redundant.
  • STATIONARY RANDOM EXCITATION: A force or response that is random but its statistical characteristics do not vary with time.
  • STEADY-STATE HEAT TRANSFER: Determination of the temperature distribution of a mechanical part having reached thermal equilibrium with the environmental conditions. There are no time varying changes in the resulting temperatures.
  • STIFFNESS: A set of values which represent the rigidity or softness of a particular element. Stiffness is determined by material type and geometry.
  • STIFFNESS MATRIX: The parameter(s) that relate the displacement(s) to the force(s). For a discrete parameter multi degree of freedom model this is usually given as a stiffness matrix.
  • STRAIN: A dimensionless quantity calculated as the ratio of deformation to the original size of the body.
  • STRAIN ENERGY: The energy stored in the system by the stiffness when it is displaced from its equilibrium position.
  • STRESS: The intensity of internal forces in a body (force per unit area) acting on a plane within the material of the body is called the stress on that plane.
  • STRESS ANALYSIS: The computation of stresses and displacements due to applied loads. The analysis may be elastic, inelastic, time dependent or dynamic.
  • STRESS AVERAGING STRESS SMOOTHING: The process of filtering the raw finite element stress results to obtain the most realistic estimates of the true state of stress.
  • STRESS CONCENTRATION: A local area of the structure where the stresses are significantly higher than the general stress level. A fine mesh of elements is required in such regions if accurate estimates of the stress concentration values are required.
  • STRESS CONTOUR PLOT: A plot of a stress component by a series of color filled contours representing regions of equal stress. WELSIM can plot stress contour.
  • STRESS DISCONTINUITIES/ERROR ESTIMATES: Lines along which the stresses are discontinuous. If the geometry or loading changes abruptly along a line then the true stress can be discontinuous. In a finite element solution the element assumptions means that the stresses will generally be discontinuous across element boundaries. The degree of discontinuity can then be used to form an estimate of the error in the stress within the finite element calculation.
  • STRESS EXTRAPOLATION: The process of taking the stress results at the optimum sampling points for an element and extrapolating these to the element node points.
  • STRESS INTENSITY FACTORS: A measure of the importance of the stress at a sharp crack tip (where the actual stress values will be infinite) used to estimate if the crack will propagate.
  • STRESS/STRAIN VECTOR/TENSOR: The stress (strain) vector is the components of stress (strain) written as a column vector. For a general three dimensional body this is a (6×1) matrix. The components of stress (strain) written in tensor form. For a general three dimensional body this forms a (3×3) matrix with the direct terms down the diagonal and the shear terms as the off-diagonals.
  • STRESS-STRAIN LAW: The material property behavior relating stress to strain. For a linear behavior this is Hookes law (linear elasticity). For elastic plastic behavior it is a combination of Hookes law and the Prandtl-Reuss equations.
  • SUBSPACE VECTOR ITERATION: A method for finding the first few eigenvalues and eigenvectors of a finite element system. This is also known as simultaneous vector iteration.
  • SUBSTRUCTURING: An efficient way of solving large finite element analysis problems by breaking the model into several parts or substructures, analyzing each one individually, and then combining them for the final results.
  • SUBSTRUCTURING SUPER ELEMENT METHOD: Substructuring is a form of equation solution method where the structure is split into a series of smaller structures -the substructures. These are solved to eliminate the internal freedoms and the complete problem solved by only assembling the freedoms on the common boundaries between the substructures. The intermediate solution where the internal freedoms of a substructure have been eliminated gives the super element matrix for the substructure.
  • SURFACE MODELING: The geometric modeling technique in which the model is created in terms of its surfaces only without any volume definition.

T

  • TEMPERATURE CONTOUR PLOTS: A plot showing contour lines connecting points of equal temperature.
  • TETRAHEDRON/TETRAHEDRAL ELEMENT: A three dimensional four sided solid element with triangular faces.
  • THERMAL CAPACITY: The material property defining the thermal inertia of a material. It relates the rate of change of temperature with time to heat flux.
  • THERMAL CONDUCTIVITY: The material property relating temperature gradient to heat flux. Temperature-dependent thermal conductivity is supported in WELSIM.
  • THERMAL LOADS: The equivalent loads on a structure arising from thermal strains. These in turn arise from a temperature change.
  • THERMAL STRAINS: The components of strain arising from a change in temperature.
  • THERMAL STRESS ANALYSIS: The computation of stresses and displacements due to change in temperature.
  • THIN/THICK SHELL ELEMENT: In a shell element the geometry is very much thinner in one direction than the other two. It can then be assumed stresses can only vary linearly at most in the thickness direction. If the through thickness shear strains can be taken as zero then a thin shell model is formed. This uses the Kirchoff shell theory If the transverse shear strains are not ignored then a thick shell model is formed. This uses the Mindlin shell theory. For the finite element method the thick shell theory generates the most reliable form of shell elements. There are two forms of such elements, the Mindlin shell and the Semi-Loof shell.
  • TIME DOMAIN: The structures forcing function and the consequent response is defined in terms of time histories. The Fourier transform of the time domain gives the corresponding quantity in the frequency domain.
  • TRANSIENT FORCE: A forcing function that varies for a short period of time and then settles to a constant value.
  • TRANSIENT RESPONSE: The component of the system response that does not repeat itself regularly with time.
  • TRANSITION ELEMENT: Special elements that have sides with different numbers of nodes. They are used to couple elements with different orders of interpolation, typically a transition element with two nodes on one edge and three on another is used to couple a 4-node quad to an 8-node quad.
  • TRANSIENT HEAT TRANSFER: Heat transfer problems in which temperature distribution varies as a function of time.
  • TRIANGULAR ELEMENTS: Two dimensional or surface elements that have three edges.
  • TRUSS ELEMENT: A one dimensional line element defined by two nodes resisting only axial loads.

U

  • ULTIMATE STRESS: The failure stress (or equivalent stress) for the material.
  • UNDAMPED NATURAL FREQUENCY: The square root of the ratio of the stiffness to the mass (the square root of the eigenvalue). It is the frequency at which an undamped system vibrates naturally. A system with n degrees of freedom has n natural frequencies.
  • UNDER DAMPED SYSTEM: A system which has an equation of motion where the damping is less than critical. It has an oscillatory impulse response.
  • UPDATED/TOTAL LAGRANGIAN: The updated Lagrangian coordinate system is one where the stress directions are referred to the last known equilibrium state. The total Lagrangian coordinate system is one where the stress directions are referred to the initial geometry. Both algorithms are supported in WELSIM.

V

  • VARIABLE BANDWIDTH (SKYLINE): A sparse matrix where the bandwidth is not constant. Some times called a skyline matrix.
  • VIRTUAL DISPLACEMENTS: An arbitrary imaginary change of the system configuration consistent with its constraints.
  • VIRTUAL WORK/DISPLACEMENTS/FORCES: Techniques for using work arguments to establish equilibrium equations from compatibility equations (virtual displacements) and to establish compatibility equations from equilibrium (virtual forces).
  • VISCOUS DAMPING: The damping is viscous when the damping force is proportional to the velocity.
  • VOLUME/VOLUMETRIC DISTORTION: The distortion measured by the determinant of the Jacobian matrix, det J.
  • VON MISES STRESS: An “averaged” stress value calculated by adding the squares of the 3 component stresses (X, Y and Z directions) and taking the square root of their sums. This value allows for a quick method to locate probable problem areas with one plot.
  • VON MISES/TRESCA EQUIVALENT STRESS: Equivalent stress measures to represent the maximum shear stress in a material. These are used to characterize flow failures (e.g. plasticity and creep) in WELSIM. From test results the VonMises form seems more accurate but the Tresca form is easier to handle.

W

  • WHIRLING STABILITY: The stability of rotating systems where centrifugal and Coriolis are also present.
  • WILSON THETA METHOD: An implicit solution method for integrating second order equations of motion. It can be made unconditionally stable.

Y

  • YOUNG’S MODULUS: The material property relating a uniaxial stress to the corresponding strain.

Z

  • ZERO ENERGY/STIFFNESS MODES: Non-zero patterns of displacements that have no energy associated with them. No forces are required to generate such modes, Rigid body motions are zero energy modes. Buckling modes at their buckling loads are zero energy modes. If the elements are not fully integrated they will have zero energy displacement modes. If a structure has one or more zero energy modes then the matrix is singular.
\ No newline at end of file + Glossary - WelSim Documentation
Skip to content

Glossary

A

  • ACCELERATION: The second time derivative of the displacement (the first time derivative of the velocity).
  • ADAPTIVE FINITE ELEMENT METHOD/ADAPTIVE MESHING: An adaptive finite element solver iteratively performs finite element analysis, determines the areas of the mesh where the solution is not sufficiently accurate and refines the mesh in those areas until the solution obtains the prescribed degree of accuracy. Adaptive Meshing involves automatically improving the mesh where necessary to meet specified convergence criteria.
  • ASPECT RATIO: The ratio of the longest to shortest side lengths on an element.
  • ASSEMBLY: Geometric:Two or more parts mated together. FEA: The process of assembling the element matrices together to form the global matrix. Typically element stiffness matrices are assembled to form the complete stiffness matrix of the structure.
  • AUTOMATIC MESH GENERATION: The process of generating a mesh of elements over the volume that is being analyzed. There are two forms of automatic mesh generation: Free Meshing -Where the mesh has no structure to it. Free meshing generally uses triangular and tetrahedral elements. Mapped Meshing -Where large regions, if not all, of the volume is covered with regular meshes. This can use any form of element. Free meshing can be used to fill any shape. Mapped meshing can only be used on some shapes without elements being excessively distorted.
  • AXISYMMETRY: If a shape can be defined by rotating a cross- section about a line (e.g. a cone) then it is said to be axisymmetric. This can be used to simplify the analysis of the system. Such models are sometimes called two and a half dimensional since a 2D cross- section represents a 3D body.

B

  • BARLOW POINTS: The set of Gauss integration points that give the best estimates of the stress for an element. For triangles and tetrahedra these are the full Gauss integration points. For quadrilateral and brick elements they are the reduced Gauss points.
  • BASIS SPACE: When an element is being constructed it is derived from a simple regular shape in non-dimensional coordinates. The coordinates used to define the simple shape form the basis space. In its basis space a general quadrilateral is a 2×2 square and a general triangle is an isosceles triangle with unit side lengths.
  • BEAM ELEMENT: A line element that has both translational and rotational degrees of freedom. It represents both membrane and bending actions.
  • BENDING: Bending behavior is where the strains vary linearly from the centerline of a beam or center surface of a plate or shell.There is zero strain on the centerline for pure bending. Plane sections are assumed to remain plane. If the stresses are constant normal to the centerline then this is called membrane behavior.
  • BENDING STRESS: A compressive and/or tensile stress resulting from the application of a nonaxial force to a structural member.
  • BODY FORCE VECTOR: Mechanical loadings within the interior of the volume, typically inertia loadings in a stiffness analysis.
  • BOUNDARY CONDITIONS: The boundary conditions of a function are values of the function at the edge of the range of some of its variables. Knowledge of some of the boundary conditions is needed to solve an engineering problem or to find an unknown function.
  • BOUNDARY ELEMENT/INTEGRAL: A method of solving differential equations by taking exact solutions to the field equations loaded by a point source and then finding the strengths of sources distributed around the boundary of the body required to satisfy the boundary conditions on the body.
  • BUBBLE FUNCTIONS: Element shape functions that are zero along the edges of the element. They are non-zero within the interior of the element.
  • BUCKLING (SNAP THROUGH): The situation where the elastic stiffness of the structure is cancelled by the effects of compressive stress within the structure. If the effect of this causes the structure to suddenly displace a large amount in a direction normal to the load direction then it is classical bifurcation buckling. If there is a sudden large movement in the direction of the loading it is snap through buckling.

C

  • CAE: computer aided engineering.
  • CENTRAL DIFFERENCE METHOD: A method for numerically integrating second order dynamic equations of motion. It is widely used as a technique for solving non-linear dynamic problems.
  • CHARACTERISTIC VALUE: Same as the eigenvalue.
  • CHARACTERISTIC VECTOR: Same as the eigenvector.
  • CHOLESKY FACTORISATION (SKYLINE): A method of solving a set of simultaneous equations that is especially well suited to the finite element method. It is sometimes called a skyline solution. Choose to optimize the profile o f the matrix if a renumbering scheme is used.
  • COEFFICIENT OF VISCOUS DAMPING: The system parameter relating force to velocity.
  • COMPATIBILITY OF STRAINS: Compatibility of strain is satisfied if strains that are continuous before loading are continuous after.
  • COMPLETE DISPLACEMENT FIELD: When the functions interpolating the field variable (typically the displacements) form a complete nth order polynomial in all directions.
  • COMPLEX EIGENVALUES: The eigenvectors of a damped system. For proportionally damped systems they are the same as the undamped eigenvectors. For non-proportionally damped systems with damping in all modes less th an critical they are complex numbers and occur as complex conjugate pairs.
  • COMPLEX EIGENVECTORS: The eigenvalues of any damped system. If the damping is less than critical they will occur as complex conjugate pairs even for proportionally damped systems. The real part of the complex eigenvalue is a measure of the damping in the mode and should always be negative. The imaginary part is a measure of the resonant frequency.
  • COMPOSITE MATERIAL: A material that is made up of discrete components, typically a carbon-epoxy composite material or a glass-fiber material. Layered material and foam materials are also forms of composite materials.
  • COMPUTATIONAL FLUID DYNAMICS (CFD): A computer-based numerical study of turbulent fluid flow using approximate methods such as the finite element method, the fine difference method, the boundary element method, the finite volume methods, and so on.
  • CONDITION NUMBER: The ratio of the highest eigenvalue to the lowest eigenvalue of a matrix. The exponent of this number gives a measure of the number of digits required in the computation to maintain numerical accuracy. The higher the condition number the more chance of numerical error and the slower the rate of convergence for iterative solutions.
  • CONDITIONAL/UNCONDITIONAL STABILITY: Any scheme for numerically integrating dynamic equations of motion in a step-by- step form is conditionally stable if there is a maximum time step value that can be used. It is unconditionally stable (but not necessarily accurate) if any length of time step can be used.
  • CONJUGATE GRADIENT METHOD: A method for solving simultaneous equations iteratively. It is closely related to the Lanczos method for finding the first few eigenvalues and eigenvectors of a set of equations.
  • CONSISTENT DISPLACEMENTS AND FORCES: The displacements and forces act at the same point and in the same direction so that the sum of their products give a work quantity. If consistent displacements and forces are used the resulting stiffness and mass matrices are symmetric.
  • CONSTANT STRAIN CONSTANTSTRESS: For structural analysis an element must be able to reproduce a state of constant stress and strain under a suitable loading to ensure that it will converge to the correct solution. This is tested for using the patch test.
  • CONSTITUTIVE RELATIONSHIPS: The equations defining the material behavior for an infinitesimal volume of material. For structures these are the stress -strain laws and include Hookes law for elasticity and the Prandle-Reuss equations for plasticity.
  • CONSTRAINT EQUATIONS (MULTI POINT CONSTRAINTS): If one group of variables can be defined in terms of another group then the relationship between the two are constraint equations. Typically the displacements on the face of an element can be constrained to remain plane but the plane itself can move.
  • CONSTRAINTS: Known values of, or relationships between, the displacements in the coordinate system.
  • CONTACT PROBLEMS: A contact problem occurs when two bodies that are originally apart can come together, or two bodies that are originally connected can separate.
  • CONTINUOUS MASS MODELS: The system mass is distributed between the degrees of freedom. The mass matrix is not diagonal.
  • CONTOUR PLOTTING: A graphical representation of the variation of a field variable over a surface, such as stress, displacement, or temperature. A contour line is a line of constant value for the variable. A contour band is an area of a single color for values of the variable within two limit values.
  • CONVERGENCE REQUIREMENTS: For a structural finite element to converge as the mesh is refined it must be able to represent a state of constant stress and strain free rigid body movements exactly. There are equivalent requirements for other problem types.
  • CRANK-NICHOLSON SCHEME: A method for numerically integrating first order dynamic equations of motion. It is widely used as a technique for solving thermal transient problems.
  • CRITICAL ENERGY RELEASE: This is a material property defining the minimum energy that a propagating crack must release in order for it to propagate. Three critical energies, or modes of crack propagation, have been identified. Mode 1 is the two surfaces of the crack moving apart. Mode 2 is where the two surfaces slide from front to back. Mode 3 is where the to surfaces slide sideways.
  • CRITICALLY DAMPED SYSTEM CRITICAL DAMPING: The dividing line between under damped and over damped systems where the equation of motion has a damping value that is equal to the critical damping.
  • CYCLIC SYMMETRY: A generalization of axisymmetry. The structure is composed of a series of identical sectors that are arranged circumferentially to form a ring. A turbine disc with blades attached is atypical example.

D

  • DAMPED EIGENVALUES: Same as complex eigenvalues.
  • DAMPED EIGENVECTORS: Same as complex eigenvectors.
  • DAMPED NATURAL FREQUENCY: The frequency at which the damped system vibrates naturally when only an initial disturbance is applied.
  • DAMPING: Any mechanism that dissipates energy in a vibrating system.
  • DAMPING FACTOR (DECAY FACTOR): The damping factor is the ratio of the actual damping to the critical damping. It is often specified as a percentage. If the damping factor is less than one then the system can undergo free vibrations. The free vibrations will decay to zero with time. If the damping factor is greater than one then the decay is exponential and no vibrations occur. For most structures the damping factor is very small.
  • DEGENERATE ELEMENTS: Elements that are defined as one shape in the basis space but they are a simpler shape in the real space. A quadrilateral can degenerate into a triangle. A brick element can degenerate into a wedge, a pyramid or a tetrahedron. Degenerate elements should be avoided in practice.
  • DEGREES OF FREEDOM: The number of equations of equilibrium for the system. In dynamics, the number of displacement quantities which must be considered in order to represent the effects of all of the significant inertia forces. Degrees of freedom define the ability of a given node to move in any direction in space. There are six types of DOF for any given node: 3 possible translations (one each in the X,Y and Z directions) and 3 possible rotations (one rotation about each of the X,Y, and X axes). DOF are defined and restricted by the elements and constraints associated with each node.
  • DET(J) DET J: The Jacobian matrix is used to relate derivatives in the basis space to the real space. The determinant of the Jacobian – det(j) -is a measure of the distortion of the element when mapping from the basis to the real space.
  • DEVIATORIC STRESS STRESS DEVIATORS: A measure of stress where the hydrostatic stress has been subtracted from the actual stress. Material failures that are flow failures (plasticity and creep) fail independently of the hydrostatic stress. The failure is a function of the deviatoric stress.
  • DIAGONAL GENERALIZED MATRIX: The eigenvectors of a system can be used to define a coordinate transformation such that, in these generalized coordinates the coefficient matrices (typically mass and stiffness) are diagonal.
  • DIE-AWAY LENGTH: If there is a stress concentration in a structure the high stress will reduce rapidly with distance from the peak value. The distance over which it drops to some small value is called the die-away length. A fine mesh is required over this die-away length for accurate stress results.
  • DIRECT INTEGRATION: The name for various techniques for numerically integrating equations of motion. These are either implicit or explicit methods and include central difference, Crank-Nicholson, Runge-Kutta, Newmark beta and Wilson theta.
  • DISCRETE PARAMETER MODELS (DISCRETISED APPROACH): The model is defined in terms of an ordinary differential equation and the system has a finite number of degrees of freedom.
  • DISCRETIZATION: The process of dividing geometry into smaller pieces (finite elements) to prepare for analysis, i.e. Meshing.
  • DISPLACEMENT METHOD (DISPLACEMENT SOLUTION) :A form of discrete parameter model where the displacements of the system are the basic unknowns.
  • DISPLACEMENT: The distance, translational and rotational, that a node travels from its initial position to its post-analysis position. The total displacement is represented by components in each of the 3 translational directions and the 3 rotational directions.
  • DISPLACEMENT PLOTS: Plots showing the deformed shape of the structure. For linear small deflection problems the displacements are usually multiplied by a magnifying factor before plotting the deformed shape.
  • DISPLACEMENT VECTOR: The nodal displacements written as a column vector.
  • DOMAIN: In mathematics, a domain is the set of independent variables for which a function is defined. In finite element analysis, a domain is a continuous system (region) over which the laws of physics govern. In structural engineering, a domain could be a beam or a complete building frame. In mechanical engineering, a domain could be a piece of machine parts or a thermal field.

  • DRUCKER-PRAGER EQUIVALENT STRESSES: An equivalent stress measure for friction materials (typically sand). The effect of hydrostatic stress is included in the equivalent stress.

  • DYNAMIC ANALYSIS: An analysis that includes the effect of the variables changing with time as well as space.

  • DYNAMIC FLEXIBILITY MATRIX: The factor relating the steady state displacement response of a system to a sinusoidal force input. It is the same as the recep tance.

  • DYNAMIC MODELLING: A modeling process where consideration as to time effects in addition to spatial effects are included. A dynamic model can be the same as a static model or it can differ significantly depending upon the nature of the problem.
  • DYNAMIC RESPONSE: The time dependent response of a dynamic system in terms of its displacement, velocity or acceleration at any given point of the system.
  • DYNAMIC STIFFNESS MATRIX: If the structure is vibrating steadily at a frequency w then the dynamic stiffness is (K+iwC w2M) It is the inverse of the dynamic flexibility matrix.
  • DYNAMIC STRESSES:Stresses that vary with time and space.
  • DYNAMIC SUBSTRUCTURING: Special forms of substructuring used within a dynamic analysis. Dynamic substructuring is always approximate and causes some loss of accuracy in the dynamic solution.

E

  • EIGENVALUE PROBLEM: Problems that require calculation of eigenvalues and eigenvectors for their solution. Typically solving free vibration problems or finding buckling loads.
  • ELASTIC FOUNDATION: If a structure is sitting on a flexible foundation the supports are treated as a continuous elastic foundation. The elastic foundation can have a significant effect upon the structural response.
  • ELASTIC STIFFNESS: If the relationship between loads and displacements is linear then the problem is elastic. For a multi-degree of freedom system the forces and displacements are related by the elastic stiffness matrix.
  • ELECTRIC FIELDS: Electro-magnetic and electro-static problems form electric field problems.
  • ELEMENT: An element is a portion of the problem domain, and is typically some simple shape like a triangle or quadrilateral in 2D, or tetrahedron or hex solid in 3D.

  • ELEMENT ASSEMBLY: Individual element matrices have to be assembled into the complete stiffness matrix. This is basically a process of summing the element matrices. This summation has to be of the correct form. For the stiffness method the summation is based upon the fact that element displacements at common nodes must be the same.

  • ELEMENT STRAINS/STRESSES: Stresses and strains within elements are usually defined at the Gauss points (ideally at the Barlow points) and the node points. The most accurate estimates are at the reduced Gauss points (more specifically the Barlow points). Stresses and strains are usually calculated here and extrapolated to the node points.
  • ENERGY METHODS HAMILTONS PRINCIPLE: Methods for defining equations of equilibrium and compatibility through consideration of possible variations of the energies of the system. The general form is Hamiltons principle and sub-sets of this are the principle of virtual work including the principle of virtual displacements (PVD) and the principle of virtual forces (PVF).
  • ENGINEERING/MATHEMATICAL NORMALIZATION: Each eigenvector (mode shape or normal mode) can be multiplied by an arbitrary constant and still satisfy the eigenvalue equation. Various methods of scaling the eigenvector are used Engineering normalization -The vector is scaled so that the largest absolute value of any term in the eigenvector is unity. This is useful for inspecting printed tables of eigenvectors. Mathematical normalization -The vector is scaled so that the diagonal modal mass matrix is the unit matrix. The diagonal modal stiffness matrix is the system eigenvalues. This is useful for response calculations.
  • EQUILIBRIUM EQUATIONS:Internal forces and external forces must balance. At the infinitesimal level the stresses and the body forces must balance. The equations of equilibrium define these force balance conditions.
  • EQUILIBRIUM FINITE ELEMENTS: Most of the current finite elements used for structural analysis are defined by assuming displacement variations over the element. An alternative approach assumes the stress variation over the element. This leads to equilibrium finite elements.
  • EQUIVALENT MATERIAL PROPERTIES: Equivalent material properties are defined where real material properties are smeared over the volume of the element. Typically, for composite materials the discrete fiber and matrix material properties are smeared to give average equivalent material properties.
  • EQUIVALENT STRESS: A three dimensional solid has six stress components. If material properties have been found experimentally by a uniaxial stress test then the real stress system is related to this by combining the six stress components to a single equivalent stress. There are various forms of equivalent stress for different situations. Common ones are Tresca, Von-Mises, Mohr-Coulomb and Drucker-Prager.
  • EULERIAN/LAGRANGIAN METHOD: For non-linear large deflection problems the equations can be defined in various ways. If the material is flowing though a fixed grid the equations are defined in Eulerian coordinates. Here the volume of the element is constant but the mass in the element can change. If the grid moves with the body then the equations are defined in Lagrangian coordinates. Here the mass in the element is fixed but the volume changes.
  • EXACT SOLUTIONS: Solutions that satisfy the differential equations and the associated boundary conditions exactly. There are very few such solutions and they are for relatively simple geometries and loadings.
  • EXPLICIT/IMPLICIT METHOD: These are methods for integrating equations of motion. Explicit methods can deal with highly non-linear systems but need small steps. Implicit methods can deal with mildly nonlinear problems but with large steps.
  • EXTRAPOLATION INTERPOLATION: The process of estimating a value of a variable from a tabulated set of values. For interpolation values inside the table are estimated. For extrapolation values outside the table are estimated. Interpolation is generally accurate and extrapolation is only accurate for values slightly outside the table. It becomes very inaccurate for other cases.

F

  • FACETED GEOMETRY: If a curved line or surface is modeled by straight lines or flat surfaces then the modeling is said to produce a faceted geometry.
  • FAST FOURIER TRANSFORM: A method for calculating Fourier transforms that is computationally very efficient.
  • FIELD PROBLEMS: Problems that can be defined by a set of partial differential equations are field problems. Any such problem can be solved approximately by the finite element method.
  • FINITE DIFFERENCES: A numerical method for solving partial differential equations by expressing them in a difference form rather than an integral form. Finite difference methods are very similar to finite element methods and in some cases are identical.
  • FINITE ELEMENT MODELING (FEM): The process of setting up a model for analysis, typically involving graphical generation of the model geometry, meshing it into finite elements, defining material properties, and applying loads and boundary conditions.
  • FINITE VOLUME METHODS: A technique related to the finite element method. The equations are integrated approximately using t he weighted residual method, but a different form of weighting function is used from that in the finite element method. For the finite element method the Galerkin form of the weighted residual method is used.
  • FIXED BOUNDARY CONDITIONS: All degrees of freedom are restrained for this condition. The nodes on the fixed boundary can not move: translation or rotation.
  • FLEXIBILITY MATRIX FORCE METHOD: The conventional form of the finite element treats the displacements as unknowns, which leads to a stiffness matrix form. Alternative methods treating the stresses (internal forces) as unknowns lead to force methods with an associated flexibility matrix. The inverse of the stiffness matrix is the flexibility matrix.
  • FORCED RESPONSE: The dynamic motion results from a time varying forcing function.
  • FORCING FUNCTIONS: The dynamic forces that are applied to the system.
  • FOURIER EXPANSIONS FOURIER SERIES: Functions that repeat themselves in a regular manner can be expanded in terms of a Fourier series.
  • FOURIER TRANSFORM: A method for finding the frequency content of a time varying signal. If the signal is periodic it gives the same result as the Fourier series.
  • FOURIER TRANSFORM PAIR:The Fourier transform and its inverse which, together, allow the complete system to be transformed freely in either direction between the time domain and the frequency domain.
  • FRAMEWORK ANALYSIS: If a structure is idealized as a series interconnected line elements then this forms a framework analysis model. If the connections between the line elements a re pins then it is a pin-jointed framework analysis. If the joints are rigid then the lines must be beam elements.
  • FREE VIBRATION: The dynamic motion which results from specified initial conditions. The forcing function is zero.
  • FREQUENCY DOMAIN: The structures forcing function and the consequent response is defined in terms of their frequency content. The inverse Fourier transform of the frequency domain gives the corresponding quantity in the time domain.
  • FRONTAL SOLUTION WAVEFRONT SOLUTION: A form of solving the finite element equations using Gauss elimination that is very efficient for the finite element form of equations.

G

  • GAP/CONTACT ELEMENT: These are special forms of non-linear element that have a very high stiffness in compression and a low stiffness in tension. They are used to model contact conditions between surfaces. Most of these elements also contain a model for sliding friction between the contacting surfaces. Some gap elements are just line springs between points and others are more general forms of quadrilateral or brick element elements. The line spring elements should only be used in meshes of first order finite elements.
  • GAUSS POINT EXTRAPOLATION GAUSS POINT STRESSES: Stresses calculated internally within the element at the Gauss integration points are called the Gauss point stresses. These stresses are usually more accurate at these points than the nodal points.

  • GAUSS POINTS GAUSS WEIGHTS: The Gauss points are the sample points used within the elements for the numerical integration of the matrices and loadings. They are also the points at which the stresses can be recovered. The Gauss weights are associated factors used in the numerical integration process. They represent the volume of influence of the Gauss points. The positions of the Gauss points, together with the associated Gauss weights, are available in tables for integrations of polynomials of various orders.

  • GAUSSIAN ELIMINATION: A form of solving a large set of simultaneous equations. Within most finite element systems a form of Gaussian elimination forms the basic solution process.
  • GAUSSIAN INTEGRATION GAUSSIAN QUADRATURE: A form of numerically integrating functions that is especially efficient for integrating polynomials. The functions are evaluated at the Gauss points, multiplied by the Gauss weights and summed to give the integral.
  • GENERALIZED COORDINATES: A set of linearly independent displacement coordinates which are consistent with the constraints and are just sufficient to describe any arbitrary configuration of the system. Generalized coordinates are usually patterns of displacements, typically the system eigenvectors.
  • GENERALIZED MASS: The mass associated with a generalized displacement.
  • GENERALIZED STIFFNESS: The stiffness associated with a generalized displacement.
  • GEOMETRIC PROPERTIES: Various shape dependent properties of real structures, such as thickness, cross sectional area, sectional moments of inertia, centroid location and others that are applied as properties of finite elements.
  • GEOMETRIC/STRESS STIFFNESS: The component of the stiffness matrix that arises from the rotation of the internal stresses in a large deflection problem. This stiffness is positive for tensile stresses and negative for compressive stresses. If the compressive stresses are sufficiently high then the structure will buckle when the geometric stiffness cancels the elastic stiffness.
  • GEOMETRICAL ERRORS: Errors in the geometrical representation of the model. These generally arise from the approximations inherent in the finite element approximation.
  • GLOBAL STIFFNESS MATRIX: The assembled stiffness matrix of the complete structure.

  • GROSS DEFORMATIONS: Deformations sufficiently high to make it necessary to include their effect in the solution process. The problem requires a large deflection non-linear analysis.

  • GOVERNING EQUATIONS: The governing equations for a system are the equations derived from the physics of the system. Many engineering systems can be described by governing equations, which determine the system's characteristics and behaviors.
  • GUARD VECTORS: The subspace iteration (simultaneous vector iteration) method uses extra guard vectors in addition to the number of vectors requested by the user. These guard the desired vectors from being contaminated by the higher mode vectors and speed up convergence.
  • GUI: GUI stands for graphical user interface, which provides a visual tool to build a finite element model for a domain with complex geometry and boundary conditions.

H

  • HARDENING STRUCTURE: A structure where the stiffness increases with load.
  • HARMONIC LOADING: A dynamic loading that is periodic and can be represented by a Fourier series.
  • HEAT CONDUCTION: The analysis of the steady state heat flow within solids and fluids. The equilibrium balance between internal and external heat flows.
  • HERMITIAN SHAPE FUNCTIONS: Shape functions that provide both variable and variable first derivative continuity (displacement and slope continuity in structural terms) across element boundaries.
  • HEXAHEDRON ELEMENTS: Type of 3D element which has six quadrilateral faces.
  • HIGH/LOW ASPECT RATIO: The ratio of the longest side length of a body to the shortest is termed its aspect ratio. Generally bodies with high aspect ratios (long and thin) are more ill conditioned for numerical solution than bodies with an aspect ratio of one.
  • HOOKES LAW: The material property equations relating stress to strain for linear elasticity. They involve the material properties of Young’s modulus and Poisson ratio.
  • HOURGLASS MODE: Zero energy modes of low order quadrilateral and brick elements that arise from using reduced integration. These modes can propagate through the complete body.
  • H-CONVERGENCE: Convergence towards a more accurate solution by subdividing the elements into a number of smaller elements. This approach is referred to as H-convergence because of improved discretization due to reduced element size.
  • H-METHOD: A finite element method which requires an increasing number of elements to improve the solution.
  • H/P-REFINEMENT: Making the mesh finer over parts or all of the body is termed h-refinement. Making the element order higher is termed p-refinement.
  • HYBRID ELEMENTS: Elements that use stress interpolation within their volume and displacement interpolation around their boundary.
  • HYDROSTATIC STRESS: The stress arising from a uniform pressure load on a cube of material. It is the average value of the direct stress components at any point in the body.
  • HYSTERETIC DAMPING: A damping model representing internal material loss damping. The energy loss per unit cycle is independent of frequency. It is only valid for harmonic response.

I

  • ILL-CONDITIONING ERRORS: Numerical (rounding) errors that arise when using ill-conditioned equations.
  • ILL-CONDITIONING ILL-CONDITIONED EQUATIONS: Equations that are sensitive to rounding errors in a numerical operation. The numerical operation must also be defined. Equations can be ill conditioned for solving simultaneous equations but not for finding eigenvalues.
  • IMPULSE RESPONSE FUNCTION: The response of the system to an applied impulse.
  • IMPULSE RESPONSE MATRIX: The matrix of all system responses to all possible impulses. It is always symmetric for linear systems. It is the inverse Fourier transform of the dynamic flexibility matrix.
  • INCREMENTAL SOLUTION: A solutions process that involves applying the loading in small increments and finding the equilibrium conditions at the end of each step. Such solutions are generally used for solving non-linear problems.
  • INELASTIC MATERIAL BEHAVIOR: A material behavior where residual stresses or strains can remain in the body after a loading cycle, typically plasticity and creep.
  • INERTANCE (ACCELERANCE): The ratio of the steady state acceleration response to the value of the forcing function for a sinusoidal excitation.
  • INERTIA FORCE: The force that is equal to the mass times the acceleration.
  • INITIAL BUCKLING: The load at which a structure first buckles.
  • INITIAL STRAINS: The components of the strains that are non-elastic. Typically thermal strain and plastic strain.
  • INTEGRATION BY PARTS: A method of integrating a function where high order derivative terms are partially integrated to reduce their order.
  • INTERPOLATION FUNCTIONS SHAPE FUNCTIONS: The polynomial functions used to define the form of interpolation within an element. When these are expressed as interpolations associated with each node they become the element shape functions.
  • ISOPARAMETRIC ELEMENT: Elements that use the same shape functions (interpolations) to define the geometry as were used to define the displacements. If these elements satisfy the convergence requirements of constant stress representation and strain free rigid body motions for one geometry then it will satisfy the conditions for any geometry.
  • ISOTROPIC MATERIAL: Materials where the material properties are independent of the co-ordinate system.

J

  • JACOBI METHOD: A method for finding eigenvalues and eigenvectors of a symmetric matrix.
  • JACOBIAN MATRIX: A square matrix relating derivatives of a variable in one coordinate system to the derivatives of the same variable in a second coordinate system. It arises when the chain rule for differentiation is written in matrix form.
  • J-INTEGRAL METHODS: A method for finding the stress intensity factor for fracture mechanics problems.
  • JOINTS: The interconnections between components. Joints can be difficult to model in finite element terms but they can significantly affect dynamic behavior.

K

  • KINEMATIC BOUNDARY CONDITIONS: The necessary displacement boundary conditions for a structural analysis. These are the essential boundary conditions in a finite element analysis.
  • KINEMATICALLY EQUIVALENT FORCES (LOADS): A method for finding equivalent nodal loads when the actual load is distributed over a surface of a volume. The element shape functions are used so that the virtual work done by the equivalent loads is equal to the virtual work done by the real loads over the same virtual displacements. This gives the most accurate load representation for the finite element model. These are the non-essential stress boundary conditions in a finite element analysis.
  • KINEMATICALLY EQUIVALENT MASS: If the mass and stiffness are defined by the same displacement assumptions then a kinematically equivalent mass matrix is produced. This is not a diagonal (lumped) mass matrix.
  • KINETIC ENERGY: The energy stored in the system arising from its velocity. In some cases it can also be a function of the structural displacements.

L

  • LAGRANGE INTERPOLATION LAGRANGE SHAPE FUNCTIONS: A method of interpolation over a volume by means of simple polynomials. This is the basis of most of the shape function definitions for elements.
  • LAGRANGE MULTIPLIER TECHNIQUE: A method for introducing constraints into an analysis where the effects of the constraint are represented in terms of the unknown Lagrange multiplying factors.
  • LANCZOS METHOD: A method for finding the first few eigenvalues and eigenvectors of a set of equations. It is very well suited to the form of equations generated by the finite element method. It is closely related to the method of conjugate gradients used for solving simultaneous equations iteratively.
  • LEAST SQUARES FIT: Minimization of the sum of the squares of the distances between a set of sample points and a smooth surface . The finite element method gives a solution that is a least squares fit to the equilibrium equations.
  • LINEAR DEPENDENCE: One or more rows (columns) of a matrix are linear combinations of the other rows (columns). This means that the matrix is singular.
  • LINEAR ANALYSIS: Linear Finite Element Analysis is based on the following assumptions: (1) Static; (2) Small displacements; (3) Material is linearly elastic.
  • LINEAR SYSTEM: When the coefficients of stiffness, mass and damping are all constant then the system is linear. Superposition can be used to solve the response equation.
  • LOADINGS:The loads applied to a structure that result in deflections and consequent strains and stresses.
  • LOCAL STRESSES: Areas of stress that are significantly different from (usually higher than) the general stress level.
  • LOWER BOUND SOLUTION UPPER BOUND SOLUTION: The assumed displacement form of the finite element solution gives a lower bound on the maximum displacements and strain energy (i.e. these are under estimated) for a given set of forces. This is the usual form of the finite element method. The assumed stress form of the finite element solution gives an upper bound on the maximum stresses and strain energy (i.e. these are over estimated) for a given set of displacements.
  • LUMPED MASS MODEL: When the coefficients of the mass matrix are combined to produce a diagonal matrix. The total mass and the position of the structures center of gravity are preserved.

M

  • MASS: The constant(s) of proportionality relating the acceleration(s) to the force(s). For a discrete parameter multi degree of freedom model this is usually given as a mass matrix.
  • MASS ELEMENT: An element lumped at a node representing the effect of a concentrated mass in different coordinate directions.
  • MASS MATRIX: The matrix relating acceleration to forces in a dynamic analysis. This can often be approximated as a diagonal matrix with no significant loss of accuracy.
  • MASTER FREEDOMS: The freedoms chosen to control the structural response when using a Guyan reduction or sub structuring methods.
  • MATERIAL LOSS FACTOR: A measure of the damping inherent within a material when it is dynamically loaded.
  • MATERIAL PROPERTIES: The physical properties required to define the material behavior for analysis purposes. For stress analysis typical required material properties are Young’s modulus, Poisson’s ratio, density and coefficient of linear expansion. The material properties must have been obtained by experiment.
  • MATERIAL STIFFNESS MATRIX MATERIAL FLEXIBILITY MATRIX: The material stiffness matrix allows the stresses to be found from a given set of strains at a point. The material flexibility is the inverse of this, allowing the strains to be found from a given set of stresses. Both of these matrices must be symmetric and positive definite.
  • MATRIX DISPLACEMENT METHOD: A form (the standard form) of the finite element method where displacements are assumed over the element. This gives a lower bound solution.
  • MATRIX FORCE METHOD: A form of the finite element method where stresses (internal forces) are assumed over the element. This gives an upper bound solution.
  • MATRIX INVERSE: If matrix A times matrix B gives the unit matrix then A is the inverse of B (B is the inverse of A). A matrix has no inverse if it is singular.
  • MATRIX NOTATION MATRIX ALGEBRA: A form of notation for writing sets of equations in a compact manner. Matrix notation highlights the generality of various classes of problem formulation and solution. Matrix algebra can be easily programmed on a digital computer.
  • MATRIX PRODUCTS: Two matrices A and B can be multiplied together if A is of size (j*k) and B is of size (k*l). The resulting matrix is of size (j*l).
  • MATRIX TRANSPOSE: The process of interchanging rows and columns of a matrix so that the j’th column becomes the j’th row.
  • MEAN SQUARE CONVERGENCE: A measure of the rate of convergence of a solution process. A mean square convergence indicates a rapid rate of convergence.
  • MEMBRANE: Membrane behavior is where the strains are constant from the center line of a beam or center surface of a plate or shell. Plane sections are assumed to remain plane. A membrane line element only has stiffness along the line, it has zero stiffness normal to the line. A membrane plate has zero stiffness normal to the plate. This can cause zero energy (no force required) displacements in these normal directions. If the stresses vary linearly along the normal to the centerline then this is called bending behavior.

  • Mesh (Grid): The elements and nodes, together, form a mesh (grid), which is the central data structure in FEA.

  • MESH DENSITY MESH REFINEMENT: The mesh density indicates the size of the elements in relation to the size of the body being analyzed. The mesh density need not be uniform all over the body There can be areas of mesh refinement (more dense meshes) in some parts of the body. Making the mesh finer is generally referred to as h -refinement. Making the element order higher is referred to as p -refinement.
  • MESH GENERATION ELEMENT GENERATION: The process of generating a mesh of elements over the structure. This is normally done automatically or semi-automatically.
  • MESH SPECIFICATION: The process of choosing and specifying a suitable mesh of elements for an analysis.
  • MESH SUITABILITY: The appropriate choice of element types and mesh density to give a solution to the required degree of accuracy.
  • MINDLIN ELEMENTS: A form of thick shell element.
  • MOBILITY: The ratio of the steady state velocity response to the value of the forcing function for a sinusoidal excitation.
  • MODAL DAMPING: The damping associated with the generalized displacements defined by the eigenvectors. Its value has no physical significance since the eigenvector contains an arbitrary normalizing factor.
  • MODAL MASS: The mass associated with the generalized displacements defined by the eigenvectors. Its value has no physical significance since the eigenvector contains an arbitrary normalizing factor but the ratio of modal stiffness to modal mass is always the eigenvalue.
  • MODAL STIFFNESS: The stiffness associated with the generalized displacements defined by the eigenvectors. Its value has no physical significance since the eigenvector contains an arbitrary normalizing factor but the ratio of modal stiffness to modal mass is always the eigenvalue.
  • MODAL TESTING: The experimental technique for measuring resonant frequencies (eigenvalues) and mode shapes (eigenvectors).
  • MODE PARTICIPATION FACTOR: The generalized force in each modal equation of a dynamic system.
  • MODE SHAPE: Same as the e igenvector. The mode shape often refers to the measure mode, found from a modal test.
  • MODELLING: The process of idealizing a system and its loading to produce a numerical (finite element) model.
  • MODIFIED NEWTON-RAPHSON: A form of the Newton-Raphson process f or solving non-linear equations where the tangent stiffness matrix is held constant for some steps. It is suitable for mildly non-linear problems.
  • MOHR COULOMB EQUIVALENT STRESS: A form of equivalent stress that includes the effects of friction in granular (e.g. sand) materials.
  • MULTI DEGREE OF FREEDOM: The system is defined by more than one force/displacement equation.
  • MULTI-POINT CONSTRAINTS: Where the constraint is defined by a relationship between more than one displacement at different node points.

N

  • NATURAL FREQUENCY: The frequency at which a structure will vibrate in the absence of any external forcing. If a model has n degrees of freedom then it has n natural frequencies. The eigenvalues of a dynamic system are the squares of the natural frequencies.
  • NATURAL MODE: Same as the eigenvector.
  • NEWMARK METHOD NEWMARK BETA METHOD: An implicit solution method for integrating second order equations of motion. It can be made unconditionally stable.
  • NEWTON COTES FORMULAE: A family of methods for numerically integrating a function.
  • NEWTON-RAPHSON NON-LINEAR SOLUTION: A general technique for solving non-linear equations. If the function and its derivative are known at any point then the Newton-Raphson method is second order convergent.
  • NODAL VALUES: The value of variables at the node points. For a structure typical possible nodal values are force, displacement, temperature, velocity, x, y, and z.
  • NODE: A node is a point in the domain, and is often the vertex of several elements. A node is also called a nodal point. computers to generate finite element mesh automatically. There are many different algorithms for automatic mesh generation. Click here to see some automatically generated mesh samples.
  • NON-CONFORMING ELEMENTS: Elements that do not satisfy compatibility either within the element or across element boundaries or both. Such elements are not generally reliable although they might give very good solutions in some circumstances.
  • NON-HOLONOMIC CONSTRAINTS: Constraints that can only be defined at the level of infinitesimal displacements. They cannot be integrated to give global constraints.
  • NON-LINEAR SYSTEM/ANALYSIS: Nonlinear Finite Element Analysis considers material nonlinearity and/or geometric nonlinearity of an engineering system. Geometric nonlinear analysis is also called large deformation analysis.
  • NON-STATIONARY RANDOM: A force or response that is random and its statistical properties vary with time.
  • NON-STRUCTURAL MASS: Mass that is present in the system and will affect the dynamic response but it is not a part of the structural mass (e.g. the payload).
  • NORM: A scalar measure of the magnitude of a vector or a matrix.
  • NUMERICAL INTEGRATION: The process of finding the approximate integral of a function by numerical sampling and summing. In the finite element method the element matrices are usually formed by the Gaussian quadrature form of numerical integration.

O

  • OPTIMAL SAMPLING POINTS: The minimum number of Gauss points required to integrate an element matrix. Also the Gauss points at which the stresses are most accurate (see reduced Gauss points).
  • OVER DAMPED SYSTEM: A system which has an equation of motion where the damping is greater than critical. It has an exponentially decaying, non-oscillatory impulse response.
  • OVERSTIFF SOLUTIONS: Lower bound solutions. These are associated with the assumed displacement method.

P

  • PARTICIPATION FACTOR: The fraction of the mass that is active for a given mode with a given distribution of dynamic loads. Often this is only defined for the specific load case of inertia (seismic) loads.
  • PATCH TEST: A test to prove that a mesh of distorted elements can represent constant stress situations and strain free rigid body motions (i.e. the mesh convergence requirements) exactly.
  • PDEs: partial differential equations.
  • PERIODIC RESPONSE FORCE: A response (force) that regularly repeats itself exactly.
  • PHASE ANGLE: The ratio of the in phase component of a signal to its out of phase component gives the tangent of the phase angle of the signal relative to some reference.
  • PLANE STRAIN/STRESS: A two dimensional analysis is plane stress if the stress in the third direction is assumed zero. This is valid if the dimension of the body in this direction is very small, e.g. a thin plate. A two dimensional analysis is plane strain if the strain in the third direction is assumed zero. This is valid if the dimension of the body in this direction is very large, e.g. a cross- sectional slice of a long body.
  • PLATE BENDING ELEMENTS: Two-dimensional shell elements where the in plane behavior of the element is ignored. Only the out of plane bending is considered.
  • POISSONS RATIO: The material property in Hooke s law relating strain in one direction arising from a stress in a perpendicular direction to this. Poissons' ratio can be defined in WELSIM material module.
  • POST-PROCESSING: The interrogation of the results after the analysis phase. This is usually done with a combination of graphics and numerics.
  • POTENTIAL ENERGY: The energy associated with the static behavior of a system. For a structure this is the strain energy.
  • POWER METHOD: A method for finding the lowest or the highest eigenvalue of a system.
  • PRANDTL-REUSS EQUATIONS: The equations relating an increment of stress to an increment of plastic strain for a metal undergoing plastic flow.
  • PREPROCESSING: The process of preparing finite element input data involving model creation, mesh generation,material definition, and load and boundary condition application.
  • PRIMARY COMPONENT: Those parts of the structure that are of direct interest for the analysis. Other parts are secondary components.
  • PRINCIPAL CURVATURE: The maximum and minimum radii of curvature at a point.
  • PRINCIPAL STRESSES: The maximum direct stress values at a point. They are the eigenvalues of the stress tensor.
  • PROPORTIONAL DAMPING: A damping matrix that is a linear combination of the mass and stiffness matrices. The eigenvectors of a proportionally damped system are identical to those of the undamped system.
  • P-METHOD: A method of finite element analysis that uses P- convergence to iteratively minimize the error of analysis.
  • QR METHOD: A technique for finding eigenvalues. This is currently the most stable method for finding eigenvalues but it is restricted in the size of problem that it can solve.
  • RANDOM VIBRATIONS: The applied loading is only known in terms of its statistical properties. The loading is nondeterministic in that its value is not known exactly at any time but its mean, mean square, variance and other statistical quantities are known.

R

  • RANK DEFICIENCY: A measure of how singular a matrix is.
  • RAYLEIGH DAMPING: Damping that is proportional to a linear combination of the stiffness and mass. This assumption has no physical basis but it is mathematically convenient to approximate low damping in this way when exact damping values are not known.
  • RAYLELGH QUOTIENT: The ratio of stiffness times displacement squared (2*strain energy) to mass times displacement squared. The minimum values of the Rayleigh quotient are the eigenvalues.
  • REACTION FORCES: The forces generated at support points when a structure is loaded. Reaction force is supported in WELSIM.
  • REFERENCE TEMPERATURE: The reference temperature defines the temperature at which strain in the design does not result from thermal expansion or contraction. For many situations, reference temperature is adequately defined as room temperature. Define reference temperature in the properties of an environment.
  • REDUCED INTEGRATION: If an element requires an l*m*n Gauss rule to integrate the element matrix exactly then (l-1)(m-1)(n-1) is the reduced integration rule. For many elements the stresses are most accurate at the reduced integration points. For some elements the matrices are best evaluated by use of the reduced integration points. Use of reduced integration for integrating the elements can lead to zero energy and hour glassing modes.
  • RESPONSE SPECTRUM METHOD: A method for characterizing a dynamic transient forcing function and the associated solution technique. It is used for seismic and shock type loads.
  • RIGID BODY DEFORMATIONS: A non-zero displacement pattern that h as zero strain energy associate with it.
  • RIGID BODY DISPLACEMENT: A non-zero displacement pattern that has zero strain energy associate with it.
  • RIGID BODY MODES: If a displaced shape does not give rise to any strain energy in the structure then this a rigid body mode. A general three-dimensional unsupported structure has 6 rigid body modes, 3 translation and 3 rotation.
  • RIGID LINKS/OFFSETS: This is a connection between two non-coincident nodes assuming that the connection is infinitely stiff. This allows the degrees of freedom at one of the nodes (the slave node) to be deleted from the system. It is a form of multi-point constraint.
  • ROUNDOFF ERROR: Computers have a fixed word length and hence only hold numbers to a certain number of significant figures. If two close numbers are subtracted one from another then the result loses the first set of significant figures and hence loses accuracy. This is round off error.

S

  • SECANT STIFFNESS: The stiffness defined by the slope of the line from the origin to the current point of interest on a load/deflection curve.
  • SECONDARY COMPONENTS: Components of a structure not of direct interest but they may have some influence of the behavior of the part of the structure that is of interest (the primary component) and have to be included in the analysis in some approximate form.
  • SEEPAGE FLOW: Flows in porous materials
  • SEISMIC ANALYSIS: The calculation of the dynamic displacement and stress response arising from earthquake excitations.
  • SELECTED REDUCED INTEGRATION: A form of Gaussian quadrature where different sets of Gauss points are used for different strain components.
  • SELF ADJOINT EQUATIONS: A form of matrix products that preserves symmetry of equations. The product A*B*A(transpose) is self -adjoint if the matrix B is symmetric. The result of the product will be symmetric for any form of A that is of a size compatible with B. This form o f equation occurs regularly within the finite element method. Typically it means that for a structural analysis the stiffness (and mass) matrices for any element or element assembly will be symmetric.
  • SELF EQUILIBRATING LOADS: A load set is self -equilibrating if all of its resultants are zero. Both translation and moment resultants are zero.
  • SEMI-LOOF ELEMENT: A form of thick shell element.
  • SHAKEDOWN: If a structure is loaded cyclically and initially undergoes some plastic deformation then it is said to shakedown if the behavior is entirely elastic after a small number of load cycles.
  • SIMULTANEOUS VECTOR ITERATION: A method for finding the first few eigenvalues and eigenvectors of a finite element system. This is also known as subspace vector iteration.
  • SINGLE DEGREE OF FREEDOM: The system is defined by a single force/displacement equation.
  • SINGLE POINT CONSTRAINT: Where the constraint is unique to a single node point.
  • SINGULAR MATRIX: A square matrix that cannot be inverted.
  • SKEW DISTORTION (ANGULAR DISTORTION): A measure of the angular distortion arising between two vectors that are at right angles in the basis space when these are mapped to the real coordinate space. If this angle approaches zero the element becomes ill-conditioned.
  • SOLUTION DIAGNOSTICS: Messages that are generated as the finite element solution progresses. These should always be checked for relevance but the are often only provided for information purposes
  • SOLUTION EFFICIENCY: A comparative measure between two solutions of a given problem defining which is the ‘best’. The measures can include accuracy, time of solution, memory requirements and disc storage space.
  • SPARSE MATRIX METHODS: Solution methods that exploit the sparse nature of finite element equations. Such methods include the frontal solution and Cholesky (skyline) factorization for direct solutions, conjugate gradient methods for iterative solutions and the Lanczos method and subspace iteration (simultaneous vector iteration) for eigenvalue solutions.
  • SPECTRAL DENSITY: The Fourier transform of the correlation function. In random vibrations it gives a measure of the significant frequency content in a system. White noise has a constant spectral density for all frequencies.
  • SPLINE CURVES: A curve fitting technique that preserves zero, first and second derivative continuity across segment boundaries.
  • STATIC ANALYSIS: Analysis of stresses and displacements in a structure when the applied loads do not vary with time.
  • STATICALLY DETERMINATE STRUCTURE: A structure where all of the unknowns can be found from equilibrium considerations alone.
  • STATICALLY EQUIVALENT LOADS: Equivalent nodal loads that have the same equilibrium resultants as the applied loads but do not necessarily do the same work as the applied loads.
  • STATICALLY INDETERMINATE STRUCTURE REDUNDANT: A structure where all of the unknowns can not be found from equilibrium considerations alone. The compatibility equations must also be used. In this case the structure is said to be redundant.
  • STATIONARY RANDOM EXCITATION: A force or response that is random but its statistical characteristics do not vary with time.
  • STEADY-STATE HEAT TRANSFER: Determination of the temperature distribution of a mechanical part having reached thermal equilibrium with the environmental conditions. There are no time varying changes in the resulting temperatures.
  • STIFFNESS: A set of values which represent the rigidity or softness of a particular element. Stiffness is determined by material type and geometry.
  • STIFFNESS MATRIX: The parameter(s) that relate the displacement(s) to the force(s). For a discrete parameter multi degree of freedom model this is usually given as a stiffness matrix.
  • STRAIN: A dimensionless quantity calculated as the ratio of deformation to the original size of the body.
  • STRAIN ENERGY: The energy stored in the system by the stiffness when it is displaced from its equilibrium position.
  • STRESS: The intensity of internal forces in a body (force per unit area) acting on a plane within the material of the body is called the stress on that plane.
  • STRESS ANALYSIS: The computation of stresses and displacements due to applied loads. The analysis may be elastic, inelastic, time dependent or dynamic.
  • STRESS AVERAGING STRESS SMOOTHING: The process of filtering the raw finite element stress results to obtain the most realistic estimates of the true state of stress.
  • STRESS CONCENTRATION: A local area of the structure where the stresses are significantly higher than the general stress level. A fine mesh of elements is required in such regions if accurate estimates of the stress concentration values are required.
  • STRESS CONTOUR PLOT: A plot of a stress component by a series of color filled contours representing regions of equal stress. WELSIM can plot stress contour.
  • STRESS DISCONTINUITIES/ERROR ESTIMATES: Lines along which the stresses are discontinuous. If the geometry or loading changes abruptly along a line then the true stress can be discontinuous. In a finite element solution the element assumptions means that the stresses will generally be discontinuous across element boundaries. The degree of discontinuity can then be used to form an estimate of the error in the stress within the finite element calculation.
  • STRESS EXTRAPOLATION: The process of taking the stress results at the optimum sampling points for an element and extrapolating these to the element node points.
  • STRESS INTENSITY FACTORS: A measure of the importance of the stress at a sharp crack tip (where the actual stress values will be infinite) used to estimate if the crack will propagate.
  • STRESS/STRAIN VECTOR/TENSOR: The stress (strain) vector is the components of stress (strain) written as a column vector. For a general three dimensional body this is a (6×1) matrix. The components of stress (strain) written in tensor form. For a general three dimensional body this forms a (3×3) matrix with the direct terms down the diagonal and the shear terms as the off-diagonals.
  • STRESS-STRAIN LAW: The material property behavior relating stress to strain. For a linear behavior this is Hookes law (linear elasticity). For elastic plastic behavior it is a combination of Hookes law and the Prandtl-Reuss equations.
  • SUBSPACE VECTOR ITERATION: A method for finding the first few eigenvalues and eigenvectors of a finite element system. This is also known as simultaneous vector iteration.
  • SUBSTRUCTURING: An efficient way of solving large finite element analysis problems by breaking the model into several parts or substructures, analyzing each one individually, and then combining them for the final results.
  • SUBSTRUCTURING SUPER ELEMENT METHOD: Substructuring is a form of equation solution method where the structure is split into a series of smaller structures -the substructures. These are solved to eliminate the internal freedoms and the complete problem solved by only assembling the freedoms on the common boundaries between the substructures. The intermediate solution where the internal freedoms of a substructure have been eliminated gives the super element matrix for the substructure.
  • SURFACE MODELING: The geometric modeling technique in which the model is created in terms of its surfaces only without any volume definition.

T

  • TEMPERATURE CONTOUR PLOTS: A plot showing contour lines connecting points of equal temperature.
  • TETRAHEDRON/TETRAHEDRAL ELEMENT: A three dimensional four sided solid element with triangular faces.
  • THERMAL CAPACITY: The material property defining the thermal inertia of a material. It relates the rate of change of temperature with time to heat flux.
  • THERMAL CONDUCTIVITY: The material property relating temperature gradient to heat flux. Temperature-dependent thermal conductivity is supported in WELSIM.
  • THERMAL LOADS: The equivalent loads on a structure arising from thermal strains. These in turn arise from a temperature change.
  • THERMAL STRAINS: The components of strain arising from a change in temperature.
  • THERMAL STRESS ANALYSIS: The computation of stresses and displacements due to change in temperature.
  • THIN/THICK SHELL ELEMENT: In a shell element the geometry is very much thinner in one direction than the other two. It can then be assumed stresses can only vary linearly at most in the thickness direction. If the through thickness shear strains can be taken as zero then a thin shell model is formed. This uses the Kirchoff shell theory If the transverse shear strains are not ignored then a thick shell model is formed. This uses the Mindlin shell theory. For the finite element method the thick shell theory generates the most reliable form of shell elements. There are two forms of such elements, the Mindlin shell and the Semi-Loof shell.
  • TIME DOMAIN: The structures forcing function and the consequent response is defined in terms of time histories. The Fourier transform of the time domain gives the corresponding quantity in the frequency domain.
  • TRANSIENT FORCE: A forcing function that varies for a short period of time and then settles to a constant value.
  • TRANSIENT RESPONSE: The component of the system response that does not repeat itself regularly with time.
  • TRANSITION ELEMENT: Special elements that have sides with different numbers of nodes. They are used to couple elements with different orders of interpolation, typically a transition element with two nodes on one edge and three on another is used to couple a 4-node quad to an 8-node quad.
  • TRANSIENT HEAT TRANSFER: Heat transfer problems in which temperature distribution varies as a function of time.
  • TRIANGULAR ELEMENTS: Two dimensional or surface elements that have three edges.
  • TRUSS ELEMENT: A one dimensional line element defined by two nodes resisting only axial loads.

U

  • ULTIMATE STRESS: The failure stress (or equivalent stress) for the material.
  • UNDAMPED NATURAL FREQUENCY: The square root of the ratio of the stiffness to the mass (the square root of the eigenvalue). It is the frequency at which an undamped system vibrates naturally. A system with n degrees of freedom has n natural frequencies.
  • UNDER DAMPED SYSTEM: A system which has an equation of motion where the damping is less than critical. It has an oscillatory impulse response.
  • UPDATED/TOTAL LAGRANGIAN: The updated Lagrangian coordinate system is one where the stress directions are referred to the last known equilibrium state. The total Lagrangian coordinate system is one where the stress directions are referred to the initial geometry. Both algorithms are supported in WELSIM.

V

  • VARIABLE BANDWIDTH (SKYLINE): A sparse matrix where the bandwidth is not constant. Some times called a skyline matrix.
  • VIRTUAL DISPLACEMENTS: An arbitrary imaginary change of the system configuration consistent with its constraints.
  • VIRTUAL WORK/DISPLACEMENTS/FORCES: Techniques for using work arguments to establish equilibrium equations from compatibility equations (virtual displacements) and to establish compatibility equations from equilibrium (virtual forces).
  • VISCOUS DAMPING: The damping is viscous when the damping force is proportional to the velocity.
  • VOLUME/VOLUMETRIC DISTORTION: The distortion measured by the determinant of the Jacobian matrix, det J.
  • VON MISES STRESS: An “averaged” stress value calculated by adding the squares of the 3 component stresses (X, Y and Z directions) and taking the square root of their sums. This value allows for a quick method to locate probable problem areas with one plot.
  • VON MISES/TRESCA EQUIVALENT STRESS: Equivalent stress measures to represent the maximum shear stress in a material. These are used to characterize flow failures (e.g. plasticity and creep) in WELSIM. From test results the VonMises form seems more accurate but the Tresca form is easier to handle.

W

  • WHIRLING STABILITY: The stability of rotating systems where centrifugal and Coriolis are also present.
  • WILSON THETA METHOD: An implicit solution method for integrating second order equations of motion. It can be made unconditionally stable.

Y

  • YOUNG’S MODULUS: The material property relating a uniaxial stress to the corresponding strain.

Z

  • ZERO ENERGY/STIFFNESS MODES: Non-zero patterns of displacements that have no energy associated with them. No forces are required to generate such modes, Rigid body motions are zero energy modes. Buckling modes at their buckling loads are zero energy modes. If the elements are not fully integrated they will have zero energy displacement modes. If a structure has one or more zero energy modes then the matrix is singular.
\ No newline at end of file diff --git a/img/3_guide/ch2_start_ex1_mat_al.png b/img/3_guide/ch2_start_ex1_mat_al.png index c52bb1f454e42b837e0b9f6648f087e40804b61d..88df571f58cff586f5ac04cdb588e1b4fde0e7f8 100755 GIT binary patch literal 216779 zcmZsD1yq#Xx4ueuccVymcZ-5_4c*-!9ZGkobV_$iH%LfI4BgGp-SB_M@Aut%|99Q9 z7Bg!Y-jn<6^Xz9ohj1kY88l>K5-SE_PrCNep1rRCsJ#Fz{UEmFCH#ksS;>xS6^hg z&ZvFdk@`c)9~KR4Y~!2|@Y5RWOl%6JymB38E8{txbLU`mc=Uj=C2eW*zH4K2^k~$D zwzlOwW5qPXWt5*xE|KXa7Etm-XAC~;Eob`O?eVRLy*|0!$r`$s`rpOgt5}En|0;uG zH4-NWbG2YS=(n;2ITBSB_#glGF0pVf)N8v~=!)!JEjqRHBe|#Ah#(@OW1+6Q? z@p{Ra}+qs=!Qod4<6*I}^} znj~H7z)tr?Cxoam#S&Jt0MW-i#m2|01v55}y@~u12gq*31ZsVs3~cda`2^>`)d6GD zG@?uf=5{e`_#-P=9y(a^w~CplS!1-NuQ*ZDJ%0({>?@Q>RZ88cr1ePcV z5uaH*h~oLCA3|;>P|eaSAYYL6cwoV|UshY?bL$-9kMo{MuKHtd4c-uRaR0Le5F)+> zszA=Is6hYzR$k?rZZh1Je%h)gOm-qVIy#x#CJ`bT{x-23)K@nDcRv2@gp?HSufL1= zH8fWAiSW4f9DP*u*#}JP`}6MnYeE8z&WAwA2P|l9#h`}YN;*1`IXTp>vEQVbOsdQN zns-r)m6X*=`!1tSu~Y1S^(v?LKh;V{;;$8oJ{C6<6l#c`sXOvAuEc791&OEsIN+;x zAie%uZ>N}}H5=w%6Fapw*i|)}^pGf=t}2=HL0JHs2uqn1n>|hPRxN<64HWguX&hen5 zXvRftGO@Hw5L(C0I!e0Ryj2N?D}ixFge&8;6E#hqKoz$wNjA;pmpVIviE~4iQs^$j zQqGwgHV7NYs#vHtKD7qRFO5LXzM{hYy9>-H8+1Q5PA{?lor4c`4l5$y1TDZIrnbQT zF0yHV#>b87OJ0GKu*J)Cs$+2W<}9*$w~`Dhj%c#@44GfG2wx(X{`ZKiN{6Z`Cw3rx zaC8>rgeSMvb_+b)JjrjIa&KllIrxY{u*92vAXh0GNf`X@*`DO zLHyB5c0n2SAKjU+^FPw`jJWz=f5Ck675n?A;-zdB1DL4vC0*uVS^=U|MJ?|BQgPIkgoU(!cO(C8&NauiCp`4UglSFvLn z?KxO@afcdRep{mOz4*F=K>FCVjkBR~vmVJ>wcE5~=B|mAU_vXOns?-y9fECYX7)Sr z*g;*mr%Filk1X+2paL4*_}K4jNsKmd*75Cp2sU`7+%u+MWO#LwX=7|K^qGC=XDCr( zG2WBU<2<&>`%|oaK4tX)8yg#CHMP7W8iT8!?{w%qF8g@E;My=VmPBEw87a5=a55PB z)#yi`!5u08>4V$q%k9S1CEc2HK1A`|U1+GZV00x@e=WPUfs+lvBC%#0Kh-{-A(5m* z^R;i>LFt;gVanchW4eGdIG)7#$r_}1xxcStDKsQ)VzugO&&*c#iQOa23xf}|18#m{ zcfRA)i@$GEK4Oz%MZWP#uX0VJMDlEzpd<2D*k*}`x}BhPSx$MRWjRwx#7H8``eOq-Y%H)Qw{efnx^^a8gM!jy$GRc7$H zgp^b~YzG}9cY7ZE{@W(sPA9)AtPpgvi2aHdjir5J>Nj`avmT_DhF}?VbwK4uI%))| z{tNFt*8zVSZM2!lT}rO8eX;~kLD_GD_Ta@C*c)7hc68uGr;$;lk1evf(2QE=#Sz(` zE#}%MTecwu8(`pl$Zcw2k!#T5SE6Wbx|5mL?8Q<&+*?Di{{`xy=~(6_*%*~*X3GU^ zUniF4Z4^ZiDeDUNpni;D(xeF%p8AN}B^AqNMfz#L*_bWC3TNnM*eF^mNXwB%GEW~T zyNrdx3U!5;V+5DMkl5{M%H%RxhLsSvNlGX@tdN!>aU5L^mE`-5|ei?-&oY?4|U zney^32*ccli6T4ml&Rotae$LC+OK$Rmw8F&v5ZkoDDJ2j9DdU%aWa=&D%mwAlKfKe z4RDwapHF@et>qq>Gia!AUiC*<-`1)X5?%H1txDmxd5bQz`T|UQsZp*Syw(%Cv6~yK z;X7gAn*CarB!|eX$%tW(Cy9!;Vc0_h_l#kDV%#6yrW8ZUGujG?LZpJ_0vVscP?rrW zipB`L3+)BxN_7 zKAHL7R2CDyFP5;=JpJeZT^W;MLibGXkh>ElR@7|_M%f|CPN~uw?r>@%a|?DMJdRyf zgYSvMLWtc0B&ymB`YXK1z_lf1NyA4sypvI%n{K#|G^b>A6E3(|meCh_azeBcjRK3#A4l%jqZ*fM zjlwZMQ7Q=|8}cB&8aCq-?nbe<0gNY> z#0l%%J&Vz7E?xUd?6n1QuZE3}ksf|AX|;=Xnvyl@Peb$k)3D-sPOQZ*Gy+QLnnBf6I5;HL6@of6jrH~T z($dlp{gR(1y~e(5JVaeVqo);pZ_qVpc?>BN+dv3^PZ_84kuRg~Dp(8*k=|*GxGOgC zML;?=jMVcr&X!Wv9_Un;LAr}ATI2>J*4#3&SiesLls6S@3ZD^$z_Fmq<^xdPd*W4aw2c zYy(}>j1PaFWvg7pH&yJvmd2GbTU`wz8EVF&${olId1piC(M|)hYxQgQYXaG`oHHA+ z7Od2BK(}#`#axsoWQM5WwUWn?Sh`(E`pLl{mn^JY4y1x%FxlMS3^*nfG)>LFVIsoE zP?X8dAe5(a{z_(7@AGp(iwFt3f0u^S+|QA+zpiKdiTmMhW$-X z3IDdQ-q_Pzao3I%v3=P^<3%Icg);+kys^f)cHS5&a>lg>t&@xVS3ABMxV{b3EcAUF z$v%qYenXdxcl}=I?J^u|6Npk$!f6W#q^H^2KrEnoJwc1g6y~_A=y!(W%F2m5gCJSQ z1E+3TJcXt6qsfhEF}IoFhYi|`1>7Hl%!sxLf=rm(cKRzh&AJ1Bs)v3e^P4E+zK0!i zt>jv)dZUEa_|Q5k-NO&w*0WL&X4ThOecm^naLB*hpcI_E5_ zmwY+j{>tBlN1bxsjwoWwMDN;YCK#PU2K8JZ^t<12q$M{?l?FU|EgI2rZs%JYG;o6* zYQ@-hXUU#UjXt;JgIg+~qk~fRo*9O3Y0`gfsY(=fF>}@efNZ^*kK=Wkf&Va!fuC>z zDwq9OyOXEyH7@ z#nr%%ES%%C@Gv^GJOR${@nR?5cE)3SYi-21w+yRysF$I-$0)X&F;w+rO-+)i3_}kK zVMa|yN>d2%Gkf0n^rA$&2Thjof>#!&KV15v&1jM)w_<;2_(?d$y`2B!`Pt1nN>CQ> z*QI)6Sv7E!62%6SEPD3|IQo|BPqQ%Ud^Bmqh+mfs+V>6$3!6xM`oc-)9S6aQ&&bH& zF*3xWV`5_Z_0o!sIsBWd0D`|j*U0`FF<4$KUvCq&*AYylaLQNtr#ddM+Fz>5JAW-i z%yZQ^h)ga1S2O;;&@!8qN-0bwOaDN7&O}A+9$S@X96w~JqCmo=SQwRwK{*^|HpaZt z9PIfocH3^@BaG5*eRa4lC8THlX^`poi%oisi=v8N-_1H&FAocbTHa-uEy-$6uRrOL zpyL=N$qIXkEEIqy6= zOchI!)$;IPUTo>pFCwZJmmBFX2#ic!!x2{t@vRZ!7zMSj2DOAjR8N+n<_Xas7OT|3 zH_;1b^%;HBbsPW3$^&0D!;^{((hHy!Y{|HRDu^;C&Zk>Ai!|X^ni9tWx=Oh4nL3C> zNXu2fGhHIgJo&>G<=-dDm=;S+C#4)Z4Lz2Xe(t4l#|x~j^pBD%FAbex(5+J$UPO#H z$eqE%QZ|=0Gk<&PZ)g&F{$p`YH>R_FGUrL$q~GiI^=zY4?%Z|>Z8%xNvYZx0Qu+8I z5@E|Ga#nu|698Rd-QFjOu5*;R;wA6R-j}Ct1TKfp8PqDnxu98$ao-CY>vMGSlzZvt zP;d9%oR}P>XN)v|Cga=k@_akd9FdZkQCHoQfO6|Bv@S5}HGHA|Vk^4Kic{N=JSxNE zQ&v+HhK~TLa1Lp7qEUDOL07G6o5=gA4RI5H?WFw7#nl>~?Jkbt=;*Dpz$jloW*#BS z){dwQ-&{ZWa?d_|;E=fxReWZ#o%9pfv#4>cW9_&@Ht;*mZzj0tB``2-IRyz|CK&$% zjtQCw@#(N1@Oc`O5M$&ek!oscNXyxjni@FEUT()l^p*P!qiy>4Q@!*w{7`o8Q388B zTMYvQ*NvOsjX3|UB{B5hF$7)eug{O?1l5Q~zWY0K1K+f6axdHFoU6Ect*sw8%a;s!=dL zUCXX{L>irOnY$h3P?19K-k2oHF=IwVGEIa*Oi`bn5ZEiUo6$Iv4_n4FBV?J`MdNl* zry50L;eMq{hI}>4U%H2=WnXW0m>lY_s#Ll?W0NdNVT70*MmOp6@SFAqTzT{@N!Stl z5r`AvL>@0x!G$&li%mGJ?KjjcEe9On!j^%qKbErB?jJ0^IvQPgd2h) zVH;RVrE3oc0VpWd>rXY)1iD@q#*ECZjl+xi$Fj8yZSMXe`RbVTbvPZ>hPSaKcU1zE432^LE37Ugn{&F&L zgA)#xS*Dt~xd0ZTTd|`}@yY(;oK2F!alPa$stW~n#c)eCC$FfP)Tz;$@Xz0E68wt@ zg@cbeZhrn`;WlynM7pD8D$H-hysva!`WeU4wS#3wxEzzeoNYBOo80b4^iU;XJDz6h zhUxDQf4br>$*Ba^K&W7&t^Q=_?f_+zs~LULB?BAlD?w%L50&1-!04MrHa=R9po834 z5y+X+Nse^n$p*zUXz4YHG8SLM$6%*mA+`EXKXQBKAutKPf~Azni0|gw&`MhHhOEK3 zn|MaHF>@(&#!HdcVocx25z$H0-K=aF1Jq+txp5|cK)!CR+HDR^ye0pKww4Z7uO=St=h^dX%1%)+wIH_ zGD}40+oDPmid8D-A&Vl6+EBMBOq|)8X$dKEO)xF>4>YwiJ}&ifPee}-4NBtONbq8h zT|Q=|&au4wIsDO>5tih0nAr!a;g43E672()Qy`7l#k=__lo9?K*IXYl-B6 z(#~Nbm$mxb=>4boy(_f9H*>|Rr)8kgWh=vl&=-pJa!8HiRCf1f*b=*PIE|;t=)Umd z&B$5%%|skh!?~f^fgal!SjzBD_lBIGc9j-=&Y9v@oFh+pMKv!E@01+%^vK>qc?xAE z7}-~N{*lV8Jst9N@{W`<1%_`K&ehy6u}zRs%ZGlPclNr-e%&39bY)$J8J}-;i#+_zKAJ`DT< z{-s)x2lBgoJ~@0@MtZ%uVY-ui!Jpt6;*$0j&xqH^7m-00%y7O}y6SuUd=)vcw1Ij( zLjcT6L2y%ZeoH;bruQ{vPl|H3yt}+DPl#sXl#o=NI2G8?!v7u|c8x;CWQ}WnNBozM%gY)M)!JVQhyR$FQijKA`;grn{fi3O&RY2CIdrJ39IN6?= zWRkdiZB1ZfiRfpukNAv%T`1Hy$(I4}VX#L+w|YJmjsqq;MbUs?sKx^8w0nylw{hJw zh|-}3HC=^q1>tOP8(#0hK_MscYkNc^O<4I3|IcrnKptcl8f!Abx~sfL@(8`2&spSW zd_6dBc^ij4Z%t-)GTCtPyq%hI)-$t}G$hcKOnjWFp2d$lqNS}8gdyPN;Y0`!4mAo) z|dsi{a%NJ^CSSX+%D zo`%$eN_r_NAHIv7%*ElYR-@y^dL63q=Dq_T#d^RGbh;?hF;2@M66z$=>>gUA=S8c# z49nr@J|S+8X4qu9o*$?k*V;|1ciOO5c>U}aaw$4lL^N9P=hI}7GEu{rCX`#zyXZk7 z_OQ=Bt(Gdw)D#K@c=xZ5pC-n->nnb)`1zjXBH{cgO}bU?0UY}F!>aRoK$&!(a7JBr36KJ;zu)#_S)E(gocLEk8h3=oAJg9)sTt`jh+}6 z@|-uzFzaoYzyAkGT@fEOH2k(30+KVP3Dc+bB7;&gSgt8x609RtrwwO4S-x*<{?ayI zoL%{4b7Yn3O|mPweyc0@gfcB?GQDF%Ul2BpC5jb$!zYnk=WB%Ysy9BG+rvpWI4}AV zq(ZJ6qsoG=QG0ZDE!|3`LlL004W?raXBl2>{}Zahy$1N3TtsY)zBog_G^jlURdwm% zjb42F<0Fe5c~kB+RrWk zL5HJn()P2g;)hD2VE@oy?D<+07g@747cQwb?4Tu87a_mMV(TNLhCpUAMk zeOii2rFQiUC>ni%bo9XBb7YZMmdXh$J&iEh4!<2PGG+{k`!i!(L0^O57)w!Bz&l6r zO2cSWt-7>@G`6U=>Y~QW4MIBRBr3@LQ>Y`^f}d`NGgJajWS5X))kiuzdleK)fQe|^ zf}uHDJ0w5}kaOR%vSRlun7hJzLOlJd#xD@k*J!h%((Id&dO|XOkbh_gvNk@ay##!R zKPT0)-dM9p+9x88g*eEsu2)ZqI`g)iZ4kdOpKKJAm^XPBa9M7=7>>)qKA0e zn&>9+!f?tA(-mMDJ*5d3Qn356!k`{4>{^O%PlasO?}NV6gC@n($h#_#16pgOsunA2 z+6(&PZCs-NWNVUsk4m336LBZ+qM&g_oEWdP`?9m!lFt%@P|@D;Bwne%d{1Gn2Kzm_ zbV!D{=gQLu-$AOFeYxFNM!UNxd^36bE6dtMp9=r+>+hT|^%%X0&9!>UUf*{U)KE+9 zPK!L}GMK{#wkmMr=!H;)xmxMP<|?uG2*g)-7)ae`qK)z9QWKWx>&1NS``N?_`u4#7%B8(SpebSf{czDrr#mI?tO$#u^gUYNMc!{T{OKMWhK5OHbx% zh2~5635|!6!brz4QNuZOY6hA7Nu>wW2)KOkG2FB)rAN|`VItT4M`b&zSu1bCE(x{E z965PXkepFt3NBo@ZW%IOb7XSLRFo3ByqA))Dk|mRw8BB`>!dGIH`_9!^9Y-D+Arwt z?4x*)u`ZNy1^fVgoj<1vgU_^4%E-g25jUo)H3d6N6-(t;Jg@Q#1ZpBmjWLuZl#n$M zJ#!R4LoIHL63^|(OIr#Pt)Mj7@e#7Q51%zAS9@aht{9Nxk{vGQ`YV z$c4(pr2VtVTMYpqZc!oI>h(Y9E4ZrS0w)T*_;Q-idy9_4F4FmMqiWG=Jrs)Bxqs6v zqpS;KDcIRDM?^$SwN)5}0Lj%jDnj*_`=={iiOw?IIFcB@(hwAI$Y34ST!{CaJNe;W zzNohUB>)8&)Uv|fn5qcGy%vT`IrmKI(d-*-p(bcJ7K)_-uJPLzPWOBx=C@CAxO2() zAAb=8i4T6XHPt^vV>^{7nQyGv0vo5zR&UVFePT;f@kOGE1yIKi_MO$F@zMi7Jl<2^ zUE6}@CY8*x9AnKe{gSzHdR-PJ{!qUlOW&cdEg(|;o6@8vagNp!AN$Ig5@8_|zi}sV z3qZy#Ri+dwEay6OIUb7vi*v@JB=$_plFf>M6a;erZpSVEgigFZRY$PRj3=6D-mkNT zu;>zxAM#~Gr8w#PJZ!#62C+pPEy`P^@Wz9e#(tT>Ww*|^aO~T0VMVk~L%l&Zdc}+! zoO?Kk_@kMT(Ih15`T8wbThV!H&y_RscNctYVASba9S1RGni zg!_3s&161^E?O;>na*5&!n(l3^HQg$jzS<14k66+(7{CXPg5pDcWeavGd*2=ak;+opp@k#?xFm1SQH%#-KBy6sd zvYBX@Rf}%AYNm#a93$)gdK04E&h=}6;f3`N=$}^2X@S} z{b;iof*2@=mL+=jDXOG%zHa&$Z7Ce%$?i(2iuRP;^1z4C6-dQ$HHSo~KDUQG36tnw z{p<@{2u(Uz-Eu~?r`k0n1ThJASa_O4;Z~*$?h?xH!LX0-4{@a!UNN50XY;4=ozZh} z=Aqoq{T`01`|_iLjzoIE-DM=uT)7!5IE)&@_G3Ss|10;ah~LGp13SMa8ZZqpDp-uU zQnXtr&8f%VGPEtCB^h82k%WfPwdDgupzA3A&Zpr_VUj?2G?g}v;ca5vaE{yc!1o`s z-ZZ~HcSc)BE$@Rpm<3Xq93z0z}xgCPTWzvUwd$albyLuL^jRE4yfU}f=s5>&G{&tC# zow4LJ1Zh>Fcp)S*Y2UHRg)gz>!}^!DOR+jv;$Csv9jqzD4ZKP%K~q1y@zY&3ZC3y=3gMt{tx(U+y(ufAU7=&DJ(TEXGVIcIb5 z{yARd*mBn`QE)_EG!@v~u51ONwV>zHJ9=UlkO7Dgd^#+41DHZSLb0 zr|u$^Z>n4s2X~r-W49eXM@LP~O3nHG)_+yq#kAPl$xY6(cO^4K5YXvB=8Vx`lai8N z^YRkp=jQ`bobMsum~b^BS(M?LkTO_4kCKMlbMf8Zj1!jG zm!ftDD9%w<>=$!1H>Bj_S!aN>N4P3)b|gnrQ=d_DaJH$r_i5Lu;9vFs5r4o@1nj-K zxU{tAFMl69AqSHHNaCOJH*P zt=(_Kj1ceZx3t19G_;?tURXA{>*+Y(Dr9GvUIWJ{`&+KF1- z#ym%2)1S3txi+|HOw+OxL4w$wg)G|!n*y1yc*70F3HkQw(EXfE!fRqCYL$3Nq ziPQGeSj(;!!qV6H3Y;Rb-nOPe^Z&_r=)TqNKvU0&JW0Rbwx}oPo*9U6qD9GcGv)fL zS|1M8x*>z)0FFv+ntvyKlHL2t)|L0s&a)j?Q@vdCIwX4&Nt9*3^61K=^mHN8FZ|Ak z#-sZ)Q6mUQ4;2bPRbfdDCNcc*S)ZTy(fNS1XXwN`fZRkLxdUQAW=jTnGhf5W(F{SS zUsy7$2G4g%5SZ4hd7Itc-Odz?%;GyGfsH$0N`WCoO#%X%uUjDI=E5nXv=v(Kzv30G zwx_%Ol1RGm#Zli6SbkONw_@d*@&ds5T_4aAwlgR-1q4C=NRhCl{r#bes55GqE<*Pqc!dlO%066wer{-% z!G%DzZJEN}Y!;)W;Lxyik=soi`2Qugn|Se;kC}RHx6)1~L++W^EF&d#>WBi%>QVG= z8T((m!csmk*X5OVg?{c0`P(k!D^%(O5vmkBN!PKDUxK>$e+q6}llybx-#>~V`A_xy zFkKzbkH_i+SXlgeo?8jCbv8-O1h_1i4}D2zP;nj>mUMR6u8P`p`;Q|m<+p2Ba`8=# zk1EYXzJ&i&!T*ouEp`(h(eLqc1`IfYiNT>EcEipujjy^W?B^Kn|5o$0p#V>Aywx}b z_01_Km$Lc4H3>A^T8jQ1evzsvkd^tT0~TY9-!tQa}fEbJfrhE#iAuB=UCD!2Bdt6!2-p|J2^?^K`pY zQo2tHSQ-)%>~Y8Q6R_+>v|eYwX-}bioEzsq0>E5wJU>0cWUKsFg90f{GJj73>YO}GBd8_) zr^p&m2YDV;_pbv9|It~tV#)$NSYv4%I6AKXezxpyCy*w|7-0*0gaE1N#5WqbO=iZw zDlV*ict%|8|JgSN*pBOEZ@$xCIO8qu4q)2a@Rg($-)lXnLNMW)|8q(&|7SpA<_e{cdHUokSNM`tX693{hpr31o|A$BXkIDV_8&T9hOY!e${(a9u?fWaW z`)ecrz9{ofjgM2M6&x4l7%+H53*tQjEl!~QA5|~KBUTDj&9vXTM#FNOcP_9(8T*AHS+>UM z-GUT;fgQFt#GjX|mKv8>9G)MJG{-M>o`c7qO-p2AzA-NvwU!|#F~4+;!n5h+?Bo!8`s;c2a-&Tkgg)izBfA8a&$iOwTEW3}YkrZI4}U7b-(^ z^JdAvpH4zWe>62|xfy&Km*zVgcx?vwXR}1Wx1iBMxJVSFxy zP{Hj`&8Cn2{&?4xm}SK|sbpM%5HkN)>=_pJUdLUq!2LY1yzC1Q6sDMN!hPR7>IlEa}zp@;(E6-2YfFDsTYAzAmY_c|3CO=vi>+U~W+qI+fxl2Lu5h*K2Q&X<=0bhe)2 zniIulG@F`9bWr-dAQ_gf#WX zi-p=UKfGt!^>4fyJeXz`e>z0@wOn2H&Gex(9CO?iUtLz9^Or4ATkH=!3M6GWW+4MW zyBYNWfD)mgpO#oxhn%IvikU)MA?~72HzuB<!;F*hndFqyyGq$&AaHR8v?)tHxMA#%k*Uf=e1 zn8xsuCc2z?^Q;fTQR~H*I5T{;!rXHF&7Xeb+`ih3k5)G{bZdXHP|KMK0f1*}M4nx5 zJX@-b^6$+a4fI~#?vI4YIYGqcWRQ<)$(T!gQ%tfTxb_`{V3D*i0ZE4yj1Gn)eo@s0 z(Ly=|40S%G`cF`gu87iPyv5OQ_EfM!KKuuXD<{qUqt}7BgOR zYJ5vs)@X*Q&oI_IrszSSsO$Ou$4Z1wO?9`2!iak4V1MEmagZ4=S*#gnv<~3S8#1nG zd{!O@2%Ci;_H{#wIlL|`QAzof$e)RL?Mb~ZIX3il8ti)uv-~0|+wWwTWBVOG-|N`U z)kwQhc9Rb&KGYe1dYBC86txMX<3kk2^lb^A)NsUsH}|?yALPq zu``VVsJVr~C^|&vjelBkTaE+HHvyQYJebZ6FXGg41Xt!Xw^OcXb(9-|tNX>TM(&S# zpx%^%thN|$rY{dxufw?nmh~sU0zYE+rr?0^34MkNwb%6+Nyn9$_wUXHAwkA21|*c% zHslL)vRLG9_DKOm*yxW6qovO{T# zgQXTtk+-Qu5{&llN8DMJ_j@~tf>+56(=*|3k0RIdL)hD6mS?MZQChAKdPeo$;UxIG zNA9sTUtfI#`?+>3^>H2Z*t4{T-yhhPl3W!&QFKZ@1}F&61gD(;Z(y zsRiSuX4hl^*AfT{lU5C^&2(AU5AjpI-^L5|c10EF`p&+;!m#*mH@`#i^PrS6LV!yM zdQ!tk-OxHBPknb*7L9w*bmDQW-Fq~e?R{CHlJXFtWhLX7Ql-Pz5)_z?(HhiWK6)ap zZwtX$6h0aDxB4#?g)3>;`u}{vUa)EF-}s%8@?t}Zy0HnLX$p{y z?@<$qF}vQ5m!Xui^ami~Of|N?bEQ$bm$*^uOoju*Sz&ZdJVx??o`#hpCn3-r)9FXSd)k>kjIdpVr2C!I~B~L=;YXf_6da?&$Jd5-VR4u-%ks9IhEBA&Cj0!NKAXNomW3GLD zu6;Zf_aDpaorI#B*%JI@maT*|KkGO6_VJ4F8W0&6M$-B1tc5y@Vm;+e{0e_;DSf;* zaTIJ}%&Vz7^_{*s5;DEA>DpPLS75-Sok*oJS}>Vj18cx5q-)(LBi{ozC>n&`XJXV-cy<}gF-$TQRkJuN0h~U+FwfYSW?CsSG?+^9 zCNn~*Ewt7w8x>jx)JQ0Nx`#hSR=4XVC3T_x2|-tl>xo|TrP)@5uXLSVkU$;cwk5as z)nE-@^R)~~)q7`$`t}nYoH;e&zRoakm2FBmx&*{HmV>tNussIa8$mdM;l3I!@(#Y#+`_48_1dEA4ot0u;EJOz@`ChY)u+^uO z%aLJQy|kp|oE*9M;~R{CL6}_e*T<;jAYaLl_)li~SWFx+0~(JNx`yPa<$7y`?Vew* z=aaiz?kGQ5&RXwh>Bk|M93~I|My+D82}hoAV4!D|`B8XXCEdDZ_|CKOO0U0N3pu2M z$KeberH^G9YEdDmFXu&6bpjIX!Wa9(zm={e$idJ$q=Mb=O#bb;|cN7%Df`i?flfX z*|=Ox1HsioCC1hMB#H0c1;<@Vb&*Kl#h#yU)J}4FgD&~~<(|m}FFEH?y0ur*f!K51eFv z$TzVYj>;P8BiulFG!!sh6g?twU;u-Q?&Wr}k}d`5XLbL%F;y5@=OM~MkxFc4|2>{G za#PoA&Bkly;S62)*=?OM7tX<>Xdb`$2sDTAg*8HAxr&B0ea;{~A%uMP9e*44xn%eI zpYA`T-*%&cgUQ8rwTHRiY3ow>MC%Vz6IQ_dobETXDGnm7@i36~Qlv+t5ir${@=7w| zPLg*kBN)2-)LxL=i`qisESqL3DqJ~zZTDR}uKcOVylC#u4_kgLRP~5$ZiSf%dZ}hG zo<5n{UX!&CIabQ?KB5<7w-{4W#FhoUj}QCd!VK((w`MQy^_fon3KK9P2}luBni}ZS6Ni5^Cqo`kkOui*^A|mqWgaTC()(M z&wlK87jufyG)===kj_vbaGod7m&h2mPU0b6iU#yFtj5oeS2B|Z&*Zzb_WOzDQj?Gl zqmJda(*p|q?(?DNu-;2nlhd;#Wt-Ll_pIfcYYO73>+`YRfS&tFhpvjNYl%bvL|YrD zpYM$I=Y9ANrPOqNFTssR&HJYBXCsSHne;gwmW3Vwil)>1xGl7x;O)mO5we|hml#xJ z3YTH_-I>@zYd|Z}O!%rx;$=w`StK_hgWIR0u2qejom3O*(g!OTFG~S6KU0riX4$*8ze|pCTe-d zM3>}b7)60IX@&!(XeL5iNsD#3yAVTAW0d&a(L|y+9wr^Cv{F7y;Kiz#t-|q1!Y8{1 z8wZwb2Ia65>F5Ctt{KL6BC772Z}`mZFx_IG;|p==&ENXdMsGBv(HCg$u)Ml=<3x3J~Xq&dqz zNsouz+wEAxM3&|2Z@fdn6@gb4QFr8L(t?NH1A>RR4~7?r0Ek17bcw;Zz-h=qBNM`G ziLx4|a79+2;3qB2vaaV;r0{3f5$#h}{Tw3sXIcv1_8LKtHNeM_rd$rm+4@ z^UIonYIb@1NU1^kUQ+&5YbmC@g&KX0yOGlLJ@R#CLfS(1Mt$w-GL80b-;7^$?#WHB zN>MV7Jz1OLSe^9D0dIkRh_bf7K;WyVQ(VHZQ{kIEw#6;NgsQe^CsjP|kcT>r45$S> z{EA7%p%LJH`)VZFu#uJl$10T^)c_-E**)3kU*nC(>(~b~ zEwQc7TNMtD8x-WfWDFj4M8@W&Zax82f6apI^`!iwBAJUmG#x?eeWA>EH*ma~oZB8~ z5-WiH7{ib39c^{wePiVB*H3Q8bK3g6>&^v#AqwCB*w5Z~IPQO+^>pt7D0VG&MX&Km zzqu0&Tpi*3*75O>22xr%B`jFYvg~s%zq!4= zp6Pug?&87;Wd%%j|782`5uBe@etwjL4}c~U=KvO#Lsi$`P#z(0M79Y`H++o%6Dt6# zEyQBG1y0Z20}0mQkqn22)*_b4&kk1huyffGUo+djw-oq^_w>L7+}M*;Gd&6uM70eo zAa*+U`Uxm&DrfdyIE>F$P38sGfBl)th%jQ-bk_61l98+QCBiPlkTfC5wFDCO@qMSa ze)MGBd*F~)CM70-?J3S4e&JxbJ56*^ryYIv)mJaD{PY{ud^^s_mx>T07mI@UZ%PQ5*K$lD5xzXiu~kSqJgItT z=j_TDW-Z@7a_q`pzjl7D`}l4l2xBXpx95*&#BsCN9j`-;#!d8aoAw#8&}lL^p)Yv_ znoz$bD|{)+GnE!z!gndPu)1vquj?bbecr0$@tec^$&(j*2xAdwzLHHu^@^k3!YO3(>2ElZ^8$zRf>@PP0a#$%iMBjsRt} zK7~cQUUcjuC(^K@*RWnyd;Z0@PYLjD+k3nwGW!KAX*(OSqU0<0%hyxFlV4uKusP@5 z*CmnrUMQ!#PHO@G2jc2*VasJ`aL`nG4a(s00Vy{y=ZN7cATx#r>1G8AZ~=7zCHTp~ zenXC|fnSSfAToX$EQ6_$$__q%tk22@K8C9((TrNF9(zl=X5Yl6V~EPVz`?o%aUd>e z!kV>dqvGkws2d*E+s&E-mu{(sb|Rb-W<$WBlAfkqrRwRYW&xrqu+Is}<22-@5i*2n z3~z)&#DTG=)BodMyugA@!<-C0!AkEon?@2VqQ;P&fqyS`pbb+J5mtd>gwgHoL!XI_ zx|wlLyg>i{#Vaf$L%k2P{44J!YxOzDeT6Govck^5F_$=2MsnHv?|*jYRHP89yRKXX z)AZep*zX9zuV6qinHyZ^@^m?P3|4` z5gpae0&(f@vB~i)Lz#G|sAKK()h#QM9Hp9gTJ2!uL{f_qShmVn& z;u79P6AI?yciqoO@cPW~TTXB|~l z*R_3>?(RnE?gph)KuWs1yBp~SQMyCILw9#~=b=-&yS{zA@8^wgy!#J99Rv1RIoF)m z^;_FyFO0C1Ayo7*FRM}8^Ck2!1u2DrT3^2geEvzTf4bID4{V+l02~BT?Aj-wt{Ba5 z-yw)gNEi(7>?3wWMim%F_Cg9Fc7UgrO$(jV@k9agSoG8~N#DfKgs@k=F8-Ey2pB2+ z^vD5i@37I9=4fTzj5Ip)+v1{@`~nL`1d%fnoGm3cOR@6%$}f=fz<8Q!SVA9K)Iu*3&gC87cf&1JN~-s)cd!usMoe;dGC{OvfdQBuaSSsv9k)kmAAh9!`GIzj=* zQVgm@xQ(r}rjYmZa!iPAFyis7UISv|KB(=hNdpsJ(|n??(){(|_7V7yLYk0>;&kcla_M8#!yn(p2{H zb!y7YY2GAhTzaBtORbS1EQ)aY5rfm)-2rfd+j$DhsF-d1NLaE-I2Rvg>=IK*?i`gB zKBokRsa6sKOJZI~EZ(1|jUy9uy7IB=bJX2Zp!SqM#v!I0`^O?U3h5}37_TcS>-y}& z0N51ESvSE>_vqcQOYmOLuKClQTX!BWm%5)`+0Tbi#esQPplBuHB)}T_G^#!NQxA40 zWp%-V;b>KCyR}!aVrtpL%D#EEPT2jk-mU7>lDhKhb~nBuv4`${DmPc-&yQok8RrIv zCWF6KKsvSj5K-u**VWKaU65FDdCqNA^om3iI=AJzh=OL(BwDz|W4&GYVUs+Uq<+=M zeOJ;a;N~8cKwxH$RTlP;6!yIEdr8cov5x7D$wrD^?L-XI$27Z?uO!9*SoG|#B zPo?b+RizB;$U67Iy1Dh5$&mj(%Xtbe!N=ARII9|*BbO zzCCT%zqvl_Y0Fg4`IzAV(Wqp2oqx7ks>eVvo|g3;%th@9E+4)3t*r|XB?k0C}x8_fdg-=S+S5?ihP57 z)e$KB*SK0|PoZnDuE1NFyxsbp2E8=4pkOCG{Wi zPwr-?T09I>n`;QUjLP?=;;goMG1i<@xxbqJvpo;>3os=zwG_4qhB9c9H`~FP)WcZJ zyk6D&3TGX)E27s@eW!kL)^6qOKL33VpXuFq>5byPXjYbX~E8YcWnovMzZHZ&O&%|u~ZmFc#)((+)ZC(DgGKo%u-F1h~w zg%g~e1I}ChK!YaMC(I?jdEJf`vX-QqK=3quE(Jw-3tn6dhiFdL;6&P&U00ckpd$v` z*~=KyC`IX|#q)2sIDQ)v$dx6Qmw(yp-(D+&(OYQ|>|lB$alH zt`b%GI2_^)Nw{y+cy>G)$Y$%bI)08(b%&F~ZfJvtEL#C88Y}m&TJV{wk38Q$lqYk6OQ46@9?kmqxbH-4)41+?%fN z!p^$?*%i}Y&n!?n5DiJr*%>u@OInVbL5=3p~?5;=`>ZkwCnoiK|I)6f>sUL@_(F<(oy-mSNS*WB1zrZC8Kx|3cOFm zBcGoKZpUJ~Dm=$Xw~+an$89ffLN@Ib2IP8#xhwL5PT0bR~5^gZaR@z){3h}e<%liZ8`?Z6cYvld18Td zQR&H5$@+R(^{s=XJB)>*5s3cb^5sv?^vIC-0z~UeLYMR#RG!kI2rdslP_W&J5!*%% zA~-3Q%=U@;SkG7ZN|}jXoZi2{&pvqsxpybKvWIQ#vpo3_nA^}h!d>LOYKC*Nu%{zZ zd9Z%*PY=Tn;KYgy)5I&{ptQ;S_IrC&9_f&VDCc=><#ArPyf0TB?X}KomA`Kilx68s zE};XPsqyxih<}M~CG5hA9gWZq)wJqxI;Pq9?aZPWFiEJw0LBY=;E*3dcbXh!u8aeZ z-HPKUCvC<_us+tU+T?t`ZjcNQt5Swb0k(^GCo$0R*(=7#v(R~?zsY;|=xoxjp#~`S zE$U4eP#nW}05wQ>GOrmeYOSQEv5bgFXNNe)DIA&1+RqU{C42g|40`{*F%X!Hf{icm4Ze8X%_f-XrQ6(>w{0rSnYAa6{}d6 z{OD5|Rp7hhrsJmE1yiipC{%I&l(}8=6YJTvT5k`Vs{0Ga@*Yx$cT(TKpO}M!?v4qU zXi`R&s4so`y+sy8wwf#hPhxfhWfQ@*crH!Vb`QsoTK$}XHmQ|-b^0-FB(eDv+Iv~0 zT;rBUH_y9d>%Dlm8&$TgabqIoW3NwjJxE$TyA^KxL}rJy0?9LMk7nx{b?4-#46D5# zhVLdWsGkvX&h4`@C&VR|TzPCnoku9Wo=?h7_h`VUdwt;3vyYkUtC>E2c&e?zF(OYq z*FKkQD+~hhZ4U|b>RhoP z9)P?PMPmJxE+^)5IJwzJvs2Yb5v#&^%;Tsa_*lY=Z9>k3izRGj<4suxe40evs~=_u zM6NoeYPQ)(gjb{oe1tH{z4tEKXq0N!g1A%PqMY|@Y{dJQte3Hs2o8#=(CN_}5L`5& zy19EjPw7tF;ZZp2AR5p!I}C_8G$&L%$=Qg{e`1WT5L}A_eq+r<|7Jip;?UfTlT`QM zIt$U4y2Q@z$E}H)=;&7yeGN|cHMd0F>9np3v#2R_V=q2r4A_i9dMqT!=}$PL@qH%` zq3~_bftIdPKv=J5cingA07&_eYgX7q$H4hh2h2oJKJX8ahn7OTwvWJQx%x<#)^lC| zaIr~qMa1YOpnNT4YW$`Ar2pamZbKzd!t-jMs;T6ugX2~kK`v0x7V#L^Ik_Xhv3#_WGJ+Qdw}WkX6&TphE(`= z4a)0oJF)WKR$re2NGvlqKb{ZW0vY8{BHLz+r-vKWGWfEZ8s*>+G`=nLNFpBDzsfHh zu^>H;Z@Do$&%OWDR*H- z*v&wwwl9@)Xr4q>Rn%LVgt4sn=kPq@kfiz-EeE*O&W9XXFi&<^+R!Qc&nGV*uxB?R zx{h}1w|Iz9l@>;)mnesym0F*&DED8{9#uMOS-4dINB@0{oN#;1*bA=i;ZpQb6CgW- zLhXGLX(mm5nebm+lmJQvfdQ!epH`SPF4LN8T>h_80gr&|hAx?}e~j=Q_6w)Y%iRRc z{C%06QNJsAR~Py|?7A#Qq-R&xhl&h*Khbyo+?VNP(tOQvckAx@7YWlz;iwtIh9o&uC;w@K2b+o${cuXu(oZGRk@Gm{kKWH}{^eo1KCc5p3N3ny zD(W4P*etAxl+!mAa6;M9NXRhIb&87E=Jfcm0EvcpoRMZ`F{g+$ZWMwqfy=)#Jt_P; z*785DlM1Un(ju85y_UxvWDzGlU$IQHPhN+tRZq!^DNMw$+Hb_1j_|DZgUO!E{QuL` z%uQB;*N5B;s5GhlTjAFWZEfwAMK8hB%g^^bk9Sc#6}l(F^W(LA<8n)_tvgIsR-R;l zqKo~c%o}Va`N9(kZfj}5_^8c+5Rzffk19AJguE0lD|DqaJu@>v-wr5ag_#?+Fx9tJ z1HZjI?uu+e)Xo5Ha=I#@`yNv{s76ls4mw8g9RB`tFW~prg28VPJrg&qKZk@YT?S|v zsRVPWgi9~1f69P2*hDX*c1A>91&+D&22>2h{zk?KORZBIIwN%uR9%|cdq8m@mHXK~ zBTx(H#|Ua9Eq7~#GuHy)uwpa^p}*YH-ATXl5J zDEQZWpkN|^HWz;44up5--D8ldtlP6Z~k>JZ^rriL{?O~PmZC{f$@AY*u{wWx7j?UCKV z!NG{uZ8(XIcPGivt_Md|Z=*Ym_jWB{hU1I1wRJs!46Fc1pfhmwC#?^s5Sj>(yaB`k z{t(1xa-`oH@{h0g*z^}E3JIyJU&J~}P9Fkrz7t6yQULDtO?DP}u)Mz(p!28C_X9XQ zQXS}Kd{V^Olf9Fze*`LtZQNA=jR+tN#z;Z35#JM!Cro!>dlO^=g=5Woiv zwsqXJ_#~|NEgNgXz$e3dFN%XE5+vzq2Z*TcDS&HM|j|!Z`>91#tg&3S~4OEH%>xM9_Kb`ls za!y_@{RIdL2snEn?)*A^>rWQWfG5kki~9xNc~ulzIjT=o*N{-T0vB9+7ck?8lezl9 zwVpgxKY|%u^JCNU5Ts{LJS2B?*Hr_m z1J@yV37e)OO@p&?E<{f{Y8ti&1*!O>X0Q?nLuXc>B6s)N9m&qTay2i(WpbJC`x|l%b?3LKLLc_t2iBG~?$fI?-6pm@ zQo*7S23}vgFzPhp19ROW1r4ZFP0!640Zl8SIeP5n#66@A?fKsu5Mx{|$^V3<3FQaXbagTVApLUbWz=H}z&WbAX zXt%&bj|h)M3W{B2S-r))wHs1_)UAN0nX5!Cd z0neEJ?dkfyj?u;q_|v+I!uA}Y-As&gKCs|CY}w_W&1%}N-)_bvE?0~KC83)Nk7W-I ze8xYY*{H<=y?~XJra%Jtdbq+Q)~(*_bj7`RyzIGkF-*s;OAms|^w}Ta)$h-0_X^WI zIGap;L@pOpa6>3=^t{Y(DEHc#SaYL|0gpv?rpV@&T;%?!L67W&pZ9VIu5Umja0 zB>P=lGX6XZpUVg(0{ z>}}L<<<2$6w4ILnfGxH6Ox`H=j4vyj?O3oX0=Ft^fKd+gUTG6Y+AF`O-1O(iREeyos2Ym~Mx3pZyOH zt*&GMOAYfsyyyS*2K&L{b~A)JI5_$c4~Ic=hWO3UJA)K7fkW2IgE=(7(%I?SdO-ql zE;!TtwdDNAEAr1*=dYB_^l!3f?JPm}dH!?tUnhX!M4SFEmH9ub*MGjob^IT%0C}H5 zy=Cry7}>z#O@Zgk>wmo@@RuB?*&typ{)k7s=kcEfBq^?UiL%4EO~3hx8RCZ&y{Lcl-*6X&xLN=k&UD!V1HveaeQWvaC`=G zZ3j-^_ox0aH|v!{Hl5#IgFfP)w7^ZzsTwR+D*~oAzzzp7+$iiwE0Nzu`b%$n|94A< zAJzop<)A{JEL6d1)>_5-P1<@N08W>tI*)f%p{wydC&M{cC#z(DL@o9SFd=nV{{4ll z=vI0VP&O?ar1J*7!VsYg1fIQV{`LwveEVNAe6li$ZT#Mjc1E(GhrB`+O)-u z=Ab|$Q7SdMUzm6S9Shh4<-Iu~;5);|Isnd$*Qcboi^S*75y<>Sf%QlEJHDv?I+>DV z{&kQ|15kEaM>hFSf9-Gl5mbMjR$JZg%m3Q_a=QQ6_^knruIK_3KgItYp;TmmWhptr zPc&z^=O}SfowKjL+qN9i{5Floq{`Vc{NHcHjlQ%T{tQe91p}v{_otAG8aHj6 zOxxo&i~Vl8E65YO4j?GwsH86UT>UAeXKmV?0BX551SvDivS`3;5rp8or@b#P-=6~6 z=2H>rmrzgA-#xV~t)gwYZBZ8&tuYLUV;whg!wO@6J9D2HujKh@|(^>m*_C z;C-wJ*f=8`Q3<^O%0N}kr@MY8BysI{fNaH?&1o2;Ado0QvkNiv<;3mT`03ea0`|~J zUo=kx^4lqE-L=X+*EQRdTEq5=kDb7RDf~Fs=Vm=3aBH&5Jj~qirmB=qaSQ_fp$z~3 zIwT+3Uu3CL`HCV(X1v;fE=85`r=K3M<1GJN86|+1&H4rHuMl}3O<&)qstM3oBtDVy zb^xj_h^sjyHCi0#fl%77&VBDso82$AAf2<56@dDqPKXKp@hUo9+vXnqW?9ky zF_wmsfk9gM`YsV{KP5Ed_GEjqah&QC-C6Z<=sC>pvhD#$23-RlQ{X8q07m-%7;TW> z^8*-XImdFgyDih+QkpYrlUe-f8j0E5?~v1YDd8DWz3_tb<9-&uQoiZ|5%m{&(FYWf z0Pzqo9H`Z+Hr(Kdxx0^;&FbsMgx8ildu@Tv+uhyWdoQk#FuzjF7b6!R2bL(M?Ldr$w8o8& zL3%2C6ge4^s?f*gIR1SJ!?E$-R0UQ1UT!;L?5D&=CK%d zuoUReug$l*`aCZ9s6E7pm0zcemD@Z~xOwRinT)(Jxg0M>wY8jBm8Qpm|Qch#lf_fc;r!`iZJq^mIy2BudEhdJUL)-SMhAbWm+N-G&={8x0#=8#PFM5yWRQ5w3}w$boh8X*kAwoI)3uU zc1ZtUbFTv0v^-_m5}_3pb6?0m5oV|KCvrF7AO}J+v#>ZvhB;s@cZ)XhW>QBc3KpC} zP%;d=AksZxhrVc+z{f52J@~BjSmPUu%|r%(XP_lSSky?=3W0R>m(PFZmgE zm7_|=Vgo9@I=JAL5q*75`AT)&BxY9IHxqW)ttaesxjj4}0}^n$E?jS`f*7Ww)0>RB zboGImmVLkA;njGA*TFEkL!ad5f{sSj>(7dX#}Mq8yJyVO`y`UDZ-jz0}i@#(+XvXO?tUBC%Slf}%ux?h&jah)JnF@V zzheN1YAPJ0isVyrkICW0dS>)f=W=@vKm46V*ztkT{t{F(z%3nP^5v@dYR!_(2}@gg z#X=ZX2o1Fc>g9s0;k~e}B)ugKRt}%?)_@G_EJG5Jd{if^u}e{rArjO_nn&IMjrB}o z^ZUOep^&CwzcQlS^2R1^_^e3SMc3^ zVFc2azpIhk2x^9g#qB=C-?@2LG#9Dq=oc}zc zsWm1E?P>VL%*)B6xe zm!7Q`?6;}JI{KLX$)fk(cpq5_Ad$pgwC98aBsph=s9bJUNW7OfTE3>hu>=X3Y|>9PV=?4~IGa?4Xd!8~9tAwB z@_xr(H8IynfAQl#m~QTFOWmWk17r_ZC0J<7oFmzZFOl0YfqH>}z~RfJWlSegtp?gT1VF&4{d{KU7PY zkyKVj7zl~(`rdjY5YeH6oqrO@0V4UQ@oy1{}k*4hAKt#9^(_O;!Bms8oOiTPr$hD{ho6qMftsW5l7DIKo8v zyB&GoLydKoir~AbhYhq3jJ^VppB5U5{22*2BfJs>3U&*?Xw~)O!XW-0l4B+-X01*J zk3NLhm7wcKC{-LE@YY`E2Q^;pY9|OO_T)#JHSK`Z+V*da?9vru4@C4?^$E-O zpH;%nUb5_PAk{43slG=0mNN;s2|19U9-ty{54-e33gM=bZDHw+lGg|sUB5ur0Z=}c z`|BFcRnc7A!d}I*dNh-Y^>H9QN*%4;i-8|K8>%?5%5LN6<;_;n+pNpMcI&~${8Y~( zb7lBMd}97L-5`}Ft^y}{0NXG2u4hwFbojo0M037flx8|Nbkke?T+K@gF>)WH76BEpbU1V zif^k|=6=!rVA1j5jdg3wxJtjLE@#Y*FE0hSe4@ElGts`$7$5R^8>@Z+xw#LBy~(D| zni8JsDNFk0yDkA_K1gqW`K6n-!RauF=ynPBh8voVzu?HLaWB|oJyjh z(dr~CPLPBf&!sbEIT2>FwJv-nn75oTLe&k0eL}rNdmf@%ed#0rTeVVmkwD>K0~S=V>6V(#Ok3RdgGE*!Lf*b- z@Wn&sQ=^MU+39Ngu#ECiH*AI@)YdA6l6Vh4gg2kw_Xk$nSP*d+_NHqvC7@E=s(%Bh zVB*tO=IiV1Io zVS)(Cm?DjBWtCvqC?;T!Ug+$mKm?5|5?m7??CLP7(@Gj+=H~%QhYKWO0L;rUSGA(N z86!*Z87^E*^HM|$Q(bil*)(8p=WQZZlq< z&g;N+I_TJ=)-JO=A3p`O9>W>#Xb_I`4Y5@Ha_CU>8hS zAj<-!E6R;1uCNo*jwD_7j2}u#tu$@pRFKY!L73h?hB!X2s!b6k^3vA4ngqGRE!et>^Mj1X4Qo zb8aFBY2T1Hhi=?{dS{w@pA?zcko8`>+G6)fU4CY#m29!*WwPsi;}34CXwj(ci;ni- zKvU43zd#H|#{j??GQ8PsRsh-Kp6V;8@8dKAV3c1i0`!?dHK5g58kX266Oo3`SD$l6 zV)Sb9U#wY*NVT(wY^#u=P2oM!xf3`hM>wRe66L;lomtb9fR5e!0b~DK#BYHMDBnLJ zHeVtO=wrhc{pp7iji~?=9Emc1(XnLND~=W#EuYVy{!|0GJsujLZ=;C1HP0m|J5*bY zM)T80iY|LnFd3fRF{Yr-Qq9+IeoFVGXH<*xCvX_ z71SDF9n-gnIw~xST2!PS&=@s!Xs@2B3*%*((4>T*WBpjvu94h7Q^{6Rfy!QIiL_gr zyG>#*fVkPmOW7do+wW#rP(;?GOk~p+-s6BO*7tXJHKOuCLl=P!HAJ%~d-uuCS&tHN zLf#Wfa8CNNYQ~+h>8?yY(5rjpjx2CkN8!h$AJFvSQi8?qS!szxdkuREaBy4fJX zH*n&{g%eANQ{%7RUt#X39N7=sqd(QzZ@dXr3wE6$B>4;5814I1LQjc!4bA$LYL1Xxr9!p!q8M#trjw#brj)z^f&AoSCL!Z*8Hm`|+`QGmjm^#SP zwXT_LXcnMH?Z${rlp{&slRaW-(G!I3xQu7@F_Ptw8r=k$u64Wf3~(23P%HTe!+2g_ zb=p7ipSHgck-9OiP>XhG8&7}l07=6+7w9Ee(yGE)Tb3{7eL9U(pVFc~zPGdgG_h)x z)Dxzf+uW_g#|zQT{rIpo6QMdEvfBEF9Zk>}mp@$qaxTcRk=EJJ3h@(gYATe6c|SXiiZyuCO8+~jcJoxZ zH3Fk?U`OwdUDeQ$?fY(qYD{MihgDEnBVK7%IAE@H)C^NvR<%9Rp_%@}K(EU3`fZ2! zgtU3ycpw;{D6HB9qZB0?9KNqA8*n=ee>TCN%&C|+)Nwx53XTx7PIC>`lJ$Fk*8V$* z?LjGb(|oDtl?NUKS%A4dh71o2{`1NbQS^7Or$n-{|l(83_I+dCYg> zGaZIfC|JB#ey`d^>L=&IG9rrcz)y$wx5sm zSz+A*$?_oYevQd1ZKX+>uj`c{{;HtN*X_a*vYUWB8y{GN6wqO)In|?82qpmFD2)0n zRV~3ql1XR}p!67mqfsNJoL|)!`(kbe>GqnJPM?g|0E7&@Ag-6KAj(|UyJtFWY;4@ ze#TX<%|!09Zc7IN;-A0FdC}(h6HfY(h8cWqRlPolw${~)2#^L*_PUGI1Y$xG(R zr4h*~l-+^b>i+zBb?n}a47Kaq26&QfF8eu%fJ6HZFE5;R6 zgbt8iSM=g#7UsZ+JcscJ^~fmr24JIs2N6h;wjv|pV16tyG41TBBEgFNe5iUgb7O>oa}a;CkCDw? zm);oeAe{#)DiLkF`wYGfqrI^1tPILYIr&|`znlH~w8R?34q_tqAuTPz)$icCWkn}P zQ6cCJ6*z5g8kOpT#gRe_maqAMFED~k#?9;nt!a#xC)&o4Na<$q4IZW-Yr}?m;Sqjc z+}UbV=&9?M@=lZ$#J~=o{oWBUOiEYol6U929_hH$yYN)2{ujFzikaswL`m`k<4t1! zWMUr#SG;C*^|*$%aQ-cBf@KwLVaP$ndrih|nPr%(s+;Pv+p+WclL?7S)}Fcf`>_22 z-#(c+8Rq=`(#H>Eo&C8 zjnE`r26j#_$Cd(9k#U}1$b>^TYrnf6di4| z#x>_R8EUfZ++|8}Avt!YDR9i`$Ib&6ut|7=gs8Ywc{bKs@rZETxr{uIC+4wGm&b(1 zIBj4+!pT9^6y`zOLKcT}BOq8>h@YD_NzEa@q)2xY1Q_75`=G>UPT!x-mr$9A$Sn^o zg1f2ikC=Y(ZxvMy_ig2E@#rt$B<$+yBSeQ;R5tpq-KpHyfGmEKmfFnf^I3VHV?H=W zaX)94G~yraqut_GYQQ9e_&#Au<6*tv;Oyv*h`? znZ_$eLz*IEiw4L}`}^&0nR|YZzOrR>g87QU*lJ3DKag=O4nLzFhHt8E8mu@6nB4Z% z@@h4S0xQOnlr#Mb6n4*rqb$HTOZme)&(AmWqs8E)13Q}E{&aGi%m)WPY|>BKXQeL1 zeRyAtHML3H01cl0>J&w>?<%n`SoB$#;G%~6a20-&i#_QCewRNX!ke%0Nl4*~&}x+P z;xQ;aP;=S;NrMM$(qvA~i{!XFyNTE4#+(OOCK3P^^{@~t#3FA`k6$oqQ6{PXX`JhW zI69}DiZ|tN)}n**RE4HuhR%G06hvcVVj7O6!{;RUb!uwj)PM>Jlb+XeWViy-!5+)Z zUrm~QBc0cUg>lGT)a48a#h_-z<35oj?6((WK&Nr=bF|&muw3f@l7Wg5?LoHWoP|?Y z!sAlQC}eM8JH1n`S(_o6pnh;t0j{J;4AbKii5jwuJXXLLp?>%JZ@?m?B^GuYm5qP( zB`+i1-Eb=0*hF1HJQGgk!^$Vsj6njVi`{SwM*F*?tQnEH$Cf~xFTdf?*WYtsGy2Fm zBEZ1Cxzte()LhRzxJJrF-v%JTr5dxTB3@{&d;(PEW#OuT+DUQ7AF4<2@{C{%%OrFu z$*;0WJWnR1cjK8^U#F{AYFKz3nZpWH(nK;Pf&T?si$!t9sAlo=aaXLebd)`Ighf2A zff~iSDu;M+SAzBPOuzXts{_yFxZv&y4;g)4|xSbB7JGjOZvk~p+lOnz0@?+9j3tn=mzZ-eSx{YXIQ z@|ZsE8#1HKP-RffHd6WH#^bK8+f&G?%(_++)}KbM6?07JrVUW?CFEBNJzW+hv299n z;Xratj@VgJ>B*%va>+fqnBfM$r ze>hD1*L$rRf7kA#LJE9F z&p;lxQ22-NH|;A^KZQ&LhbcSqzPszqh4=r>R8{Sbud;5X2<2pz-EN)t7Xu_?mTwTjvO}N|0H4owYWMw`8p)=*fYV;nZjK-yt9q-Ie-mXGZXH{bf z^6cL3!5P0l$kO)fYomj5W6v+jmCYo+cCf~CLQ%cWIhgrAr8Sg0z(y!>U?=`{6BYSD zP|Nbt_k9rE(GabS^GG57l!|30th%~t;G+^bkJ0^fW#lpYb83112WX5Is2B*rg;@Z@ zU$~=~7!=SiX2JqLoT=Wy87&3EeS$^#Sw{qB7tu-zyFBk}#JyVC>#jXA#r5VJtODTJh~txq zj=9j}>vdX{0%K<$qH)kef0)?kCck=~U2hLE&3ANOo1rCJ!1I3K2LjGb48VC?YaOuq zc-1|++qZ~_Q=N{_k4!>++)OCrgsdsI3LFX0znJg{+`OyGH8Ie`r%>O9NQc=+xwv}q zqx5wTxu^aP%-kBAcFhfy^d%;rK6~3)R(&KR)PW*I+aZrl%@zuSdY(e(fHcG{ln6>u zE%|L;KXoqWb9;Ml1LhIgI68lts}R`NNT5sG8cJ-d1)Z(6|>xu{5rD9vH<_T?BgZ%;}CuR71Z8Q|%_gk-;izoteksI0~LxeipI|jQAnw%dz zH?5DPI37>h z6V`@0o{2ZikSeplbC)m_Dk#XBw$yNBReJh?U$3P0=8wf_$0pQ1Tn~_;2`GdHK`;0g zR}U(1Ojv#9;^}vgSO@*s>SSy@#l_@35Xb%=)Wa|W+;P9_tk))7$gynt3z#hMHTxymv~4+ohBafxwmN~JaDbhK zAAW5`l%NUU>-VaUO!STj_f7J?UjYgWwO}(QTG8MFg}&a07w>SFrPnN*C>26|ig~$~|){`8$17vk=AHw6+-!T}ocA zyQ?R#@-j~!1Z$$8Q&tiiZ3O_vFTptqYM0geb%h7-b+7lkg+2O=uq>!=VftwJ`=4&bZ&F?XBYBxL`CyMQ!+<2YF&HK1_iW(r)ETiT^tmHt0H(h0*hckR$9IOcOz9}~`)Q`%GT(zkapBI>^*XjAlavWSY z=t;}8=|HTR08BNE?GrJBq5Ftq>6~k#r0z&Pk=1`zBK6Zr7089hw()wRVqsL!Ryqd5 z9{Ilg+b=)zUnzSS%}5&*VKVj)VJ;R3{R&dTLrB-H>+Pfz54#DN67KLUJM0-uY56my zdG+gZuJuiXDp6f-FF+N99L=SWIT({vIcIAqX)%nytBC9j3fh$u+7LWZjzITVK1GeS@} zpCRX^GugQvZYPffT3MD&w2R^J_C|jjQ0)_7>#TuMu#NwqlV!jDHr+!vx>@f>v$fWp zL;2+K;enO@ZaM7EAbr=w;}?uB63gKbz9YHKQii1hq1raN{gZJ3X=+j3v7~e$`Jc?i z=fr^Qu8~q8i(v9Gr={lgvBIWGe~~&r;4Mu1wWIM)I2X9n(+zp5x!OcfW1Yu0@1uPS zd>bsw+ya$DNJsI*p->scrKR9pJkisNxn$)Ezc}{FOx20lfc4F~D%x^L(a_H+(%&V0 zfQn1e@YkqiU*`{pP(etBuU!ywD<1|`uzT`_T_QbA&Lu?|=Z=eW86XndPWX^OLYskg z8^u;o9Y(VRNZMZcWgRt#V5(fPW7G<(o9pE0s^%-L3r(vSsCQyon9SE#VG^m320lAT z&aH*@=_Gjbv%Fs4s4DGJW-qjonH$0IPb(XBD0^;ffFbHR`rc8Do~8(J0Kz|8cs4?b zDB(CYS%AszE(C_H8>&VLp)%`na6%#k6wF->HK#kaVqJx;qaBxzl6*An9+07TELFwZ z7@g<2)9XTPs{fsV)1OP8F>kx51p~5|)~Nn4rp&!PE-pY#_JHvuI+n;PEdBDjcYv~P zgf{gsh9b+tV~7hTH9}vXfr4jE=O!%d1L+cOcIo6#d=y%H0X4mu$`wJgZ|nH`4#eZm zchI8q#!1A_D26{RnU$3A61sJwl0r9JPW|B4Kts%(>bb#&eWTi+tqpxx5vf$QihE`3 zEg@AV?W_|7d0|AUeL_G$6y1J_%bh;7*~RRS-Vs92Z7RB zowbxQ^JG<-GAcL|T({$VqX2fdvDAd$8iWWf*CVc;{#C28t<7@H>B#zttpjuNBERTV zIEuf|D@^~7ebd5xIXkD|9~>3#9m7rp`cQ&^_j-!ZB+K-%Ha^f*+H>(!x2wJj6)2~g8 zKaDXV@51)`_DS;0tVj!aVnFG9T6E*of3l|qEkTu9X91O(dQ|{`NDF6>sh4<;o_$6Q z({_@>lrdZhzK(H@%}3!#^rihM2e>aC5i5~m&U!IwZr2l9HPte)Au!aDbv6y(@OwkK zsRcloR;FcX!pqdlTl)UWv54$0ov;?kxxC%^nQ4ft%z=6dm8hO2^UZKEGBep6B9(*A z;Q?iVQ}o#=21p?({)AB2mi8=3g)%(#mPlURhbiNCGtSFN>%wR2F{Ol|Q#PvcIDRWb z!heYPg?*Sfz6T>@Got+r-?`%buUf-GJ#rv!AdtuJ&RQ(-LXL5#BvyCA2$D@Dze$QJ z-L4u?%5T>5(K)4W6Wd&pP10IEBJ{n2a;fi{0G#eyBYZJQHPK+HHb>@~K>e!=<W5aw?w4zk7n!9H`s$Jzv} z#AAJzxX*SvTIUXFOPd~Y$o_hfcnm8+CdJR&>~>U4x&?d7Bgv`*Dqo<43V0Ffu#~`WmvzHi7?0BXs~Q4A_g{QE7nUpIApunn{V;o3rW+0(4h=18ePeD# zU2C@T#Cv(8lIXJ?OptZt%z>kOyHVb3ZQWRaU|BOm%An*A5JFfi>Nqd=-6BTX*AQcm zmqrax>T;2HwEm5r00#1{2D+f21UWX)`F`%Sxjf@qyY$GidJu{5^_-u(79BIe7aZ>z ztWoXDg86R7$Kkq1$#@F_AuwTA)1Miwl^el$rk#{-tsn8Y<}SY0uv_IJkod(+t$BUh z?m0N+Pg!sY#^5&WNY<}%$4C#((hFO=)lqqH$|-~wnJrQydWzrLY)=Fa*li=6zaDnL zim^@0uzRz?_v-zm*#gI;=uD3XsI}S)G(62&Esr)G{Rp9r*2Z$r#4$R*ai*tlYNn%G z2sb!!w40N(R(Q%qo<_92t5mw){xWOzS5w7)L3)*aGnQO~ZO5YjfPKchQ0TqgSekD# z*90X{m_fM)IyN=5^3bV0l%1Uy&S3_nPzg#v#UdU8x8+!cG8RNNAh_y#Uqz|IeGnW_ zZh(r%GW^CGzB!mgfB1D-=4C+@6qW0gNms%z>+K{~yB`J~-&;|A^{>Q_RP3*y?}(Yt z94GYOMrkQ&)ot6QT&#ed>h1&&ii9angg1pr&xE&NK?6U$B24b}12xH>5sP$gHEpQD zVZ&b&`#E`tvzj{y4{E~dJa9lA7djhZH;@72gzfDRcKMfV4KDlNYpFfY2+?pz2h_0KUGsc|h+WrWU}D^o1P8EnjH=eb@OX!`}C53sjK3a+SLaae%$NBMA4zW$RA{ zAl1Q%4oHQVj!>-b{9ZJywVL+B$KQ>@uXTdnTi{n>_LmS4zmqm({cXqGwK<{vC1x}; zHw#~${wE0b#gPB?n>p!3%{S7gVJ3M+p1!lTK?u_Gcv0JkB08$W_t-#{x9}PLY11}E zaO#264AtJKV^T!$!jSe0{z1=&iq5J>Hl`y0+q{Z|yGHU69x}E7gLQ@I;*-6n#2(Tu zW~>IeX_n^TMliHpA$Ye668H|g;HB`efRfDEX}SS9r_wdga(gR4PFd8!lStJB^VqrP zF#V(-n?Kzi;2Rjy-?PNChe5P`Pj&k73s~?|sy!k(`uCBE^Q#aA2GBK@CN`;>@BZK# z_>d*7Wa?BFJv!Kb+0n?;y`Rs&ntaI|zsuAX(N$SCxkpS**x0i2E&4;p%Ufn(-O1FA z*kO@(_0Wh=%Mh}u1VVRE5wRcj0lTe`<=uy++MTfczrrJZqhkoA5oh|8VuB*(VuZTI zKZnZaObZ?$7uWh5^{LzTzS{K2{Bm=5op8%)#cCsE^^GZY?gE9^0iDHM#CPfs@mt%+ z1bJ13wV|wqQE(A%y~CkR)I@S&u!BFQC4I6i=)^t@1g2nqzd5-Z|025+ju9H5C|y4Z~;J} z%+H2_|1@>upya+lRAU&_{^`PZf{P!)47`h>e{%-t5MaJEwoyU{{O)p63I4NeDjO>o za@#uqGU*GVH{9<(z2X0U@&EPnw>YpdV3G`UI95i-X!xN`X38^pW8Kc<5GL2pu{7XSI*V&nf9W#Ct5V;mHiYCsj0OgLLL;Jn$USzKk9yutu5vvDjgOBT0yc_3 zsugj=h11<3@<38W#IJwF7fnHGn#8Flo`(Z6X3CHYQNhZPV zEm?nndAOV;ro(#pIzYcsUJ^d3N?K8~lx9_8fEW#+J0EEC?$S0*2?U@tAdt%HNk3ap z`dj~_aW$pBd)GzJS}@&zUlfeE=vbMQW+JiCQqCwvWg3ExBk{xX35K(85UqoCMnyK} zL1AH^r^w$Kc+L)>;(GACFD0w0s?woQGG@)9R_{BQciSP{7{HAp`1Lqk5A=iq)X!9- zyJPzd0vY}EKbC^Hd{?BeVVK-*P_6p&>=sSCzv51W(zzuic(%<~boYx7H{J}atljVF zQv!&TgjH%98-;HVAMQ&%7K*ehAK$Iowi$VE3N3!?_@`0t-xDEB_WvC(lIHPU<7?BJ z(dPtv_goyk7}?8J=k3eAXpeN$rak{gl86}FTOz@5Zw^a_x0*)P420pa7%@J7VH%d2 z@I61`AVks?V!iZ})NtZYJ`ycVkiT(4WF z=%~Eq0aj<7?B{Af0!07*N-{D3%=;D3u=3;p^dEHM{L_h^lsqK&wQsTokk&)*2S_6z z^HuTq*ZKWloCb#;Fc&@}a8eh5suX};LVgS{MyPO606H8M5QLG9nOFi|x1 zU5vZKzui=Jcgs)!jKQ3jy2=E%!ZYLJ0l<_2WO?Qf*P0aq+>MV%WYG-=6K(r0Hj)9gzE18$}#;c!2?Jp0Nj=Hx@{SN zh-wQCK9}8Jjod>e%x?M@7P8hL(?;HE6Yvum;TR~o{#k?)ZRKcwyI(C-%-p>;k=s}^ zCXl$o1zoh69=Dw{6tGkUSf5t~VK0+ObU%mC@UvUXm|iN|o%t@=?eaJ!2HNeuEj4wP zMc__8yN#6-cT#%`>h+ft6|d4f^0!|vazIum>8|Wdqlu zkxC+{f@RM^{bh5xgQUVWMd(rM#yEYVVhE4;8sT%HQK=LdqSsqlD!RJ6WEfNcWspob zi7!A}zO)`^&<&tmLPLq@SA-U?BEd3$4(404qAuF*;D^D3N&br+U^tpg#7yw%(CpW~ zAMo^wihuA~nN(rEum8fn{=u8XF#0at-`x~Kq<%8;T20Y>%^*;LXV;#Bc0^4GROVf0 zsF4;G3S{FL#WiHn0coFshKa!5-@hd^-}?h9FoT2QCUWuV7U5(ExIxN768^=g8mvaJ z*BqvUEUiiYqja@)Hjlm(nA}VTX}ZrcqH1hynZ31hCf)u0(V)Dv1fa5p2Ku6Mu$?pT zLIHY2(qZ+Y-8Rx3-kg39d=2CG^uWFW;s|926i3`8dI5!zg6pYJnqvSns)dkcClPXa zV*}l$YrNhm+!;yF$pHbp8ORYmaQpyY*{FqJS?c+~hnp7LqaLw?*5cZOZu_1th~NKm zrUb}sq#HhxzRZ?BZ;S^c($H~4ltc(nRY<3FC_k#BMYagqDJz;22}=02(T1?iYKIG8 z%5U+$QE8hHU?uicD|ScXjk-@o52pHhanE^xFs05tbh0GLkb=r^;_(JJ*}n^7vRu%uj15lH%W$L5m7&7w$Gk3*xV*5A zlxV&I$Pn2FCk%dA(XS*YK@uy?Q{oo~9^OAK3!RbIK3TI$mSC|8>1HH!;F*2H{6sA3 z;_jtsL#oO-i+H_1IizAhDiQDqz6Eh(k4Yy?^YJ?_wpu&Y^WLq*MO+Sfk_)IMCb0R4apirt0O3- zti{8npCW~tXOaJN!ab?~AfmE>3vp_d6%$j_Le?dOp3Vo!w#<`5ATSghpaK#K*Z}V% zLN?=K(c60hc6QR=WIw5mo|&BuNGaggZKmp1Fdcc{n{xWMnoFQDxv?W?*+WKCu#Ta$ zaa7dQ9i}>jSi-1$Eg1(o!lDZ#UIl7x*5pf^j8d~|2(Hf(N`__yZH?Uj3qMjmg98s2IE$mH%DkJLGalJ1rL*>e4=8@8W+5g;lsBN~25 z3Ofe&D-P$L<;xMDLpo=AmNi4GZz1uIZLLG1Q9)fLgGv9~RpRx+87;SGM-4z#$SU}qg(HF$#6A++Vx9-*B6cx&BPp4I!l?wq%f^S$lv zT9N*{F7PbpgN?B0FzqznVvwesMGFkZ~QZ09a-wce}V<5dYb` zr4X;3NdG(}kEw5MSgna$Z1?80+LRU9qemH`VYM5d;&Fctl(-w$F0C|JXhq^lOp=V+{ zY2a_CBzGl1nqhQ%d8|){71tw z19*scKrXKbSWGXIJ-%yLk3+xI?`o3OH>d`VLBIJ~fY8xJI5g-B7AU}$GbDGE3?(zj zOCA;IRwqg9k4{>5OUcN1P3_g+8IUGJ`N2kJ`ZJ{U93iwwY3ktvsR4{wp|@1E36ZK%``j1`7BU? zuWcJEs1;BlQMRQkR*BuE$mw^eEOUHk< zUDBjQa5Gl%?Q}t@W8ch%uK1rjjJQ{@s!a&zoM)52=@^R}CRSi$n1zlG!v>ohB_=iM zEI;Y?5StmrdRL%K7T(mI-|k%TU3Xqlan(1c=^HG0D0QDu*=aw#7 zbfq+06|>9ZV{ijc3$}sCtm?WJYN#~rvTT#0D9sMq8GK$%o#8$rNl9fkaP`J4(+l73 zCWUU)RZ|YzYZ!q|+94&u$f-kNI)pNo$jZv1Q(UPYzvNC}9K8&Ixdxzlf8EvZHla0u zWjro&={i?n7*uf$csKS@IWSVZ^<%%J$ybhKJ!d}6Pw_+c8$f$v2Vq`h5^e9E#G4kp zID1sdmIJJUa9F+Q+c!~o+|$pB-j)PEQ-@~ftV8HjPUWP=HPngc?dSy>tJ~aSQ}PN@ zV{A)>7a5^U4ae|0v!Yd7`=~g&-H?z^8^l;P=H@E!@0$UpX$|KZR{M4XFCSrK*Ansx<{S-1ahu$(@s9t_Ve|Gesp&#DmOrL*h3f6V#(h4I6 zWBThnf1Ydc?}Oxgt4~+U?b_r{&ojnYas~FVQ`GH7t=*fBDagKi-u60+F0>Bjx(&1l z(`;18uXAEM`Y43U8i>MTNI9$7&c1mrR>dh95cG3%GbwP@j z0nV>srKephcRkAN03T3hTx{aaQXyNYn3S1^;**B%5x6iG>`nTdcf&qJ2tM75^CBsY zoYd##PElN$x>Z&deQWA&3jy5L;EiP4%*5B)*#e|mAX2p4gr_PK;9wG+D~Dc-&}=ML z>vc0C_jBBd{&kbnBp5@6nJ1-}Fdi)Bi5GsqSXuN0wE_%ShH-;rCXNz65Q;*d3W6M+ zpe?R>>S!PJ4R)6VBEqmp(9^Ocx}YtNRO3eyLB{JOriLUXrGo$mlp6@=k8B#__Bs2$?ZUEP)c1y#E$&7Ppa;0})uoyc{iiKzYCLzvDi+HQG=bz_W)P&) z0d;@({BiLcq0g+N5)^qOJzAY_2bUZpF5nQFG*&+^Uu1?A!#p=VYJ%#>j_fC6j;D5~ z9gf^v))zyyRP-LkPHFOSH za(~CP$TfHJ)6Q&@Qjis??UCW>>M6w|IYK%WW_i6ZUMC&u9=9k`Z<|zO;i28BFlW?V z=%2A;{*8G%e-9w1xDKWXBG3QJ%1+BN{= znR`J0Vk)|$14}6YuSk{!G6Sb()WAsc{q`}h@3+{jb5}0UjbOSD?V{=eBPwfU4POcbVaImes*WuFT@8+@RcR_ zsMa2Rr_%-8r_KxJaG#UatR;JgkRSy(QV{eGz*@NyLFYigeU7mbMnw5C^-|(}hckeB z10=>Hy1qVNy@M}mdHNiB9zuEtBjB8rBR6Zmew5j^2Z%#XZw;0rL5}OjYL(>n_W>PN z0DMO<2=_YAc~y=U;Lr-;8IrO#id7kW zYVze%1npsLfF zmDhyZ>llc-U1#|oZK3rreMiUC?{+rIPb>ve8UFN717AHPQSn7B;;96`Kb-(Ne z4mrv_>#bzF|Hw_8E-q~G!ZskSqE!8m)*8{-vSVxeT?c^^>_a%li|K86w6HiiXZa_p zvqzIX%TP?x{`Ix4$o-effdaqxBY|xPmJq{IZD&AxqnYK)%4ae-(e&dqi2g;>ieumv zA#HP^YRK?F+tLq%+lBocy)n2>CEi9mN|cS*3_7Ih4$b8$AK^9TtEq zM%lNn5@BQah%R3CH^D&k4tpM~5nsmFg}xsz4#~pMW4W(Ca0d&_ z8h5luVOmWyuO}h$e8CpYX3Zr7j||i_McZ2FydmD^bbT^0OE#S zp3^7GwlPZB77Qv;+Pauz;~g%=N1F}!xfz`v)}de{L&2ALTx7Tm<+%N3S6;>zje(H> zL0q{oU(x5{SN^lyJ0|-IrEHeF17MmR5L6InugXf>w(%+_B>V@d|aWy?^#frJcis? z`HC`US~1rC30YngtLKk+WKZ!@WlA*Hn@g%b=8ORgW)*q09euYJ_r5AbZ*5XHa%znUT;ctKtkh4*UYY(!6W>o^?>fpA;~DM5<4;M{SJg<<7?1i{&`E z--Tkp_I=koFGZC!)S4bLG#C297duP=r$zMpTf<3TK7RBTt>8Ho+gv+2zS+r-8$P3@ybMJKvrhL&U>dEJK&<3=PaJ%RTsj+~@;wt#Ri;Pr80J zpeYV1cI}5DI}cLS@xhGeSXaY6-XudGBe$6!z+tkB$wg7c;CJT;6{t>TlHgC%DiQ5& z5(TO1y)|Vz^R=Aa#QkxP(FyT}SbnHzeZ34aM>E2X&=Tq;0HiSouCORuGU}i8TMb98 z*BiaIro>zr`>1bLBvxuGaU!S1Dq%o3iQFPin5|1vmxUb9XDc@Cxsh;Vx8M#jah)NG zX?r~J8)s*!w|;~kJ#=O40%-^rMYq#LsF?U{K->mK8m_oD+wmkO%CFKB|DGz|G;3SV zl|G>4Ltb1q9?5)b7=k^Eu=j^+IOW9_FuS0J|d|E7Nbnt*O8jk$0FJK;ZT$9 zt~;KxztM7L;>1tKHrEaid8Viz^p}1rQ;}I*LoWMxWGbDhFX$#cRc$69G7`^e3kINE zr03#_F|%K!^?g;LcGIhRrk?mpa(Zp5qu6$EP}ay9sK>wQ7$18X&ZhEe9@rNyi`lyR4txqb^kxup$8 zQrx9i-`&50??L2@-XF)Nl*C@9Y_Le~eUo%We7%w6+CMA*vM?qTnXTZ{G&x_|6NmaP zzEn#L-I1}z0eeoVypK6-cO=YrP&1~+4+)wAgGFDS3+FwXfpRjBP97x}{V_(f2HCe* znLam%ERmg#E@^%3h>kM$sM5GdmRK;hHY0$MOri@LBv7qGO1XeN1`E$5cVlC(p=!<7 zIImQd-)m_jQgoTKJ|Qi(g-9*c`$t`*VOZ9oDRlY?{3jYOL%`4)^bOLqUlA?1l|sj) z_w8~6>8q=&lFhb6=db%NMQ9QitHV(}_g}AX4s|{JWv(99{=7 zw5%C-0-f6xjQ}k~Qdh+Z6Gx?Z^J9j8cp;2uyBzo212x6y8rC13wO#K>JcEAVLTuWX z*COM)b}ob~3|%rb!dU_^l?^cBZ@%A;1-y8ZAD=z}- zLQk^0lc#`=%UtHzO_>*%yLkXU1qb;#EGw&zBjS_C&Q~?ZeNH*M27tJD1K)Z@PVI*= zofOIRZ96P{CQpur$XN^^&Mzq3?P#U!hBN3>URI4=EYCS|{SquoY8yMwD=0X*kcmMV zM`u~ABlRlvkF~}(Onr0Uz{C1}YUD>7L-hLCQr)kL6!&RO!?OUtKgg9vIRZd;TxL?_ znf(h^m9}9gJoa6rt3FAIxMtC*1zHfatx<1#;;TJCFqQOT#twbY7#vmImc0LiP;l1T zt#vNs`$qeXMs_wIuaq10F8mL9-82L!&mT^N&Tau-9~yg{a6z`}=!3yPyWg2#gBHJu zu3Z?uGn@ph6^3GPBO_9u!G`Iip8itW+ueiDW2+Q2+lqy`O1o~ysV6QP+q)QMtS zCw9y<1RZl=4?G5n*x4_&aR&BD%H6G+PJ2SmIjm}p_dozJjM(Q?ne-h&(!l)}pXpe1 zhCHli(8Q!I<}+2(f7k|pvZLlzq>7mS$r!sF3S$<}2ii6O`iuU^+OijuO0c2I>#8{; z3uqR_myRdILFXi?FI?lvJ{kH5kXR`47x*(8;R9huCsa?i_@idw=_f=H8trN4{Q(~+I@#F73Kh!xpEMK}{AHE1O?*O2few$BtVci~e zjY`J(Va1!X@d9!1FoC9*eAZTH3?@`SG7QDkFaN`mz9#Ke;-Hr}x9eELf4oI-S3hm9 zIWxwTiGDQAka+Igw0NBE0c*T7 zMp`p}X3s{-t05uwQ&Lq$NW<53jQcRshmUbK#i2))HFAYkiA&E4=e-%NrO7|!vp<~P zr8;hazi@IT1SG7Tui3|QnGOj!4kZXAIJ&0|*R!gOuy2+HYF;V*Fm9l6)~Tpje)Maa zxO%pE{i9Y6OM}+I!8xcnS%3rXrQNqHtbFy`S(pZPX#K~Y<)M8$@NG+|3pL;6W#80j zshKB(eNT@a1d{27g=F}7f}79uDYD$ja4~*_);RNU{nnd1m1(f1_U4`O%re^JDnS|o z<*~+@I}yf=5YixgUqd7$ABR)hk#A1~_pL}Qstw_W5tt=V1%L8xmba^ZZ`%t|Pi##; z*&u&UE;;KKtNTf26;X5)`;||xd0kb$MVhhSbUgRY2)C-$m2bd9r?ML_Ss(4@v)XLJ5w1a~#3v2?7? zSI*ILouby+X~Xy?QCoX#56_gY{?F{&9Qj}o->1UOVH~z87uf-IYPl2KHIEM%W2q_> z(`sl7HT!O6e!jmjjkWr|*rVV7T+s7N@|KeNbBAt1CzrCk!zpeS-Sv`p+q{oE?La)l)=TxYM@ z+OAOvg}1ZQL_f$ere_BkTbkU1S>Ct0ylpmr6#WI}>B9CFM%xd@_pMYagV2R3jU`qpa6#F#wOA@_ zyY{K%eK=CM%TOAIC%hqd`U2l$DL_$dzD6_fvq`4Y#Dy(?I`-Xzp+{Kb~7nyI0KI&9*x@;iDGs8=N9h^>J6L1?Zkv3Ve=F z*^Ix5V5kBYWE6I@kYrAY0rK8o46RV)LPDA_OMD5d7yFq{?Cof6dehP+P}{L*YrAm) zkdW|RFWnY|B%mccLjsB_?n|_VzoEmX@KQ%BOY-c}Q*j=K;bWhbNXvR7kB60QCt8YE zWHA=wbCg=b`=CQ4pWojbh4wSA0%hE}VgUZ14rV9fRM4*I@XF$Gt?b-ojYGi3Kmt+A zjwg22wPV_a;3FiYpBug3UV(IL&UaxDYsp%tZPiki*|okO6W1}b&i#XYZu$ThD2^E* z=DfgVe!4L@Q)wENIbt?*3dq3T%!SuF(M|25fjjm+cP?swr9|vr&pbQlCtvfNpVr#y zN|ZRk?n;cfIP>~sQ88iKVR5*tIL!}VWUhobctq&iqf(zT+9cnNfOQ}7Tc>_lit33G zna>B_D}T0!%>9Xlx>n<>&0_tE&cr#a){PIhnRv}HmtNwbkJ^IWsQHPP28p-p)Pm=4&2-prz}aU0f8DMD8pR7q2mV|Tg-D+VGwm(ivHDgF6Vuz9jKZK?MF>qGCu?7rbw| znkdq6YXqDWIP91xl&xk#oA#k4v^Y4xb=3Osk&|9(&}uodIXWAvvpjACz9l(MZLP{} zTTyAy6jg8STRXNjU7Acde&mF@;Pa|Rl9$bc>8fpV2#p6As)lXHj_dVCnyQf-M|J>n4ypDw= zR$$`Kl&||*Rn3|kpM=%+U7eS*ol|DM2^gmSG5eIeq+Vzqo7TT?g^@4HFlSNnrAP_4 zKXF}!nqbHo+CckF?QwnAnNYmZWjMt*;(Z&2nX6DgT?z$n2w{0GaUakF?u5n}&VxtSE(otZc9sPzQED#6Ua_QqX*(GZ_iVp97PzMm*r} z)^`rWuV6K2408*7okD0go5PMNyLhS+(#uGmH~a5h)CnH95pT6MWKZ(p8=UUSHu3?( zVltT@6pfjZ!|U~jyXc}BFWXwq6vblx{tn4X3cC?zWyWoi{3SQNys&>dS?v5Jr6-`` zsy$|&)Vkyl^?XRdx^aDN&(7+@?0d$XMTwuMTn_xDuC7;UQqA_ch2{sE4rM{%M#(uf zU7!ferSSwnb{@ej-vo5(OqLt>1XYJhy@Uc12u-eNe;*0)6nQ3JB@<42BX+`iCiKq) z4sq^;swa~5Z1keNN`%rLGhxB%YWp>Y?~~y|7Xcb}lx#Rci06V2ziXN2^B6pSbQpnz zB(5EAXF4~ntb`)WHN||rGLJPAsf0WJCCsUlc$h4|LG2I6S%b^Z_YsK={yAeYo;+D& zEoo(gf2P*MbJx61$xDWN!<_g#Hg@RYnFD;YHuFm5 zI;b9-cbrZUa+sUur4u3>1UTL44>$-<_jG6~WzcO5?Vbl>^@&Ov<+;mb(C|NcFGGf$4EE2^m%gsf;? zom=MWQhf~E^lhTCb^CU*?yJFN@O4hA%mwAO-%VC=&2KxEn9zT2ILCV3yhL|5g5du? z|KDH2X~aT=^s8-xAD=PnP^&VGKh?{w_0F}Ts*AVpcBy;2K>lwme7@Z$~ zQYf%4w=KFL?(}8G^j%_dI0-oGSsgu&`xR&K6D0T&SD5W?S$lhmx-s>?uOz;{bvR+X zQJyPZ{etLZaAKT!#x~gQ%)EsKDLD(vcF`*#4jms(cMhM)S9SwGB3yYF44soN!$qaf zDQ}Yro0y8(WbNRmm2lh`2sJowM%B5iSAwM273|+ujCu4~w+J1Gio$=LU45OqpgA;; z6`eZ}!7O|5+P;88_tWmm)lXS#DS_Ni&|xhE7HfTXeGZ!a!=euzx9sP2KlxnkweB+S zaEc3xGeky4PUJKRgUin}x>sK8O=p>LCtfrb7Y~Z^t)lvruU#ImUK|5#*@=SA7Ax)r z9l`jPqrcwQ+;xT$T^vU?@Xp-zFD!s=DE{^M>~&Bm)NjcCs>e|7xtdyUgNbKjR^Du* z7|`1YUL{}L5_~V6(IKe_Z<1xm4oCIDxs_PUFg=|HC*Q{nvK?( zHgw14tb-Z3ajc{S=irR|h@YxC!`uPB%*4cg%mj#YOoU;zA+dvTswM2Qg%FVuVfD#^ z|0}>@tFuiSs25-o(S<7qE{&?ZAjwly$0z~SBpw>?@9f%WE`Ku!mj(hCP2FQc3^XKl zX23j;Hs`+=LY%g_rjk z4EMMX`}&>B?h<1KKD7vQ*Y`_cek$*MKH^m>=X0O8Ggv2~FqDQk=l?jmp&^1R_U)|< zSiXi&i*sy(W=}qrI>>q&&x~x>oLkK&G_*9|?QldzU?+0=78D7!k$LW^F6IJSR&&_c2LKd<-YOpHE~mO7cTMt{?BhS1ROUy zOTmkei|^-hn-uvcT)d{uo7ZX@_)*Rx(LotQUnJ^JLbUH91uY2Mel-lNvF^EuB!Zf|WpR>{ws;Y~_FLw3``{Y5Rr z6EQI*$7W|OsdsmF{z;JjnLia0L-r}Zjmwn8?y5vIvC^UOi=tj|pOHa>;e3Md?^4gE z$l7+Msnu_44TNeF6PviIz}2&h#!Zj11MZmGm!%VxqMrlj77t{9yQy9I1yBpHQDt~K zDl2xaqL9R^0FdRD&FkvwHi`bnG}1WMK0-1M$;Xj*Hbf%1lSjR>EUE7XNjKQ9%7`4bB45vKisqJj z?puPlGJ>Dt1v~E+*X~@*+5&YAQSF+IsdD3mr~jFU;>Q>$S=>CQ)x8QRma<BkG(7fb+ug%zBw=F*vVJX1nF+orC z^i-LE)zoE}AkJ*u4)m~{1Go@N0Qv)64kC9t?s~qP`IWU|Pvuifs5X2;^vvz`KIW;b9;WxX}{trZSCDb-Oc6PkI_vwhuH|y z)9jvRKpeNUC0F~}u3?ty^TXZf{-N`%(8{)k@9O=#uyN{QEo-@`c3?SRqd0lVL+nB> zh{*b5xA)+%DPk?zmp7ILNJ&e!SbSk)4EZ_hd*kEw5xF-K?i4OAQXIapy;~<(g`&e$Xpv z?rPbc0o4KTK~(}djrxhd#{kfiGeAd;VJC26`iA)QUJ(h&Ti)8 zQHvG<3f|KfMD&VNJwgXFA17|&95;t14!z()cLW|{$80T%AM+nW-=##?_ul7+qpo7~cXq|I`|2ouL`Jh!(IwB% z6!yPJG}E~!ku~B{@TO5bT6z1p&1;K~3uo^nSb^H~C4=5k)gvSi6u(D?XC#HbhD1l6 zV@V6YBFOn>#E(4T^Ks8GQhBWti=SFCVIcHDM_0POHfcFHUHtf#1~U&-)FOWV=}wxqFi8A}eDPA|kkrS*$m`~E9$ALZ zTZEoK&-Vn?Z&+COx;<-jH}^fg(!1JWN6`Uq<~Ibln_6*<7|8?#qv!t3<{GY*H~kv= z{1Mcz71iWv`1y~LnDW5o)EJ7TW;jR;C_pSB5$SfIxtwzxo`3_ss8zg7VCoJSWDNvl zYhr%BIGEb&BlT6U?5LNTM``2A-q<|L-Ky9JCBYk~=Hu0D*Jd^FAtakt?pLW-3?gK; z0z8@j>k$eK?ko_Ga17ufrWc#CWTU|PNa4KqV9_B+B$NI8gG)zicir(QeG6^VhA{l9 z_p904Ecde|sf6{ZA21U}XP$dDB0No^?5aqQgB zQoHp?ZG+Fh@1l9%+5w~#mIYzgAwV9oED|I~@_v>`n)!;ud%O`_|Ku?-A;$3A@ zBYkA_sqN^lq{Vfl(@X-W2Pvmze5chDKVha-vKVhKtnR&m^Nds(^_jK04%L*3kjUQc zVpg$`!pkY_ouKE8BKQ<)Kk`}kM7W5-tM)D1Y7L~o1VHlPSf&RWYnm^rOSb{Noik{7 zcuo$TF7DO!ZYdo4i)-R24Uo1X#{e2}Mi2myZAt3uXn29U{&gq)uZLr?Up-Wg4W4IN zqr+YsdxQc)Lew|$Ys4C8-=BB!x@%4UT{`X9~gL%(GzAv|Hk3z(DMM%xRp*nnhxF~4x&Yf#-8H>@@tNn8Sa{ArTWXev|esuAj zP?qAhyJ0EBI1cxb>*s(lIapqaR2hFA<01qROc;Uz{e#y9#|R5NgW|QgHm*`$2YX+l zBkcbI`Z`6}T@~RHfThP7Aiut4`*30F+=lwxt@MMZ=cv#kqxIaDsP}2o{D;IdLS85wsUl>YP`U3;2F7jAUgcf$%?Y$82$#A(xa1a2;iZK_K@+p`wf0fURdA*zl7MyPKMyI^m zx5t8qEnGL@pE?y#3M*e+K6`a>@oEl&0wkJvHsdQ$!3mayJbzH`@AGsUo-v);kL1kW zpO~lKTI*3XQcyQeIF*hSH zDPI2&`{r`UoAGJ8YOIk;raC^cpx~*z6y?QhjoL(i7yW+Pxf0Qb&mU#RM2c*M>+ZMC z>)Gmx%{6ONhVV?^$1rU2|4kS{?|^L<;3&|27%H|YFS{Vlrj`W$7M~`>ppw1~YrPjU zn7e}a-}LK~^5_4Zn08UqYiSu!icQ{mJDaGnv{QoAk|M#@Z^Rb08HZ zy(^l0IjdHqqnkN}5^C9Gq*{P0EjYdzIUeLkw0f2}v(k?Tq=__Qd)wSuEE88tcQc=K zsWhzkLYLINqH6{H=EY5ffR%|g16)1G5BvD;P%iB1uuS;jU#gMhndLkF_E0 zzZK&JL3l=C0-NsZDKow38?4se$Mxsn?4!)9-$S^ty!wV=Y*cz4mjtX2+Q-WQi5oV~ zSFi94K~eDP**^|+TsAiPkC8~8;d|*@M}hZsC!>(~1qjnA1CiWqlo7&GWh0lK>JpVOsdpW#3yKV9)g_*{`qVW^PmuxWSS zTJM^;7=Np0jJg;Ok~81Q8d84S2v=%M6`60V+)|RfxS>a3DNP>ZNcI!``cr7-^Lzc~ z>ARbLSc{tC39HckrtxQ1n3Zpu+D!WpMX;EDwZkG*mZkc>?927{v6NHG1QOZitG{-J z)WHHj4h;9a0G3PE@Nv4~<9NL=ffC}Q)IMV>VBn0Afq04JQvp%t#V-=n_jFF#KQXha zl~H?5l7MI7I?(CM2J6x?*tT$ov7*kDH`;SbFKX zm!h;4`1}_v?F!Om5x1=rn*&!fBYK#uZFD80D$j|Qz_t0zr?44WM8saRDAmfRZ|Z+K z6D?8h88&(2`v+&CkL*E8H4!MK2$rtng$eE*O^;dU3LN?*G}2i9IoSa+-dFDTy{UUx z*Kg+7ttYLfO$e$yAXU|RM5%|4SeK&2B{GAB^RxF(2fZAz_bD?L3pMsU&kz63SLJ0Z zv$`7TX<32+)b&7vJ>4_=Vjp;w?|Nn=KHz)Q`5w1ri3`hSFX_!cLTWt{tg~;j@?6s3 zv$)tJum1fE(`F3zJ~$GDn5s3xN2>GeH)t%?(tfpOcQT)r#H%6mY~J~ot}RKEMf0Gn zG*RzRPtUP_YR$otbM3pQb9;-nJzQ_Dvn;AN<;f;uTxx%cRtH;CV{S-Aczb1+Gglkr zZd=Cf&j&aX(JS8ywK@qH^QkVrS{h>2)twk68ds86xbI7}Yq)+=+Mp08CIThl=pI*u3C4TX)>`uS|H>P3ubYb z)^JT!Wob?5l2I{E%10{yp?-hp1VqGfB>VlFINf}!@UYY0%%x@kV(0q2)O+9g+rsSz zUtvwnB!t%^HH||uL;CBJ!De^nvvvF8i|TH3xaC5oR&Eo>$#FZ|MXw{%wuOAjN-vu5 z56`2)@jo{5mQ4kvbU1V066%Wp$4-sKTK>c;itGBKc`x10yJ`Y=Iq}HSwUWzZ`z2-H z4{6^Rn|VT0RGq=Td?`0xt%+&%@@gAree(7}e&6*Fr_ZkBn&0rckYi;PPA%Y4n!{eS zyT)h=|nFLj{*mV&EADLcf>7ZRj6O|2y_)JWvB=KJ@>=)M1OnwCM4!uqByW;lM<->3M2%?&L?U!O2DQi5Ve;`%%d@jXQ?un_xCanm! zh%Vm@=fsudHon)qK5I=y^(?*X_2jepvpKEv-+jl> z)+_Rd7V3JzW1aj6OjP`&nQc&rYcvzXU6aGz)9Uyyx)aPX|w)0RDi0U)(9niRn4A}wDZ zh^qU1in3hizxb7SrL#t5$FTj<6|fKsNgAMPkskge<9Dx~ySw2Jj9A^*ZeJ(ytDjoG z|8%{ZRAY85(zLUGo~U0q7hRE%qiZ{1kYu;L0{LDFKlmQ^Vj}juzVKq>>5V1%M+M06 z0%R__DC?I!-p{L5})s;c6!temUIrx z{VW>YBN6_25S)1Tds5tlf5K=y6qpjHR@22<@;_?honH z(v=TxBe#u4Q#0Ea-16_+$NUQfZepy_^KW(3=#yM=pQM(&-IdDK7{gUvati+igp#`- zCI=#Hr(sTRwf%eMD#er~ppgn%|C`T_v&+)I--zpJ3Ml@mH`@2v`Df2Poikf+PH%TU zroc>^3dY%H^dK^pqysNe28Pub1#lSL4_`;;k5`i1x?9q{Gd`* zKSp)C;7by?5JZVG70+bPs`fX7?EGuyR=XXk=PRV65~Hoa_|WA-P<%}QQ*D&sp}AkZ zdDghq{06#HaF)XXW4w|;+J=qplbJQ&u`imH^HO%H1UARF05roOTfeE+MB}7sDTrm~ ze6x0cw-2s>nT`Go)9c8KZM;z(i2pKyc~$IobJKCqecoEnn#z-u%svLtuMW-sL)v?W zMbT~R+AT>XngPkEARs|<1`{YbBN;(Ja;C{qL?sH6v*es}Xb=I(AQ`%8G7_2$4KxjB zqHCSC_St)X-`UrxA71#rc2Qk5Ys@jnbB||cqbkgmgP;zX&7S7UU-jg`xN^MPkR*2c zJn#+YQDQrsW4Li(c1PQVQServ2-47IVcm1hi>PPK^?p+bdZP&j0 zb+>WWNZ`u)PvQ#g{&i=4%OUWksBop?saG;i)F)%xSmFi(8cgv1D(Am$SdDbU$CtJaVwWv|cd0@bcp6U2voxiLK_ z_bH>S$J>?oJ_8x@W^(Qn=2kegppIB%KahHSH#}p}Mp%tS;6pwI&zj&24hU?||GamPNG%pl zJkz@;9f&%_^Q%i@AJAym_HdGthBNt>2H#G?ZIUF%yqaRvqm56zSE_v?c-fh7dAMYP zN)*=BJ*YEgOYLs*I{>Cq;?^kotrBNME9rRWMt@UY-uk3wL;61ZdeviVqti6|VsL-% z!cIm@8mm?52*PsIE~oIx)}L6^G_j8IT1IKAFO}(YA}FCeCuT5nuD~ zd_`@1GPtg>X4OZd9a`jEu=IhvZ$SLj7qf&t(%9_MRSFhtlg+7+s2F_*wT{lVHOD;~ z{n6wU>{^AM%{;;HfF0< zVnre~(V*ydo#a{A{)C>n9)p&DN=Umm)b@L5#@X6qz-ej<>Jz_Y`$bK4NWS#be;I zYOg&z`suO)AKnLT1ijVRPVwU$sXl~F)gr#g(|kV7q{Ic$aoNP&G-9BJKK(QJh)FlY zCS}S3C%<7{;c3DyZ`C}R`konN7c|{!fbT_sv5+W{q5y*ni&)=g3G2GBOFS#Mgo$<&R18>#OtTp{z(c&QL+rbQKZKY zFEPBd7x@myf54oPZE?ARC%Y~FqaDVAyrL9F;I#; z`as(8&rbXJbh2ggbDiuRUpqJs;sg0Jz+Oz(A&^}6Kcn!&#uG0@0bavVivGdjvW-iT z16z%a7Ho*V2Ld6+Ez^KH61pz>!#g?ikMAQy@LvEMD0?NUmEb zyeIgsYA)bJy<}PgYA^K@?O*q~_LCu$+S_EkUDg@b&5&M6G=&(?XFK56YEA=cG%edL z3d((7ueM2XXEP)s_ujATnxfY~%bVcT^;^=k4oxk-ioFqEnpcsAZ8T5l;8@}Ltbs3@36dof*6O#M!yU!7^@*yM*b|`t>bth~(DT7{LS6># zY2kT|x#3JxssyamjlMf$+>-wu{QM8&0MdpV%F>NJK1a-07X#sOg>opsAU08v>_q&} z96O=$=#Wi^lXfGRDCEugfkD*%kDE4_Z?nG&Z@0jf3{2ngxv{m3Fg0}B5^~;36z?^B zGtrBFbv0<}+A96lYMI~S55dOl!3w?^%>6{&OX@z_j+b8tWM|AqN%{3~X1o$JUqYuQ zPxYN_!1W#Ee8x^M??(f7^;f5qCKZE0vY|EWJgl&<%_ zfSDr2kK)3iR`izV5=U`<62<#%_nvgp@6s9Xc1F!C3W;+s?^~{n(FRTnJdhxBTyj|n zW86Fh^)XhOKlh2jecKzRvJrZhS7TN4-2qN~z}~a8UonYyEREObFAG@gH1bpZF7zJd zOZASZF72*o+2gN#UTTW0?I!tZTldP@xyDqT`p*)@W_NxS4Zm~b)j0bhi$Cr3-NyP! zy$-GGAiW4z42`I3*ac#PSkJ6;Yzl*XP?obqHHlJH`SQ5@nb9C7^B)R_pN<}Wvwu1a zfrKz!)a?VHvPHJE&CBEAuC}0{@qt6RuG&|oEXE*R-MtdEuI1NH|LIyTt@?DM@aU*p z=+!R$W*Ky$gF%tYC{HRG&|9z0__M9|E8O=V&k0Hnc5Wq^atIgTupW{> zwurUq5i-}8JRV}7n%~z~ilCurTkgjerTFNdtSV;xA#fdX@10 zGr7?c@qo2mpH}&an_-Ya`Y4_-5i5n|)3heEYg^`P&v5q|cp46}dRM*2Q`{A{*G2h4 zZ7kU<11{>A9-Y1y=auO0;Sv24Kd0U^+C`|unljVMo-s|=4qQ=#`0khR-^O&9kImbG z;S+~*?|^nwg2Zk@XGCy}wdCYUm`JHLFog3hfA1yuv;Dsnq}b`4=z`WJ4PL?Qi8@v* zBw{RPma0MZOX06b8eghf_vn8{0Q^;jxL8G93)XC=<_SJZtL9RhIL`%=Pjx;EA~jzd z$rJWIt@TP-+n#Gn;5Co5maw0H@71_a9GYQt&P^M>zMN<~1~B9z`-Kl^ZS9JU<$=@^ zPzf&~A^>ne?vvy>mjh=3wk4^c+@}C`8?D}V9murvFgQW6U4l@w_u{91s9PuUUHg9W z9|hE9*VX@4j<}HEvk3gR!WzP#RsDmAxCpszfs$NGBp_j$ceC&qxn;09Y8|K{)Dg!s zhTED8s^-#BBa&Qi41x6V?BAu2d)J5!1+QHpkdp8bqnqKDepnF2oGC#Y8wR`Iboy=o z*LCw*w^gzMna;D>gNxeSqN81n(P97fU}rvXGIh3ZVXnGBo6mSE?^sjRZGHFqzaC{4 z!!_LpDL@?`G5=N0lcmG-GF4pK!mVmwvm{F6^pg{^NIx8$QBr|yZOqM@+ikW-6Y+5O zU!MnW6X~DH#8-Kd2Cf8zPumcKGorF12KV|Z)v|3+~~otfC$mU#Wm`5+LAB$f^3pF$kx z6dQTl`@@Rsqb1%|Xky7K*R{Ny4P@NERH;7*A;j=&qL)qyiCMx2u78InGROe_p;V=D zWix!NpgOD5+!6ql&#u=vru`E|P(<|c>1#qHt1_N)K|*Ms6iK*0< zDZg1UUkQtw77KbQt-Irz^dG(#IAhB-WrkWDb>l!o*u1T=W@>g#f=uh1DztNOBPS$; zJ)`bvDJA&ff%gkT)(fB*(iTJ*cp+5&1ycYQbBUN7{GSZE+y2T@k5RuteAK>{H+1?U zTgooHdUHd7=1<-OKKYM>3s_EtzhT%yMzp*9T=Z*0vE8z#wOrgAj5IP>U#@G^~RrP9Fhx8q5$@a z9s>$E3jcF3Ip^35a=lD|NK9@T9CvFr{vUiqu?o+!$a(Z@c+H`nNj|aF{?^DC?F#5U z_ojWFKjbNJy)dTA{DCjgew?DG5SrHHr?E8^cGLhH{cR|B6L#+1w3oc)bf~Fa<&AX*vt_AOAD|2yS^o8{eCL6n^^|WbQv5({ zwJG&LIO!=?q^7$McR)xZB>v?821UDScDdai z;5h|G=exg$GW2!oFCdh&6f96HFBoUb0N9t84nf%s4LaZko#)wl?L`hT4s?;T7Icx#Y}AElu!RG?@R4VGVv0?ZK@8I87)LE~W$h{PH3I`N}{SLIu_UI9U$}twxSj z?{f@t9b`ztd%ZkWR+HS=-B{QN@EU8<>|1Bx<4aBl%*G?^JozREdcNIfj zpWJ6hI@ytw!7v1;A!hnBm*bY`tTW`p@Fj#0^xIytPO+Z;#S{W*$*Zxfo7CJ(Sjs|` z(bPH?(=`8R1u;6pUy@5^5L9?QtaKLqJ?#yp`#jmpKh54L3av}N_+Xk!6Uy3FRYxb$ zdp9c8RWDK@MKo`+!pw3wTi$)Qi}|3P(_48Z)u$PqUy(CH=b$g43dH-I$rT>cq{?Vt z0V~1cn#QF}6u(hpsi_7JTH!iU6#sM}!zczuSDaMvWUuk8GIq5v$tSWzccH-j^5%%H z4_40lwI;~zXmGsOCy8-bpBH0Ir|lT-DqXorpkLeSfdlT}XGwb3TRUtxm~&4MT{yQm zjq&r(l0nTr^zI|FN2BkWbMP7p0t0U6;#d@;AqLPwo$-}I@OKCa5RfzRVmYi*q>XIL?ItWe0N0LQ?-orMr*MVP7rnq?X( z*|wO;R6;diA~p7XKTFMo_cTj zcGo;1O7^nc{D`w?KdVqR*`_F4>18O1o2?}<&w0-RyE&}P`DQKyg3JI6*OY+rdKw{CiWTv=(50zBzq zI(09LYqe!P*uGw?`nyfE5&05R`3fa8ko(bd-Ww0SGhPnEuWBdQG+p8xVEC5gmMiJxOZ)7*ShSA0n$M7{K#!)DykA zs?^w^HRH?;@nx+t8xX{noI9H`5;t0o_Xuw_eu2H?sdD%oiE5~_+K)}c&xc<+sK>_z zf@*H1EZPl<^ZItFy}0!x>&orU8GW2qN&Lh+bqf5==SMdS3od?ZK7rq?GJQ&hie2$0 zcpp!V~pGc4A*Unu9@x#hT*!ydtOkeag7 z`0l3!!N(b0&U6d7Pz#&x^~;+{iQI7bzE1w8cFJzTa4$*m`{nR9pPqgDW!iqab6rgK zWv3NgpSY#&q>~M|-c9D#)XotmySpytZl*r*3w^KkyWViesI&US`Jx|Lh)ab?C=wyI zGWO2Dr>)9j8YAIuyRp(8-0~ROZ0`=6sC7$=w_f3LQ9{1wGzb0%%XemkFnrvwVTCB$ zyXEq#$?|us2E77EH76Y84SZB$kk^_e;@96U+r_88soxl2@uHDG-Xw20EehFs+3b83 zNUkokSH)~-V|5c3?yQ|vw=B5(BRSI?0wjfp z^3OyDP{#~lx9=b{% zh9~FuBP>fa`kjKxm_Kn#H-hj)>QK(>kwnU)J7fO%Nn3n3b?>gi6_bICtD2_a!wP6Q zH2;A4p^fUJDuafN(=^lkR{xZ}kqv~mi_X-QDAFI*bv5zL9N(Vn)iJJQuui)5zRq6u zc&B(6f9>6&S>u~GO7!C-DW+cG#5~QB3KJf0#(bmO<(|zkQ|6dYvg(j?bykuEYDqmo zzLM@j(m|UmG?(IA_pFf27{_wvPqDFYg4utI7@co^_0YnBD1F0i+H}#?E7pO^4L{&F zsnu-Cc!MFKC_1(CA@um7+j8dH0MouoZh;fcuwoz07;dnryTT8Tt!ke1#+?~Pkei@D zcw5zHV%au_*ERK%tlpn9VCp|d!-p^64psiolI=DesW%8Kfsq6TMO{eG+G>!YH@&{^sV@C9;A|X{gx&;5yb&RSPVLOJZ*Zl=@Zr8=r_X zy~P1}WSa`P z@eSES%ey|idY7Hd5*s#RtQ5BfXl%XDP-bYGVEo>JOYPP1<}aK2oXYkd|5`RrPNqGt z0LTbIO_6n05`Jo2%@3&Qv&0xq+u;wDJ10niJ%{Z^GjIM+tFl%(a`#d8m%r>%7X=yvw;&gmo*-iwI_yP>~~-z|H7COUKY zsz|L{Fqx^2Rhs9FKeJJB%_*+qQ4R@P#WM^(htK$e1tyc{tkP{eR(^8}1loJ6z72jU z6*B#D0F9*=h9pBw#IT9wXKhR+fxpDPy#h3@G}JSF2maN zR<>$e@N%p!=s-XItI_1cv~MZ2jeUai&!bM0yoHzS_X`68ZeXN=0TPo@;-Z+i%=?K&Dn4y*m0O^+}l z3zs#LOVm2dHawA=&TX|*(}~yd_>k>>z5}f#{km@<%&6yYJJ42B+$a|b-=y2A0kzD^ zSgv(_ojI4%&+vetnR-B~UW&y;gQT zb`q(G;8biX6}k5{sT@|za9)%I<wuO1JOM$g>(2+68t(e4b$AvX}K{s4hW#xqoYJ z8S7i-0VL_*dka(VG$M(TEiCum1G(vhdplFZ3m^PMPTv+U5l@eEh`bxnK*>?@W>*2h z>BGn2%T95nHr&4xM>6_5@8ogv6|T$n$^uLuA(MKWN8DDtJlli|``Mj{sEvvnV>Yuv>6-LD*2Wp>Aa; zIpr(;N~P@LOsiX#c)URT>c9#C`=h+xUfvh*=XM$&N60L4IAGsaGGy?*%(CmyBcx}| z$E|CP@S7($nd|#{3vX26Z`)#%*D*p{+Eg1P#Yahsruc>e6rwdh)a;5^sk+h3u1RNT zfnBpdYSu#|djJUkq;ZIVZf)aj%38RKEtwdEF$!bBpScCf{2h z{qHC?9RD9up=%pIG8KE$PM{VAK-G718mYafp{RV1!1p@}E~FnWI=?AZV&J1|mP%8D z${FLW)9O-rYNsDK-J)bmc#bC*(Zg|-6suLCrunovJwoZZlF7K1pY3uG5Tpw($&Y=S zetQtt#Aa5H?QPa^b>CKOHO$scnK?F_UFY^SMno2-_kN#t#@o%ZugAGk0iI^N z-pKL?ih~&Dec2V{iO5d!Pm4SC(e|>-_yMZT9$AaM0pqFZUOogm%u(wZ=i-y<6+JnX z7QaC$;qE!(T}ZU~Sc2DGil2qNYlRIgty0`AlC%vm%wy4!9Nm03pbL+K^cua!(`Za! zk#-ujNZSwIa^QZZC4h=G1R~gea_FJ%PEH)zU6j13eu5}T`)OGmQOuK;J$-5Tc#A4U z-;yr)aR$dx@~Qn{CD>4g5TBn!pKr0#Jveu9x&}!ikFLz+H%zL26(%UiMFM$tEnL>x zI%oP2+O(coT)+0-x&&|7Dt>CMgjh$p_Z9Qa{(S|}c#Bq^zE_!rHx*YI6u@7yVJ#5* z2sa0!3LDk=g=yzhl9>K_4i&W{=UV*B#cZ)c%Bg}+B*4Tn$=ayD;8Ps^@Zi0fPC61y z_DZi#8^E}1EP9duiz5wJ$yBzQ8GXCa6siVA@33_CYn1eeHbQ z+uT7XQwIS~>%HF>1uE+l*ZHe=?z*WL2mS%{`L;)9*JXbJ2?= zngUz3;o$$c@os~VT2p%%k(8mr4f)z}JRF%zdU{xsIs&hYR;8IpsFo{$@26?>>!#du zy7r?$A@PP(pNk~4+KpMPgeHENNvPl(ZLR8N<|E~~C~o;L>l=CB7&Mepa-8)?$4;YX zvdt%(^i6U*ld-td*4Mm`h6$t^?S4jD@+hc8TZ%`*>C1UKqKDwf_#fOQ)oad|7fm|@ zp7M8XIX%A7im@*HE>bz?|2N8XpMZbm*k`B@}f?i4Pv;Tc;^dtb(8=>z8&Q{ z+t2SI{c*!u91^|mo8k%=CD@`ueJ*yY_P<1N%(1L+N)Tf)#f?~3C-R2FZt$UM0eS@a zJ5^X$GF}OL@&Pry)fjM3RB!3wpw2etPAlDtag&LH)VM+{&7N`7 z-Tq!a2;T7$XXok{X*gnK!29ra;M3}=Z@oGzNC*3XJIi&>^L`>L7Dh5xquu)ST}R;# zj|(chFUmUER5OWHQhoQLHMmBdS4`jg_o0}~>X~1g6`6Ce3Vta}6XkKO+t4oll(%J; za#;;6Hk*PSeRRH25})0>%6s~`J62D{FwQY00o7GVQg3_gb@=18(oy~IV~XBJ)0%`b zY=3WGF-LNFZ`E7%>$knK^ZKc5l^~{X@8_hmTX(>>_W98|sq6-P5)u-BxH1u4>XJ(r`;GFjh9T96CK=qZYwa7Qy27FFhOtSb3&aBH8$G|IK1D3MNs>~wGDR=ZF z3QgiJ(SwG-1=ND2{>^c|akaJT8POuDi4}ZN#2^yxh=6lWiF~K`y?tW$DH(rC#kjXXQHI)bqAdg_5(& z7T7pu=YseItn5DY-EQVE5#N=`GqqB%80e)i=;lV&6z5*4hJJ%TlJfCvS1aZSdV7W0 zODle>a*wijmx*f_Oz+L}1nVfSPdp#`1)(0Tn6v=|(as$X!}y#q=Jf{gAAg?*%V>(n$>$GxbiFONJFH>;fvzYu1FP z$siRvwXAl?Noq~4a*OC1q-I zQ;4-%{#(?9OT?3hpj$aVoQVxF#tU{%yNS-t;?F!OY_XJ+PuH%B+ijV1v9{olrk?oX zYQWR=WNR8MtE2WdUwkZ#XrO?*UDYOVIoo>>Ap*r~G<(k0xHLTsyoNkMYj`?i4mpJ2 zdbljm!_BL)xO9T)!-_RUx4ZG~T;}DP)gzS8s6zxrp*)!*>k;-L%V zVi@wfgd&oA*Z(WQs~?^9-XulzI+QTpB>MQt)BqC_J$bx|+I#lvNiWoq{s^Nyva+ce zNE+!;N9I-+gTX|#Rhl&LMO0BEj;E5Lmq@Bl!7IVBHzovI)uJMmtwcN8w0*1Wo0k2tq(vkX> zPTFWHrgHph+tMfIlp`rmb<2dq;?L{A ztmfoky{S4~r`{AtlUU+K1IikhsD9(u=%as!oM zFPjdXh}Th|b>RWB5tv1++bHDiTYj(6|1FRs<=ifEYbWJcuBCd6k_$eQv)NK==K#Ox z(#{MuEJe$EDZ-F{L?Dq^E1X`E?uJ`;8*VA4UXyOIqwHZByQOm0PSqF!xwZA*motYfD<7V+76#s1}|1GDm9tncPtwy*V>roOVh&J}1 zrC*Zs%%(BrtYkQ-$ZhHMPY-60g}4A@ePQQq)hs;|apD~U{y)Y-jU{?do+Z%RdcO8A zKAsuJ^O1EM_$a*l2v>wt>y2R>B}eBehLNT&_KRNed%sIxCsh^Y$0p5WOT4UgE6idg zfb)!Tw_jZKq)wH7w(J$$3r*$XPy&tkZ1BYO@aU}Lir~B}fVX>@Z@yXGI@`j;MZBJ8 zt^sY~I=*a=WUCb}oeT8d3uWH+;wgY&7P>TP1X;$pe+qDF4S%_v~PR=)C2=LX+h!hg0ptF^Q16(GR&QFB#G=l~xv=`tUo&T8ZtHV3t! zbRh1Y-F$dFK6$9LAqBWWjS`Hz=%Z_efkgm$IJXL0^thg|9u-i{On50 zYsb^th5@_ZgADS?!hAdb-g*CCM{FFXr}x*J;a{#rV9y=a87vk7A75O->^fX7^v&R#jD@z}4uJi)QSr?26M$ntO*0s+)q%e|=9b{wY;IBPR@W>ZF1Go(2`fYM>_-hUQ(f`rZjq!Y-R5n)woz#AJCuI!&T<>3=`l zxj)Dz_>D;p!!f8a$eSl=C-OSki2i!3v6V_wG`BLvh5OLO;XC(->HqtefBczigy(NB zLk+Ke?d`9vy zNpD#2*6OJBu{&P=$b(qj`Kn9CJzwrg0||0{yaYYY5mZ$xiuljN1yJZCn{iihsdStq zqJ926vVYztu+qi5?Jqr;TYSyaF5}LCWz-$cm};w`jNmP0+mv50wJRO(qyr5@)B#oE zJ7k;-C>6v|hIA7@IKk|Q+XdsY;I@)%Mt4b#?B52hAFwci7{0v7m4>LVcyEshBPw5L zdk%2uHF~E^(KhK8xL6O7kh_Y#rN0(36eh{l0k#4AcY6{5sG&0I#CZQjT5(@2$PFKM zxP`Y|6V1ic#C5jUyC32wP}RZBebmYjm*u7Z^`-v&M0^jY)%Z2y(|ITVv%^{JKX4`0 z4FIKrCL24envZ{QlYjdZF(*zd#kYW|+L;c&+n`lydey(qAsDao`4_`~`&Zyc-?n1FVVk|0)^0M8kloNurI%U$yojvz<_ga48C#*C1j~*UeMkri-R_TR8l3=>W zR+Hw1e%UXyLOnVzr5%?qNF7$Equ#Dh621)W1QoFr)-RV` zbnV(y*!kIYHp%~9)#%~{>&9mpbFt%9;8O2Cm7yijQ$#fj;t9&72bV4K5!pt3Q32w4 z=_d1EeOrc@nD}>sWwA1Vp!jXzxtD?8Kq>~lvR_r=B~K={AMt&z)TZe`1L2K9T}ZY) zW7Hxpy@^2m_~-GE7Fv1~llCuo(TikD*4Q7T@NSC z_^hXRx8j}JZ);}qUF-#Uq3KVLgMpP)I3ADy+TjVs_Ihuhd?zm+^vAayMPd=Ws42b| z17gs61qm#T`+&zxhCuU9sLMs6@*js1;6c=l<};%b_7iT-R5)ehZ0j)dyAMRlL5Giu z0jSc+zhq~(;9lo8TfjH%a+M#`pvN-z|KqP%~7yPSXMzvvvv*KA(+;6_R`j9W)N-U%pt!}iL9dds*9skk$ht2N@}e4 z?#)$M1MYMq^uJ+>6yT0zd^ET&Six<#b<}X+LyKYF(xRk>vtM-F1uXex5%G>Q`Dd}C zqdl;yernd?}5Dx9)`>&-eobm?8EzDh8$`?PO(x z&(>jQvUGr)X$0uSFJ^HDZ1_2Y*kRl>DuXT>1ctmE>63|0(AEs!Y>8Vk@EyLjCw%K8 z5mZW2PX3Yc#r=}>Gm>AfZ5+SVkh--)M~WzP8Kqv(RAJ zj2R4zP>Z8fY5Ye%=l7>)hv)I1sd7~BDDIl5Pm~bUja}{M2Z2FaJFd%8W?F8$CS4`r z&BV-0tKkQCIU)!?$5_&}^2_&65gT$Xqbph^ctK_Ug2njLW1dZEUSYegZd)=8*8r-% zJs_@)PPP!=s2UxY$l;~!VHtzUAne|@8m<3IZ)Y4kzvJpMJo@{+74UG>`hrXq?peUPrU;%3jwFh-isP=SK{ z3clN!J}Vjx@U~&{clB2V^HfEC)?cFd7DzQ}?ei%8;mEu3ZU3jUh&4zDkG$Utqm%P~f% z%X|X2bIN}`oLgcuLf0fdko*V?IOCJUhE4}=&b33%zzUgEEzfMAQtWKXM}&t*)SQ0AXbnA+5Gf}FGyWjfdZ>cubDNgs{RD< z8f6d17S(+pzq$Fn`QAgm(pxO_V1>1G@L$>{gk`>t(tOZMM6h_o4i+%k+C-T@KR2rT zM~(UwU^DgQMBtQNWnLN?%bT05CB7g^e=x0Yz$Vp&Qm?+m!x15>TNA9l=cfD6TKBs1 zewB#MY8V4@DAzy)#U3f={n(4D!)m30a+%f|(RKa0VQ#PR(izEbW!Yw(KVXGqAYiNK zXiv_5_$SKcm7p+PT7c#SE4fcP#(|^F=DBZX;}Uv{W_S`s)!$mZc$t&>gMFiMS}&V4 zb??yStZ3=x0-5XiQ`U*2g;(Z;UWz^^d!$jpKHrP%{it4leq_hC1zPz^lg|lXH`iq& zW*p#+DNsuH8gA$b+goMaTxv0~UqKQ{#JFJFOWBpwttP>5k)uDk11?FHdaC;e6yR!R zo#~4$SAo|N?=$ZT+`Bk0ajxq28!5d*`}73iXs&G0?+Np()rBt*uVUbl%O=7F?q7Esj4$SUFt5**I!Xc2HTApwBa^d@8WO+R z*Q{!*tJ{-PfI(Ij;V793-#CFY?hLXSsv5@1uOG)ZJ2Ms7m=mvG^UcKEsCpx{3l}pA zWz^=fx^3U+M)JD(LozaC>6VtV?vIG6#d?)im>}cqd{`l}pf^~`;gtVqVH?Tql~fnB*SV!1 z_oeYCNLY$hO5}Yjn_6*MV=#_hO$%&+Z4m+f~2Z ze;UGV;$@0&)qqF%`mk<>hf~5+^=IJIGxP{DyKGuw29wiR*RauaER)<{c=gdfBip&i zy3dFBHj--M3S_4j70hF|Va`YVtU9&{Jf1_KE||{VU+AgCoH6QWN?kZarH}wYv%oT^*baZ*uJHG0z=}gQCLM?4Ba`0@|vP zWg)|ApQ2*h)vmiUu=Xr>Z6~k(00R;DT4bo6d0PhpBQGpG8sQw#msFbX+*a6s%O#6+ zMX_QprK*m!Uuesm^%}p+gP?Ve>>F=j2Jv;upF~UV%`^EY*XZkXw8*SACbWMQE>T!O zo((_B8Mz7h>#@c*P9ud?+EZ$lfP7HwgPjH|=tK3i9Zv&-_sgK->E!wm`aa8Bw+r;L zCA1P|6w~ETb&$I=c}|n$(zm)q%5Kd$URojYG0QDLf({I{sL$c@q(p zHM!svH@B-GYcPdeLf<1eo>9t(8#U{wf*$}fFbf#g~(uNOnPxip^ zBM064iz(E7_FvSSx0{^H&~N|Dup^Z(Jj-(&tmYM7SeuRW_RRP) ztP6guNM6LI@E4QT7JS8ukxhI64(*ejzNbXtB2>S8!ut+`5K@aq#%Z27n}SB1*NCUw z`pf!pjMe)WSYK?aF6*w~5ZX;#&?*Em!9rXhSSl?60xr$+Y?rJai%}#;?1#ZbimtA8 z@{$|4!!HU+Tu#_Enzg3fo2?oG?-FP}hvwd!S<%>0&CzzGW?x_37zy#6vrK5X**cTN zpk+4EDHkDFQTaCW9;FM)N?t-KR%No9bLNZki$S>xa>9OfnsGNppYd-`lWZvi5qPJyndNF0=6g+Zxu_O#fkIEd?{#`C)~a4wRr*5#|D% ziy}@iN*kWU#ejit&}~87g_$JdUv%~hu<)Z+s{9%nXyu-#P&bn;V zckr=q3|&0=j#+U@7j_ojY3(<3AKh$H^UH;u2d$pWROX}qQ`}^}@zwHUMxSI^ z8C{Af=SQ6q(nCs9$w45PErc@=%7OFVm~#cvN! z<)*sLud|=d?f;-H6=H z)8?*HbxAH^`^57QB_7|;JEtL(gzVa&df2Cv&KYi5Rl=vxV6bqTEm4-UYT<4@ zCF@du%h^>0k4Pqr#brJyv!WHj*(+xP{gGIA<&Tsd5|h936wDgUpR~P{W>mwx-VP6N zcQ?&tLk2R%tGkPd^;cHr$Ore3)e-a=Gd@ZX?*GA_Om6Po!5!+9nF3#n@`&=?K=Sa+ zz+tPj=V-on-X~D7Ok?(;`5Ab`|;W^t^Zcm47@v+pClhJrF!kI_^7(7=AXt%E>$)I%_Rtmc+w7M!wgis2dmE zO!Ebb;F~k`dBGOl@H9&?{3`te&DmKLNNlBWZ;n)v8}a2A#Q9n?)_yIj;KO_`dOpEr zIL-WP&N}F_y5xQhF85O1Z&Jy}y)VMglC^%J!+V=wEQ2Qb1MEU|-epC<$Gsmu0G#D0 zdXs1>XJdK`g*K%X5x|V+b^54qZuDPykh7r~yRHi&iDcHjYoh)g;dHiCAO~0TvPpQi zt)n!i040k7j;w>}OT8AiS5NJ1+;asOZ0W0{oO$5YZ(Z56C@0}D!dk~nRXetB@e5*Y z!^wH9%8Z_0X~wuu^Mke2LuDfio9iC_?o%1LPp;N|sqf>R2}hhs^`{>^6MZ0U#s8%- z$t=#QkA#Ese3c5-O+sZAhfDuXbphc{%4rxfd(oto`jEkB*&`gy`y%ar7IIsCd(akoTZuh00_lp5(zew_8 zr>Pcu`%%AS+b=awBGz#j&IR1IZ`yYGIu}bi%%hubRVVnkaMg|wK55-s?|arCT-j*t z-!khGHo$NHMk60*4DqAgFspk<=xCv@OpFjBIU3C8RzoE)dZmJszlY^Iql@r^NcoL0DFKow=dgTuRT-F87*u#8`^b9vM?M|0mqw_RAR`en`BGZzY3espIXl zU0y2KAWr+{x#jVzjjREMhTlte44d}0IQBt0sv8e21`(5|!I zEUfrfZn{7jjoJa4mtB3ZQkE6`r-3OOvPmse%lXINToVOO)00XD-`k%FHBX<3E>4Nt zC&1~34b_`f$9HhX5$P1&fjS_$VWHaOkr>Oy@p=5lPzr^S9 zS0A+hM)sKeeWomG>7VsH0h1j&&sr~ye!O(6Q*AS>lZP!dVU&x~>OL;<;v0_At^*H^ z+^-EI_rrwn9t2=zzH7~S!*-sXfg1~ayJoNRf-=msu0z)YUS8ge#!Fn)_gQITvhG^b zdjHJ4?;VlL>pj7onD_OI$`>Z-n|9DrhHZZpe8OgSG}jK9xGC^Rusw)Zxn2sEY16i6 z-Te^Oz`Y!~8pLw-Kni;ky2-}lfgR@*#T*g6R71$%JI2{~=XsWIq{9YMqm#1$V)6Z4 zRz_o!HFN#c>!sQZ%_f)4gHKMm0|kPJ?@d*pt6{;&!l8QZu5gnv^$WTm+u^Fbtm7oU zr^eFH>hzA&IfQ9_B?nA(!b$Q1K7V{_NV#^~vigq}sxp@o}o# zSxZA{y;6U317$zL2kM%RJb5E_9TeS_5dQ!Z=3{!Z@MTWd8Uj*o?Y3nLu~sh?DZyc? zI;a*Q1qHFOMCRJX)CodM4t*3*Ofm;(nR=G`h{HW_?@?qBPuZ%(^0fDH~ z>1;F2-rh!bPngRTS>};U2t*+ivl&I}_QU%8J2|{lW-ds`L%Wz0_5Eur4sIQXiy;0f zks4thW0K7_(Q6#VBX{PM8!(n+l2+#AQ;2=zKm#Q6MHT)`!6Zr0{Tc>1>rtIIolH{r z^$0i1jl%3fL-`r&$Xyw{^d4+VfKA3*&AV)`2E0SJO+mRWLkafnfMm_78dfiZ4W<2s z52sB3?%RP3>Gmq)_x&=9EbB#}S&Baka>d-|Fziw`Z@2}Fy*9Uux@nTjNgMFqV}_~5 zz_|Q}R!vdzFcV#ps)8&$j+N zqAtC5I)f~fF0-$K`bJ}Za9Fz9?Bi1zaWQtwy1gvcD9?i_FKE zO0>6)n`TPhOxa%)f&U@-|FF)XnXxW#SOQM_2dgzV6p0-05u4rc`f?3^%eyw?*-5b@ ziF4}}PeF&9z8C=FKVa)InK4EH#QB; zQWNILEH9>0xx3ri@{_P;J|lVDcVG-o!2Xt%Q0Q*MjZu$ZN2!hj8bx~R8m}nw>}Y(` z-Tt@V%HnA#beio|W*cnj8wSccj?~9cechFQRQ{c)gg}4LC_n3gkB>&kNa`b1J%I!0 zFD@T5OT^8>xx?Ep0{J3uf3*yVl`Uk!LMKJZj;^B%T9}_wnD zSse+>ra7#+zZLi(u)p)=t0dPRd*!d#&`0-kH-l38a?5=zqo#RY{6x>NAoD7h^h6Lk z%rcWMF9~V_s=GpVt*AzGClRj1r{bA5F#J4wTdxQaIXp;9+?;`vuCDLcX-Wld-IKKxWGU8?9Zq#_#PSxzipeNkbQxqM> zgyRPArW(@bfk)_ju^vy0^gHND>ao}Hq5_|Da~xJ-^L6`5jE&{bo?`pQ{pS~?`N{k{ z@Orn4W@mK3y5ZM{KRGQ4V@S=Tm;kz^_Yp!*zl>iZ;Jr^b&E8JOIQCgQjEYwyv#!pG z2(b3`;ewOO4r^P!?u?U7ESSyO+x4c5Vor$^L$|3N!*ko}rQ^h?Q@5M4S%hnNK0L1s zf2L%6#PG<1cquGOqk6WBCgjJs{N$=C@4o+JvunkR&V$j!w<>neQI#lM^3Rn@pm@^=YaVlxk~4 zSEyAFwllwos4s%ra?`_?Tpi@dRnR`$XzE^*uA;|V5_qzRAN$4SC#s;>U~|)nigD#I z*lX<3>DbGilUDzl;w>UftTwMHf!Okr-Bb;*`%cOObpuG&wxNqqleWSg|=-0#BO^*%b; z!Gg@ZwvGItDNruenXRGBw(M2^K*4N6sr~>rcf%s@Ya@>9%C14Ld7(dAUGQEl7an|+ z+#-@-PVucn8YDE#M7g8xrJss*og~>p>!Xb4)PEl|;rl|n*~KO|%7;{~xW?foTaI0~ z?OqLVhaa6P>feIfr9+dtc^Thd@4xItnr+_HFjsQ~*6az9pG~WY0$@_wJ?xwqk>pDD zdCnm}-QA@{`8cf?0)F*AUmC-sZ`gCFZ1KmaOhYnfF%HXYcI3>D^g#N5$f6d5v#-lg zgu;SQu}QUA05om$=i*TW0fB8j5q0aTA-^bddF@GgkDDaL%R2Qw}?K?0BuE_3!7%QIwAVC5Opha54w^Q!bfR z&$bE-T!LabCGudnbqVr`$NHYC6pYEMWW-=f}O z910uorXhp=(Hd~c{F#gJWF!moG}#%i-mx9MvePVyIP8=a{~GDD@c^8@iN8SxXKI7$ z`Nx!q0N50W4}Xit@UmoQf2!`wkSSV<1!r1+l`xvW_!+-%SOX)4GKF{S!+?8@GH2bt zpkXxky14^U|p0dWdP{2fAKgH*gve;{=|Ju*v&{vv&cpNrO zyN+#nQT+)Q@VG|8yCt{u-KJs$n0b={*@kna3TeBW3Vu@ss?hJ(yFacdTqlhjjQo(%^(tCo2h%)<*|K6{~jzdIS$(C=_J;mt>Wq`Hr zFoms_p<6lO`c%=i$#l5=>))w&_koMU^!06no;LLn$jV;oO+koe)6sVJ&x%{Zbck+4 z-%KCz3(e8!k>~#|a^ZJM`ufZ^hxZS0B`W4r;6KNj+SBWP-X-!ro5B>2P=H^zm4!RsX>H*T1>|4-r+f{0z`Q5 z?AJv1ht&?Y8+PI4k$Cw;f8S~zqkO#NIctx!OAzhwLbFIG3ygCn(>&wNCB(Qyyi!hP zQk$SBZEwCwS9}%Q5OvMxn?SpE57TQDbd~cLb8zA5H8h>lSWc_^j9<`CBfb&*Y~0u= zGbd}rqv+)mv{G_;|4$F`m9BUz#Uxlg~z* z(DnndsOWcd)xQ3SE?@~LkpI1;lXl;@%rAeLPm38iMLapr`MkMBW_C#}nDr|G|MkhQ zl?n6vZFRq0i>MmR`Sk<={FY$NM}@@RGvW z3XD+7NB*M~R&~CJNf~zPh_z1G0F2tffvQ55}v3fARH-XrM*7Vyct>5J={!IT|!;aYHu8X4}Yh{ zdA?HcQ!@tIQToGXqT$ie95`I@be2eBzz`62SZ;@};jrjYk(ndK%Bm_WU~(qxzGXC? z2xe;!wg381fJ~!}l`Q=o9Dr`b7$C0^7Apf60RfEw5jW;+-_6N2O(KISJrl#?7p^)^ z>ux=Vw~D{BJt$2cHzkZ0seCZ=XR(m0GXt!h_B$U$t{4JPAYyDRSB|q$9g16q+9ufx z7N+6$a;jipjRaG4=4^Z!fpsbIN}=QY*G+tRGlt(1M2u(X)W=uFK&qE##S8rm+#4z_ zi-2e(pu2EZm&edmwXZ@33(2v0QUrOzbN!q$`9ARhiRs#dtGBomcj97rURbNwW}jbG za{n0kyJRKsSgeJx6_@raY`I}jQy-VmI28JZTiX+j05wCPiYm)O(k%NnE{mO|8DJ+& zCTe#(>K3BpoX-(%4*ym$EJ1wN!q(2cg9%N%ghddUr4w4}rsrl9O9=kfg49?YghgP0 ziPaUp+@T8o;*nYDhzB~eKyi1?>dIvTV97vfN+O7Cs5++0;o6DVT5nJnIKKrINQ8WF9}`aVa9*Jko$%nmywWNTK9*(ZJw2DuEM z?3%gAT=7+hhb@C3FINTlj7jmR5pNV$VH9}^2Z8Jw#S;0)en%AwEy#y4ZD$)YQ_Gjq z?{PM41&qdS0y~63fON9K0%c~-|3Sd{R*w=^_?v-~M|79kuKxeT;Iu;o{&^6v@&nqZ zQgF~;#xUAW5TipUn3r9vyX_8;?gCOKT6)_kbIMf9VihMh(d*obV3q2wr#(KGXzn61 zRgcdI%rHeBD5u=M2UJmHwt*fLjD2;=52fuZv8)S3{?@u*TJo0z4`+rddfJ zTokO7m!1LplZC&uTN2pue&-Qw3rpO|5!miX6aeG!0WZG1davZ-hMmXD`#jEDMxCxn zeCyv(jhGr=EHVxVAL)jcCC)etVC03nEP5tvf6j~EL+At z2-{%DbJ+a^nr2(;q!p7iy1BC7*k!aG?nY1Fd`&GFO3MwuV;Et!=#azLNbG&q+n+!D z@e-c8e|(}UYi}?TJLt<46>gZ(R0qUpLjlbPt;v2zWOX0R$M$6riA4MzBmVqG@`}iV26SAJ&o?$^!o!+ z9Ti@fC#OFRPgItZr7jD?F4j4ro+~8R=+!rHP+E>UTHI!`LZuKjkT=`sNA3UVJzUuv zI<^NIjpiPfUWI_YVI9orU=QBIHz2hAo&ns;*aCA#>-qsdPlSTd_ETSa5E4NZSs=1Z z$$<*wsWmLY|IUc;?6QzJOkPiq{E18UMIA(_#-gZUcXi&rWyfR z*4IIWSqru*jAJhl*o@-8SVpfC@augby4iYX{`J2oJ=7-8Y=U*~+sn`yKLjQcANaD~ z`w!*sMan$k(+~h{<6g^o`7Qcckn@1K-y6qjTI%b8*eb}yBYJ&sgh$jpic zsi!$TJL$hKRP?cbz%F2#NOD~Ne!HU}-l%OTH`bnP0In3UQZEt~TyHOPG5wig(UjUgBS z$G{a($XPr)UfXF_PZ7qb|^5c?DFypRs_Qz7b!W$NB-FkBJvE zT_L?VQBQM-2(l>pmDo#?9Mn4##C`O0>Q!S?uO9PCP&~#;H*D`dm%4e1qg0DmCHL;g zdF#ScZjmv&cX+%mQ4B%)=0i_9urd`#%TQnC>d75TJ62^O5JCtoc*o0yXB5A;NpB^| zkBq2fU$fj$6}{`0gzD{XL!ou&Tyj>eoDElPUJ!?l06Qyz>&ZO4w8-C#iX=%m@!E3Q zk*^FnX(Y)+vd}$Gfr>&Im#jUz#3omfcbb4aifrsBc@~UB#I028O0m36X2DpP1~gPo z?gH>k<2;II>(CScaYIk+mw~}P z^tpcvopMQ%8CU>Pn>EzaZ-5M@298AmIhP9pNg&N%lb1mG?$G^FA?u|1ZKhRjv#*?l>IfJDNH{n_tP*Ea-ERhxxD(0UQ~^<@u9xEv7U%)L!lEq zFO{pb$iUpzEcxvc;S8b6s3Z1R5B;<7ckFWBmj$w<5-8OBNQT06bSG?E@$rr(yzNa~ zEYeb&8AJGswt~y(*s-r%L-4txW+evc$xWO97^43tGL!5x?_TqGK-x%jUW_c*_ zM#Ribdv6woSurQH7KprsDgKF&1?iqAWPW<4t>8&HsUA+^_(;!scrtmtQb(a$``6t~ zbU9sN;u6C4u)<0901G&vKuzCyWr93yZaHIQ^R)`Ym|mL7*EvUQwkXvj>55j8145$8 zcWwPL3R9%jSr#zWTi5-JcK}1d`PdL=rbBTY8o8S7cBTWv>c1$F*u@;Hu*Of!9%|+9JJ&uY`>^12yo)b$Q4F(@c}H%?c*H z-V!NcmE+C6d_VC%c=+aE$4RRFNb%LJ@=3Y_o?g^U>O=ih>-Cb$PiH>kj~Ih4&J6W> z6FV|l-#hL|BO`5_)@yBG!WL`$I=*Ssx>ehi0y1)&k1Fj2;kAWk3eQRF{l&>qI_ETe zYF(SRW3W;I1&0p15TPbhESbBKn_+S#$RP=%`|HhrlkpWV_x>XXCBHxN#F_x(#<*Kl!$Ke7#URtbc(6QZ-+L9x5Or7`Wqa5#1M~T9y?QxXTI~G8pE89}8+D*l| zbzZV|(yU3TlCM{rey~|zFCvn@>z-5|7I6H8K?nVCu5fs9oflA>2kHtptjv$ zlhaYGS2u>&NsMQ=)YwdOwxftKUN1*A#|~3gD5Q>LO4-g)h&)T_ITZsVm&aHrr1#*% zj3Dgvz|Fh5%r~Sb@5?4dImEO&bTZWc#IlOYKf#iGOdMZ1QD4Qa-gm_1bHzTZlaB(5 z-bPusMdZ2Ues|;5r0x0yhmCe#6gp{_HdgT7XW8o=aW|;i<3l|TvJTe4lHqkHK?OMV z={@Iw;wdwV)+Yd z2(P~j!2f8!1UL%z0j4E9lZig78JbS`of4nR*<&3CcO^?`gY+CBGM8NwV>dY#Z*>=6 zbW7waY)e*tMVxp0qvd$LLSD40&w&-%3^^o~{;}V@gkO;4-l>y)>}sQdva6k)%(dai z=nH0#Svy4eye!~%p>;*5i|RqW$Ru=c5P&j70!dde%Iis+K@ z4W`}Ejh-vxfM1m&Pg-cS>CNakl2Acl8CyhOsCWi{)RgmdUHg7B&rOuuLm#^M92cB> zc@u~Or$5Y|uz2aF&a9V*WWw2Nt8yOVb6rBEs7%`bzESi_TLRFE>fUmC5PfNEv9Ow}bbzZ?#0)FbMf(fA9aQ}1%V5)*Gn*u|~Sg$Q_dfDde zt5hP{Z*A+G38b1*%-_@uxN2_tU^jP&l*e(qZS*5-fM2|HD8Qe$eN^eWxZs`w_0@wS zcZ+{mXYn)M6jdb`{XMjE z8>}IcuIQ@QpIZ`oySr_<+-*PR&Cafh+{3J=`EpBGCf;{tAS9Z5H=5va<@mUMW@vI< z+c-^2Txi4}(1Ns{2mzhK>=ydPr?(AU#l!?ky$(d-3~UhWk3ZV0cc|yH&irl$>G=1R zA6m>HX0#k>&*03Adhyt=n&sk*LEHI07dy@WW(f%gGVdJ@`h%5)v228i*2mMu=FszO z1sVFkl-7&E5CpJlYfF$1w}ga-Z{;`kUosI)-@ncXn@NsZXo=>F+Q zr)6KR-~|ym52}5$xJ$wEPA^i^50u`kIMt)G{Ro+L}#9d9)aD_P&|U`BKsc z{vUhBMMoG8EHLaRb_2f=9myx7O?TGQNDnS8)b%WI6Tt5SCf);#A_%B++6;fJAD{l5DiMGt;nmB&;RYM`X&i8A|Sl~o_!ZoVAakyTYS1i{u%yQpgE zyR=q42=-XF$>J7x{(DQY`-{$g*9@n$UwQ0nOlc9z`=k$Ap3(+mi#mMeyv%+l(IdumU5NhuXSDZ=SzIjMcK&e z6?LhlP7{SI2y*V}MDy`U$8!-%J>ozY;D82yEo(@-N`aubTEtcX4{V^j9jA)BG)kY$f+{rsIbh|zDo6fegWW@<4Ejg4_kwwLhxukjB zV5`}&$r4T<qn2Z~SMb$qe-JztVui$gO`n&$@Ef-mw0{c>Yh=Jpc$jTl%Xw?; z>FJwUs^k95v%Hz66WtVN9M~bL<$xHK1I)R&jjY?8zjEhFTdZn zWzoAzB!m`L8;%A7r(doSR%XmMxn^0IgY2!)g8JGKuT)vnr}uMj1FK_Mjj2{?;ogRa z1q4J-b^+whJ4bbiq3nJ+RI8@3-{UNz*~rC;a{e=wiYy%MFH*9NT4LaY;ysv;gWbuI zy$kZ+K^#!)=9Tf0wP?YoWy%!qy7v-wg%$P07owR!c#GD3z1^GX{guy`zZECbcw2Ys z_wYHOQUZfDmicj@DDAR^96}`Cn`DKo)|RW@Ixhw zs3A9^NV$sOK95!&>df65X5-_r7eWv2q%Tr48^V?<0}n14>l~U-JaR0r%9_F#x&FaW z@JZ>b%A;w*Vk+sx(Tyoq!M9>OGrxX7)XEi{hJH{w={kbZU!ojxvq7QE`sjIIh1PcO zpv&hyvZuR=KzgYxKo>G4o={~I<3<(exB0ySGHRXYclnDxD)g*(=6zsfe|KdZL6{JZ z;4$sQAhe(tJ<$tUimT)bq&IwJU|P<#RTF#ENPmn5iTIM0Am&VPm)>13Z4LY7)~VxX z-0B&YN%#8U`(4hV?L&vtlb>nUQ+A`4xcS}6<1WN;Uk_~C01ROdx~~!v@zy#u8+_oE zZRX1WnHiSz8?i~%F2Dg1de!hXAXTzOBzn)JGurEfqy!h@rWpC&CbK)$onWYwX`RV$ zL;ce}b8dNkvJ*bBgbyjb(Y`52h8JXmtlB=<<}3NQo@kw4E?jDzI^t2SSz-M1qwOb# zUxyb0xVbW>dbg2x77F>SIQUYyAPKH^Zc-Fa=liKDNck0dQ2VjLLU|%QCf>Lm`)rRi zXxdW1AydedeXvMV22oMyd@nLT-HcC-4a4y(Ut{```Hoce!NWuW`MIzJ9{3b8n&Hb2 z!P9oKzo|qW+9*tRR_W;{r*3;`g62`nG%ac7quPhG0$XZ?EQpY@5uRlcVe39u&JTB+ zubSpOo@w3^0kc@x~!K$WjAK z4Xx5RrKZ9X+)_bZ28M9+sO@e^!8#(RQHO^SJ`fXKtnRM*dWcDW^t}T`gH~2F99Fzs zU*UfC#%DLdjumwRuCfwYl|NL$Tg)MNhXl_=dvZMH80Dr^z6s8!h=F1XQe?oWE;5_; zu&dOxo{(^atTu71!VE(g0X?VqjWx=z?ju5Y?NWHc4Vd|)Ud~tdnB2Sm1*`E0{^~;#Qc{5_j}7O79M61BW3e&(%uDbr9L4l<>JNE8!tG1{UHvS z;9_murpx7jC!DLLtlgRjzTEHx>)Zzn`}p5UU6JmR<4Huml+V;Y0A2{Wv|ZZR=I`0f zC&)A9>go#%=2fHRBcqQd47Pl)acRbz5G7#IC~=1;^;19T47oc<9qDGCtXn#ufro%{ z-+vg$0IzYFElXXpF-(rdNuD_GqEy`)LTfdkoMWqwG2z-4g>2fu8MgJTU^BRS z{VEe~w()*nf~YLi?bpm|p@W47&{Q$Q{#RoebH!Bo1n!?+jF9ODZLfn372ewlUehBZ z=4naWnlM0sw?+&;;B%!^m8Ncf?Rs+PfOY@xNiss1hAgB?2g z{Dw89*VHbvgU&w8r}c0IAPBDM>z9TV{*{t@!?#w;V^vJZQ>xbzwWib$tu}#{X1xmgz(ub z<7Yn@sl7*`Gg%Ly&URGB`D96cPw?;-WB;E7F#oOPP=4d-XW~osFO76*Y9hI~{O|!2 zU{d_9u=5MG97P3DC6~i3V}(TCuBtS_-kqe2bAos4FQgEcrbCb8zq~fA zTHg~Bq|EO`wk(No3MA(roHq&+JkTgQQzbTDzV~MePy3cMV_&WVoyw1!=Ujh&^896Z zp5UERh5kCk(MoG5(&&(m^(*vu;-j4_9 z7iHUR&4W>!077*hh6P3P2pG=Xb30igFHtxy*u}lF2osSiN%sD^u3C5A)U4X*Jx*me zoG5Of4$FN#k{MwU^p2mzno#O3W z&Bv<7^;!-wYJ87!txv|lo zAA*0l^uSR60h?M6_&TzxKgh=|4V7nLk6wY3WCa=L~)kZZfA)F>^+DdgqoHcB8ziv8l;m=CEC0 zFJG&%TfE=2wVD3xumdr*N$C1-swu~<#dpWEoZ@ehoGJEs{Ee2;5a>#$)bZX0j8m=S zPE4K21YK35vVfRFv@dS1AA%K&o6M|EJ=IM4kTy_%Hb3RLx*#WPJ*j=Xodhj($WV3s z{e&;@w&|5=e%I><>@Nztin1rivII#;o0(nySK?eRBq`^A(#2jddMxz6$zEO0%BrhJ z#s87=krspUe`9r-lsyBMKPSc|3j8b9_^_uj0X%KZGHa!aj$r>%qENS@LFEByGx2`g z0GC+zMo#;9RQni2jgiw5^8X%Tu+UXd=D+#MI`Pf4H86NtFApL{$Rf~Y=ExyS?Tu*XrAveHf?R$&c!fPP`@1dbCJ&H^(KUzq-E2$Wi>_i@Y17C5GD4-4g{NS5n@NXr# zX79N5T|7U>zYLb%Uj0L&ib+3jP>D#Xi@6+yuyYGE=|_KJ0zq$*F@j6+MkU0DiRmT% zm;4m2xj$@cZvU}O(a690lY-L|f-nkN!*9!B^rJ27VJor>@hA}iXz@yq3BR>^zP>e- zm9vg#g^L9Y+4qYc(nmwcf1l1_yoEbRZe{gXSn*!7&9_XYP2-%boFSTOp6TIh#XNLL z8=>$XEOsNaz);0)jt4XA@S^U-N?gi>m0C|I zZ`!|R`oEf(2|S+c5-sDm+c&S=?cyqZvLBWQ2B4&Q*!Dy>=fdf39XwP;oG>RB(f{>{8mp#k`TGJLC9NR zn`zwu9Bjt7v(}?iz5tuvOG*v5YADh`Qi=j#b(lr%X z(c+q!y;_DT_0z`4ao~ikQ|)Q5IW((zQE??sb#Gi&;YX6C#`wtz8MB|S zT%@%K7m>3|Jv2w+<~~yG?@~c+kwg^Txra$T{WHf-0Ay9|(f_R)cT!a4u`Gn%tGij^ zT1UI>Q@C)Wg*nyGqej}=#FlCw{RJ$BuIX8VNgq%0<^LBZnV2v0Sn?KM--|$hpUd+^Q}q#-O@dP2_~j<{Hcs{o*ok zEqI$qp-`Pj@>p0e7o=8AIObGedjoXH^UjurPw$+c$}-0RQWVf*X`fqFZTS9{l{i)b zK6whX{5GXiy1KfJ|6!G+(ss_G8g*C`Oq{8*mSXgog1O%As;-(*VoSrWoBL1xpyn1@C zCct}PAMokk>mYGGnXq9@+F27vl6``Y!DTfv!OCr)2F$!p1N1xC_l=2zIL+t^-Eu=) z)l~&BP@O85cCC)oJ3{u`B32?)`U3R|g2z&cgwB zpT*Xax2=c72S=!x%@JC-_dDEZ+6kx6#$==!-_I4Vynb=qI1MygW4WkobI~}U(c$O3 zL5+ZlIzr^M~hnS8t z@jaE?{q($|8H#KtXuIo6h(}5VTdRMtg|4MiE&AZMW;CR;_{N%oiYu=?X05528UsX= zR)C>3&9e&BpD(OYO<3Dg90pchlHvpx(k>z5L%VlSdM+if?FDk`We|`|=fkk|mJ^lM zA*o&{=M>*#k-bz*gY3EVepB$@p8O_w^4>rT{oE3RJ&lyR!c*dBzeyy9=PyQDx2)gF zJ?c*!O02=yaYd4en$sKlOcc1tZqf;Ros1uNc+~zjpg8HX5hi>|Hf{u2vY+bfj$0?Y z!?;ZAF%)Z(jH|&X!r*rbbs*g zsplf4<&^NUU2b_e%*Y>z7Hg+EBIDN9vw*qX*MFNk&sPU}{;koi$1_xCc8yk(1sl7v zM0XKiPeb>rVL08>(eGzvQz84uLxv?06Xg2tOMwPd>P0{x2C=pLyhL^9E?DZcyeacA z>H`Qs9-BCzhL?UwOFjl5=!}p&)8wLlmvZb2aS< zeyA`H*=;hJ$w9-gSXPn5y%nQ@O4k_qmd+3wwX*Z!4R2~ag#A-vf3`z$e!+77uUo{n z19O_#Cw>gM#l?!)gUum;e_VBWS?RQ_c)DK#t@NJ_3L-o`sD>dVPTC~g(-Ql$fZgM9 zJuEuao_^%35>&@?4>%W6S;*o-*uJS`PNF^xX1zB1`0CXf@7psWR7hUg5AF6k(YVq| zxHhL4HMz%IjTG&Um?yT^{>VDhX^UKz?nI34ZFx&;6%La3uY!%Y-!u@m{^*Y67=<=r zC0zEqw3zY<0847#?YK)$;@2j$PJhN7N2{}U@^wIRYr8FCG)@s4l?b;PByLmOs(T~3 z9>RhshfrXYrZ6I2b~S!op5@lh*i^a$k3~-{mTZ5EQmXAiS#jm(fy$iQ;1(y_41JOOqG;CNrA>4-j<|QG7Wjg*roc76S zY|W)bGDeU_d)lbr;%F6b-o)u;JT6lYs`zL9ReS~6NRp@KhmPY|`2cymqidJsHUkUy z%!qqKPj%zJ7uG(uxTS9m{5mZpZ_=G>nFa*Za`Eq@bWkAyH6e zqD=ZWzr2-=a{<1Vrl(l?+b@Wc-n{$XWg#c8$TqM~rhI~S!X%E1BZ7X?KzBE0ru^eQ zfl?90ND2b0$tmJqJho%sJ)IO%vCj``VC^WW>{05`j~d`g>c{|t_} z@M7_V%tc9IH2)FMgzzfpwSdkeIDGli)oYoN)J57%eS=remV&K>a-?T~y~&zV-lztX zVb(;n_5M#a*vfu_^RTh32ZUPQN_TGV^%XqAk~K#35A9HefJErw6sC%}p5dW=Ss#Cj zZD*I>LaYrzaMU)vBEB1UL0K7ikM2&?VH(jw$bxb*)EGmG`_~HJMq)}i**m}Y2ZFoT zkZL%wm$)R=&&TL|NC>+9*%{iv3&v>MqmG_-$XFs!fwJjV3eK-ShTCtVPRNr@xGAW& zpRurDZ~D%kiILgk%mZf{xZRz97WX!=fE+(kg_Qm=r;9Y$S2%xA2@x>?x*E&q=UHJr zGc#723Kwi^UZFa^q0rc6XW`q$-&DCim3%UJRK=3+rEjfOyF5y}tl9}Klm6k_<-2~0 zw|%2H1X1|<4s(>pCtYb;Q(Z1~Cy=-vq2~%mSKrCrzq7=99*Juzw~^!*o7BiYjtRGo zK}J{%Th?c-+vBX&ExfFxwJBKT^w2s(ksoIx$iuBIm5Q2PPkj;Go}QevX=~0i{%*zh z$fAl!!&RrU-5{r6fD|TLs*%kCvV?@+CsmtL8hZINKpJV6?0nvMy!&0TmWK*#i_o~j zcBA*D*6e`S*3;GUv>5U`pQd;3TF%P=E##i~^X>f9q{>(JWx`u{XBY&`;m64-u~@t_ zF7=kNGT?}(pCvC6S`T4j0+t^+3ds)EwKo#?OkPUn=CFVk42dWWt>;{Ku`Ke^DlPYl z^St}WLy-xo7KFFZZKH;QT@d4x`7?h733SGQ{JV?)~Bm2zWnf z*6l@$TB`cJAF=p>#!kw=a%&l0ek=QqQZ)^76+8dcuxBewSxZD>{>hfv{%(1Y{qC*Y zIb_r#JaubT)4JGg8@P(3LK(Q;oZ_uG(ZLx7eLT5IPiD^8Q(O}<3?X_|tS!a}e>qb|164E1yBkORehAUw5vcH+1$m*qOY}#dPYRNp z*Uy6))LXst&2s9ha{|+uEe{Y@R?j&qWvS{t**4xJ{3h~cGiT;SPt228b%iumX0UzL zQESW>Cdk8!az9xawq@mt?P+u!&9K1FN;wU^N=Fu|#zuVfbUt_gV!D!x%gZ>u`uif(DoSh-WEH+E zj%SrRcBssUpFJ+4Z<~qShPCbeuG2l}U9E}Uu4jVM;xK9`aSP-TQYV$V{Vd$#GDjxF zb4wQ-fV@kC%~0ODvoZ0Nsn`0aHvBU*es5P;Q7yrDC{cwGQ=zctanW#@2PF=#`JVg` z@5=qPNt3bfwk!N3q>8^fMl3tfG#x|Pt1VAl$d}`8JjXaMsD*Nea2@TUN((C)<) zFDZ^2lwJxWEc*-TGl$x_(-LqVdR$;5ubCQen}QR|;g`XYpJe=R?`Uk&NE&|ud11ot zt6404O-j83l=SYJB@Oo*H#@ZuI^w!a21yf2#R?~>UJWe!R00oI4J%%*DNA`A7!?x- zn3GyO%VfAXKJa#qe#j3@aclZxU3Xl{t#-)!Vl6{XiTK?wzECQ-i1BXBCNXp~7lrRY zwx^f!3k_@;Ov`<*+%esBZVGk8*r^C(=8QVYUM*pwHlNj=`VIx}#){e8^HSk*5?(@k znN72?y{Cb;a~~{JgN8)-b%YOPAamIF!}8>`ID#-HXX8W&`*9lgd}X_SDvemE#H5{~ z>`YUv`WInjlC>&Ewig#S6&U7zg~IRdR@=#i&mDEwk&n65$9M5FmPvO+vf;}oQJVs$ ziTtI>{U1TZ!S4b~vxo~$tj~Kd-VOY65ROzbG`LUBZk72S2k;T5M zMN`;pvPr=+#EPjib*{9)3v@UcQewkp(r598YQ?RNa;8~I7#_7d#}w6zWu_%3S)_iS zU!`9%zriV*fUC~@iFM0noWozrXVVzcD~N68N~vln&h&V?7MNTdKlyAU@3dn+#a4Ry zu3Qj{I`Rf}i3BH|RSh>RUmo=2DOkcZw`l?Sog%7rK85?8zjGnPVI7t_Rw;|tTjIS^ zF43^*KI!VH6-iqcwQkXz!ujmp%I{YGyZZ0|Z!OY-AaPL;t*oRBm zEYRE2;g;rx6)8zU{?E4U+Dqb}JTj|)HDeInQP-#Q$-4VGb@SKAB4mu?+Z5kI6fbI~ z`c7ott|07-Xqsw9JKP91?Ln|?$CCg?M=te0oCE5&gG%oy+kU2&%D&N2VHlPAS#q*s z5GI#O-D`6~k=RG#dDIC@rXQVV!K|iI3bUQkdn&R)} zEQ>RDoGx_2K9yTRW(~XH78}xP2t@^~K)(F`X5M@!h%!`CeHk3Q`O#zbb=GX5bBT`A zrejj5ii=nQ`DEyRBI~}Lx~I{@>s(z)+GzL;Kh#LKmQ{{Rkckcsh3}YW>)dp5Q+*cO z(i`l>P;7#j_+%+Ee`hr6R&SAJG<~ZAR%FdE`6^ay%pRbBG^4PYN-6Xd&D$NcwP-N@ z5Q+jEpTJi{{-ZP}j*q*139WGUhpj=Y*gFwF6!eWLubrNzJHvhNVjf=zoE1;#BcsZ` zOP@Gj)|*5eEwJk*I%H|+p8*dF;(^l$B0p)ZiszWDCHHe4Evv~>3$lN?BUtk3aTVAW zbJhGAk(kZL6~i==v-T!)7XziSf%LB7SB#Dr^4@%YEik1u!k)za09&@0ZxgaXv6{kS zQE(&ba-Bx+z?ZOsa73b230sXnH|Bd5W#Z@Y2Y&eL4IA8auIR=pmfB?l{nJ7A3FwwR z&<^bNb#T7&9vNzXAApsMa|@PP$qb>x!Mrl4URW*X=qo#D)Sn4vy_&qNGPcH+a!~y7 z3ZKlEw@%BC*prjrna0eTW6}0a0=j!vjf6*$nSH8(9L_$=td01kWQ5DOc)0WLp7p88 z8?~gkS>@NlB%Q%%z-bBuoK=)(T}ri``zKLQ@keu$8gmWLstJJn1CNmCk9zax z*fPxh19RwAnOOf6Yr1uU9sDL0vMS2N{^b(LBN+?S2EkJD??sGq9Jl{9I_s6?`FfsEl<%iD`%JfpRO z(wZxJ8gEUtxx{E$ZnBUMCW6kb*2_Dlk9Pug~OJT5WKqdRYYx{>`wJB5wVw^wwL+3z)l_n}Q=?k+d#hg?kcT!VR;QJwhG zj*q%R;UqKunK+!%?FBtfBzk0`m3MUE8Sl8U z3O8-qgu6!RSaoge;x>C%nM3=tM?3dY%s%dZR*{AYA-Z885w?m9Mog){{KA*Ln9rZT zfiGlLa~vorDt!MMV$>p7NXHS}1lVv9j$NFwr>iQuy3SJfetb}8oqd+vosp2eWff7l zdn-1JrJ;9GY6du9i`VjNw}iJWxYi8Oq%F_2pGgZuF?LeS3FscsNBHfyI9LXB9ZdZu zk%9vhMosF=7qbUgJn{8=HDVi98lYmOzGED+@iCw`rXe#UL0iIlYD}t zYs|FLcVzIjNc=K?J(NuM?0%F`3Mn4Bg-5PNjbNoLoUPYQ%I6NLUM8!pg(5+k`9~>Q zPIa-TE#Ka02;r`e-%?9pHs2rGi#l_00(g8a1uEs;w^#E~Y1-@avXO*uAJ|?}F@y=@ zoqrIlDM`Y^2uqJK6Z~-Qg=WpKwILkehrKnHJV6itnubi3%>Z6tSt0TQXTMrbo&+7$ zK?}FyMR9g0i2o?dNA}%za$t>LoT*~d00&x0!r`64npG)3)64e52TrEh`Eb^$D4CuJ zXujW$vuWRA{bnuTLe%+lez_U@!MNjA9h--KM)0qfZQD(WH@bH2JWl;`@J3-e7v;z$ zfddVvbfV-x+|_BJdqCcAlahZ`+U>jN&@*SOy!OXJYnhdEWZiK6{e=i#nSzA{)QzDm z-Dj`2i_Oth{)GYb$_J#OjIedBUS2OVR|ebo0H?-L7v1%4uLPXLGd;2GNZvArBVd~S zxgKd!5O&pL#DHHx;f<9@fAv$8>L$gNIIIbN1mX_AP&Yku!QH!RTrwc+E^ORBzK=R~ zWMWz)kfifvV)eulIJEUD#E?;}HuN&dU(V*Y823B!5gi*AKy10HJ$|_T5DZK&?=Oa! z-${MGgTx%@RjeC_T@p3EJAOu(ov9~jl^jv$I7f! zqden)aKD;XJc8;k5$-EIBMxlq`dSF|CoUj1A5;>vslW5>)6a)Obh_pW>@<^xd0)Hr zeZ{}?GdMP$WqrOX@=Y%{^qtx=%$*}cJ+;UY{VULhecmAJR?G0|vhC#2bOn`N*PQo? zV67pVa_{Yc;MhP756>aS9Q3|R>C}ds8U5V*UYjsL|M|E!Y?zwa$1m@2Y}>oo9aj$; zOF@SMwg>NKOme}PuJr<}Nd$9`LfGS8Sv6OJ;NFdFVpzGem>ksa&i}bn?Uy|JgSY^u zc^32|^%?UmQT)@;0G3O4+{jc8-i^X_kM)D%PaTp{rw8~sTz(c@ks(<27knU;02m%q z6foj4RhdpuAc9MTK-rbESp!gBspM&4=gQK3jn}Jen7a@qR_|{?z?bDy#zmZuK1AN4 zT&X5GY}759M$|Ov!j|Z2g3JqF$6?++V>ab=druwFPJ8V}@D;nSkfLYTB;rl>d@J$b3_rt;Gp4so@ zg$cIbp-}_qlAq1FalU%j999vZqy+}S3wzdgPUs<@!)QE^6p!c&qp^%HhexZ$dyt=$ zI0D{Te9Vk&SO1L+ICatYiW7>Re=_hc3Z6$0|g(5vuM57Upb|% z_3-(fxoO2Qwf&Zq`A2aI2MNTj%?MSwyTb2 zs}Rpo^6t}a9d<2Z&SPE>$hy~+8V3Ylx@+r|S*i8y`knFnvC`l5A0_OA=37IL8*lLs z!UfrBUDUmAazDM~X^UzKIzA#QtUb(2`|8VH8HDwYzAe&S%?_C6HqCl>L_To~JUv50 z9hN%3z>dZV&RGds^WCaiK6V-q>m_9aOlfJz*! z9ngAd9FboCU^~HC!SVwBIb0TVrHv-AQncijY?)DbB1(46}*yTD!Dfm6{kH*?+Iq*kknf9~7-84xIHbjLzmG(LoA zuy}tj_3IGv$49R^U79OfVUz-AIY>driYQEVU%rfJ@|;Ta95Ukj*@odg=-i@{>MP3? z9A7^AL+W{%XyTn*TDu?^blQ_RdEE5Y8IJSbnka8ey%(J3`CG?8EARD=lUC7&a`)Jv z#gu~xWaGawH|8G!y#-T0-;Oqb>9Bxj)P+}>3f1&RIrgq1F)n%$2WD+jw-5Ig0g`{v zTQA{nML+ls1n&V=7@TGI>*MvpqN0&dM$`Pp0L-zS5a5dm7$J6~3Idl^UJx(knA(P8aaoCmi_yZ@nfT=d&?!pU;O85I(_gxDpRgIK8dnH z1sO=ss^Z@o8yCekBL1gd+;aMRFT^D#a8i0WuVhc+v`m1ZwM!v^|L9CI{ zbo|sTKKLHUm4$?&tZaqo^sPeLC6EzXS!d*tuCRBZ%t=Vc#lRkB$p#+_`!PBft=*6x zcyR}#1xne1QFgu2N)q!-WSvJIB4Pa)>4KT^-qzp6puyg1RkY z|IJCxbuKulaVv)5_{6;@f%ll09ZI}10|3pTzV+LQ;H#oYuezpRB0_*-B_qSTSBI+C zCTPhprs21{XDAy%+9Qq%t$Vw{&JHH`s2vp=_I#xWfs|d)aB)hdee;+Hv+jI@C}Q-X z!R1=rPkpuAx2wMX3!?nWwH$iW~}X94X-Xo~0{7KAFy0UA4|o<%>5-68{O4KvtRB6OiAiSiP?nWO z(r5GY>9he(xB^49J#~@S;w61lH_-0&g$|!G1fW&g_W}0aZlVcIjT95 z858-u@#c~XZHCmjuZrL(%^ z$8U2lxog8BL0z3g&Z`*h}Pm)n+$%xB)g<@a%U5fyh=Lvy)O9GDgmG zBlA9o(T%FG^(jmA<#78FA&WW6vGLb0h-Xxn3YRt^*&$Zp^z1uAit{GA@oEB>Yoyt4@<42lanIx+*8c}J2!H*+bhHYpjGj31rQ zP*7+w2txx%YQqy&1|U%qn#kJCu2;rPLM{0I;WcRh9>Y?SD8{psutfs8wx<3s!2}E# ziaK8rJ8m6Z>WbS6{ceWa(DSb42cP!9_S%^nn~0U0asTs0YU6*_#b-qIyTfsdS)Rci zRr!-R7wiujQi`@_&dbIV04-Plm&LPa016}mgEYC6EkF`OITSePV+}eSI`+!f zy=+=;8H$rSSY#(mkiW+!NIX|&BP7Aqfafq7=4)R5SA~R{laLG=0grv+h^$cK<*%`J zVhcQdqATZ?PgnM)&?T0Kjn?I7cu2IpNGLVq&9xHeeOX#HEN6$}ABWcmvH%k%mYDSb z*aZ3=h#b;6ige)r^jVa)6;-s7O&$#jD7PVA3p+6{K?Bj4Vn$Fov)0GIw@AD{@D zgD?%~19@+jci057jW_HB(H|{*VgR(h2rm&q!WW@XYeXYq5hXQ~4 zF$eEMqpv;(>{f&}W*`;@LNi+JAq=2P89{xzJ=b%CW2E~uuolpwr9(O`{CW=v9|fH)vSZe4<&Z`EL3VI;nfQMzX8{C*DAQZu zO<&!Z!ruCaa4#DbzCy(nZ#|Ab?^NOjg*U*YhCbfCp)V zM&Bw&VG(m_VPW>+sP^_<442$#F6gwU(GU)T^1;v5qFG*EW@;)il(hTsJSr*M%QP{| z5k35}AI6j=q3HVNq(|0n{WTPjqXw?uE;B41rfm-XzVdS428c1*joZXyCg76Z2|!^h z0WB?H0K@lTf3ZsYY7&iBUzZve0EV3Egfl3ia710I5394W!R;n1rv->{T|dUvx=}cB z%q{m|)&cFUxAjLfaypVPt*_KqsC#TaD^!32MqQod^OSm!J^p(?`>ApSkWt`}q-G%! z^JYUaE-zH8u)#6ER_m+W6Eow3RQlCn`4|ft$dEZc(yRyG z{vNv#?P2I*tehz^qQzWQoE%bOcQP|0dYQX-KdiQQmehXeGn)UZ8rK{`c6?MV^_u$Q zV$V#yPk_^WFDkUC6s9b9K2NJ_VzT8GeS836F9kG%=KE2tbTrJIL0b;kLk+@VZj5V1 zivjLHj!;2VnkEVmnkEJ&3vATEEZUy(PBoZTs5JKDej9&I<1Cr2dK%ZL{=3KcLwfEq z_aST_PPXIZV^cC-%3 z;WlhDsCissm|8utQND;fo^Jj`feS>TkdlRSZ<0(GK&S8E7*H|QsDeHaH8?)t<2q2<^|7q!W!x*cl&lY1HHoTsj;EQIST0yguu(d{H#j@!V1SvB`yyY%T@=?x z)E)(BCV=n5PQ_Z3S#0kyI>Ik~9uZATolT=DFd4lw{xf_IK-7$;BM?-gbym z1&TZsk$}cqE@cKK1}pbHo=E1@kGOuR&QzTc2KdR0EhC7Uk>YAI@>WL^f87Lu0E_D6 zE|uw>yZ1fIy$VVrGsHHJ+1|p8+__7m&wr=>!2db+a#03sSC4;t%Vis7cJPe zzVEW*WNvL{x}jX;RWKu(fDY+gfE!hDl-Hm9$cUZ@uCAWl33C{b5b9C0=@)Grbj+&o z)P_4NCXbjf3f)zvCpoT0_kBw9>4#r0?`5!f_ccPmbz(1P#L=7Z<-%D!d`8V!2UYYZ zQl$L!pBY64AeDs|l{(j|hAepu$mE-yTSB?Hulhqs*Bn+BY6G06sn(x<` zojtH5X7Xw=mK;6VM`N2DcDgTW_~QG{lW||aQRb|yJl?S>rxAPb*G{4ZxJf`PL!Hcfp$IG7XzOI_x$qlm&dZhBm&7sKAr9yTbKL0y^ zy&v|_Z^UHXaps0M{US_awlCHcI4e7ITi-mI_9Y4~H{bgcrIN_gO7C}CoOOVu1+SBv z)@;+H``b@rZ^%PbbP`1vI|4AiT0pd*(-oOfA1#1#rMuc$vtV6$%AGaX0I654J@Yft~;!U(Y^pK9>Glc z?yJU9ausY)qmH-~2IUbS=TS^w zrg|f|RjSoJhOu5Ly|XxcgVH@If*kJpm&H2iAz0tE5v)ID&**udS4t8ne(EgsU$?!>RH6KT2wzj`X>39Qb57nVcNl zJd#@5_E1VdRmkx>|9-4pwmbb)u4{Q<+U6Yfd`XfrnICKz0f~gO4T!`ldpp)XS@j>O zK3E;_sXkiA#BE_HNaQt+GQY09PJNMutFJ-47yej&F~Q5t6@qLC{-z${KbZ33k|lhxIA9Iz;PO z5Fa#r+;R78sZg2B{YUL@FrP*g+VJjuhP;u4?@3SDRdQKVZ*Bz2Pq;aax|w$hXUCcV zEkn-r2Pz^VdFqR4#Mn>d$;JtA5V9J4k*prS;Rry_G%$J_^hEF2+&>uHUUkEtN4qSyu zpu95v?|7=7CsmGVHeM9FjHf zG~GH-uO~0G)FI%DfTy8Npn*cM#2z~p3oC3rCg8fzxzD=kU@s_Z_$mY+@E9%UY2=1* zSlO92sVSMQZ(XlPRWO?hWZTggsE4y>c3(DHvT$#7y#D*q!G_)^^bVy9N$_1u^v!x& zp`LHdG*=kkY@a!fRcNFjJUneiQSjmNW0$u&9HV!{j9D&I`O{=^Qp?62l^d*hz2DYA z?IF*Kr~5Wk<2lcaN-2h`;U(MctDB(LN)+!JU7e~yt;aikZaFiveS3QC9n2LhS#0KTYEvKtKq<4As79pO~mJuZ9OMq z!D+*RSis+}lgDanl?RnnS}s>FlnpUX{mN^!>3jC;HQ`HkMWsK2Z%bJ?btcm!xK4A? z%q+P|asmqQe;=w1K6bnC=4ZmhfS#0<*t-$^uLjSy@S!jZMSVH6a0gsp$nA?Lm#k0f z*mh@CpyBB6?^v&Rp@y4I>bIOL;K4n4Z)oYclFD+~+eH{H+g7u8qzgjzB+wS)8_k|L zFZ84K*2>_5D>=Sq6Td3o_^f)>{J`EbksX!nxcpoNXT69IcF<;4ej?L$fWu<0ye&cEt z*<`mkNi1@g30S&mJR)^oS$9kQFCiw&6GGDwC!nS)e-qTKN&6v`B)#!NRO-NaP~0QB zc+Hv*J7!DGVJZGz*=(ADob@kJQ5%yHIA#88Xbfhlq6P0>_iAubu39PoR# zak$p-`s{I;Pax#r^e!+1hy0`cdc7JFRDIRd-|oBL`F%n$l&!iM ze+@|X#1v`x>h=k;dl(l^qTgqk>|D>iN`Khvd&92G{nf;xfk#=(E!_9MW8d$Ggx1mh!~ItljM6Mfqz zQ8dz87gzPy^>%fd=;BXxSvNd}c!MUn`1kmtLP2`{o~jdKJqI>oj^av1+D)I90v+|Y z1C9EH-@i}nZ|bSPR`X`n1Vu!U?O>(rZL{@c%W^SwX; ztHtVA6ID|>e7%bCuioObWx!O6Q79m106Z|+3IpA-O7J)8EUrA$!uT+1MNH6!TbGam z(>N9e^ z^Ut3UuH3xU(SG4B787ArMAMVLI9|EAWu^e_H1WaOw+;O%jspc$YKJEwj2|QEXGaRuw=0IR1S&;7GA>X4nx<2RW*I zoHZxADEGCtKJy)cX*}Z7jngIE@Fc9OQ6Y8DcRZ~Z_E0!@je_^5F5MB(7@?%;cklB^ z$M-jNHRh+aJ%?!E`xC17 ztXFn;!r1pp{kw%whWesPgALQHtuGN-1LA7rMisB=)IPjYT%yZeJO0uu(XRyQ&fAD% zw=pTT!(XbZTrq|&c;s%gi!tL(PWOw|tDM!Z9*k<6zRl!{omMw~)XQebdj!;q#A@#* zyixwz40x%QkiXb8rU73CCJg51e8y`nL61BQAJpH89|yuXwNY93dzX_2=xNV`KF_Xg zMf=OYqVxk`*h94$@;Kb-Ge3Ha za^c4{peIQ~-@I$X3u~u(%rNT#Yi`(O(iU;+W47rcTa0uOmyb*VBc^f9ip_laEwz*t)3n4ZADyqt?)z6w ztN1t0o894}_Q#+Lr%S`WvA@cL6w+Z+Ubc9@)8cCn4Vr`-1pRi9ZE- z0Y%(@4jdY6ug_={fgBoT&*ALj%LB%x1CFOrg^=R$%Dh~=Wh$O3{-yym5s)H@R8;Ai zKSL3`XtP{uE#N_{FO+SeKKu>7u}rhBZFRR|je30#!6_xq22-+wYMB*z@uTPS?x4R8 zby4$OAmem*WNmT0Kr|fxodgBtgR^L&xgiOGutynD85fAoecO1@e zs)!vlux??(e<*;?t?VeobX$)hso?nillbwQ5nTLaBxhgQC8N%<>E+OMRPhbgS(Qz8 zFHC1x@i~b#Mgv4beuMA@FKWFr^Y-TP2Raw_(d{0rM$AX)6=Y!!)fQW!^TsE#uP;KA zo$vh>)TVn6`!VDPe?P^NyQxaWYp(wA4`M35-M|)ri4MScQ2?P}ums$o3ps@ktP$}W zu|*euNG*uazO%Io2|SCN`Wf&EL3D;AxmsfGHHU!{GC9?5-x&*O`_?~hVyYYew6+DF z37aSX{hjoKQDV30falpG<5%hgH|X$wsLK7ePPC<1E#uc#Zk{*EtHo_Ooldfm9oBUc z6AM=buow2r3jK`|`6^q6OjC{dF{=&6Bb>{7Gp810wzZ*O^u`#Iz!U_&I*R&k^tS7j zY?F{9cC%0AtXTXE78An(tY9JzG{moZg877Oddow??ulmxO}MJbSQI+**PHl2 zylR?`OQGv7O6Mh8h>P!`8x6|LrXIA!ghi4$P5-m?w!@Rf?fC;nc&!-+M|IVjlZoWR z!|RdBj5g<#X~X+=_XT;1laypK(4h{DV|gZnhwRbQ6|VN{o2hgbOCE}(>F5<8S@v7k zTDP*rL0XUNlZOY7?;R+hVG?nXh4-|73OaXUmIY9_k7cxHUkFKChnj`SH6A-+uaXoV zjBVCWZ^&=^FgD3jAEdr;rtNp#j`y-H^H8jg^GXr2ObPhnKCadXwYhQmjz-T((4}04 zRk%K~Y|BY5-;{73NHg=glV4d2IOQJoctHoOf|()rN5Auk#vUH}!Nok&Fxi zPCHn_InRM!|4O&nmfa_x0mCC`l)^V>QlE0!zmk(P{Qh|)y}`Pw-o=H$t4yf5SHKi= z;euIKKSdJWLk7xlB!+y0zp4Zw(mI$NiFBbYnOZ%_&RGNAc9k%Jv5gj2!8Bmm`sAFN z`kB2lh#U|AH8doER^UY&yt>?Ocw~@y4b3&V`c(rdB5p#$!i_ecJra_SU*!^H1t&em8fd;i0#o*U&=M(;h2Zfo8>Hq2TW zBiV@8ZLuBkSD!?cq{oL0V#Ypk+VoaH;?k-l5gkv+SK8_aZ;Lj4f9w|_N}({_;wKW# ztSM2crC3mKAd1dSoxb+=E-=i_Oz_Y4caJPmqILwzt_s!A^Or52H;M8;eCi7%vGtz> zNsR1+IxOhWLz9#);$i}66(;sW_D}_Pm^64G$4aQWB|q~?*i(Iy|jz zp*}Nv2ol0#Uu-XhZ6=bv4>n5q&@G{&dNgr z&d2)%UO_^oHQQop?w@A6J3z7IZ_2abQjPQl19HZH7MnHgfUBFYaO3_?{!Vd0a?ZcR zgYwR$Byss8Ti8s<_DKP#X>nC6;?yj{n{^_`51yWf+rydufoKQe3vTO5a+0lp%D^Ip zuw#-F>osLt6vOSCX|-=Fyh|V@hYoRZiJQZvPd^HDUUW|%xcBZ$*C#$1YqIoux{#$C z6|Wr-rH7f%xan^3f!1L%S7qv_vrvi2sI{FULJ}3CE3>o*$IAd3 z@2&g}f`>`X9L`0Vgx@+?`-v8?mRf&|#dc4>{$AbjW0WL#fI3m+^0$GV$wOw?g_Z9* zW6q~mwz>Xv{=i^7nnyjMBwR0x$yas*LYs_JsVW{f`d3;BL46JQ6)r-IdPAk;ZnD|B zK)Te7A{;_-7~kw7hirPYaD^o%KlS&x%$)%KNwrJUc>~WNst8=ogN=#b4`Qt3oAr_a z-bFeh@+{TqaE|3VkrMv;f1$RS0^aP?C1_ab$RbqE8KoChIM^z5(|&3GK2X`!dQ*ov zD9}raG(wEz=7XR^UiPtAv$JxX<930E*Cdj!VvFpFgGq#a3eV`oWa*h8)C&A>WC)R! zLPMfB(4Q{VSgl%v0@WkN0{|eP1i)!)7h^`=xl9+LW#vZDbk2xU6Uq4x^bJ14Gd`#i zB{sjO<@&u%s0!QIAem7>l!vYHa9CwlDszVwe7*Bw4w`+Ls~k`@Bs``I8-hHq8_Vkk+7uBQmIiH)8WC z(}`k7&tc~3p$V$g-e7xTfLlO+C)GZM;c>F5yxvbc2;7hJ0pJp;?`kNNN zpW&mI*$UTzRh2|uv+EM0@iq8vwl>AD`zEi>y_@PrUXz3TF(b#g&}{xupl@z`{MyU2 zO1tB$FNQyUz7@Lz5Ky?H(&mD=Wq>K$1mC+{jgxD~hxfC(l{)Q2m+I$qGfPg3{edd= zlCgX(#|OQEzf%hv`A+SKh_FZKZ7HNKM0OuP{5L3kFX1}LnR2xf{R{}ZWooqZ$BMy- z^C0QFFasm3=Y`iM@(-GGf9~jIU?V}5 zIHh9`RGU&Wpenn-<|L_+~vRIf+#+!`Dr!HHoNF5nJd`EPh1^cEZbu z1epdM=+ekJ);2v}VU~2!v0)Nti$$-XP{n$*fXO|0d#e%pZ4B04bX8hpRk$o$_2|IC z$><>E<2NUSVabN8slzI!X`}24GC`~}im$*xc#w!-#JOyrK z!%zA|y3E~~gutfp#AM%pU7FIwVsD=vm`t5aJx9u}vU*hd_FBfXr5ixj53|(~h=CKB zv-Ht(EWS$2Y{UvGV}l%-Ihp+q@kN~j&Z?0V=|suXPFkyq=AGPs$q zIGfVn?gkQ2$=wgAZigG>@HnLCBI#;E-Xc9kB|RL49iI4$%mNe!vD#O2k?s9U0_r1^ z`dKSsy_sbUOnh$)_tYicza;WBD))Ej4a+hm-WYB*s>}bue*gOd!3q!R=H5{)FoHY_ zS5POHp!AZ6cQ)x?q*=Z zkN4K@Kp&d{WVB=XvAKM|-Hv(k03n5Hz#K91xmPu!2M5rgehFOFzBEA&z8}_Oe6uYz z@uNjr$c+J(%OqNx({&>bJ)YRD8i0xIvsH!gcS??t+7{YV_kHX5Fj>CsO-Vux46)aUw*nr!07X z)oZLvZ*p4&U;C8DRNn%LlHJ_0zlE?w2Axub1T|7!EaJ)S-Y56^L1Ecg=IsBV#x?|~ z87iuEZ?UL0$ZFZV7A&Vb%?I2xl1M?)N|P(UyF1^u#X~~<429eF0qi>yk>39~xdzrz z%;i69o_p7#*iuJCl(wMN=ouxrk(@Z1!W1!WjN2TWIy~cST%EwIp$5)b7j?(48 z9iZd>`5m2ugg(^2AY@QUl?>rz_sjO^EyE912{31 z09$K9P8vshwl#~g-#6lPn7>8USURN2VbOLmfbrZpWW1sBITwxGOF-a|9=53AGcllg z`J}~zt#Yer_F_m7!0U?_^R(7E=+j-<9eQF4)Ir$K7N*OxI$YYo-qfJNCOU|9GsGMy zO(xTc#<;-P90~QKe~3B2aSBj~c7T}kxdsTkkB>fny}#)odv0MmMfkdXK9XLI`(?qk z(eGZ;5E@ ziaEIbdRNJJwcuhJQ~#s)$bUJ^5uZ&RNbIbON-;IiR3E2tfX!O9CF6Epw& z0D;!giE=Bi885^-KxH`kFYT6i@&_D`%6Jo}vF<%>M{Fd#co1rat8(IZ{+o-0DY|4^ z=;S8rLRo}ME$%Ifye0X;&pf=IB^|^)p+`(ft>5Tr#M~`ROucSmNkXO-l++QS6t~M%_~SZgXT{Z z(@dvmIxEwHuGMuVyMGpA-+HxpuqqTJo>*{_DoDWlc5jSjI5mu^6|_xq24zI&pAu_| zJkO-wdz~n>l)!6LY5AK{=6tt}$Y!f@oD{_EC&G1}Jqv9Dd@$F>ja#;W(+|^>TIB&vr+H@B;GT%5RyOMfa)J%1;g4z4VOLkHUTeSXAO_9v|LmE7%y3oUoC0pspH}eLs(md=sK2Z)0EIQJs;NQZ zH_&MMnE*il2_T*+A@_(s`}>k7vbdm)=uRKI<%xKh`QfEwTtAuAks0(nar>;tq}tA} z?isYPe`kn134vdTzEFK*}6YXbU^uUg@P1tebBEW=WACj8gyDIfB4)od;(v}DL zaMrz=vtc{4;n;!Gau9CTtOzHw`0B`v*U?;nU^~7RSR1#ji>3{rdv|xAuwBjvy?pp9u z>kI*ofAHTZ5SXK{5f8b(i4#~~3;KdA0YMIXE*fGzQrqW#cL@jxu0O16B>M(YeYt>`DZgrX{K;)itxZg7j1##fu1Y3pQ+qQpq6XM@N zW`O(N`D+Bv^BkBsB0JLSJZ`r(lLSA>E-?ipj=WR+tNhY~W!rXW$W#HVaH5Jb542$z z{ndW8Km81CMzAMqp`oEU+j0RHfltE0yRsq>6$q~Q&)#jw3CImlSBOpyd)X`n4hNG=16+K%Y>NH0HDlEW)LKxhifNH5rfOd;D^fG-fY zwLpz@OzF71k1^GT@NU)J%tT#3belTTgtt_se7E3PHn{DXk)w> z^(hR%Bh7Qd|F>c}v=13ANc);=Gl`-@38x|!b161EYG1)a`FV`#utn&|wi2pPvcBmG zHxMIHD?b#=do!s-z0P0wl3mswJnJ+u@ax(Lur)Z{(rZu4{=Lnhn>h%5XVU&3hOZZppmHpj=C(gyX_PcV61&-Hua%*YIA09aB@hZZ@xK^Ev@ z#R{gpLwaa*JS>RyyzBUY-`cjmu6=!W@z5f)pBrOX!soP?AxL`1%*3$1u+6VzZ1kSE z=B8o2vbS?X@?(p+ee#jtBSV?{kFw0=F0*(=p@uX~Sz2tVolG9r<=F!hn~a;-?5||t z?Sd7fi4dlIi{oemlH57aqgTXfs@y7kq;fswv1!L$mr&=fuluvrn>X`fTXK~jW2IbE z^y3jUO#ZoQsVh}p08=rpuxQy)Y&e2T8I4HQEcg6%9eBA?U9V-DV@s=NR(XsGG{Wi8 zg{}dQ+<`^QXH{bH>=nXr(xILqIwkekz#s^a;Z!{TuC2GJdsZ=2CWJmOeHO zi-;wxx=X;eqbHtW?d{+~lqNJFJCER^zV;Z@pl#zir+M&x=Xd!G(2<*!{&Zv#U@~8? zE>0@-SB71s#QVV9jua_lFS?8<7Kuqh={*nnW-+wpoqqq;by-DGuR=m;L4(*bcxCCA zy4P>{Zd8YJPy(yitSNM`m^hAtiwzOAUD6fsbaz@quQ=un4`FCmqmC`w(nH8B^!CV( zr*>XOc~@b@H!X1{`I_miN+623(eecfj*_)f?soItI$v`0Gr$G<)!g{;wuHyW&Qm)5>9cp7|zteYdTvprC(U;FL+YBf@LU?n7P z-LiD_f})mExbVM4TP)-@7V27o8_7eM#YBaY^hCYW5DE7QdmCTILM|*pbwz27|3bzy ztCxw;UeiuQ%rY36E4DqP8|!o!YgKCmeoW&3@lP?HL=A}`0(332Nq@}P6(Iok z^^p{AUMe-lnu1w$UN_nT`LnRn0-fHp|2YY?;o7x#HWN2;%nW9`=VX)%{O5b3Q)+^4 z4kp#Hl}CUgY%k!ldPO1E-7RjD)trVlg;^)s(lV$J6yAP%oLw~*aBywdx>U?(CZ^`4 zl~rhN9!*@`c`{1L7aa4;C(Rhsa_SNOvb5*$wC6nfQpzrWuF*W2YXHUPdfC%!5=&lb z8|&GAOUt21*!~;FLheBEGHcN|Cm)}8QI$Fe2S;I)pQ7(hoLc%%gt!O0Rf?eMoBaiw z+Sg;3ur+Eq=LQ0X=wX=GZymcc9x>ff7T{P86Q%~i{K8V-J=hR_80)o7Okb@$ePM#v zsq3qe>vuPL-d+5C|0#S3O=NG^am)3Tke>fa=ndi_tTaScxYuio!z5jsYs)WQ2$4RS zpPDL=Na#I^6;h*jH(z5*B)<)1hX;&Xbv<1J7k>57E~(2+@tyM>XM^hsbDwC0m_;{K z=R6d6q#5{qK=DWV;$>%th}`-EwY!4-1`=wcVN8N*{n0?5%=){_Wa%7LDwi=fr)`s~ zYCDZK?Dg9kv?b8yguV#kRK3jr+e%hvzMQ@tB{A0Sw|IYL$f$bnAdTZCW4R+}dFC=t zu2h>R{chFWkwLo^+g@U;ztcl!&0VbF9pUxn=pE(ItyZah3ZCEeM?X6mqZzRQu|Kat z+Z8bz}MSzh9A;dw^}B_1qm+(M}11BxUi)?iQQ+ zJ@ZF?ffiN;R;xFNRzZwYPh>E@+8d!8bw4$@MHw0EX_jq%GP+L-KD_|!4r$Di2{CFnx7UrIAXM^OvU$MtdoyA*%rGXZZ;h;EP(HP9| z7$sud3j|ne8u)CS+T6o8@V-fYZ_JJ$Pe_>Z#Y^`Klf0e2L^FyZ{!&nN9(lieL%`b8 zZj0MTs+X5`lO@$pEN#5{7lRAs)g`u?H*9QD$R8fXjlTm@)euv<+qEM$xy4PuTHQRO z4aDT%xSLJm7t<2S9ylKdMu9ziC_S1U0#e2Wo2NgbqKAhXI2T>A|D!Y`(nSjpC2Rjk zmOMy$49i`&nN)RU(|w2B=-?tP6WT#$u}XdI%YEAF>u)XYzS!VrIInuNqSj)u)8S8s3NEHWwCk0ugD^;-qT0r zX?M}QD{6xuLS_VN!v~r`)ykLQnm8l+y?tg5N6X* z&(ql_)Xmz}BFtqpsbj!rcE7=g+23sTHUx2J%R+y1+J1V~*dE4t9P|o#OE+rgo*mz0 z)^b&>#{i$KPfz9BULn6qnt%iS1fEQfnm_lazv(Ng znq#(8(R_|qV3)^__ZrQAv zE)lF_o$f(zfuw8xBQf*^MH94T!2LJR7N=RN73ojBV*3CA6b>pDY3CmCn;zBRRsH(A z=fV7$x}Ro}UlyFB4`OE=uN?CyyD?%ZNtHvK9O@)U|CQEQq6#ou5jBUx)kG4TBmcxxky9j zg-F)Wq5Mjc!xY{8VD!O8YY}uR*g3WI<;#ZG>#(Q3#|BPbNdGRXjNCr!?~$d81^vy` zXYnAXHQ|I?X(f>yiB3m~U0%zc1IBEL2JE01(KktV_?J>tYDE}z5q=g323r64K%8=& zkXO)zD!BwaygJ|S$|JD*v;?KjgC>4QljL3jY%pc2~_w|+#UEfNV$I)2Z&4~ef6>wpf(DS^& z3?C2gEYLdVkIxNER(zflpB2RPq$DMQ3f_7bO~Zs`)JtJ_^aCBnH2q0t-C_jDSx@@L z%{zPP)y_NB=kissf>?zjlgK)~XoW&q3DrUIMkBL5KF!omtpyC3EdBfSD1!}u@Ardu zTj=1oD>F1Z>5G6heNYKzN!5^P4zuCy%;~l884IBS$TQzKeJf1285lyczK2Aa>6=J0)g z58sFdX4WC~Yryu{82`+790e_6Jx>J{c>evDt&EfEgWAu-MU}NJbB|(~VyOT61|ZG> zbq5ho_bXM59J{{fE8R=9>!uEf;JD>{#P`vLM)okYwCblubaa02D7~nD+V#Q9qVtR& z>!;&air-ZVl;t^gM{P3Zs_NRnDNSD1`FtTp@3`MOfD^3rbuE$6b$hmFrju$~H4a1P^U9F*Z{mYB>^Go@Q zZ_L*O!AkUFM?EvleI8n%1ZKAFQW(_CLTUr`?&m}I|A(~qjBB#n)_zg!G!+q~s}HCk zMS72lN^jDn1rPygp_c#w5do#D^sdsRcR~vh5RhI%4^?XDJwPCw8K1TGT6>?p&)M(q zy+6b#8fWG`?^(vUuK!TeJ!@|Q(uEAQfEfAeyqkirKG*Rk_W9A9A&?Yib`saUIFZ?v zRXdn>b8zE_9n$k!&&r1fZ5`zmt=$s#Nus3V9kqRPx3hn~#@D%u!%)*^>{9KqRcOIx zow{a5Ra?w_@|VQ4t794!Jeu00C82xmvJ2*ktWNFA5|AQX_KcEMW=;K^EtsoqG!ch8 zS0~M>o1^aJoD{^#=xcw?DD?XcEO1IB=!WltWZ$n(Fs}z&{`D{iFil1m_q1`-S-PI^ z_k~+Zpej_Q%?d{=Bkrpjc3c#Kso%PHC9qR+zefp57Z268;QFZQo^fw(v#*|W=Vcr` z%C4fD^l(6qa{Nbf1Kot~cU=|OYVHk595@ON2Ky>EV~r~ew~pGzM~|dg$BGR^Oo;#^ ztNzk1iaTyrm< ziuv?r<&OQydUN!jD_@`~oyqV>lUI5?eyaaEU-=E=9q zV&|l`)6)`u>QM>1S?COP>$yg<@a`(S;277LCyk{xFqX9Jj~;n$LQtaN=&^e&9^<5f zThvuaxo2p6{@wso+l;z|Q4J^XZ+M&yA;nEOeXqxpq zpWedejzu4t<6TYeVy+PkpJ=|miw@!VAeU*Obw$-z%gF*0O|h zttdoPT-N9IGO7VyUse3~OFE#B7QKivj`n2*#g0=cx~#%SOF=WuSGk&dKCQY>RuAVM zN+PkrwU(WB>w7ry0%{J{kCCwxx~J4wYuvw2x7luAxCVi+uTM;k6+BKF+(>;#x4y$Q zFB-+2_QJtVX$c+^%8BZOfK%Pn6Lya;hmFXLeV_F(vlH&V)b%ZpF@N*22N6B>JQ>Gv zS5&5E!0uwXO0pU}pS(vi8J;eIg(?ani{o`ozH$F`5b=!q9KF+bpO{QrFsFTe)=AM{*kq8CRZV9Z{6)a2yr$2I=BZ`P z;wmJNBwsuJW}An2j~_3_4)C*!~^WB7XXs?zm{1<<|D`F?E#kzBs_i{YEGcFMBZSHGiqGA}AbMYjl zqxKBif2*`Xwm%cSr9GeEeixGWTv_`Qn9R=AE>$_XbJvX6hhIAKd{l49MF8cQI}kH~ z-k>xq14rp>!#&RgURrq33yJC6A16$YmCX#Sy`ngq_0ADP-njQ7uO8(n=wBLEEvWfs zwNzgPcFzpIUz{%RyICJU89;OU>kyLq+o zllD86uOkMt*AtSzSkcoP$cwZw7)f=iosr{9v`LH^;4A$){h;+7s1i>>3USElyn4VT zjX7Q`*U$*?#%uy56rAoljwzGVL3HFq=$PA%02Mli(!s`r0srVoek| z6m-s~R9lQHvUpPeIj=i?4d7i!EiwBiqU!rkR=rw+LCi?d2M-v-BWB-6H)^1zip;4N zXMD*`$9_DBwp%HFq4axS;3-JRJ6UG(W3!w)Snv^Sn23wCVJGXS)svo|-t(I*5VzEl z^sW1*YV)r3sAh5eFL1o8@(bgIuiZPgFSi=D0JBlgV=xC~g(zFXd``66O%wJ> z(Y4&0=cF_09lPIbh)I9)Ro8OlSr%VX&tcdm2X*78Dz^Puin#;~eyn-j!X;3%DYL-KN6An#&ZkesJ z+vRdJX;rY|9Z{gj6x*mL>Poct8Er!7hcWzmDwRTc#`iaEUy&);Jt!EyzNm@)eP7lP zS2dCDG=TKd{`_{uVcL(JwoC>3MHwgqbfwH*n!7P>7UgDjxr`Eu+Tydx=p+h(PAC+5 zFF;qPaL+@4A^FxTqdQ!>XSIaf0`stBf?++}{iOARu7;0ZZH$5b6~6b@USgPSgo>K3 zi21WcnF`6Uy;`oXr~UoJ>pG;MD}DNrKU65l=ew9w&pocM=c?rlWwLJ-tD}Z=xmHcj zUJ~B3wP=8!%)eumH7K`k^-Q8+wjQu<8;RExWMWGibTO#+obMd*U6}4`nGi=UI}ybL*yIoA)O{; zU7oC%m8u1Oy@g<+7>DW8V--{B1T$T{l<5&G*Q7+0PNcT?B|HgsqF~$m}&% zork%pe$t}xL^Z=+iC8i3swT-d6T$83MFENUyt@8!c+$E8P3=$*xMNn`?^ z@3LPEt8whFNvGv?#p0#7?M{lZ6AN5g8aG|@^qD;JRId}$oI(2(t8=f~`j<+U-Tt&j zneZi1R6MmQrxs5hhO|utF^`F@a-+!aXC&tnDtd^P6AL@Y+nFIKJo#hoj`#&a6tPpa z5*~>`sSLe>zx;mj2)4v|WP5m#3EgdMdG=se3_Vl9;`at=Kac1Va=RPTO>Z`&#NLzC z+~qzcdWu;QB;Dj$mYF?Sd~1cQK9ddu;M%Df6wX{!53tx#I4zo}Gom1gk!gpd4pl#M zgE?KeLy~tq^u70=WiXg2e7-#bB&_cDlAt6!M%7w!Y=|v zBw;pc)ed_n^7{m1l{U${kRr;S%dfJ=aj*%j^$*qU`Q<(vv!+Z8h_o$yq#rw>9#nUXYA|+GK9r~>UwkZ z<^M@=nkwv^cp$=;RV>oxZx{b5XWLuj{}~MCIpueLr#C{icirbs^lmSmjC1Wl;^fgY z^wAt2iud>nh~Wx%?mY<6Vg~&v=JH>lV8?lXYg+m%W{-rD9^-=IHyh9tHJO_guYVh1Y~VokC&9_%}>p9t!q#_fbV-cI%pIi+R}~BQlym|FcB* zq8oKTeVl>0&4NwNU0PC3@youE+lV>9g|zR?@fllS3Ev)wcE;t5kcJHz`(r)SXy?oc z;V(+t({&s?xmav<;wSDdr;OaehHfl|69QJLP-l;TM6=0 zfz(YE9a}6k_SrCv?e)?tWFbcEAe)*nx+!#(vBaDw5{oU2A=*b`rM#1OQaR#PzDBF{ zQbt}_dy!GDceS3hU@|zY_A^t5bsE)iaBy7|iY{LKl<2={g3i1s`C83d+eq;wx=p~7 z)L7Y$_g8Lf>FQ=t@YSk&;n!9%7Hv`Y_N)MJ5nNL}Rs|QKk}ipink&CdQ;IO%0UyAI zhK$`_R^YNXMn#lVerIDMAn0vl!w(AvL0hy$rP`rv8W!r5?$Sn|ZZ^pscKC58_T=M) z_rL)=@A0OH)jl?Z7P7jBEo{?*paW#m@UxVdd_loF?$9C42P~j8gh#u<*7OFX} zR{4YKdgzIX)OWbb&)VT4$FS$;9p_QCHJ2ZNR=oMzV7OEB-vY)+jd!>k7mVf+(3KPf z(Lq*SFO&fj$kqXG)5u54Gl>*6V4OI=x+}&-X&d;UaW5B5%-U&Y8{0z~-=l(z*!eEl z;(jdmg>a|q4l2~7#)u&0@yv5RtULI`bhRdM(yRNQ|qlmxsD;iRnft=U=d zb;kxJ-%S?6*olVo#!f6T`_wr^?6h#K5$^i#$6SLfqHx^i2?C9rZ_C+ZShII?$a8hJ zOQE)V1b}05%h+3De&=;_(qwM3%W_Pjp~?S8(tmFW46xkA!nQV5!jttoIrCk>kPh=J=^@xuqh7 z>FtYTzy5!;{%qg#*k1nkT7Nbf?@B~xg)$jGsAp2zTnF_znEMYL<2M9hZv_8{gueN% zk!DNqBk$V$FarQ8!!zwX1{K5jfAq?mwJ;V*k*xpM45@ozFF^Z}OuFfmhv8wPs7eS% z3){Tvq#%$=yI6)cJJMIiV)`QIKRK^RgTEL>D)4CEj%E zbZ!dvuE9_DN6HmFu;rJ+E@Fim+P)NDs_(7km8c3=H@zJ&)coyjA04cL`?nHnq{dO6 z(z-y+AN}@Z8BJ`j0Qm$qX(3aSnK>Pxv9DQeIYGHBN#R!kr|+OfS8-Iqbl_S3Tast6E{XN2_tOvf}Ax z$5piWGHK;dxp_Y4lqO)j9g>q+W>ef+0VbrjjBlsrnda1=Vt6s^v28qLj8tLhV%KOm~!>b5Emp%y3hzxNdiamT>pIGMPp15IKcALyCnbg=J39p%w5`c1xF z_q>>Q-R^N#%7e3Sg;mWi?vb=k|GM5h3cpm}^lCCSBa1JZy6z?mJjZ2_3&)R?_&RW) z*2m-<6@KCcl;nNGCm)}MZp%nbQ4$mugn3aJqX$RSxD$~owhSiUfSt8<2_7(ivEnkn z6&Q1frAriDf!-Y6Xjw*4ePZVHLX%`YY8`QteBefY;iIa!R6luKaNu>3OcvA`2P@N? zI=TOrP3Q37K(+()&U&62cx?e{xMPLG?c^@j!60%l{2VOf#QP=|z%Jm|2Ppn>P3mW; z_2$IRr=@IxCQ#BuxwTlLs1Shv9bHGSHsX}yL>buK4vj{>1J3YwQC3iin(QM4NPzzB zVz~SLvf+KGm-3R(75$)#+cA^V73Z7qN@`kQlfil1Nt2P*wIOq1cuU-B$Ugl+NO~_l zoJHEc?v}K$w!}uY(9si1=G=_N@GY4$WMA;-48VwG$mvkIB8z%lq?fV|W;K0)YXrjL zuaRmpdh|vvpJaBk)vS*8H=)L$84uUhzg}jj{O7n1{xhzTph?%L6@B+Jht`I7-<4Ih zQJo|Vbw(!dMJTHIC`%Nnaoyl_HJWkBbxUB(B5Y7!&{uFnXi;XlA_OQS8BOy znk5d|ICO_@-?ZvKpPVUhz-T`EBrASuMJ46->Wg(!T$_w+3~Zl0k2YI&Q%??3bMo^C zMl4hF(Fcj>Vill&1Ve7f*cb85t2=SFG6F*Mko>o*$Rq__(^UU*hTwIHPEjxvlIE{x zjazjr$2F;Ls}vr@XdT*RSy9$D*Usx?uZU#nefAD}?h}L=yO%ujSMs6`$%YGVz<OH7j`X=?-9W!4Y|+86o-E|}`)AaALCsp9O(DtxBDptgCMZK=Gl8%B;JMj!39*~& zo2BMc@)$X`1v_4`yn~yI4O)JGd!kSwk`o6Qj1@C~y6VrTzDZ%fEER{~V*O*3BD;m! zYU73)WRea^Kpk3f3@};)0MM5WxQVTGYDizSOACwK>#<5us9cRTJBUqY%ndRI7hkXS zPY|_7PweuB_x}0ZKQBA1ekOn3NM(Lo2dv|(H@3!s^Nkg;qru|ZuaO{N9$dHI#J5B; zy8&VBD3%6u9^w(Tec%8D@f;P{pC8V<4jB=4S|Dq^-98n%#)o}A$(~&Q_|QL}jQS%? z0&lw)WboqPB%}tAbmc=F13;*o1Ae;lr=eJbT zU`FK1M$$a^e@T44KP~Y9{g1Z-Am_t@LZ3NT1qqLhFTi%@oo`t6yjvQdL2)W^w^s;`Gt{GsKiXs0FGiCy#4Ipx>{_KnlcWDgTU0o^t_^X7ord&x`qL zhFGF60UjvGW>~eONIS>7mq@%*a9!Y!_Fb=D=3O`HGYw+N930d!^2B8@f(_5mz%B{% zw%rX;Oim868s@j^{f4OE+JG3w3b*#SR{;7)5 z=P>~#e&e#cH7^P0$=L7gt&4xSNA|;{#5Mc+D8%k>ypBNU=hnU3paIMh|7eN)c5wuv z!)AG6+@0-fwq`_sS2Bku7W>=UZajCSbh7^n?CaDcSn@pOcaz3fJjL|cgEns2L)m=F zz<@?<;zy6v%F}jQGQoPZpK9In7*DbaJ~{_LL8#;tj;;i5URruPRU@=&sb>sfWXp=2 z=ZikTy^Ndxs&uP{sqR@T8N@E-Fo}5B_nF_YXC;9Zh8*WRsEStE$leeabVnD|ILSQu$liBWfHYoLtK!QO? zp5n$7Kl}sRC1^pw(`(fr1SH$5!;>uZc)?S24Up~RCs0bHn?gp0_#-$1Z=^SV-44RB zooxPk!r(DpE$XtA?YOSV{sb2<(NYT=e#~AOp-hZpDjz8d5C*5<;2(Jd6@A3R5lc@} zIWce@QvZ2In4govp`K-!ek9!J&Ewaar~@N$DhSU`K)!*}&IdK-Y-z7_cNBMlu+2oz zuTM`I&p}07WHQAv;!C>-{Noax3hP5w0$zARA}1c#(k}cjj97(!t^o&68e7DP*j$uF zU*G$wJkjHy3-Q}5b?=E%uT&v7Z4pnq5I3XJq4v|8fw=XTr-A`A zOI8%?OO1|v0@15@3UU=?&pV-LrJ9(H%dQ~(^_xxiP7=WOwPQd}CSc#oGO!unDyNzW0bOY0BQff73?@-9f422U;jh&&1>9C|68 zNmJ1*?>K03Nz0cRL1SD_nC|1 z!B7HSS?6wVk}s7x{$Y1l^i|SffvD4tC_tP- zBu@-Hr_cA<+ecBa?MZ;Olvx5BqfKW?<~k!aKG;cFE?wDR!~MmsU2E=aXlp)s0c{HW zSSgbna8SQt$age@7Y?9DUv5M@xTL`UdXUr zqvH^Nv}#&)y(``fiJtOQA@b6@`EELIU3IUVrH^8WNRH?m(YGHxUKOl_4RurJKU_`7 zi-5NuKOBC!aIJsUhp@ip{@Vu(dn?zSB+&U_R#5{e#J&A)NV5v7O`+~@tv6Ss!gm?* zm)-qg@8=w@f00`#@9V~SwB(DYlD3`<`#|^ayK<7dQ{(Hb|GRHuQUQGuhy^p!m+#v5 zD$Ii1;y88YT$kCnVXet!J> z40_r^HB?=T^mbj8m+XzI`EOjKy7(ZWC&#z=Zdu=V$(Q+RRljGUNn3o%JTxlOnR@ij zxhMIHBB& zR}`eNMwiPaGX|>rL%H*;w+3~p;8Q>B3qH2TMrS`>(LUvtslDF$1F$T`L_zAn_fBN2 z2mKXU-yx=?lO%Z8=kST5Y36)Yz06kq-*((gF_LIo%Y^!RCCkY<1PxPJ269rCPuY#O z{wuaw!hp4s?9sTP&mCGmI=Bhx-Y|IEz80JH@B~fq!L?e-!dO)z@o*m6bE**ENGa8B z+|gw)Z?S`U3&H23emL%p>tunRZ)vAd|_4-|{}VO`7b z67AgxXL~IFH-s)ti9yt_J|nuQ{O%=%ZN>{47I%~L6URPtNmIZ8T2n~9#x(?0Hsj4~ z)Z34KaSduE^x}hvHlW3faq){AzH*ZNII@s7WNV)EQGKV>ZBO>3y+-7RrP}a1eHp^9?uS#JKQEvgw(}m!yXTIz${nj7nO{6HawmBG zs=SN4E3LUO98;v84?)S=Znccr-Il(vs%y+8ua49zU4<~lqa*Y4@ipkky0O1^yHD$7 z9<)N-@Tpg$L%h3fo+f!IjunkICXRtQ>l`DPl)U)zqM*W`qJ_HoKJUpapunHMS-xuY zoAa&kdW8sd+{OqMa`ZADAnY}fFJ!F(I!`cGJt2;h!wincKe6YwgiTW-x#Evl@sJR9dna2d{suh(o{**Z;E;0Hd{rX z!)V%luuK}A_}rD)WXTXcFuY%??c^n3=yO!$YAx@TJodXJyMC*I*Vrwy!PR=v6Lbog z9g3_Z!wjm#JDvm(ZOI#ahw1>65eTbg%}bVKxdiE@zAvAR(Dc1yFt8N!iFfRe(T?mc z@ACYt!`OJ3RJYB@Htz)BZ9Sg&3&6?MkHB+nzv`oSxXm)b)FN3B9e%)sJf4E$kU;Zq zU%7q?q2rn6+G`GJ$EV0=6jwz@E6la68pTuw1T0r@ zk28^W@i`@wk%Y?9UoSErVmd1yXQh^?j%uyDFxmT;H(ydwTb?xPpDodSn%^^3eL+YM zje%(yxtDUr#n2&N`9#>!NH{OY!BGV_%xd1XJ0F)1NRGF3mqrJL(P1!w7xmaBm5Wl} z6OVT7WYqFnrjFo^f7KyF50t1=M_f(}Xy}T4JhxG%4k0ZW0Te+ado+l}FTAxIZ|wLy zBV&ivmn@iw&K~q~oIIVZpPt@~m($~vtw$i&kk+`r(251EbFjVBt*{v*S?-UmhjEEJ zTHp4UtIw~L)lkIHD;{pebIw|&zyGKgU&Z&fnz%lDuIXx|RkURM$E7yX!~4dsTdMfA z{_mA{*X^iTYYHnw!{L*{P(D{htS9#0Uj|E^N}wsZ zNEc=w_V^R7zV{l6*}YGMr-lO&fBIHSH0utP(~yFPN%@`HB8Q*VMSi0xsx}?M)f2f_ zYY)FpxyKpu3G!u^6i$0q6P;!QtOR}BnuBp&mLrd=4aRq`OE^^8wZj}`d%kWRLs9EI zFAw*;+C^)_Z+^{~b2wfd}fA1M|F z#Oh}V`JXJdcpo&*J%2j9WFh03p;fxRHH5gob0r$)ioLJmZlw!(jnlpZWjjpjXoz3o zly>!x-7&OmC-3f4xq?~U-P&!tpHH1=@#Th->F=MnHR;=+a=ShdTKWNcq3@Da6UXC( z`We>;npZr(T|e6{52ioxcvGF=1lPi9m$lzxXseQj`tk52`;m zICkL^OQ=)*jBy9~a2M=s;a$s6{MkccmHP%0gMo^Xlel+@q8XHl%=X>dM!&l@n&C)} zSVyd^zFnsHw1rWuD^Uubht7%H9^ot$D84->DH4W$tjsVBz@vQbTS&{t)!CC__A|A( zE>9(bPf4Mz+PwR#1h6eX5^-)lV{f1nyFbwvTYPzv>0H)-i(k8wy89bFVRo#U;Xgo$0tV{YXBc9Lu5wW?0JLXN>>Clw0Aawq@t)*r7T z4kCU@Ep&9usd)RIojrlYK)$$k`NCMmN|$WvV+!SJFO?%0_gKFlO&*^cpR69JF_F}W z)uEqKv{S$3!MvZWT&oq3LP`<>+|9mdRI0PZyx-&?0MTIrJnv)SJYHiYcQu&hnSix) zXG?!w<-<6;En*b;`5J4Q&FE3j!n4jA zp7_tUHJwx|qwJRQ7fQKeC|v?OBQAb}jb34mS>3JFj58m;a^+h7^ZQo}jlRBeoO|eT zShwT)`z(~)bQo$?!^5F98Y5EtV5n@@NB_g6zE<;{A;;HZQcu+ejd@Sg18NH z$>iGc0OXzOCB(az^8xX#Ie6a8`>7(gN*jXV{WDe2N|7|r*MMgE$m@FL{bYpZtx)f^ z^bY>DYVq5%GUfu+Teibe3j&7fZQh}Ak&dUV#*-9abOTUDWy^!IS*bg`hANo%q0#I7 z%aB(o0#V`R+D=#Lj1hZ;n#qH$TD+CwIA76uKcf@(8E?EZYZ3j9ML>IcfmM@M}IK53LD5;4CzF&8YRQ+wV-IbAMKlsMQn%jgzj0hJQ?4p87fD?Ty~M10?>gh> zPC0>VHmCb~qdmPO^JfqB9oq#gbBGe*7lIbj5_joa3)PccSwEvuMeC-I<;~wu+(_GE zy|27u?+{w>!Ii$US>5^MI0!q0tmP;O;bVO<;MaNknjGMU_YHqp`T6vcO!1_Yr(=0y zVp)A_lxZ!05q#(OVW@*$c2}9z&nbt4canE(KHw|mL_?Y43NV#lCqC$xiT^GR?{dn6 z3Oz7O8K3UBzi=q_>xcI+h5Yo)vb3edL@-pQ(^$>VDzV3Qw2XEcEtydYl)Jkmkm2Y? zDXdRr0v}Z%ba0k4uyyyA9ss7h)y49;>!^>~b7enlAJUABeeKM?ks@>KY`=)f#;36D zQxSPJ>)0VtO#2hE4ZG8|A(>1uHdUpJTQp1a6~}~nGlHb!=p|kAKi+nA+voPxdl7Ww zGwXVyWn2GTdRcYu`OfP8Nsb2bNDXaQe4v)p*ilXbinMh;0|qPW?ByxL-+bSKLI}{ zX8=Vw2UF3vR}YPmNW&dH@tty8aiB*M)NHuzQrY4L`n`Vg&|}$lR1`ykyLb!0t2P z4{oAe>t&l;-r}YSo*&N-#y#2Ey!Z5a2ako_E_BMd_K4Zh&CEpw)43&351SHXU|#j# zSQwc@7|DsKKk`h|y9j^RxDEAf%2U~$z{g#P#;a?u$cVnOvrWp{B(67#>~=-H(dw3V zPm+*SvL$51Ubk^I!GDvpa2Q-q8GWU5K(zsGe4`6Ja9yghkBP%Stj4$|urkT3hBkt; ztp1G3oslPJm5|-t-+(!_PUDw@cPI&E1 zMEI4R%I0sSV0fJ1pSQ=3-IH3j%%{6;c+uI{zM@w*)d`Dz6dn&8_D`j+@1W6de9GC|kLaF)?tBg|kV?)vL7&JM==1c_-2 zJH;Dv?EN={<{8VyQ|+B-2eWH8EK}*I*KTVMoqgOTSU4nH<$X`u$hWGE!T1Sndtr>D z80|S~9ibE;s>@JasH?pWY~q53pqTvJOpbX!)w90sZniA5i0FyK!OAWO`UQDCnK}Th z4Ll~u4=HK0AjV00_dnOpRWN*;Nz0MXh?V$a9UH>Wr6B`GP_oGwVs*rtbJ|za>?@*iA5Xs$@tCwkX4QeUzCo_Q$gihm1fa{77AzF^Nq~Sew1sHo6g-e zdY~O6=1l*Z%dGddeZJD_kdUh$_jP0rZ^ntD`3*#7NwGk{ry7I#yYbrw3mqEjK$el| zRmEuQRxL|4=YzI@))2;AocEU>Ak51KM|_T5N9l5R0(TQuxcQukDB|(jSAQ=IB@;E- zVMAO<7W`{BooCM(9iXN@{ZY_WfkrSIE0MZ2+NEQC6I++ZVEEqA9#dj)w4X)K-zAtN z1!RX&KVI{**Zz)a(7xo80|Cajs%Jykm8CP|-bTETz==XM%+7ld@e=_Vu2_iy0rYvq zJi)e|=h}F3&WkqtzZfo0h^>oooxMGMwC!66U~x!RACJOtv4-UfWWPoR2MOi%@MI4w zSH-h;|JmE>FV4KxU_hTFl%4Rw2phB+81(N7tm2O_Sj}eFayk;x=SAzzeZB=Rj{a$u z?#>gX7+A%Isso8_BbZlxbheKVzzls2Y|=Q@t-~YIIuQJW1(;N#LwK zoenEPHfyn}Vrn^GLT%+Mo@M)2`i+ilXAdM`Uu*VsIl$k2K)r#@ABp60PO3Zk#qAoc zWd?(iySEyuuPkGCjBjABuiHrwk^_AetRB54yZhzIBIepfm?qXAcE+ipb0|AYSO+Py ztiv$)PH=qVDJ~wm=#i!a(VAkndDMc^{-C$sv~_;uO%dDvSfxHHu?e_8=0ZdZe7>7Z z|F+F}d2q&*0!{QbYwO+{t)23O$P>fubyVStDFUaaReXf!i3T#)&?KE-^-@mv;v{iZ z5j#PzqNy24l}Y~NODU*PQ(gbl&k~n;KjIIm`%l-Bl6NR1B5bEk4JFFahdbe9@kt`= z(M(27?C{#MImfv4Wo5V<-ll@IuI@FjXP}R2us$6%8Jdh^ZZiQjwr8h5Kh{1+os+_y z7!h{C!>#H1Fd3{V^d6V9WPm`l_4wFpfKr?ZZaL0;%IReLHmg1<2Lc_aICJQl(Dlrc z(ln*#EjLsDr#`eOOm6#aoKxp)%m6aCiF#3YL8Wjj5s(>tdc^H~B##|7qlr81T9YuD zWtSnFw!_!D2tD`IM3^|R)|S@U419jT7e0U1>Xf-=^f1lyENZhMQ#pUe#{y{1GpHZO zpZfwg7g)#+RR=hHZh2H^Vx>0DsMJ&jWvC;0B8~rYo8N`H4nLr`Nnm@mT5vi?(EGSV z>RZ8C7I$_Bg6$KQ(I;o;$SiBMcdOFHBIzO{PYrp8_BOQ!4A^~&wADnYZfm}lHuPTX{2pVnb)C}7jeT80_*;q#ZrkE*fH(5u z=;~f9N&_N2UmZqVfQTFMx#z)6q*0JkR=2w`4cpCRPk-#le)}b>Li%?80e?9)Cm@kq z4E3tSLLEp_xOB2d|j3oSK`iVi`ghm4Ym zNx~nmQA!kE>QY{QSrzb3rAXA3p@y2ge(73rx5v%JY^%mNb>~A5vM)bQn=08f2)QPn zhdPD`l$6`;G6FV}t^K&b(Mw;wx+$75>DyUWxvoYC2FnST zc-B*n7GgfO^9r8G9aVC8AaZ%Mw@6I*GPb(;oGCZsf(4DQn_Vx!9=iE>1Ym)&Q?R9# z>*t&$Tw^R@Eob}i-;{zJlMf3nvLyy1t?H*tILsQU_~eu)HKYd$Q2m!-#vw0;)@sw2 zMqi?n?@yYQKRzdD{J93&mm^93@Z@`+t4~}1r|&C?13<(N84Wa{Rk`(EToYfO5oXpQ zY>k~g?>^3N(^iDKSbW`KOuLxyIr_C`vmkU^Bq3?LGkY2*)QfQ&RJecTe8sjm;?|^u zjCov#x?>N65hf<7Wyh3)E^swFr4V9S^_lzUIZN8cL+*60OctNJVk`KCpk9imc<4(f z=oHqzxrQPwv5}rLH*~$jK(y)vXK@Lx#XM4M7r!*2mEm=EOzf0sEL=faI3mCtB(b9py=$%+n1C?z0}caMlOSV-imGNEns(bZ)TMHTR_h8M*NF~xSdJqj zw$pYej*ZgI@|RwyB1Z^^duu1g?fX|LL{)8O^B~QdE}dmGDD5VZqA;kmN8UN^6M^gS zRLG;X*Hbu0z9`pf{T-~p>_|qddBo_o3s(r7W3>vBZa+UqJNPR*xVMD&Oy^w`wTaw@ zV}+&PKe=u@rX4JP%<=Y1-Or7izO>cxZv7J3!RGOkd1G+pKr_wG+U|q<3^HrF(l2~v zX!ohk)X2vBG&HX}`^3&~Kjx`B2p1UIJ~Lk1ikol?D_OsJ#{8sf>;R^z=5zRu(M$S; zSrPP|M@`Ddio&f4G1cSG+e(s(U|$`XKtl z0;yNVSKs`e3!t$3QBrf}YxdpcJtmf`Adro$j5fbB=56%MLAVWI0me4ZB^Wl;ngaeB zD#t-}JB17H=w+(5t@o>vHr1Rm)ew*Kf2tyhmAJ^%%wq2}aytm$P>fRv&*i#_^?V<5 zEIJ&yYYCrTiZYe;>|pSHg|4#W{;+;?*8Ou;N@V@`hHI?(joWplM}z+?>r3i~rnLW3 zCGa8N&&jBigQzn1Tmo@Fq9)p(#pjnO#~2gjuC!Nl*|P6A-o8qn!*c9*h1Vt8b8FA@ z`m|Q^)y*uu6o--J1y6)KVff;Z$kq5``EnjdVeLB-)!I%r2G`VFI*duRU168>cs4n! z%(fOphk5RL!adXf_5x@L<&>hJ=F+Ub?v1Y7RS-7Za=*b4Nf1br82@qo){dl7q!J_s zVytR|JU%Tu_Ww=WX49_jH)l2WZn${IV?DiQz0M#)YU};W;y46^RJk?5F8)#hz+Cl|KIRH3A>CsZ>p{X8*wnuFKWEt z%aafE3rc2B?whJOU%Bgxy7YsiOKoF^PrR^EOTb4{kzqKWVoWsJ&p#(?P~yZsXJ*h! zr4*z8KvvV~;tw6Q=o`;L-QC3MYV%!gly$w@>-Mj_4<%uFV^8@oQ8z$2WNn-C7TRN5 zrDIEVAC|gt)i3o;>edaT25d5PdG=1(&lfZ)phhE7i{2g*Z~c6h{(#6oe;nP{wu3_gTj;Y+gx<|zol3;B?Z#$0?PHN1=`w-B?6#Vz`-R^e zKBHB?s3j~6)~E}vJ#_@|{T@_&aw*X`cV@{bTysA~3}vWwk#Llw>1AbhlY zmE#p6{-GVb?Qv$8*8%F0KYX;SH6XzU>|C=q_U>yUybP1W=q3p4wDVNw-Y5I$ig1;x(Y_B0 zI&Vagkq6!GJRRt?Ab6Y7R!j6At9|h@XY$2`X4!^f5)$)6k`6wVUhC&kBALVDmPFf< zF4xL(s6LeJZdA@N_3E%`!dke6qx|+;WFrM2&b9sC{0f+8{-lDDX-|1G7=J%!#P9JvHBNW!_~ryFfftFzyu@ zPBc%LSeU*!*>MnY$ZABaRI}uwIdg`YU~8^|@b)Z4t;`?M%%3m$MU2!%%-b-l zet4feNfFCcoB3Q~&A%(xN@lj~#ORB-G2^kR{h3o~cf>mbpxak)JoMr!(Jn%cDm#YG zDj%pE&m=M$Fuurny`rUA4$_A}K2YPf+Sf#HoCmB5ubYDDJol%ATxY^Wtw&1C59j!N zvx9>#A?CP^d-IVKIiQeifk`JgBcR0pH0aOEnvaLA^6NP$uZDw0+a&JL7~R?bd8Nu7bmtk#n;jzWJbgP z&6?o(?Z2#Y-~<0RwQvRL*#E{wGm&}Cev-Qu(zHUDZVXzk0kU+v^KZT`Zng6v3;F8y zzp0APT?4|{iFK!9PNaK&5InNtri%xjRVk_*n z4}mb|hq`HsvS}!b|Er1&&XTU>ybzlGi*GK+-?)1dqI?hF#hAvaL^@)5cCXvPOY2kneVU)gHP@_r% zIV!?i0m*3HI>JdtEzmDn!)8tqsF^d2j};GnPt+tO*8i}H&*u{`rlhC;tP5wA9wkawA1>v(9^$gFu)u>- z4P(Ci7t^i|-XORy>(6wVTF^`6kE0=wi|ZPxrh)wf;M-FOOWM^)PgAL zx2Qi=5Q0yWmN9Uh20Y$!r#Z!cD1uW@jusLgm_7UUxwbH0B|)rLEADS1XNDYGG#59D z^<3$o#ID|y%SYVnyKHYvL%n4M0?c`NV?JI3^BbamVoa+bka`{QHH^tXYCs{x3drpJ z{kPp+{HVx>NFKm3p(s4yZ;8#4DCgk%XaTg@Py?W#md>u$A1#)Z*nDDj>`BWNLki59 zs@rIfzu`Kona}Cy7fImNP*KXq6+RAgCP-YMN!p$Pa4w%CK4`FW}59Qmwk1IthZAe0; z2w5WQ*osp2vSv*}_I<1~QlS!(Ez20PWgYuA#w2BD>|@^{+gJ?;mn$0zdF9Eq%$+1?-wmK?D5OTS~`%#YGOv zZjBzc`T?OR!#4Vq6gc@*op$o9k6_%;pPUtU4}*D;9RGi957c)m?lJyBx!e5&$e6R= zpOnA1O;@k0%hD8$*XhjdM}1tU`)%Szn}fC;5gH8jsk9rs zNk(`n?fCTS|UT9rD$U&ROBiio^Q-+(M z*F~Bz@GR(uN3exsvBy+OGpEN(#fQ2#dv!f6f#T>Qg9KtqsYyA^!COGJmkr=^JlysHK1cVM{XY5=!|nzzD`~H^ZGOO50b08JRc7U$ zMolqohh50au;RU+3H>1fG{H6>zfAg- z1xWV}n$HCd73ewV0&)qP#cbJ|qC|}>K19U3(YzIhqBK4%pBq_M0giuOW7;Kf1h6^slWI196m_z5LfgyBf*fgqQuTRp<`hcN=-%~Tp5-FP ze5z4NHsuvIwU-lhINA6hdDj3I=Q~DIDJWimBs6G3idic`8m?#-n?r+ zPm&QMZkb;1uL!Y~<^g(k-v8}#102e)4PE7;y=Z7$-yKVf94mBC4mD_jtKYC{ZTB2Y%835gS`x`bI6eQI6-z=N*&M*D78}l#Bt)tmnsyy({IujRfyq-O(QJK7o6LA%n zw7sI8bRT1QdZ6e0kZ!@sL4*{*dZ87xCM~koI%s~;r}TAvv3HoUjeWa2jCNESJMY&x zU_QJf)=ZB6(w+KWfLnd{v&VB_4J`F1fkt1W9uG#I9MZtTE`_Kg+LSn0J?2WQJF`2M zCi2QmageI5_TI+~`|TEiKlPG)!9)vddP8VldS5Gu$ zcVn-o{ro&&a@~&=Ew^!*K%ec>hHjkU>AonNi>E78e0;hUvaZ?)M9-vfTw0nsna=SY z!;xh;txE~Cze398L7mN6>h&+$_L86UFG$6(0s}b|0Ep-ejE>EpOhC!`#(BSLm60h_ zlMj5gC*HWo=(h3Kq8VQ8Y}R-PCEexgbxu<-wo-Hsp%zwc=O!!Ic(>#HW$fWDErSB` z@QtI)%Neaey^>iKS!B8z&ja*|#1-ZPY6W2Wjn}Up4z0?k_R4_mm_m^+7a!y{nNPbQ zbPJN5JTuxN9%jTl0Xn$H4F2li8obILy{4?)1(L! z2mEze!nTjz#Jq^Q_}*x?i0(J+sjhEd?`DoP)fu^k6LqReTnok(*3V??%3BStsXahj z$#^?M$;)V2;LUC5wRkxB8;Uroo=tF1ffyq(X6d=l^tdm-yAQuAoNQyJ>__>X(DTA2 z-0p{DO(av8gR3i8dS<|;X@#H8KO#_ZOZEYx&SNhYEI)9!_?FM)g%&7xw|8GO9A>i@ z4;A0%^ci(k@c`IF;fNwZJ^xv{|MOvUWAOy_Q8e9 zSP3SA(Sj~e!+^PT8I_;3n(YCnK4D5WUbCsiI(e-7pXC_zAF-8RoeXr*_r##;$k}EU z^ywLSs`qkAv{l?*VQ%Ef6=-1e4%rVop&n|#HD3h`D0h;MhZN%-1;VzcwN`Lfo+qskA`0Q)+XPf1A| zr%nQt=Scdc^Uj@`Gp;|6vScfPjJDygFPtwtt7xNtD}m`=B*g36AG__4x!j ze4^fDk>^LK8~RYk0(SDn&r)5jO}B5m!oj#3Q(LA_<2R^;+;Ev%z+s)ackC_m8%B?1 zIQ%QE*n&JLY}s;$XX3gcb#w$baffjFB+K8RV3YL!;o$2%Wh9Zm@eh#Jo1^cJaskem zR~R7r9({YDQEAO#$k^W8j=YncH+v^EQtn|jTbyTVbkMLylS6cwbMZ+FIxTeVw{P6! zd-FR5uA9wCKh&=7d>eO1aW|M{SWk!oWzdA1^1oql32hI=Qg#@S*SaJMC|xsrVWj8e zE=_+&qen8rHh)4bOFZCSJUsxb`s3i7wy&R7pq6h!(&15Ts-L-1Y&+U)QfZN}nVExA zp*%Mz&5^d0KR>aiiF?QerMr2|hl;isISpO-FoTai2HCcX!yFHeY*;XS0=3xD zcimhm`#4QQL)XCG0@tz(15$4$3vu?b?frguYqvtX1m`Ky&N`X7d)7AejS6T@mS~Hk z4DjHf>(&#+m7ZHam!rw6wQ4)_$J=b6)uUdac6t|pFW!!r*Va9btnJ(+VIL%aQ7=J~ z9W5E=yN+>o?T+fm@~VERRf5;_W&<1xjc6O1|A(s{mcVX%%?)r=q-Wcnd~$b}=~*agR;guc*Igi~N{<1bYuqIzpCPOidw znSDJ*1I}Ah^aN?8BHK@&-qKL2)$vDNtcxzJ)I|6pu9ZE^_Ypbwwh)qK^6m<6&lkEJ zwzj)7DangpvTc5UYYo5R53TFw?0nU*A4$U_vaQUoxuo8P?7!>l`3xcx)w5P`t7;q$ zCi8S3i-3;(L7-V-+u@|)n7G?aq>3$86RljTAg}OrVruPatWopo&Tk`meFk~Fy>e_C zbd-y}D1)-LlBfzmk{Uapl=ytj_VUT{(BLk|PgZSJdlEwRcAIE&sU8jNZ|vcSQ;@eU z%tsSRRF{m5vCx!vyk9~qdZt^vi^@7s-{lIVGSihm5LS14C7S9cjTavUYlFi-7a0`= zPSUXJ(#@5f!XG(kQW=1?{4wg`RkRKJUN*MdeQ>V-c<`I!+l8V5h!g3W{zN*Az9KS3 zJg9aFd^!ooZ3T*mjHm8S4XjpuqAMK*RLMeA+{Jbeocg*r;lCo~Mou%(@yC{lQ(};M zgJf~@PKu|yl^^gz?^pPN!`*7w|dA1X9MZq`rOAZ5Z`6hN|p-?FUaCj$Fkdq3i2W&qyj0v^}NCD=aw$1 zgD@>VT`Svy)m1-BN>}PHZ!qN!5Ds`3oWzeh`eaxoj>%cl2|eWSE3v%tqFFZ&$H%`< zJ(!`_FH<}F4ELU&psJsr6h69im&O|h2Z>VRM=o3Ce0Y5y>PfY9+R3>A!2=~um8nP9 zYB&n0l>?)80$1%}cN8}Sm+P%3y}y0Z&!!(_ZC|%v^77q??r!*0a6h7*z~!=qg>VL2 z+tcO6e%z(q64`*#fOhHV2*Jtm!o@FD8GXePr8-E}1Q{6t14BFPeVIILk=%t^ZDBW` zp(VF=17mGRfOLtz{Y34)L3|0u{Cj)S(H>4TIet6B%5P3)@^*Zj-yF)qCP-t6_my3+ zxTFPkgjL@Nb7H@WgA{!~mPjw|_>uFhxV$TeyPz0URVU5)NR%~C3lHUsB&q*6ZOHZX z8UJeP)`;kBf`SISE#%EW$?H#_HmZx-<_gndhIP|4OiInvh=40zR+tKAouSct_A19 zq}Zpjqtvxv{SGXWp53l{9gW?j4Fy!%y{9%b$(^o#{d^c<4%j?7^9bh&K<|9aXXv^8 za)%YIY|?M;EJ!998HFrHMj~B&{q|j!8Cd*XC2a>gX?DE>(hKq9Ibgc6En^4GE&pQsbgRP zgD*0@@y25Vn@IKQb=%L}>JjdY%&u>)4|j&=aArIq6>!L;u^(;+3`KiV*u)(l;y?t?AToxCFvto zPJGpV`>PK9=kuSyIy?}VI(#RVgS}w^6A5A?8KISxyAUXJlZqPJHl!?2ivnATAdPlG zQ{bLValj(bfIk0p-${RUW%@qmP_+zq<~Xur+-KZp!e!hA*|eyv;l`ZLsHgdQeauH8A8wF26FMsV0>d5nJ*f^@9J^(pdCT;nnt6ParN6tKI%cMq*BzNf*St#)HVDgM{okUC2 zl6pULBWtaG#;o@~Krt}J{7X1=t6*D}y?f;+^G?V)6&C0pMbdK^DE1f-0^Ck0O_syb z;?D1?tNRD5zFRoBIy_W0a{7tw2QsIkTWH$p9uDtK)QvZ3v-OD>G7&~XWJJku zoAUz#Q+C7YFSFOD&I3`_wl$-~IR*Rfs~~)Fh39opwDguwqlJ7y5+alSS8 zQzx?G@7mL@x=r6e_1*9c+QBwESwu{U65>RbCO}$~{Zm!^2H*3H%H`M|ZEJ%J zClGU`c4hO}4R5t80~pn3*0>l__#-I2^5WuS9zGY;I)!bN`8gI}RpR8S{N5|UHcfYO z%#0JCyJr8J#`qPRoOu!Db0e+1(_RAGWn!Xv4KTh-zo|I@t&m&af_WMa16^Ll=yHm{ z;fY==J-{oWYE5Jt3yhvcGxbl=_YgZh6IEN}_I)V7YPS!SWHBSqyB7F79l1brd%YM; zJisX(NL`^_xpP1=r9u0+5CFxoc*&VomGwxO$sc0SjR>%i!lkS1OyFvdY644eP)C%B zeM3joHhVu}i*^G;&1Xe_f696{WbO+>&j&35?o|cfX!D=b!&4P!SG1qb%!a>eIR2US z!V!iETQtXz_M$oj>3A=r!u0ya1Hqm%V=D#9G|_3Q)R!N}uvZ5gV>p}bs;T)3!(Uk2=C zy0Jq|7X|k7*Ylv?hgqw?7gI6dD!>IzLxY14!`@~BOySaNRTI{ao2{cNM`FyKZKt(v z5nUxk+N{K0QV(i^W9-o@O=piI4gL8v*2uvhalsG6_ph*0IQ(I>0#ew+w)Un*D!IiB zbrW>EaJjsG%M$g(+P;(dBg30DBP;z(i~NDGMLQ{qi!aRC!mR6L!Mfwc^ow|KZq;3v z>iV}eu9qbh9-AuLN0no@=WgXotjw+DKaKSIP(gJQFCBgLdO$I>Vj;wo z*D{y&Uv*JrIk~q8*oFRV%Nr(A!q3!SkCyc&%~>|Rw2$1iB~|u+#jdUf##mWYYZ;!j zPnxpozT$)Iuim1Jon@q0kG7v(#%Gb6{h1yJljK`c=M+E}@fDyF3k7(DU?1wS0TT07 zm~tgHk#*aH!*b7zx{v9L)s-jqhYcq&1jI18m=ahxK2>l0Go>%CaeWDSVO*@|t{Wa= z!Q1)cL_Nt6)K}nVwLHTNsSF5P&iwJheM3s9p)+X3{@2f>nU^vjQWdK2^-FbV9ur1B z7U#Wrl%WpJaW67A{8>kS#Q>{;Qnm6qCT&AMAI7Zb_bo3z(mwu#m*t617>`&4$GX;7 zuyg5IuE4S=URj(4SM{;(5vEtFvH5rZFy5an*%ApGei`_g9PZLHh#;HgWj}{}Ym;kP zENKACVpAV8WlIX3tL{){Mj*E%0aX)||)XC&tlfN&KW;re2aP-nY({biCqx8Ae zPp6KPye|(+?RbM;x{xymt{C2u{oY5kiqt}!skcs+q@gzjrOdx|p89Di?)UWd&cy5} z0;jz{6`CLUZ;XMsiUvVf+%2(D9x9>vD!@Vz;r%@*YyA|&K z*%EqwW?Sh{J)B*{G)p&_+#j&jC4;Q!N|n<;6e?GgcmtMdmij||_bRt*eeyS+0;4kB z_-9JqD7mUIzqPQ=cwwa*8e-9}lc)n~)REmq@fXo}K{2^jS1b9VVwp4(>oGds=anzl zj~GqC?%pbXRGt-aZ*8!A&3&fuR}<34-my6GgwAPEnQxmvW2Jog5A7zv^0@>grLV#^ zQ;WxBCt2S#zwd)|i;?R@JnRM`j^#MC|DJ>Govk38U*oW-VUCblgP(ENjXzrP3m@}O zYf9nb^n6BZK`sv>Q39b)_7;462VXx}REl+Zt99O5-FvAjQ$A3v`F7HCL{fU+il`9r z%=S4FWLl9lp2^G`q?aP?veLI(4ySg$k3Qo4bADkIjWVr|_>a3`oOr`}4EgIpqar60 z7&bkg^e}VvedWAyUuJOGML7jIly+`Hj`2}i-{a*8e3S4=jxiv(vHf(M2pmW18noP* zBL}s_&KKHxC|8YN6Ju2{o(Hg7x69Nj&!*-aEuIhs=Q-arL5_R18Yao8_P3ibA1y~2 z^sYTj$~PL!&ga8oN-32hRnPuJi8HFSdlxx6>2uxh32|_)tU{9D_W!I8!?lkpB@5wi ziGUza1!HuA}^VJlp>Wp0P&T->;CB|f$6Wh8N#R?ai0L$eS2hJKPDTCvd5gevRs!!J( zF+jg66~>Rt45zyq1KYVp{x1(;7heE~(VKo=eA_nCem2C*cXUnVb`_rliKF*|p?^-I zm*6hycEPh>Bd)&bRw@atCu5HOomaPu*sU+A@DGB4Bc_dltbRv zJgs+hv)uN^?*bV?vT(N1S{Khoztn1Rf7^`#D!f}QoJ4X?Kua!jvGX0d`QeMcw;nG{oc$LEgk)0DTlu~imJce!^{`Nhm{7lDl| z8?43(@>tI>aQkd8Jq0BkdcQIom@gmpplf)xGAlwhfC;z&cuW5U#q;96y+`1zt{*(5P7%r)z@t(q-&kkkD1zeM# zI|?uSSie$h@hvC{_nLSRJLtJ(nWpEneAOR0&i!;jx>9Gf_7=wf`wCbfE;wZT1GQ3M zq&j47q2KK(jQjgh({LXr?fY}I?PP;#L6QnVdnJ#e zuIAaaL?tb!1FDvMI8+$zR!gu_>fPfZ$ZB|KBtJW;c>cMihamIhbl>CvzH= z*1-P&mAXklBp&i}Ff%(`;0aN=t-H19Lq^|*vF5L)pMUbt)CYv+Wu=ZhJ2Ihid3eG2 z$YiP70(e4j<578Q(NN%oXZbxRw4{;Pz+#uH;FPmX0U9x2m*-MX;CI?zT$sF@sfF%# zM%(N-65NMUL9swFG(9oGV#Tn=r^3u%>S@u+dv4-g8w2ZzKWn2LPx}EcelmSm!*)Tw zB?{Ow>#I|$obQFq+_4dg%a2VdTKzf#-WMG#Y=vYd8yPv-=60;I?_1VfpQ-05@iNf) z?~t4~q7Or-mF9Ph1SfA6Dc$4_XzK1Z`ji+mz%bMe)uc~e-ihSR0e2kxVC zc4_J>vT0X4VhscOv-6K3CDzJ?S5qHgB+bB~(?1o|bBPbT?enQl>O{lBLk>FzhEZH_ zd6?N*7L}=Ac#b8cAN9LT<^zB{b?MB}MpS1DPvS1hPQcSIx67%;rOH?Dj?7>f%x7yXFd?vtAqA?kY=$RzA3p6*$6wo#U%UW>u(y~Va0lUH^>j&d^XzzE}j6+v@nTQmR`;Jkrl(E zt_W^W+9^ilxQDOha9t8X#9ndlig!xhoqE0ULux_tR}=HDuCCE@JD}?_$5!rOKxf9X zUw#UQ6>wbvFAC(h6Fyt!7ixT5oXAgkoeP2TTD{CwjWfJ8aMeFn!46hJHFNc=sg;x8 zGy8U9@^rsg*C@Bg?4otjTfd$)m1)*cOOv2#0XCqv;TpL6m)j8vR zHo`!{rn17leDpTpDqxR7Uob3Dew;h(a`xs0@CgtOgjG6mb|+%;UrdALKhBMJC;&OE zXbz6tha;X1+??xIDq7Dn0+3}Z_5W^|hXdHwKK3>+iIjQ`Mf^QmaXVM8<#OwlIemj? z&t@w)B|N4Vri^z?+yH8E28NpPPc1t;J6B{}Q@ds7&P4JmTTbmY%Txe3KjeRVoNb0m8cfEhNDN6~bOP9t?4q_{PV6#qBPYZPP1 zG;KAwGPL@LtMd-Hva&Mi(ceL<=xJ(3D3NM04s;sT6ctbj@K%2ZFf;g1Epq{YqVUc~ z-Jk~@2_pT6($T8nENn%n{l%2s!+HAmmG1s;3bGPu=i&5RIMkF?Vf_uesQC}CZaH;c z+IqNlih_SxTF~Z`^2xqz&Dbr_@&teSt!w_%GLvJqi*uVY-OvC($F!Utakq6Aq6Z^;Dr1Ws<{@B}Q;^S^(8U=Q<2 z7!mmAw!ms0`!_P95OAMA3JW`R0P;R<4JXosFWeHcV_3clF!Obp@(d}_HlD}_`IXW3 z;dIljMeU)YYUpD+jcC7w3FgVau1eDYU?mxo!1Sg-j{fKVD(e5#bEg*)t*UHB4zp>8 zQ)GA0DTx_447&~)|FrA@?)l|4Wcbp!*HpIumd=1p^jYaGX3#s}DT|YntAT8siye?_ z{pa%jE2sv1x>Nm~2mpWiR2vXzS{)6KrfCYmyuTibLAwRbaUD`L68ho@W6aC3aD}$# zN(SL9@!$Mo`MI$W5_i8_FeQveothd@rp=AXZ)yFTV(;&_$VVSaXad(zBA~Rx4FYSO zX1`P7)py8TDDOG{K}TUj&BCioicF-_+`7^f$3%S+6JPg!&-nC5r_T%H?^cWJ3RDN! zA>ADDLo!mqG*AEudGbhREX#P_Xm|Nsh@pMz9X2vxxWaJa+2_(|StQ7%q#t$U)Yu<;%i>v^!}Vd36* zoP5ZKeu(d(Z|l;t4q-^(yn$hp**nTlmG>IYNkZ0YTeNRYQ;5nr(U8@eB&-z6QupZz zR!h+V*v+j`Yt_#dgT_!jneP_ESXaHxfMTD3V&8RTfCBKnK2jwFk)&R{UJqKtsM7R{F6^a?2Y4l%IF!7{t$Y!Ih`Zu<|Mu#_*{p=hr5U zYt%M{ot2y`Dk`$8nO!3*ZO}G%uvXPJGvjnobN_{S@!BeH5m>kLmo|KvXn~MPjHUoQ$kP(;0f<`= z@-PeIm|4IQh-#rPyi=l;MIp{+`4c*Mml;&V4t*9=)nRuWxDeumW$7(^E&wP{1p=XQ zSeT4Ym(+e}2&F;Y+XXIk+^cl$wZl_QO%CP@6XIENI_ZjD5&X3sX?2#yyWce$qs{SQ zihQ4IADMOSlNx&3v&_<-5Up}u>VKJm>CQq#HeJ9NB8cm2>PAa@Z`SI|U?mEGM$#8L zfyqGk7(lhgdh(*t599*=wNZJukHA}X5dbM=pbbwj zy$NZjW_}2%#~h zjcmy#MASvY&`Q+8{w7KP{i#N1WnIIw&=$m%d8W73VG66X9W@c&8hO*}vKko_{EWsT zLr=uhj1u%FeGI3qUAMpvnJ44-Yir>%JEylT>Y*S6ii8VIf8c)VFObgu>Aw+#YN6W) zgmJmYR(lVG&K$Jzg@%XR{rNesM}2%oKk!fDqIYD3@?88$sH2!7;Q0fNkXUO>O)GYi zPl5h*ph?FA*xE$O4p0n>?DGH-#&Df@s3v_A8|cCyD#USt`QFJ{w`k|Q5w+6<>o8J4!PgFkSdg5+o>V7Tc7oz= zsBhhjR<(v{t9%08r`>_@3&i)fe0Q&HVFbqw{YaC0#j7k>h`xcze8(Soy68vp1T#mw zx5fRp)KteL>WopJ4~}AG1);B&_+*mhTKsDVBl@eJ2zKvO+H}flmt`(LAm5s82!PmN zy3jn;``od+=DFlPr)7-MkW{$xH^J)|t77fGXo3{I-cxwiiNBSInD0IyP)~i-T_$fG z*wjH%TO{KZunK@M-5X2m&&4C7eamh@Q7XN9V+vQt2C>k!2)3M7OiNlg*#Ot6VyQ<6 z&y!5Aw{#K}B>;n`18_DAyDi@AlhK;?Zt<=`mhx#EBYUddn=vOH$gzE5R;7}R$x{h5 zl^2KjG!<5IPo0naOfVHuVI)D1Fcsek9vC_ zSL5#W)w(39c%Lp3CdyCL#a()S|1{dy5+0^hycS+sD_{8}l!==QbnCMGBdplmu$D9?6++)}n#bv1)#M1g;NlO{2{kCOsAZ$*kAq(+a?{Y}~O z1BzQ$Z%r^-zzG&));0-n1zP}{R$W_=ooA?YRmC@i(C(H11-0tYyS|8B8k}8SuRsj};xX4zwaYdQM zd==mEM=pWXga3pXj&N^6?9QacZKV2zqpiyMc)r5N=M_?Rof@<|RxgukjnUN0MXkbo#p!}0WZQbbJzdoaG>YGzl4k}s;h25Q;yLEg@cWe>G8mxhB+47qk$(VAo zZP2YE_D9ex0Z@B7380nH@!zyv&WzTCk1ZUePu!4_Cmhg)6%W*rZw+TFdIdCNbz}Jx zG>FQ*DMTli*jeqqZCKwRCcyBWRgmgvfLh&Ly2am!xNaoItGjojLsYXWm%ivk#@+Ae zEIV#{lGn>Qt3^tP2aFG)mXPO*pCN6u@@8!0Mr*DDfEEZ-H#=tqnD! zP?KF@!s)Xg*spXTjtu5hX|@!dNzNr4HB$=SJY-NlaE6Pxr$xmJ-Cta6fT z@Ic+Jh-+I?(_x#cX`1#_E`k$3;c~-El-(ymxV>Ya?G50p1YD4JC(nl0!-28Upv%UT z2efPVR2$J)&!(SA#8`b|Kaz?9UL_UQ>*qeRcnOoBJH~w;_VbO(k9qyI$OFL|6w~^J z;uwJ^zECx?g_a|k%Yl-cl}j@v7j0c6BgEnwo{Pfdhl^MJwm(#C9!GeVbSO4QVl*-6 z6>U;rq=&Yk;M2Cank$4mhl5eXVFB?W0x@{1!p5lq5gOc}?Z(Sn$OWPiz(yqID$WJsv#hrDze=dBzZFrt8ecuD0W^u8km+%+A={ zo6vN#3$388yOhZzG7E|^K@0ZR+#&6P&`_N4(d!e8n=HILse9N9H1leT!Yjz_<;(gR z(cfZ9K2^~+B!*e#1SX!rP|Dap@Vgk#J*S@wVHx_6^Sdtjf`9zGE@3ZQ*w8}SpgAn} z4t@vb)NNM&HRdIWMXuNbQX#EcZ6UK~%IV?3n&7_r5AFj#-@`B)AVQWeq&;*nE{D0- z``9A~A~YJa>K0R-qO#El-+cK{do)@^&`-yjV(_q`Qor`QtBlbz_@D336esch zXFem!>Vv_r>6DD6dBt|;&>$1`Ghyr%7S;#TuLD$e&L^4sJSwTL!6v4d&B!ZyLsTYb zh}hK<8&Frl_*J{F4|vDktm8&W=M5_;?g0lq-r&{|H|Vh35)iwIV>eGc^zZTx>FL=z zBIS20H-a?!m$}^=rCzMvkQ)h|nut0YjIf0gUq&ZQe%e>>0}Knr3v407Kc3*zvsPJ0)o`ikXMKiOwXtJmyl*nH=*Y}J27y8 zs+Qx9SVAY>%dE9JX4fp*oNG^|-vF+&qq?~>nY)J>*!e_(6M0^LNn~cp`~CMFUV@Fg z-O+&hblsfT)LKVT9&NRx`_GXM*%OZgy>2Xl!~3;?JN|u~0;8Nm!}?iB*#1-N8F5$l zy_Voxu*-fol;>A*92}2%F;5j`gU^~8G^l}6OWQg~1w}<7D1udS+vKMwksD$TACdRb z&-|3VA2)q({aM<38JpOQB@$V6Es?oV&Mdibqx; z>zkb-i+J`4jjW`HhJC_bc3Z+I_9-g)`QwnpoAd(S(+h5ix(^L9VOvXack33F(8Re6 ztEbC`)m^=#nn?1@6Em2f(-P?wJLZpNfIfC?dyy|kVV$k+?raULp+Tqi0asHL=WEn; zt*h*wI!0&c*8y^2=q3_cCb1ju4l=nt=5=3X>fr*1N5GxHB~8oBrfl*m{C5GV_v zK2G|@^{m&?Rm%Bmims1pNyhd5zt|a5suENK5RwHZ{}A>?D?rN^pB7u?8w_azjwqy& zd?ECx{TzC?fZQ+SWhd{R>sof?_bkMRepwsc2}-26)k#WxUJX6UX6Y~8B8M9n)rR7F z9oiazy_^wl>fbnOaH6c~0MUBz_~GsjKhf&^KBkMR+|LJ9k;?k&)LV>DbsiiMJsapd z`E5DTpZ9gu#dh6x&T)v^hWS*eX&hFIgHzICG5c~*4!=dtvZ5ytuLABRYMq{bz{fV? zw#YK>AG;6EVCmQi6xp%_`ehh^MnZ?^gSIHyFnQg9Rnpi;mT#mZpjkhZA$i{#)cYhd z5MF7+$VEN8(WNysJ@5;F1Pr7cM7q^m^i*eTXEFL(UM91B8sY6UFLb0>w^Pe?+lotO zp@Vb&(zpFIeI8AFeQr+D2C>&%_3Daj6W{dbunYI#t=+xkKPACw;V=CUSWBl?8qb)e zUX0TFvnSm?@397l{Y7h)`)C;9K;tx4x!gN8%}IKBYiL2Lc^8%P(Q9kfJM8Y{*;SPn z*kISxz+eKVlR3cnefFOS9|(8cnVaE?V=N?}3jvlBZLGf@)w84u=wZ_?_%XE@Eb*<0 z3y4l6k~7`2;U;_Nf@Zaw@N1j_Y>8jlVGv`RzQBQ-ZcM3ZcX1 zuos`7+D9eOTYi?S2BY0ofXAnSfGGD3?E~P%2^{K#4|ADKS-z~L7rDjv?>V?nH|C;5+)GuQfgCLFK1<_!b;HIva#&znKqWcjN-Ew&H0X}VJ=sFlcwKWt6Pb_G@3h-^Y z5KrmI{T+*&pL(}FLBZCx%3U;G+^_JZj^K!dDL9cRW6|_|+vV99Fya^Kdu_T*DKiea zmCIi>$wmN+mhdHAxrMk2y9dFsu20v^_9hUP<4X(t+9u*ITwF|GbbyDGkzNn${_$$z zo8$haYb92srBDyX7N2Aey;Q*KecUru$H_}iN(kapQG{{*ZW8_)BhFe$<OajNn(>>pFEn**9tpNaAqukkqzuN8LWAWvfDZ-ZE1_~?`%W-M9yz71p=`fE;)iF!i?uQ2i z@9foLDp%fL?0gLe_%|u5;n$b>CpJHuR@oU()bB;HSKd@Dz3+Mr`y8z9Cn2_zp~)Nx zWKYaYzlO};Gj=x6>@ZpoGFb^rGAomAc)$gNJWBPfxr+1n(>#vT`w~GcX{oU)r#hA_ z4xgvKCSOB;$q8hY#7vD7&AHE?=w$CiIOD&0k8Ce#6hEwMh?2lOUMeT>D3M3jEIIH| zKd_BiX4_iL_@AhpLdxQ-sr?x?P( z_D9bct%@WDwm*jqSkh}kEM+diz%W6m)q7sIGJah!i@c0q=T9kHo_^&7P}&?+_H;j4 z#$Wl@uJ4$v3oBBTK|bJ~-Y6>k|B`wnjMwV_EBClU4b?EV(Ena%;I#saX+P^2)l#3t zz*MYOseuZWkRWv^id09adJj}uZ%7jDl>;^5H17@J zW5EO`tA0t0LMEUXI?#Qe!qZz>b!A1;|Jb!7+uT3`&M3%J`HtwzbG-i}Q+TY$cb$Bk zENY2fD$-HfpRZS%+YDwN(}#D|{->U~RDnKWaGVB7H+5I9hnSP~(}mpKr(iM`1*4-C zQ*o_6HG?ji8U|%QkohQS0LOD09v1q!#mG$;W|q91Z2RdL!U$|V%H*>7tRy+!SE=#~ z^fAl}JndJQU+o5tx&Y0MoXp_Hxpprp3OR*QT817&9&5l-17So{DFsKg%a* znE>3cbby?lJ=k548-05FexW9aOOf!0BOE`VpG~UI)#fnQI{?b4*QWm_7^ryLb6d)6rN&F3$A+y81D_Yw67DSpjJY+9V^xJJtKTcm zIbesy#BA#HDmkrRObsV_q4b=>ma+cU*ukWa(_z{al;dwd zzlx)LHDEwhAJ@aXS>&bK4^%wl@*UZ@;VJBr^2VbOHpd79^7r)2se?rypb5sbXNyw=#GM=C>#pBe!maz1sjwaz%8aMzF_snERbEF%-|HcHOPr;HOv2vMBTx z&i&8jQDcR{%Fj~Ue?HAYjEd>s1oqyEAty$-ja0wpF{kI_x=88P4n__h@Y#MDaz>!G z)q;Y*OO@5t0{fcAX+e!iz^60Sf6OmTecimm8>MkfVA~x9Dg+?d)uKHdzy>5p-b_Rn z=IQ6IbjeJu_DMs?-WEQChP$l*+ET%jAh zS)8D3WqH-9(+JJeP{B&JFEbDV_i`D1Q|OF+-Rtms*ylq&2PH+@&iNJ2SbwlvxX}6N zqT+b75-<>=bnZrO*aAH=r=1F5!neb&QpNpicR?}(MK`ZbRu$CA3iL{W6%bT#g}aR* zY696!wR~x++0Kz|=*YzI;#xtCca>IWHO;8VS)#n}UQxZFCC}b7ifF?91aVS#Vw>BkCkGRJe;8 zy1fDdKT@&Fej%e0)OfK^QomoA5pUmZIk70a^-6Nd6BpGXIcN&4(((rH(c*cjLpON)$n;aWXrbQj>v-i81iXId;9Xi3m>IJK(^6osL@0WH?w$;l!I-d zL3Z}C2zx@!8AsDRlV)kxf~r4e7YDny-(MkY@*64(*jON6_P2k78H<1f+?7fTr|li7 zFSe??&dI71-AAx1a6~R@L2!|L6o1?d3E>#Utx4T9aLMhDO8HTR-=m%{gA9D+59OAm zn4@U0x#LdUNJsuGw~J=Wt8Fm~xgQ#QFL@(2@8)P|3QxpX(1?BLtLqQY zNrx^jlAfScZx}Gj8SUBpu}|4>_#=zsXWgf5-`6h{BMXC`fNQ{q(Qgl;HN|dK)?d@u z=}|M3i#@($Ra7(oC~<}JR=WZ$?BT8CUL6Uay2KMh!KBlkOaNaQ-N(NN*b1B`l)P9fvlQ?O`q&yEen?Mfig9+h6IBln zINEA_&e80CADFR_^goCp%M()i`M-d+ew``TvIIBFHEzlFZG7i0$OtjSV&7FO3HqWT zQo`G8>->`(SAH{zi@!2-?sD8e&M@)i2k&qp0MJ@od@*)S|HI%}x13PEiJvw?;||SV z!^cy1hOjl)yEI%LyH=agmXpu@IO)NZ$V@`sxF?=6;ij`CjyU%2S5^P^55!~f4xAD+T)|NmlKW^_C|^;sREsn0Mo3u~G!2I}X6 z+8eJQe}Jy77)fp_>Yffq$25pPyAn5*BX{q0%vmqH=QYn=3U1880L09N$MrgY;dPAH z$3HK)`b>1W6x^GD^Oh0|+bd!do#?xckuIN|H1;nL)^iE7>GM@`Lm!74q3*U81prQl zI92>2@#a4Er9e3e?jah2-#~cGEJ|lfdlc-}4JNwqj@1g%Ha~cMsxxleY8`f4+~<-j z=6K_A2;&>_3S;Fhwv`FijX<<>$9ti_`u+ZJ9;{)C1Q&tV#`F9XTyw%%xE;f45p6|L zDe5~WO=m$lZ{L4hd6tw4=enmA=1!$%BU1P|SI-n)JW)|M(^sg4m{~=dcJIiYW}NBy zv7;X{xa8Gl51aQ%7Pm8B)N6Ei9NjTXIx^8&;>3gF<@ad_@jA)$s42=eYt3tPW0XMp z*%09YXT;5fXoIQ4ZR(QMyCk%ALF{ zwE)sN2Wm?;{o5UF|7ha{?B4Sf?B>1Uk#$Xbc0M4qEjDy_^O*{AiK^pq@S8csR*%VYN%EFp{jXr4lS;t>$*?UC~Lr*bYU`=t)IK+QH#q$f7uJtuA zu9Z9yc9SwoQkk1=)qBx-nvrAmYJ7N_W^9$SH)Cv6dv*+#-E7rZtq9w6eIZC#?5tew zT{bY6FZTNN?lMnY;VEMyo-)IJ_H0o;1@X~_kNKBv)cfNE{abOnx%rLYB_-bn{TkUk zF@JimkDCanW|wN(LLb%^JQ7X~oB%-CCtY+?Ay1eoQnp&5bhS&(fDQouYP)C>LD3Dl zD~K$}Orz_ZP?*{e)S+aypY+}RAO7{Y(6P)8?f_MCwen+4=q+wv`wD%*nl7UgkG_3y ztXh&qd%A}Ui88j{`yzZy-N-reoY8ez!#`5WlXqD!L0S9_hF#EKof@z_WtPYmH^inR zPyBPnmez#2oCBeuM_0x2`tp=;=jYf@eZ5 z$;pxmQ}%fsE!F7|58eBj>fbrq62D`XTpJ-PN5Ve)T}(euA3 zdlPu5ySIN_iBy(0384*TFCn{9D!Uj$NcL^WGM2HVLM2O!WEo4!GGkw3453Jvu@A!x zl64Hi*q7fKEqC|xe4qdG{Lkxk-@K-e&z#TsoO7M)ys!85zUIMM%X(Y)M;pX#eli(q zvR&0A-W+%1U7ww-ZJ`(~T;=6rPrjMUFApRJHmCNs((P3{eo-;MZUHF$7+Rl-ZlGMMOmpn>cWJa~Jkd*{_%4<0UcgE7n<9}}V`e($`t zvnGq;(RgbA)R&UH%Ui@oyvm-RYBm5)bycN_ym;0hm*3S&ma>1&&Dd=%S{*6jM&cTd zzghTY0;35nu@Pq$5j7CCyhDe1!u{463N7=xx<6mMiJ4Gg*;uU97rn+|Ps~*&jTH)s zYQg5ObcwP?wWl`$()EtMJA6~Q3HGs`nxmVwraqZyUE>|3=Cw*Rb|P*)2Ew06feB~t z16e$}4h|&;VcQV!&mog=JHVt?b`M35mI~eoUB9pmynS+zwEp(7sam`c6=IUZna=jG zg{*TZpH!`WC40w$5RPK>l1KED$C`X0WOqyq`IvnC+K1i6d6>&tpTQBaY}N7(_eYU4 z*U?VN9_hsFhoELklD@YB@ByS}P0BA+-*>rt70}(oJ`|xYduuOYq``(?ag+k1|9G|h z&3Op_&eU(k_uVj1vtEo24Tb&HQkH11v}2KT!Y3uw?Pcr?9@hRbgwr&KlE6WD!n{ug zmE$76!-)=4|7LH(Y+s3<=^S<`LeH^Clz3Ev<(RicSenZ8^bL} zO=G(C4U?Wpd28J2?kZU8-(w}@e3f8E=;7Hdg1Y(k{&DAyz^y%5o$YT8Ri}gTYJyX`0q=?f=P7lvVr=yhNT00gytr4ua6+PWo{( zunG~((C+N(Zwk(638O~X8ALnyi#9r~BHqeqWL6Nwm<^UFA3okAyOxZ-5G{CH&*&xW zbZdD>j#ldz40wL4ZG+0dWB-5u`J)H!kDA-captnd%sAC`y^HA*mghsZq`AX7UPmlSwN<6Z6s%7-%8r;FRr;Hw$*|3Y z^b0Q(%0U+Gs9%*863xM~x(Xl>EAQiVUp~!z4avFbSakFA`Hphi1X=aZmijgAtETe2 z4>WnaV;u!PoxfZI){b!3F?j1&mU~_{ycdst%1(aS=Bg#k?y=ge9D6}KS)7W>?$-RW z*FpfP0g&bCwC!f7+7T%w|y-pzqvm*MPW z^%}>^Zo~)bpBSUap@1*F=g~z$aK^4|ntyukv&^z$bepR{tGu3<*XEpO!SeJ%tNk6* z4zELkgpZCtJg1c8$0{x!onp!6a}w+^GkkxgFzEaYp}eFw|S75XWU0z zpsbIMN`BbUH#+(V`E`o!>|_tGd+7vKV^X%3O2n zky%C)+DMUIL@MCGoI?Cqscf#slxJxsoa1}Wp^eJ5rSh-FMNG|#d&~1;xHY#L(!>Qc zK;~tVi~|_+-|c>yHIVmmN#5);Mq-9gFi^%orQw*OUuPsW5s36T^|lOjd_%ck6EHO~ zxp4OrlRSTp8QM_Zd)h#OSEd8dcctn`Zd&7(U^>mCm}juecj-59=~@ZRZky{Xwm!?V zmJ!EfZ#G2oNOoMh7I~~K-?FaR$H@uBnfn2qv=sZR8?8H5{Od=ySW7dM>fDvXK_~mW{&SsbY#fe_HyuCCe^2^!pYiK|a`5im7gstLrt-gIk-ZtT%`}q3_ z!Os+#liNJ(i<4uoki{1;E0%X4P+f)52pU@byDdonx?zmj+ulPIpV#Ux_E1B~zXuC& z;kL=7AL)$Jkync1iG!|&;o)a~a$bMlXPokjb^QCb;AgjlD(16!Ct zS-VIFTysK(ozj-CqGV8&`2ZTv`xhg7`x^szz;}&OK$UsE?%Xc=YP?3?QX9xezYCXd;sS606WL zweFP#KZLI_~!>l$3wv4O*$yjR9bYPB9Xk(j%q9D9I zmj#vohcB$gYz3BJHcAa{zJ0!rgHZn2V^Vf(yfe!G)3dD~8OmKhtQwku7Sg}kYVHe% zj`Wg%Rad*L#n3#0@%SEBpl}(uvVzmd$&sVvZJDqG)rQ!^c#S9}WW8%($Fo?XPa0{h z92a*FNCXW1uN>fifcXDR0-n6}h3_!0toxOpG+->86aN%V_6_c~?}mix z#9Pd59yl+Dd2nJlWm?)(pzY{?o$P)6C5Kq2wVgXvz;XNU0}ima|6{6CW>PP^iT}uG zN$3JXkG_Za`TdqaVeLzTN#j}^ZKl<02$F*5muJats}rkV0+t-c*9KhE<;)BfXLv)@QT3}wD*p{TEbvp&V&4%@4WPbpE zvV?t;%62=jT&Ar%{gP^^eSh_OxKgpdZyRBEUX_V!^}-9;Pbn|8Z+^}xJHpQ_B4yv< z==}lY(?xYPmqQ~4c}%u+)8r5R9F9N#H+u{eW86m}MiYm0lpF|QhS|D}gEg=l_YxIg z*_)GX*IG6Ol@{MHC-GarG8fTUxg&n7uZ#ka z0Rxhkz?e!h_MZ6j{6BxWuLNAZ|MFRD*e}}uU!Si^{GF_@{SPX9YCjbp|GI3v?mwFF zJAYk5`!$8_XRY}ZvQ&;ib}@ii&*eB5&i{3liry>D1nC?~J-2J|OYnKXfS}TkJ@Q9# z-oL*Js(j?@w-ZX7N<7B2KM&uNRP-Fzl~nLs$mAT&pyhxW6g6ox(lV*8K;jUSb^W?y zkGRTXZ^r9%=8?3ZwYW{CKBjQ{b}yk4Vicq{fZGFwAv~IWL8_5(Pfw2Y$2dNqQ7TKI!^NzTJ^MqOTOsP8$lmu^OA*8>h|75S=ioy`uDM4Kly_k>8rKPH)3xMh13cH zuwjI>O&$Doll#-4ULBYs4}tgcieq}$mf_CZYaRv9kSFVO}uU`gW4IT zVAu#xOZGqn%TTcN^QVz7*ECC_sTH?p74$_*&sR?8iu+<5M8B<{S}nv_eLvE1*OXYk zX;_WZ|E>Hn^7N5R&NCZ?QK1cSN+9Q%?EIL|+UxmuH1Q9CwfHINV6R%d$LZuJZ`ME8 z1TN|b%8JjgUrs&?5J4Nu+BHG1z(3Cp)WNv6U2;~3_SX@ma`~p5(%$z5uM4=zrq(lt zcXZ+Iy)HSFt8nM?E06CDY8}0F(DMdd26?jBLM(&L{8)%$9nQn3WtW}t^^f>axT=ow z_jM1d&G&P228Jb_ApV&tS|bL;nGHPxfx3mAfI=#Jpwxr})kBUwkh<#qz$ojYDjFYn z+(vF0Pq>U%C{BJXqtA43^|XAHQ>!!;&nBa=ELn%C)p`S048;+*(bv z!rohz9p-#8=5a1=sr|y1542vknhy4s!1mP6!b%VN_l%^c+kPjJ_CO$EYW&mFbFgeW z+T;wqNJFTnHJ^Ugw`^UNJ&-n15+!aS=ck?rgGwJhAR6+#Jf)+$Cs0 z5%eN@G-}4bhMXPReHTpP=N2c+9KtJiHbbv>vdOMF-|Ft2J|-{t!)@|tYJl-0HwWhe zMch9^5+|09n`!=d47XYRs9fH>_Y-9fSF^9fcDFBLSYS=Ye?Z{MvAJhgiZ=M-xmb_k ze0TN*6(3Y5Ry-G5<7QV169?{+^poVKf|uwBf@?VC~y^E0y%T6!51@(A{_%j^BBEYR+Wun!y| znXMg;DW_zoZv^s;co-z5?V`Nd%N<6=@$VP%$~!S?#2Oh*s8Tzmj&flbxGSt5qa`+j zG=A5U1Kk>7lDnp!DK~GfnOU&oN9}3hQwd~jk6ocww5S^5lxLqFIJq||kdATh#5Ej! z4<+u335~7&3mu@N&ZxnK%|jjm5iVwg?XGK0NJD5Bf-sauduWAoUnlQz;V|*nq zX`+^$@>a6 z1t7h}DU%qYBM5!SfMtj|Vw5TcMPC(xV#TBPX`icUyVFWjW*IYq?XG=)18pFgT713B z&dMZFofqZq0Kux1;aKQ(m;~&EW!?=uY@HWV8QnZ-@>U49;4TI|+LI?niNBRWbZF?k zquSw1i=Y2zNrY%_S}-tmwH%q5IZNpG<0+hPd&!y=m(^hS;k;i6C0FSk+7qSW6J$L^?n*fbPk_~il9#yMJJ_s*KYL5a$i z9Kj=86S|nu_`u0EOD!4ZW2io>jJX1>lIapWLAWg7IknOmMHwtQ>?5{jeX(~@=ksl^ z7L7Bw&E5A;0#1Ed&=PvJ#WgU^H7G;O?o1C0eb8FpfF39bHwmpM$31$`Bo^mVmwuwA zlL??=T4$uHQ=DJEknQ#OI?rbII;IK7jaTk3dJk#3*=R?>Js;O(Ocpe>ec~*Rtrr}F#IYmCx35|-~5iW9uXSEC7{v|=s1)8HFwB~b9d|S z%^zm6SLS&B6bj^tCQ|oX3EgCmR6Tr9eW`97A*q%n0>AP~@kjo=!B}JYQbA=>wMXZn zGFlyoU+sR?+e5*FDn~E$PIoC3IU|lRw;mrUB`{#St{sJBQPY!OJ0KBVf-dk*biJ<; zs<7wm9jEo>AK0zDjx=8-wLad6DQaY|A&TKD$p)%l(yYKuMrZ5nNI?g<+$a$e`bshI zIdf5xd5V@So?9^~3_~u3fA($?H$y;@NC+!_H2J5NRSPnZSGmRZs*@{IR_4c zO1=hxqb1owCzOTBAr|_5r|I7Uc@uQ&h5Q5hmAz~Xb~Dw*o|g+(-L7@v_DqYvTiJuV zbsODr85QjHVyF#7fem`yT%$Scwfh84syJIu4>)Aq_NolK{2nV=h!le~%250&^WAL_ z)e8EW;ip!yY`$omUSUvOQuSr}3d;467RlrtGjZ|bx5KL|_xIxTg}z`?RrCJZXXzLt zPXgs3eXr*?Y^K|SIhvVM?!Y~t=faZH6um0)5JEM5(gLI*mCXJ- zxsriT5UiG~VspHHm75WPo0Ur1r@`VFRx~osuwIkZi}AyhH7#g(9B)k&Tj>4kz0w)0 z1E8@RMyrmpFy00;gagA4)%1ebqXY`fW74Lk?yFKg*in6HzDv^`g;}IZmlAf9d@MB0 zuO*`VgmyzEyaZ>_IM-crs4ANJOciFa=^jK7d(C|~;-Zel;*Ze@Qb5xy-{J)_A)WA) z;e0|wUYmD)*94y=u2-G*it$`g{k|zWt}k;vW&*Bkg__%qR(agE8uxva%}3zi#5qjH z%_r+@dBv>tY8)bnmoL$$1f40KoM8)^&9fbM9nJw!ApjFW zfW}VCZ%pfW(9bmV81(hWTk<_gtISTzvqLa&Mp}?I(>-y^Z%9SW?c8`s^GE1??%Zsq zJ@n{qQMcDEkc|`aJoQ8+rvbPD2dcF{pM@B0JN~2F;S$y=WS6&mBa6S`BT5Hmx}2)6 z%r3KF{G4aM*Hmw%loj#V6g7;}kkicV@w%&2A5o^Eg}Es;j2NmwpPc!ex{B6JZb8e5 z+@XX|=gn@mgq7j)XJ;!I4&V~lxqPBJ*~eJvh`7AN3Kb%2Y|&r8eqD95x%2nTNf~2T z-tV7j?j4sutYCKdW|HT;S*iMDRe<@taAL)ffigemZKz4@zR-9#*PP3eNchb8K6IDy z!#Dw>(tbGJ%>1fJPy#h3zDQ)lr)K_((6@L8 zQ#9xwutj{%|# zd6}P$|8^+pQmmeGGqDZ{ zE~=iGz@v$%Xl5%*4^!XxT4>q84Jjw}+2U+NMs$~^I5Xh*G30gA$EwJsgPj5kae+e9 zUho>+osj|6-AnO9%bXmxiFF2|P4ks6@H3&os-;gR%b+sUlQXO2>88C8*6{l`vl+@a zjvg^dLJDKT)ZuJL+#-To*D!0Z-}Au@-gm>DJr4fGba|nKe46dQWA@l;J$9yZZIIf1t^|7TK`NrUzanNg1e*~c} zl&Ijia8dGE_T_}#GplLSVS>G`!4mFE^AGdLo<@YvyzSjB(^AbHT`L(*JYfdPGSueP zn7Dm&wL8Wdzx+71d}1^|u<1u)X&%!U>m8M+$YcFxwLqG&+RCavvOvEb#A5dRvNrJmxpX)CnMCO7`N1)K70}iyog~*U#CucTnIjS$64_WtH9y?!Ib((vmaC zD~B?Cy8{`>_l;Zkda;J{VwtGNpMEhk3hbp8lO+0u>r-z8R6x!d5lvpewTR&OF*EBP zKNxUD0h`oo1L8WL0`3W4f^%>Z$9ULFXR_DEzIZEw2(@0}s(6Ex?P9>Y{Iz4fc5O@V z@;z`%q@CkUn?w67F4Qg7VpekTG2pp|>mxea-{Wt%xKxaEo0hl^1fs9_4XlweTsN&E zw3RnJ4&VSrfSs z7~#WMG+m@Dzke{|!)p>3lh}IyJf@6pwXo_S6PBG(Y2wqNmIWY_W8A4L0nY2=3V+bX zR>`?-`oR@W>o81RQVYTFOJtbukP2^2@BU5Luv$j#t5EJU#EgKox27i7i-pTAanZvW zCO*r4ljqUvBwt%U;)8M|t}D!;d!o$+cA+`-A;IYyoX{!kl!zWlEP&UBl{yx|RmaQ_ z*N$&Qm&V6XFszJ@z`%a99mr52FBDWv_wPtSVKx@!D<;wt+(U!SXp%3v78M5U>?5#9 z4h1yD0*e1J+(0?@x1FRbUwEN1YhY$Qmkl@YwlKI%jh>vDQy;>j&%B$S0LJ)1zGYuT zdx&Je&jhavHcn-lF-`21w-Dt~YM-Q6T&3nLFON@6b7M_)U|HWJf_HBjMJdny2Uz)w z{`(F|9=2}F)M83G>;i+7YmDs9R{eNn()1E;EH?xWnrEyjK_ zXV|r|N4Ps&Zjx9L=W(_>Aum`w}FV_|#T>Vw;k~dDE|4^s5pAhb+ zGl9{IF`0?^K)qbU&K_*5iirnS*C^Boh49XsMvR3z)|GPS#rK^r-FFPf!jQp-b1>&B zy_2REHLtc4AI(G3l0mu$6jr#duE0g747x?X+{T%cD^W2Pf!@g1{LV~$ET!p`Cgt=F z*C#gEc+96xVThGv{(Nqv4{PD_rEkq^Q;T>7vw#weMVwm1>oRM^k>$SAuJ4L))TQ*D zU5x>&E}+!qInP<}0^!Q*HPuHt{a$eI&CM!5XSeNGx_%h)`-i)`{Zzqzc<*~UX6XTI z2OC@MT9@M=6^VFX^qMRTP`8FERH;1)AlIoDj`~RV#MK-V7xGUGFT!Pee0d0;URzi3 zbvgiB zd42x&cfX{a!4taJxy-62YBM`h6>KLMjT<+f@ce7Diyh`~BH}3=rjS2W>ZI!<2spZ2D+)h5V9|F6Ol2 z|1tXYuc7&m;jio6)o8%3Gy)1wQp3MGaDQDCy#hD!hrCDZ9Scm7@>{T%2l0?WS)bWE zLi>*~e*)JnT(ztzJ_8=-IN-GZ`nz#X+T*EQD-RyL1pBwK1{2{BZKD;*q;@T#;J?QQr~=`*3Iz8wa0x*nP5ENCni#qHW=Tqa z?J)%(3Az2vyFY*lT;?9c*$&7%S^MqQ1dveg%h1u%@!&y_!`8yOkL4vyVSi#JBmR>d zMcd%)Sa-08CpC=D9mytC0@B;C#2bM9uJ|WfsDc}Rtuk9`0ui}oC%Cg7e+C>6)26uYn!~g&hO&{`IR>OBkJj^@jK_y7}CUn~P=DFW09^M(erd4)2B0*F2oM zcz@^mw0Cup6-XQXR9%hf%;n0t-t&X$NtnLn;9G~EQ742U5&Pp0I>2~AhUvE60bWKJ zB}+dWmVg*{>ECZ3GTO~o*zvhoD{9rO(5|Qy_W8tZXphf;62-&h#Et>4eTneV{<7Ti zMd)Z~i0~-VBlf&{3>g#H?>(a+&qi07;+oq{EsUsf{rAo8Xt^Im}Ft zHuoK2-vC?-sbL;)>H%+nssCvikZzQXH{$uA@#$OR@PdI&@2aU0vN6&QblMbsoUOm( z?!7G%tW@q#lvf2W3tVXSU97wGAByTpl1xeactC6*=cKb9z`_j10iMGWJKZ)arm<`6 zn_)*wmEhVUku36KDl0teEuOKIUJc@ikzHz@{1|2sgfNu_Rx&hCG|TYn)pEpM0NMZt ziRPk0i~>Guv;T}i%jFi{91TaoTsmJrzTyUGdxQ~Y!R{_!^3Go?6IerM6r}l`Lj%Ac zbk?@v$l1{)A>cZ>4}Tn%8vPosxeU`G223gz^ktchhB|Gie;^;p6t{k` zBSmLw}0IHMz_AU+{9_KYEK92GZ%%JD?KN?wovY8&OcEGtI9%o6IFNOu1Uhs#oP42;C#zZtp8O;XGQ%nyi$pdz?}^RCUaVFL z&+*JXZuXWCr<_`EzzgfbHTDSPJXEkv7?e9eE5fjv$=gJRTMh3JIOmw&TQQqz$-#RH(j8ScP3N)T3B+OOkC_oh~Ny<;+{80 z0q1kF{MrCC)|Wk!IEguj&fD9PQ+90$hoXP)!RA5~@dk2Hi%0<->cJWlJo#V^lwk~| z#b8D0&CW^X;TxB)4q0pj#>OjlZRwN;x_k~TolxzPOQmeSz=c(7X_8#}(<*Mc^>r$x zxu#ZY=X%iJC!G~JJjECc#L|`fvc3VC?`FS%8V>;F~|^_nyVf99Dn5vG$Jw#ZJO3f?!FDoc`|A9nlq+;!@#d z5-r&}!FYqiXUFKyWqhVrlr2I7+UJ>kBNMA%2v0Zv9s=D*GV-1kJ~~4~37?%7H{faa zCLj5JpdZ_hWtj@?7c9!4oQ+!c@~7o$nHIOP9Mj3}_;%a( zj>Sl5@%%i2ajaR9>H(tQk)IJZXcwEi*G590QNAtS2VtMZnol64O1>~-i0BRGZr7s7 z+Z(kU>zbmGAA%|C0b{R-15k}c-;Kn|omeel4t~|XIQ)k`dEehF;{N_HPq#ezV|nN7 z;y8JVmc-1A%C5~%(~e%wX#766iW39q+JjZ|(^@%B31yAET|^GvRT{EmB2%TdXB*qO zSx$N;=vbfNMLRODnYzAA4TM;q@`WNk5$W=nvdl!C@n)> zZS=LZgXf8*8QS;|^Cokmml@*lct^n6G<9d&i6w`=0P`>MK5UvAO8fNGvfMG~Tt&Vy z-|QR9eR)eet7yY)1H_?GpOYjSm!g++OS4QT(S4FXfcTdo$ z3%a{N4&ED~;^#TLkskyMJHIr&s2J+}aNa7r-~-=d(FZ+u(RqG~&JS}pe+b7KW`X3d zR87c}(Z?w+nm?>(WlCn&cL^PKwKse#G%wOWyc#_GI3OX~{jzbwsIFm*TWRC8t5H6V z+=qE1;BxMXqj+;-uOjJQ;s(OX?)Ny;S#xHzA+nGaG?WOf)AYc&IjiZ#38EtBh~u^L z6Qtr8Mg6?&=e>7lYFeL`z!#r&V93Id*(|xSyS49uejPv3uP`VHF6|nTo89Mh?B<5q zqTKnJ=X<{S?HHJK>P=G|p4MVSDe9MqSkCC1T$EuKOTK4W&*Q$T9Kgr(eD7U5jy)uS z8AApkS$Y+|`3%5!q__rMyOwAv;7uy4*3Y0RsA4CMZJ*FLZeC{V`}Xk=`AAr(emF`q zwz;%`XiA(d3R+h;BlJFujX|l#8C74thxK^ectob#W3A{^-yz}po`Sn)^?i4X+2X6{ zVIul*$Zr&e+&^2ZoV|ZUF7uwdkri%g*!y{8-HqE20|Ot?QHXEE`Kr;cwLyA8U*KtL4MilZ2jR7W&*!Z4jURzX7l-I!&0m}A-dwP`wu!d2q_%vj zo16Q1NNVlHw5+>v*Udb_bS{_ZQ=(&}h0jsIbFhkIe?8XYbXF7WZKappF{AG&;+U2K z`6yN*>^2bA|Neu(!Ni8gO*|Ls`2C(!^5#?%;a>TYd$9M?_Mr&q9BIy-kzFHC=`u7z zZlg&wsP;=|&UN%hHW5KnO_IZm9x=dp#1Y=P&wSO$3OkqXHJ;+(%>$o2+*HAuCps&3 z;R-w^ts^-htLfnRtEn#=;!&%21s-l3cQ>)QTm8c0y3Jj>ar$2f5*05FXK4BM*F<9Mu|ZyEn{{Vo{DUP=4F@aXxWE@=t*OH$@f%h)tB386uPo^yBa{$Mfx zLMTD09hwTn7*dY?rbW^n?>Dy6e4w9zMs-rawxT7V`*S~ET%nkke|ChEPPh;g?Q~^N zB@&9(k@XY?U-Z{AkX$xWgCa7#yk?MalG=90Y@Gjrm(h6#=RDtaW>8ta6@MipI93d! zEr{@W`+Hk&Q?1$FAapN)gv@yR1`tYutb7k9O1R}aPt#mZRQ@rh&#)`qAo5+AZ&E+h z5B}xtk1JgiZDnle12KX04`{P-HS>|-9`#Aa-+SbJ=QOdz6M30rug^K7TtlthE$5}2 zoemPpTrom$tH<-LhH(nB%Ut{~EJvDcQA3UhUJCz{L6?$!nvmfiQbvwQ8Dajhk`Fm= zmhK{7_im7!Ueu6_??5q6fA~ZoD+!MxmYhkBi(^LaN#0&ImJsBQl(65p(#g7yRhhc8 zE?e&CNIqrg*kK?R27s9A#l%H#JM-dfbqy_;*W1Y>V~6rx+P|7^EIYrK{xF2U67$rg z(+97_lb>dm12)7)3AYhO8M?$T;)jVzw-iJTjxjR<&cvnncYaU1XcvR`xzedxW${i0 zLgi}kq5DR@-nXysF;(vG?IrwVZm4d4q$Q`1NfM+{ni_DVJ3Me$DKR zzJWK+*30O?cuH22bIG9M?u7?&9mXI=7Rv<7ZOHqspu=IqpRz+`l@<@QBi|5Al(-TU z)N8|a;Y;{fXh?8CTL$Z)%l1x8&37bK{woX9%p&TX_W<>`)wo~9&q?qUE;lr=hhE7V z1g;E3udjTT3}&RUSq@qlb2l43(_XL;JU#h(@@wi;iLd4059AGzrc71^bq>ELce*~0h9+fj3q)3ot@MG|R8{xm{xYBICC3Dag1R1^`$@8+}&12-J zJ&MQt&RHHrMwWPx>aRea6{P*14Rj9aj=fcn9G$tmbYzGwp#562OG`z?>%bkTJ)NIV{M7b9Wvq0D*hmk;)Riv?eC$JkN|$% zY5<`Omv0ti2 zxG+~6cF+7P@}T;NrQohbySmRYUX8=lcelXfzi=gZ=}53Y6O_YK#C1Sk#`~I&u6In8 zpK*tydS`Y~Znix7Czu2I`n;WQ2C=l@BNUN9)Z#+A{xe_pJxI5PrGP3Xo zTUCMgf6V1(#zKu#wPhZW#lqF$t4&3<$hd}C;Xc9&CmDUBt##NgzCt7)r}CvMd0?7# zUDtERj^6L*Vtexos@Z}nir&tIIZ$>5cUUh(;cJn5%e+}O=bpK!F7cH{&8|&J4vl1RmiC{0>o3$*j>w#U5pqfK6x0fw_sI6U65XNAGv6;##(?tDC5c34jls%;q2Yx7n?nE=2UA?v1dv4wma!R z-D+6?=ToBg$q$wX1Lf4gL} z<;lT6iRd26xSgvn2R4dLw%}d!w(C<@x32xDZaNi3Psb#cnUm8J2}8^kVT7_SLGKs5 zvwmtM)x)Co`a_4d=_|7vU8XW=A=!4zYjZ$t!6jbNmbJIR^j&@$(6@UtLQ3t|%`gj6 zzrB@A36${MGy$G$Q;?Nf3x98@E7e=T>UJ3Y*o`v`w> zoV7<%PUSwAHC$k)G)0t6sUvXM^7p)>y(*RG{)02$R#$LAP%cXl7)*Qtv~o%nXFt*t z%}?|sj5!zi=62)UgfmS*+N@~F3-$FYE}79*6(_EhokXFNjT26mC0F`am)a#|SLYx! zV*^BF_TR3u4)ge$@SYPIV&pXEPV}BWXvTSOGM(=$r6AF3$rY$kmGvSEo;S6ER($b-!qH4`Y=OL*L6K_n0r7*k}W45Avs7Xqe+xPVRE3=V2ax%L2x?}=k_}Yo7)Zo*(d>>ilNg!Q@Bz<6r$Rm&K z8hs#~9!V=nmI&ibQd2A@EyRyvPqX$fY2ih{ha1__&V@K)b}>F|EzuT|4@+J%5x1-w zUfHm{5BzL{i|$^4pfKlt)kSWjVg#Gip&GN6ytMO!UPA)(Ai{Epn3?af zw*Ixic<5_=nDrdcM`CYt8Mmq&6I?TPnf*%dWO-}F8D**W#R=Io6}xovvEN3Io5z)l zAg$}~=2@Mavp*ZG`tBn)hww7ScCmeJ7Xr`R%XL5UMO3+O7hDw~FLv5Kai|v~{g}Kv zTJ>^^@2+z=9(-FTD5+EUBbADc`_B60ZB!i4_^K}PdwKKuAY+_@+x6wrb4vUxQ(nG| z7c=kWRmRpHjM<&Mr9$qW|LqO`>IOyV?r|TW_2H_Yz)h!J3gJN}%11B9gvIucHeBJR zMjP?o`X0P?hiPXs2IMzo?Bz<+BXNVsgCsG*4q70CHc?ekm9H^i>i*e;SN2vKO5?g#Ik6s- zjIL!yyB|!HTj=QJh0o&kfgx{hoqUYH>~7&O)>?p}GBmc@1IwLA7 z>Y%)p{qHQ`u6QXYkORql<-f3_}D$b1gq$B4_ch79tdA#g;zjOqslyD{6t*Q`4KBuK$R_ z_;s9&`+T;H$7fxUkE@BQZb<2WJ62FL#L=~mxBSB)TB&HGEejU@6( z@sT-RWjhNC^&l8=f5jepyBi3rMRLP%(zS7?U39CQwI6@JykD8P94ioXvUG8 z?VZrU_fGZY+1eIDHs^uVhR4ID-j&ZBb5{(QSo`dHRvR62A`{nC^I8k`)a_oP+go@Jf~ z-5F^BjkRw46WUt(BDmk5)K*5hg_9GVl{Gc;TlsQ;7C9v7KLR<3hYq}%qB<|X_=*Zp zZJ@8AyN?~8RGA%EZyD%0OQ*8`pXjCE$}T`@XwiUW+hOcH<9Ns>K}tQ=4PcXmgWTS| zJgCBFNi=;9KQ$x92Vty~q&%se_p6@%3Ez6=favtt`qDmdgNWtvYm{4fxw$3_0w^ff z$_uKS1qWe&$_72(Jx%LAh{=5gfBdJU6xa@Y02wEFqZ1T-vBS)~4036x=pGW>%;O;^ z4p{gHb5?CVZ)n-SEt2aNHIJg#0M*d4aEGOM2e)r`e1CsXB`9`28dyc`Hl>h+k9VL4 zHlQ@YO1Ys&ho+7#9R9=m(N*wec#z!V0^ZzOx|u!giyBG^1=y91_sPI4JU)aC1X5%3@qms{T%0y5Z3jiL(b`ZQl%_2~XHmDoW z!Dta#Ft9OX@TZ6v52vKU=8&O+k|+~4s%3M74J zP1B-@Q4$h+N0lU@(d!ExIx<10f6w%f_ubchX6%XlQ#}VLU0vQVWC-P@T3VZZaaHH4 z#ZD_wI;hzDmP~)WI^6Uz7H4LoT7h%+)V% z0_Qb;XOVRCAW7_*@XWw$7>_(M>z#+FbMggH&LxeSs&+#fbior{^AN$O7Od@-oZ8)O zNDGQ@w~rrn&-=KMT%!Bb)is4VFMM(0BtOD7rFnhT*H|Fys~2x!)#Oi^^c0-xJH8~R zv4D}E?rcoPXqrxLMR5j_(f80Y6YsKuPO&KJsS0XdsCy~4?CFkf4QRIqU*8?Jo%Z(Y ztH6&G@uLbC^9;}XL>n!4bF#_>-d0UC{KohYk$wq#{?G$z?MGWVt2LNum4GNd%!IJe zX5E*^ra5;66Sxt(kU>xKd6#c>t>oZR{O*bRt)BEt8A-_MpoM!epnNQJGpeC;wQu0f z;wY9!ZgW!D&!Zv8uPy_2x@;d&5R62deL$w{meg-RZ@W{iE(x zn`M4W)h?~G*SI~uHeE~fC9PkAGWBo<7@4BfD*X%udEpuYR}c5-V7o1?sHB|0Gd^MQ z+=Q%y$6!;Lqvk~&fpX-V6OT^#-NV{J&M)jD&X;RQeQ%c3;`Rf4Gej!iYQBuZQd%SB z^3n~^p$jH_j@Ye#^=O=OzM4y+IL4TZk8#b`;y*e0S|)=Fxsu+eskidk!sQ12;7i|3odObsO`khcb_ zr9Qx0jS?ri2deA|eYo}Z1zg`+AcZA)!^Rz*|LcXt{`VJ_xY;#mnPc60hlTgTbyagX zq+x4}Az-S~!>i`iS-H(7MXthC?U>DEh#V!%>B4%0lb7@SLq94WM;4E)%0A)Jpt{6C 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

$g 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 literal 46937 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

  • jz`MP}2IlNBZHHt=RS&IAv0dNSuY*`#P&b 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≥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 diff --git a/img/3_guide/ch2_start_gui_mat.png b/img/3_guide/ch2_start_gui_mat.png index 1fc7a5b378da98113d8e0f33e3e4a0dc71ff0c59..4ab17fe08b9e43d14740de39758a82a8503b24a2 100755 GIT binary patch literal 163570 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°b*`>Z+ zs=N4J9{l{hZE&aMi`V2QT6*?o$joBh{|c7zhiz3`RpCPhIWhVD3iojyEKACxH7tqzn%M_Jaj|oNPQwL^# zP~0t;$aYcyfcfUT_#kq8c}u7R0{vuLcRCr|Uz|giAW2fhzpM5d#=lJ{%fQrzl#sx# zy-_kf@kaZVnsum68|D50BUQC!nMQcuIwdB`Pe`w|CrUos2dX?-;sc&>_ov#0e9J|> zCVXBQz@~&$Ot<=y^iHhpKwf`^=n%BfBEdxhd_`EiwCuRSt1tw-B;jWcx+)|3+umn9 z%a0<2bMe~w9Bm;!u>x(G5j6(nkVykxGt$D|bo3udvnhv60xmmkHlu+4C#kAHQyb(;wnzej%Vz(VU#GPPmw35l=L3R;BO;5PiWH8su){wy2GfD=F&b?m3 z4rqi!P#xwd!e3cv7LMYKjB3*3*&Aj8a~n*7D>u(BQ}7xhGi`h$ZiR3&`w1yvn_P)k z9Qht)JpOr3mN@bK51InJBOuGVehcIN9%sS_HBo!(QTeR2*QpPM3yTQSEhB{pJ+?g< zNNSM9=SuqsX?JqAVy(XGOCzAFpkE8<6t9iAn>ns+DA69X)_*n*#=S`P34ypVZ1Ywi zF26-L+A5uc;{_+*#FF9bXkUR-54)^4aS|}KH5H1lxw-Y< zF^|5EIbUiEs3DRQC0vrbZ+LN5RG4zK!MEzFh#rVg zjP8Jd*iR+-1;YU%kdKtty5}EJwfhPhST6Rp8VN%;{P zhiUcRbF#8};K?i>GC&Fb-e1kKiNWcpsx@?#eL^ulQt}SJ#z9FAYXh;aK0-b}^rBO! z5HcXg+lA)aaPS&E4~DOO&|Ui7XDFLIc3zknQKAY06`!jmSRiwSnuzr~gy5&Dh+$|< zy(7qp*waWlDvb}5XZgmY1L37sp?Z^5Gie~a8;erS_&ZuTi2hyqxus5GAB02C(_C8l zIUW#yO78zr6_8aGs-A4{jV1Yf{#{_#r<~$wXb}B0QhwOzm2hy&>Zs#GefLyOZm=(o z7q>}#wfyhzu6~_#AB5M{uONM9T2DdIp4ZvFzs!=d9;%1D4g|6$4~EUnQjbvC?y_3S zzXb1iEN!~bXH9|x)5*Ws{&T}ja-WGnY7voGtR8aRoQn40ebN(Kzi4hM{iliRJjERA z+_U5A&GY;8ThY103CcE-2VtL9{{>I9#Uy62wluQHwBXB&LeksAWuR+g2PL?vFpeb| z#*kpU(ciy|q4lj6gSwZp(ey6IoL}^P)Mmyrt7?yK34M~FSr zKbHZf%Aw$Z!=CDdu1mvaY>pVT`NeA;=}WZB_DSkVAmn|GOmH-vSx)QOVmr-WwJ^)d zS}g<47x*~XJr1b8f@PCScgy|QWRg2c5&J?DgIteVVAq0?Dz}r(|Q)j_^t8b<3SoApKshKAUynI}TAJ$j5hiWYs|*!)0>bMv?>bmXk1(ZCR#)czKh~6JmQ*Phew5 zT;JoK+T>g1Oto>hHHVabqTa{X1tH185%^N_<8RfF3qKHRU>c}pdi|=?J8Py-k|{Vp z>lk5)p&qv@RZKKVg**j?Q#>2FXl_WhL{6o2`qqtRX|2T)g+UhpW(4HxVbCZ{xurbz zSVcdon_U*m4oOuK^RP0q8Cm)1A(F!KUp4EopCaiv=%=d3VLoHjQL&F~)Q=^sMQClC z(u8huy$Qge0mX<=EYnM4g#4m3Q~AC`Fi*S4TA7b9h0z2#`O9_`V5y@q=KwYKr=a#h zymN;OQ%zktrDC*>wUE-o%wHoPwg`w?!UuX>%`Uf-FSUd5kNrm3G*5 zeP!)o2$xs1t;!q8D^fD06PmMm6zEJP)bdW5cEL!KB0I4kjJ)e&w_=0(Aho@mDZtJn z0Ea`~2bS*N-ZvU+7Kqno_oS`+agVzm0n*P704yqeR_`_K4l&?y8$FvNX_`6kkn*R8+W}Ja7i`+VNdY*umaL{cT z6FdwE^GglW!_#(ZB9AT77*@L?;w}Z1k~jyrETU$@K0ym}@l0PKJ3NI*QED%lZ9|AQ zeZ}$UiFwo#`4jAew7PbcsK1{4TEaI5;$tdxgsII`V{KRIW>42jcZd4K$yKKHN9O`W z%cgc+{&#H}RrpnD`0N6pid!g4dQ?4Gs{^+EuR`>$M->|g!abEyP@7D~Tr4ds694Wz zoTVe(rtPGZR|`XAltJHzqJp|!kXWmTMM_G<_VN8h*EV+N3|q;_99kV?j#?nihnDX) zoGt|jS(@l|j%UH#J~O(YI_O5pu!n((ris%~amYh4bHq}XW3H|l5|JzMa-XsM?&fFc z)Hc)mjSmT#a89fjSG_+IbcP`ki?sSz<}!mWC$}LgajN5PiFJ(MCLTq9e@hQ4l6$mo zUs{1}bS(trSDCMg@3bESx3`D`R3K(idm*~!$F$l z&bpRelp1s|5x4fE?3R;S6*0`cBi4`H?_=>}q$P%|O90=3J{~T#Y=E1CNj-XWi5r34 z(WAi8BcGqzdat1623>KWx;fvE!%-6at&8LS=R2wiuy6NOh~(*6UL?QlgF=lwh?N*R z^-b)dWv{CLbn#I!p(uQ1{K$>B9@KhX*znz7uAZ%bLB-l>bM+}zNSwb#c0YHHS-iW) z@_6&u7`yo>p|?U&(D;q>!xIu>TGnRYzby9ER%}(AV0ZoB&F2m~2^#vnGmowRPYE~u z%SZov2>So<%L4zeKRv*@<1c92a+cV9y;DkuwR8X9HwV77OEVDHB=_fa?AKL9YZ%;B zHQ&tla>xP(qi|omN$ii{SupMb-bQ|JzG+f7w9ayz-qB*Kyy<}7k#6DfrxFwl9ts(o zYbV0dYHb&V`Hnhq2DxHT$-I=gZ5J40q$LeRc8c>(7bW|VKzY9(+49AH<|g?EZ$R3y zz80sH_zV?uYuBd9^)PWYN<`m4*zHgDz2|1#jPdlKLA03xfkj(|TGV3?M{5ony)J0D zyYUJ}d5(Q(kZpH#|GxEVl4Z<2(mtXQP(Zl)NC1)xDZVRXj<=r)3~;x%%oCB(i3b3_ zGa3!p*sgq8g}27nv_p0VP|tshsKc<6PZoL9mq&TUv=|_Vcy3VZFL)K{y9g|o(OCDu zzVV&5M`6#IFa{_vudYtxfr)_u5L)130vx~Dfst0)b(nq>nm*FfVRPokwx9Tq4s=>>K+|Uu^@guz@K%-}{qn zTs%Dr0zIcnqPPZ`IO^W*qAZ*8Cm`0^@IvyaMof?q(O)$I`2`?y2n-_!JxUkeW<|`9 z57)Jx!2?h)9k%-o?yKfpW}zFz>=Rln@5kZi>y4O1*03rTvs{t4cm)w7M&+399w0yE zM}f#G;jUOFFq(UP1&^OKcq=sRx$m<$jCd|mZ6^833+vro99Lo`C3`-;tAs=}Dy=Tk z6Te4M#+CILiu*xZo5B$9Y8|^tAL?N8G8^k3n(ZxK?eaFC9HO|$zv?3#y%3pK{M%6w zX$vFH+)wdxjs|s{xO=T84~>K?$AA{X&yZurUvP&X6s|VZ7Hq`UbJCYNxfZ)?n_zHj zDyr!75CYb+FT6c?xThSx-E((8fj_ItzaOo-bmZDt09qxw@qgLkF%l;iM_jd!!a1)@2`5n`Em|A())jEk!K;zv7G$(hK8A;2JXS<_qp-n{?7|uF(>xfXYIY# zHx`%PCK88#=5iEq`S}Vo1AH$#K`P}NK}w$O2cWaQQIwVds#{CPy2%lKaW2(zh}N6G zj6w{|x?EQ36%$f&vT>i$Fj-zpImhC+4<;yUxD>&dfN>cIhi9LD2lpRMX zxYua3wzf8d&BnJbc^YdP(Ql$;K>ZAMGlxHp+Eov98@l53Jt?^jGpHC4st8Q4ZaZzoAoSKA@G@3pwD~Nj5zrIm~@A4p(7RrRB(>> z?M)WY~P6?xkCl{NU@p@@~UoO znOI(?`{ygLEk%s6`Xgwckdztqez#%CsbL6WtyKwEeO98I;#C@_*wqs9a7nA;CRv;6 z4|2p+Yx^l}8CCvtwKFy+2^lh&;|?I@Z!rXyd0M)j`AuyfgMCz99kjZx-$az}26Y># zt~8ZHbQh|zI;SA(@(QDfTp;$bfkDn&5sN{T_CBSGQX&`c&Pw>`*)$}L3;P)Yn+FUT zC|g>bHT!~OV*lHJSQ!M>C_)i=rEKCMApsL6aL#GUhY`{XgcjV?T5;gP1Xj0RO8qp* z56hf9(pcYUU+&vUqX`)X2?|C5N;y}bcgHu?eMY&J3{Hka&Dwv^D%=zi!=1GfEEXg` z7bOVuw0<#*`~c=oB3^DbwrOe5V-Heq3PrwNZ84L&k!1(hzSRBYgHG-E@+V6ay`P#Z ziD2)i4M_5L_`%~g*#+m4KAW!@sS=Q0)??W)3rzF4usm9no?9tad(^TqBY*Ulgk)$1 zA@xjjmM$R?k?WfJ&)@`yUpYy*UQs@xh?DDY5#JR+69f`*hcpl*253-hTe3N-I0BQVjy}Wy+ai2^<5; zASUUKS2qzcnpNNYh{WypZc|a9VNdj-?=GLqCfZnm!K2Uwlddty*M)eRE8g{UsoeRo z;Q?RxU|23lHE`MG8eUcQB#8lg!L)TgCVO`BD#UFGbYgciV{zi1mLU7nHjBp@;@Ldz zH8?lw%v%MwuWk7!{-JSK?dX~mE@X_&*K;&T3n$gE1*9*yO|wT0)5<*k+U#_#6q%4s zh^JbY!h-06Qcn4!3v`Tl!1O!G&fcqmO_MF6A5$J_i&bB0=IP`dl&Q$vq{mdn%Z}DN zH?6XM2zBNB)=ra}-!sM87w+J?xtZ@&{HPPMGozK~6W^TLsL7$5zw$1Z`=y^E3|$LO zoE#GQ%r7+DhLrXNnj&{Ds|L>W>3FYO#;>X_;wNNHeM%a(;#AXT zPBlG0hKKY{MUfWFFT_3l4R941X8@}C=|QSRLRpr3>BxEQ$G{-*vW?k&1|Lo@j7vZD zz+0U-@OI1UB`E&2eq4Ra6%VJAPC#RRzx8|nA~^|r5rk|8U@G%wN}5~Nl3q@NniGIS z9O^C@&leq7M-P*P6)_f3*>mneVyZ@J?D6XJzXP>rJiO&zz)7`Y9ZAYAif@Z;1>P;o zd(%|Svw?M!Tn%EmbOK6WBgZ$RK&4XM;h3@nMLr&BNb4r%N>JFdPY_E655G~Mx9nTU zSu$bCZQp*kwaA+9Y;@Qwdp3S2e6=z*0~GxgP!KPC$@w@=8nu;h7h?FjHy=2kh4q#d zThRoS*VjUYCn}~tGP%=DQuYMG-O_a&c%QU7$bLV}p4rZi=3>H8{K-)lH%TbQI`M0l zf_5`*@N*G-B}Jywl~Vza0#_Do%{ov}DibC>vclMt$ctpyv8gWSm)xzZl}>Cl%GPrE z$@^+PvIm73g0ANm%k$T2s+BW+Iq9m;;43@#`Os-nQlR{(g$v)lO3NvQY0>=G&8((~ ziIP4efO52i)AJ-;Hy!ZLU$hSR!C8+6B=Of4hKUCshG&8vWC8{ZNc#D2{nC!fYm+0U z3+qG8L(>TuluzVi#nc?kC!LHpF@TnC!j|`D8z(=GfG}(wc-?x}N_--0mfkKHE0r#e zo;&>_e-fW_WNWxei>P!UXwHSa6X%@bA%~syVIQ_k&{Da2fj)Us*;N$_lEmHdOiggJ zkLiqnRw)~uTr5o2;tdF?AI2Z8zp4)&{!)qOLqYlBAl&EPp>?T4BNk5s8NW+2=~Piv zKBHrNJpx+dX&g!Imzyx;E2=(;xfpIJ$<~ile$py$Y=mx2%LchMy#O8Swv{lV|j+SN%+=N*g#(Qq8~(;q)begE-u#)oMvK`ZMI+jxO*=t9%r7TMYFp z_?!)WOMa!_Sh`u6D#^=l3M5V_ZRJYP)@bXMCnhdWdndRWC7)ItzOcLvz~Q(0Ujx?{(% zGJ5(kiLNUq@`_y5)ptGoispI){xZyxW>64%$85UOnoi{PwdE`ZcDf4Ao=iJr()hLe z@@}AqaHl_JU4+7J1c7mq^Ob$f*p7UX_^DB10tT^ur<_DHb|P~FxK?!7LSy>ToV4oFSo>zRb_HSog13{Iw)STh9KTOs$$>3ptLW5{3?J> z{wG#i0V-)?T+|)O-_{#i)51 zcTPf#6Ndcy9x=4X9<)t8BXM@?Y#MT%+ljr8-^ts5S$f+DZVXIJT+RsW^4m!0LFjp0lY4#{LoxwO)i&H1JWdR-l6=;AhxyJc(epLR+KL& zakVjLWfaJ&MP0j(Tx#$%-8pHgY&*q2}kmk4n1G9pB_Y?wUjMLz>Zn9*QE zc|7dyhuhCNh8&*Lt8|sv$ntOC?ruCA3=xnG^HxUr>4tf?2Ds=^vb>AAp7rpS7o_u$ zoS35`B|cC($*FHp(JoMg=K3w50l_^=t0ut*U}kOXK}7n^jEf@ZqMm8Cc7I0sdb-^f ze_3L_vJ8i*VjzeI=!nhbh1`*`W$>LiFswEniwZU^2%f4N$@Ys+LI#2rihE@xW z6V`#mjrLn9?qt6`KTINclmje0M3d4XOv+CRLFezuMgj}^x(sQzeT?eTL(3do0|uyX ze2wOwejAyd(jCk{pq_Qvs~iL2SR`pn(?*f$M?jmxgxwWcN>?GBg0e*d@k)Y}P9JVx zHwFtW^-Y}L>ihH~L3^zu8LSZAk(4Y9!w6uovGUJXc98(mM0{^FS1ddpA_gOkHfw5_hnUn)ee=X zoLZF}ira+vYOrl5OiVH-g4+Ltl|OH2YF5>tf-u{GJq8-0CM&5nX;{0aahF1()TaIB5M?{BQnXlc}v9ur@1CkcF?w=coX63hFT$8cd~ zi^Z`TSQLV#kkmB4AxTU@JR9|ctkr}QCu*xdNou=>x}7wt;#00ubNoYkvx3#CxQQQ3 zzPObx;v<~*Oal-a-lBBoT+45M3hI6P_|C#p6=X-U??1GVjxiEa^ZX!flU8H*Ew!83 zJz$UvQk?PrhI)UTm??&aRQDyidEu#C_jz_`d~rtqiq%l%9rhl3{~=F3W~yy(DzGij z$`=Uk5ChhGlVM)B1V%1ixawAkM+6OvJMDeACQ@8@h(~2}0` zX;2O}?!G!d$~LD@@}jTcdz5tx)WBSlDjt!NT_+!AqH|H{x?*keo!_IZQ$E<9Z1fJ^ z!qYusv+-@I8^lX;SJ^Oo`eiHu>DdB=NTLy*K_0&lwUitJTpTCd)V`&@R>3_gj%l~M zw%8_hCf?>fDB^>)<_~rmgr_>+&&^q*Y?hvaG-dj&(5?2j`zxXItw%~)4!n1nbixIO zb=vep&K*ZTi5I^eE7sljlkCWQ3D9Lq8pIz_9X%LRnhT4#sfo!HXYoZw3{~a_pF~Z1 zO3{FS+@hkpi~q{m+$!9gQ%dC7Mz+o8XNt9tv?K1kXvtr2-i?>^Q$_OVW`oNKPlR#n zcZXDqvRC7ayu`KLQ(E)}4uP9zjB!q^B0ic{3P<%yfAy0U&m!;qYxJHaP7W`ZO#3gh z4=BeiJ?WVt4n=dTxVBPBgVIwazhmoXi5LN#%yScu@?~UV?sD=Th{awXBs$qp3ac-K z{uHMa^E=*P_-9}#KmE;AYs-->N$dF=SbFojL-*`t%J!$~OO z5e-?&?8q-@2f>V?PC2rF)X)qQXVD>cyK&OseEfEFVSk_rOV>_Ah(wf>ekl`u{QGHC zeiRb7F|9n=!%t^`&Hs}%&pmC9heD$s;^UKSP_A!N&J}K7Oi?AfZ$PwD9wlb$fH8v+ z>}G4$Y}mCmeMS9`!^4HYBV-?Mqkoq-HRC1t(<|fX(1yEP6m8!RtiRm5_qt)8XFV?v z$hz6!xhWE-k4Btx&3Q-VIpXo6-;8bKRlgIZn)tz}1|Yhgq@^{6L66YFDSZqin!2s| z@4w_RfpU+#os#f;A`8pP9;NQwxe<$GSkILd9X0PwN0egKq>806_d|QI$YK@dY&TcHxaurbI?n z-3$BD=(KIXDe+Uq{aI3q;V`Isf&!lgK+T_70|M~R=2d`~kJHyY=GzeaMP0mZhPcCA zWWh#)tZC(t|5lcDa*m2^L`Pe`t_bc9XfsxL{z9dc@q>U2-BeSzghP;#Od9(W|N9jS zEA?Z934i^_WEe|Etu!Gmn_%5yP^WtWRx zl7f}pcSt07?mrIvF#_ZOR3Jcx%(xo~b`borS{Od-RMW6BGQ23;LKJf! zd7bsh%c9Tx@5B?;Yr_tI+bp5->TZv&$`O?jbn;B94@^8lW5_QD@g!>^1E@gQ78O=6 zydJAtnD!vcUQX;gcg3rdSe$&4Wn)+6scSQ#^QoWUYR;z9DpsgSaT>|{m^A{&Zqe%z z5Pdx3HgapEtg)GSe2-#oELEMe2mlsAH8QfI&#I|_%svyO{^a&g2~J#L-p!Bo?n?5S z_p9DZ`Iup|Mc!y_p`Tmk6K<7$0R1`E_Wwg$8+9c7Y3vYJkMX8JH@8k(nafh;oTI?%59S z)bd9C3~+5KLS(;XQ$<%rbwWZ_qk?4Bk%?OFgBFE04Pk7xywI&%`Q<5<(qK2qiF1?B zCt=wHqJzYzr{CmRi7-*wAzSeexYqlC4Fw85Eqyxy&o?0=d#m7s)RhO#;@R(t(5aRQ zcrB^Hx^dX25u|fcjw{Y;2+GvcZNnw@ak`JXl>W;6QUL}`I%CV5ScukoPB7aoaYsrVFN4aB{MqT# ze`E>k%*JOwVw3suDLeXc5KdQl@4SA+Pl;+wRCSUmJKb33Aai255zY+-s8?O;bLW1f z`|o<^dBOC`{p2SbFQWW@G5D;F{vE5*YdA??xic2%k0GUB;==uhK7Aa~v32F#HOS)2 zkXP|z--^$PS2x_sD)R^m%r@0B6XJ3YEPwKIz2W812w$+B(kS=4a`xW9*-VDp>GgGy zImsK?_&<7YAN^eJTHH&_-Q>>Gs?~7wRK}X^Uw%a^cEzZ`1extJeCHP$I{-H?? z0U;`C9)DAEa!lw2n8Lc|$;05Z$JZExErgAEj&^#@v^T(pNhRD4C5pHsLEn47kjvtU zEK}ytr&gX$wbbs;Wz5{rCvYp8R5&P^>`jvgp8nSO7v@=EvasM{9`m&GBcPgMvGWd% zV4-`f>%5bv-V(azo<;s)qU_zy4pb3|W2GAfxtby+Q^tAya05$uV&)20kZo#nnUwz^ zYP>P@dP`}mP#G!*R@6NV-G^)-a_ZqHGFM8M>0mhX_>VJgqQHIJuCCp8>W)v)ahpOj z=`mib?3y>I*^Q!7XIXqH|T|oTdS|S&u8n7 zcY?u|8#+H?bboDANJe5_1WRZMm;O~8CC1Omub-g==Y0G# z|7UVhiMgC)duk&)rxB7&FF+1d@DuIv|Ny7ZEwV7 z=~x`8m^}AjYhzDBFRIJ@x0?|e4Eizu_^;_qC@lGBV`S=2UxLK(<68pw#I(PH%mdGC z#LiX|3uc!+_u)J@O7Twr8>KjA%%x$lF0(6-Z{yp`T*IMGQOti3i~Oj{+U1e`Q36V+ z`ji4{mBQ0%^;x261pohbYuh$8s6T{PbDWDNBV{+Y++hp#)S$KJI?8e8OS=+0o3KVyo+uXXR}!5!U*a0iL+ zo5f=0do-|RQpRTbPnLHMr=0N}PU;+uR4>z*5v*`&!&;fMsTh90YWt2NC(?L6 zlx%-uz|{c60KHjb=v|9uTECHTHx%nNqfoJ03f6^gVC&r<#Q zUxsy=_cwm^#VXZa&dDCUSRIZfCN)s-Sv*7YWi`qO-u~=sn8Cq$S;DK)S`@kW>o~JV z`;E`+4QxBylJv@W%kMq-T$W;HxkxBuJJoe-R7IMP0Z z&zsdyZ=J5SM=qNMg|aE>42f0KW7v?8Cx4U+f24o9KGU5mtY$vJukgLv+x&d%n4a|Z z(Z`?>tjYT%gUy}}RR>MkO!2LI+3Bn0J7jY34ZRS~uuMC#a2b5(C0Nm2aEAeGi?1Zx zAKUE7h@1UzH3@|(O-PXvGNqe4lI(jzw%Pzh&eG_C97(^O_oP6Y10Xm)x;*8tf-Ys4 z=yAe6Flx}B4d-;PVfbj%zx~<8zFJQQqLauAY-0BZmbKAYn2;kf+Mw7XFD1PK$u+-j`G4&nh{*Ja&}wZr)TA6es9>ak%y?4~n;Mf2rhY|vB?;`$2nZU5FY z{*I20a~DIy^sD=M?+&hBNkJJ_o(>2-5F|MAKORRQyX2?acI^zYMP5k2jUjl6c_5@V z5?F$x>E(%zUVvWy8wKFcVA;F$3#!Le4TRsngggzxLgHz?D-_`i<}5CITnVCAZfTb` z`<8XrY72lN{r_`B-_=>AzAIlgaJ)SnK3t{WrD0C&wpViXGCGj9 zUK{+r|53+Wv`u79s!l-3*8VPxzr$Wnn#8$#9*sNma&88Giq}2bn$6RoRT36l2@!IH#E+4iyn47nd5Zx%!vI zb6(L4(~SmtrTDA0a%uh15&=;oQ};z)r8piraY5$lS)3tCi*NldZqQ|`QLdWyr$V+P zamea6b)d6|HN4%&ZNa`|5Q{<7^aH(2%tbN(d#vCkM&OYou%XpE`En8vNdMx>Qs3;* zLPG=DyZf)dPikydv8sqvB?Av6;tl$D_J8ZTcJ6u72@0hIfmBGK=d6x;`2ycOjsGM8 z5R%-0wk}FH9(zU&%AUIm$qkm*S6ExXZ0z3=%t$g(56PP~k-J)Cbp$e99LDF!nX1Ix z>&uO!-0QPkEq#6VlH9;n|I==U8F?R{mdle8>1m8{ySJ;m|GK>6!i|>*%Kd*+PKIef z=x#FIWjno~Kxeb+_43SF;m$crKfHMtN{3)-CdAAjq<9-47(qfBGysX#8piw34?5}|R`Rircy(l!XGTJ9V;)X?IBXvt zR+j+KvjGmD9cFJ?%f!U7Izly9YFTK>Z@=T{99e^0grALh^)1s2XZftV`<$)0wV-CY z5`B(`)?z?XEYhbxE>@@YV-uKTPMfp5;682>O6*(qH)jNnV7a)G?^#kwoe)<9-T3A}EiRqu^OiLs20-kk4o5Rj_j z)69HK(_JBR$Oe09@y*xqpg{Wi3F7WZA0tUM3egFr1}PoPQlT+}+z z{v7a5F9l(7undnyP+Ss_rjfD-N}Lu>p_`*y+^W-o9Uy(=Ni(M zx7laUeljy#!aX=bKkkSai<8pw$cg0=Jun%KyT8MtQSUTg z{oV{K>IjOKu2F8fGE({XV0}U`3FZp@8sZ0os}o@93&R`o=t!3Kd4sTOnIww)TcCD%}| z-*X&Zxfo)fevosVn(c@|)A8PMCF+p4)w%YE0`Ga{QIo&B+O#ZMTi zDhIK7U5Sh9Pms{=&~vd3Twm3T>V{*RoDxdC+iiDW*65WK8GYwRjA^{uofu>we?r(C zG(SQq$Q=d9wt_!=DgRr#EeeymsC4)6NUv@20(`WFA}P7t;|BHtH&;Qxk+Yr^| zQjPx_*G&(mUrU@52y^S@zK3x1M-gYaEZRpe+A}7Pg7A%!@j$2=C$7~+3Iinv{l#{J zgI7&B+P7$g=E_QGGnks3jPfh~I2s@BKB#zhvsldQ1Hp|q;_~m~E~**+*z$Vleg`H4 zA`njJnda{4IaHKt#;HK(kwgu-_(MXHN-Y!<-`Ux{s))qQ?=~^~()9*{xXE4bqfjZ* zpX!Rh30Fbnodn{4y%AZ$os;DuXW#)fSVjdeX0*0gddWT~yMv6M3x@*h=MhtwD>TOv zTZ*sNrBlu}H|uhsrqF?qN9?HwZ$xLx!E-T#S;u>gSGufZEPCEmC2X8bM-1Y zJ5vGW)`P`nTc)7fJm33r+0pCU$@LJyb=-W)TQiN7@g z&t%;hp1@j}@daJ#`m-Y%b8egM{YG^kL5sHvOfIUo)aH);TJEKNoi*$`@jbxSN}x8SK@frRw>h3Q zf;IFJNA{!x(TC6{>v>O@3)$F;cUi}nL=@8V`G^Tqo%QEqiLFm+(8b8~@vY?KvUj5r zEqmgLWzTF-o1 zk|X|%Mx>p!pDwk8iC%ZcIGMtW&tT+8se+T1-nrfdH+Ceb4ur1R^XFgw=qn6KX_U*Gf@ zM*O+_2cKp45J-l4na}eVT*KcwvMxX&UfI1)H7~KuOE5}0GRF{;2uT0Uye1@gR%Qu{9exOFs~RP3d^d(Z>2S{P{@P&ZuYv~ z*`H5g%Z~nh8N4=0Xq5fCj<8 zg%rhT2q}>kETBiwFwCVlvHfmYI$7~mJLrMHGa9sz&g{vK^x!47j&X}Pt4Qwo)l7Bq zDPb&3%qGHd8-@2paGj75PZL=q`n%<=WwwQo^Edj(-uMktzBW}sVVk>Ol~QnvvQHpv z#>4k9Gr)#`C?M{8 z5(<6Kj@p7j^W6tAGhgsp9PwDi*B{hmUO)5Sde*%F1xw^~D2;t}R-s7w%D^Cv@XaBY z`UMN6`!F;6jYI`pjk&<(?f>RBNzF7|<7JIksogP_utTK{TT99yu@0ASuaFCC*x4$d zRbE23x~Ts?M<+F4G$&Oa=?vA`wMAW6hh0Zhp~_M*8K@)cU+S28Gcfx6zQ0-pDrvKW z;#~Zmf&O`??0yA!?T?Q6SKDyAU&CfFNP<&gQ_b~{?dOVV_&Az&B9d=|uFRkSGyA$~ zUvb;Y^?Vnj{9C{uJ5P7g0;=DC<>@_e1%Hu2Y;v2~Dp4XIUNFf==|Zp3FlAiREkQgj zK5Xg%25)qqd%;drD(uq31o(_EZco5#C=as4?UH7$zFY$N3r?9b$bpJlXtmLd5{H0_ ztjIyfuGa%$FxRc>;#9>l*4-mrgLNM}J>dUDoP#Sh!|qN`ME)Rhxj)o9>+s5ke=;gF zCUak`VDg^-j(3@9#a`;`gI?)?**I@#%RUXM9$}VqzGkA(ekYS1TNWza?(Qu{m(pOx zGU07^#TH=<(a`TamrY2c^C4g^nP@7-9#vlWN*dfG9Jk^+SmK167nju>&_;_!T<=m} z?Oxc_oxwa&BNvDaE*t4)_8T(PE5NERYu=}+@@wqtIo95SZoXc`kom5KD>`Z};L^04 z&*gD|m&ZG)))o2P9-Sr-NN^eU@ZI`KH`i)0IArgelJh&yI@K=IK5O`?vvrwTcDBr@Wk*;IVa9(D>j%whH z*CK$#@!mNvX%F#UYnRtZ3+#%Xnu^dfXde}@w}9ZNge}2rMDJCQn2=TDP1GIlQJ#B! zDVb1DItIVq#~}+O}5bk3ex9qICyxT&$@vz zTP4F^RQNsz3GGMjt`b!8ztwoLXA!Yb zwz{L)x*t!m?ycQZ?U3L7vXf3DCEcqxcDNe6HXmDw!E>-3G94$?t=Yhd27Uiyj!ySV zr!)GpIONMqIYIECaxNzT&0GinCi(XGXeVIi(YKsg>;b_nf`%yIX>#9`XCObs)bz`;s_W=#p zUmeE&>UUnBuc16noH#VJGO>aCM5jx-2#%c^_H^C%I*4>DeD2ZTgtL7=PjSc=IkH{+?yj>Q)9P9aKheFzNvOD#ueEC%`KyVrhdtG@owVmNUsN#Hxp&IPFYf4r>0 zbOIanSiCiuZg+{vlm53Sf#fZppQySXsW6Vy;6TAyZUTvCf3s?-{2L2K=Le5>y0dSA ze5&JFnG}q(hPcXhXcr10CG5cWMksdSCzovEu>U8)V6U6tT`125ZrKD0Awo|nRj9P6 zCp6;dVE_~33$lQ*9(Q}EjY?Fo+pPSGv^>QjF@nZ69Pu1^=Ywd>m-exC zFcQCUF;W>V{w|Y|9Cdf_WCv?N`mFuvJ8la+a0P$=;K7-wmE3gEx#WEunJeuo-E2|~ z&3mE`LCwf3_`|A7@?TG;ui!LSEuiDKsPxR&ek0bE`=Ifm4C;@E?*+i%l2TgO$s*0) zAd*`H27N&2U9O?5+vhmXY?YBFAvjts%au5fNy3-LICc52Qwaf08&_3fo?AkX$!~;h zZ-54AQ4M+GyiScLK0I|=@@@tisG?yT zx)sC&AcR;c-v*DaQh!#2AAQ8m)=|XEq7ePfn&d2Fw6Io zy3pgwv-0^K6;~;@ZRP}D6e|1eM($4|C03Fs7LdHKx1ZQVy8du6jaF98pXbNCZSCj) zsE$g**A%1IcWZ=}GtK#$0^adIADpQI{VGcNp)>LZynx&wgvdVbX^$y3=X7o176td) z$Hl6uwwrzISO7}d_P-EsMlitvTOYkYY;E5eGrZ23DILS8fmT=iMUNh+w+)w`&X|rf zO%sCTiB|4dMVr7{6jIAPyh1R*muFEVB>0QN%Vb|6Emwny>Ug=?&Fm8@mp0|5kYAS#ATtu!Q(s# zIf;;vr(AlpWqi5NF{ZOsc9QL3AC2q?8cERHTTh3q)bsH`Mkr`M(? zU_YfZ$`2H?QXofN#&;J?hIi{*1_(>Yg1_-*hlGf}n*mtu1e@QhP?l8-NqdWrCya!& zf$^bk9E^;pIVGp7ixe zxDPLl^Ygrh3 zxU=JLkV^?>V7YJS`uu|@5Q^JA_dR!b{5L?5eOhP{`_~K%D$<@_@$%G@5~JN+02Tn- z%tbLKh|icx?Xq57Nc33xX8_bAQ~#~kFyZSq*OhfjV%tYDpIu_WHEK;s{l36MT5?;Z;ywS-q@Iz!9V6HLc021CE^k{*v6#4p=Jz|s41f^0qNPJj&pxxxcr1NQj z`1nN8Z-_NKcpPkD@!jOf87VBU;t8x@I#6*8R3lS29?IkX65f0fL|a zmOS&MZw3A@9b13!?gotdwgAx1&VfpP_O5-$Sk??!)~U{OXc|K|&|J?ImL(#GKD*yX1R2z8%sXTHe(qJ9|K`*WB^L z3!N~T^X!}EU??*6rTj}Ut`6xNCz2h9k=cQSIPK;S>tf0MEk5hac|7CAG)EBj9aYf# zhwUBQ4vYBc&kVNYs{5QlGRmU}Y7*lbc4&aNQv%IN)XEb>mzdw9j$dJ$Z7%BGD&~HE&asGHR|@p!WY%}R$!(0&!BwK1OdObsHt_V1 zFHjsQ$f~~lOB7YFN75j!abpMV{=0`>6;$$IYE+#}TwBnk@%8swtP{Kbi*lDX)V(PCL(0<^lb$L$NDtkkTYV|t zU{c19xD6Nq^pW4{^;kE_V%N$Q+68~@=l%N?Ph!P2^N1yy@#!QE=+g9ABX?6IJS~14 zQ$cZLbonCqP|~t&fjylRekR^jPvNR9!%43i<%O#^8t#Hvz8H~)CP_D@SYdZ3SJvkP zvoh9nhS}QI<@Zksa?IdqKKk|2{!8e(yQWTTB;I$l;Ad^NgJc4H+1wEb=UOIo#*%wC zEi$Jw`(#|`T+Ya`2qm7$ILlXyP=#Z1342YLRZ^^>Wp`5M+s(Bd2rPIoiM67gUgExi z(?mcu*3zEjE{@Ee7(UR`LE7izCgxU&ayY7G40#J7O`Hx?8_>z%cKXahsZrge7Xc)m-_vF)t6m)2;mqswFI>u;Awsa;9zIo>~`W!=idzSFj7gfY*Z zMP&W)xC@x5r<(aHT}!SdX`h(mgoR*S{!CT{>LkaZ!u;YG(*FRAiyP{MZ;b0d+YCmq za^c8HrCU>)a;fxFHSwMTIhqhbD$)~bdsf>oT4u$h0I6M&s;YI8`7;*?b;<~A=_IKg znK_b`e5FjBzG=M?A9UV$waA^v*nToWa5Ux>*^V>~5wv=3*)aVdFl?EH_L&{%4fV!Z z<@iT%q~4C5Vz=*~;_HCTrw*|vFFalXSY&qYh5iY+5^{ymkQcqaucOHo?WTk#0J)z$9x4j z{$mUT%QbO46_u=5I1&D({zwLX!!E&ztKBH9tyheU+-8-6kwNAQ%aPpockWDc(p-|L zlA<+ti`*f_@qqi9dQNdet0LzIIgawrI$@yI{27H;GNpY_Tv8d`@a!jATm;4DUZ<45 z8ud&YTu?9iGRb>{mkszDn`#aC8kAAs73Jxu)O_E%Mdhq->XGcf2h|^RYBDY3+jwhd zZx2X0&}rcRco|}%$Gr0ZQ%J%`QqBF=Djy)7Tix<|nIV?_y z$rrccfgL6!o-;tY`*CRP{ywgLxpiZUTDYXiBzFUw!R$EG)^y?E=kiA-qq>*=+f4lL zrmWl)A9Naov5#K-Q@wXwI3&5Lk4d}7kag? z&>hXg0`j0$=mp5A5HNuM4%wXcqlN2;%Y8nmDD50L2apR{hY{L5 zASUknKrQtjjf*Tv%oX4AvfSvd4Zm}~$AqP%eiXZtU;<#n1hSKI@||y^sq_>3x%hV4 z!(ejov@>GOfyQ2!XU3{~kG!+v1idRn8F0BRUTJ?W_X_7@GU4>H&qj8g^Rl>Mo2Qd{ z_)P;QapC__TX16XWj(C#_*kw~%^dKd*J4fI0`x6uqEDC3nE_{g3{gp0R_1sAFUGz) zDyr{&cMw6bP!N@dp&J1~8kGj=?nYXgp-rT_yBWH>6p-%DQE7&dmKeBu@bmfpzW1(m z*S-56m&@asbN1Qs?)Q1#=Ydcp{=Z3E%BITlX!D=fOJ8r0NA)N20Hv#49sM$+PtCJn@DliTeoNx>Z3=n|jU;Ny>6I;xM|L+T-yIDjJ$W}q_kv=>@ zVuWMb1vDN$4(B-z*z{0cIu!Qb^qHUgmoRemQLuoG6s&z-3rSX?ss~eClF6Np{g8y9 z;Ha6_!6`-Igxjgj#99<#LAnS41*>)K>DYu8nm@*O^}hi*r>?x51N_TBf4%zSHcC#{BglQTKen;_hqlU4+1A&*sp`MNvy-%s`(8)WV^(fXX< z9GmdShS#I+79C}$90mV8M$WPdZrIIR!$+t%(%M7_BIw!vyIU3LZ|+ezt5#&op|&hy zgAISiU+BRGbfQwWM$B1Hof9hMLAfl7#|wp5S3Z0X^S}Ee=o(;-eP)cep@U@!Qg@HG zl+D*y>GbrDSE)_kpW^9-&nUA#tB^+fzySE-#tmGuD8Q{z7y9!Rx5vJdG}j}CO{Z4j zV%6uObMD`{^N*q?Z}NgT9Aqzz z0CR`K>(nV;*r)j+0YSI9&^}>2yW#seSA>_lCtzaL(V?#cZ3+8D%G12A^VskaDWk`; z(-ig{F2KNdV0WxPhS9MFbkwiVy(v%z8QI&OxVRp53bh&#c=btC0DldX2NUTt2D?KA zM>L3B^gHTWtn$9J_eYLs?j(qVuaR^%c_ZeE55XRQHp^md{QYu$Yb(0Cn)_rp)SDWR zXetWznzX$4B2y&+t831omu0Wt&Rbc}bGM`L?%DAU4>+X!ZJDNv`g>ZtZC`@_NWvfANS<724B0zdC2b{Dw0}&&Zku-#hYHkO^YR55+e5%=G23HC`oupP<;|tvmljZ@;pmmyYp?3xm`gKyzO0maX3Bevd|>yu zSZ>%glFxqCt#Z$7otPx*#pKYWwXnKXq_S8pD3Knw@iIcF0RQO$R73VxhTTj?pgLcc zhSmT%7#m7&@UD_}mgLK8f-Aaj@EL_#><*%fihYMygfA9_O?sjj9FC^Vkx2d1k=U%< zTspovFmxOa$JLRu6NQ?Kbu7__ZJ$#$M>k{RIWMUJMNWHU{IJk-?G^cm;ngSsH+y@3 ziGhM<^$YVKyYL?3{x1)dI0|UfY+`WMq9#G1k%n{+EwZI(dqnW6I!0SaO8W3-CLr53 z5PKF?7g}&J<0m()PqU^7DBvYCZ3XZ#wgZ2pctS?>T{H4I8!O#b%{dIEdlAQk9{eEs?A4L zIOP_j{(C)45};Z|E^>cRSYPP(JKVMZ=97t#pya{}W<&!DS-8zVNlw%C-(`41$UO4F zc<4N~EP`YB0jX>4cbqj@*1%8p`DU|}BByau+8YmI-LBxmCWbQPbdKaRR1L4<|j9B6Lh;y*`-Xuic$|hj*EPS z%dfNKi0gm8#c*`^Q=O*bwFe{J&Bg0Z8v>~Eq%%P}m&e8EiEb>AgNg~X{IvYhRaU03 z@37nDkSpIyjqCmrsWgzky%yC=Ef1$a-`)6Ke%dHn_-FtIY;TvQ%~PY%R4&%qAJ;T% z-=?3hNeFY)d_P~JgPNx>Ol(2fn%{(0(6SsO*!DIGpnxs~9Pl!}i5%IWZw4Bgq6SIQ zqv6P0&?$SUc}aSi0)=0ubUlzr496Hl33ua@6Umhm;3bn; zr=I^PGsBZl9f~tmJ7YHu{I|wzKV<`VP)FXiJ2`hj>K0hn{fswH2_G*|?;VvFw)uW1 z^z_snP14eVEk~OLO)fNfIG?c)ELm7vM?D4}WEY6bGoKYT=Z3Cv^}zFagug&8)5ieM z6;9~ozVHMa6xlgIp#Fu#r%{mXOG=*-xdJWvSHPAv=seLG@W!OxCliF`|cjgRgx*ci| zN=duUqg5GBPo^1}Fw?(Wli2Fv#}zP8U+qo? z6o))gS^~UbRfPw|${U9R*(60wuF=zB=}-iZk`v)Z=2qEgOt8h(8~QfpycBq4TmIqW z6~iTk-r<|nN`QR$A;O;SJLC5AF}K6i%;q-=xYMePE@jCs)3x>u#W~7)oV~^qy&h$(yw0!lQ@qlnian8UpQEYHZ?&d$QVZEtkr+Q^VnUV^z$KctRIr_ zpFe}9LrM22ozNN-Kp3OK8^JTJ%4a0@EH5S88Lac^c=4umPFYR5SoS^H-)Gr+>BGyr zH+CE+P%2QmW|W%0*Nt@xo%MN)LYG_W!gR~;imH;<`D_{*Gm2XBKgigxbLft(U4txP zuJ#=Ud|A4*FCtOre8TyS>CN+H$&-ZlWt)KA6oH<+D>Fc$W~DFQ7!aIxE^SdqrQV3m zX{x=2;{bt^tXr7=B=#Tc+Vaf2XdjNj)m29_Tv?rEUJc1lS~J+i2$|Ex*sTq$*;dQ99Fj8LRj0LVm-OpDz$~b=dBaJX$yT}I; z1HP1UqmnM3B$lsqzp>7ZwtTIu!IZpv`=YrPpGOXQ&%xORN|$ALH?S8oGDz=FKnv%sSR9oq)8hG{;gJvYt zw5jRU(B{l&kA1u|q&07{?gb5BPj<1Kn3RO}a)P0yjFLf;Qiij0PSq-Qgn$V5l2u$T z;?x|K5h%Lgsk~GV#Zein2XW z?mIgI-!(hsoM$vlwatkcKxHf2TWy$Htq;*aV{}3qFlCD23sv2Jl6d_4<>vt}yrREh zUYN|!vqzpSlc4x5y|cmZ`kC>!tO|XmAH2qA{I~G0lB|X650e+eyE#0LOayasy^Pns zvIk)Ue^y=8TZUMv3cBfNh&E5wW#)B}v{H6?ef`wB7=D_|U2=!D5gEa@cQTes0TnJ? zsh7-GRFHuYzc4YSurKnvKMDg@$#KC0!yud!@U!u1mS~?~_B<0bf z*6O&Crl@u1w|5(GXSts!#nV{>P3Nv6V1Ov}TWz6HGC%*(v<;O-6<0lP(b(A6j(qI0 zP_b%hd>TyO_s84%ms;4D$QFUNoSIEKqp!pD5v1Q$sY z$&~LX%n6ZZH^$e|n+#Bpru0O-FM02y>j#_}H|HM;j>PqRjrfO9fKvO1P_Q?qT%b&T zK38LN#>NS7z$J}B4w-)D!=frtv+*eeBd2AR$$+Okyy??rV%}xhfV25;`B5K_HylEZ zRi8N7h8?2qP1#=M#K-o=^EE_kZT>JCw?1pNU}btLHYqV;`jmjSkn(3}^qPBjS|dZ4 zv0V$Qx=_DG&--i^k?<5sj#`t*uB;r>=}lIrlaI+rNLc&b8y~oIMNx3ZPYH{EwkS}O zE12Y64;TsuHZ`vvJ6CvpB_haw>u1Afnhh@ng(vnbUsMZ>==vfJ$D_%t_WHecG05r8 z^ItK|-^wHK&8WdhWy#%o1q*)OIRd1N?yUbXSIZL#ZYj(veq`Xs?L<#qylEnN7V>c2;(K%x z$qZK{(Yxh40<~)@1YKfGkML`8tgVbT zpvirg-H%2eW^AG*ewd`9P^HrpIM29@DDU6)u_;rj%vZH zW;WSzX7&vS-tKw2V9_U=Tm*NEoMfeKNXgN}Q>&^;_lT~lypNKP$a0Ps7`J+#^_;w| zTUU^k^&xRdeurm@n6~@frkN!5)V027ro1G4O8&{sG=fyct10^M`lOW9SGuemihh)q zWoqqy(n9)J@i(0`5SoQ+>OZJ6XGa+h9qSKyjVU;Uz@VU0ObrdcXm}LqRBPQboe6Pc z)U0p5eq32C9eS(AZHMCSapHYhY*kbD!qp(VK|Cho_(ox+8#?g=NnW^{TBDxUJ#*C zzn>TH4*b#U=Csrq|DX5HC=q}SfxPp~j-I<2xAAp!v|0^+x~6h^ze-l`#HzwJFCu>K zr};jLagq`|G-&Kj8%tShQd0Tz(H<@0n3(Y%&COS$vmQ&()(92J*$25? z*&XCBhw)TJBxwr;WtXZV%gIGzi5 z7Ns7)+H07~M74XCUNhVhSpsI^{fYNO_qwQ{!k2YkC%yXBmyhsB50v?3Wz))Y%eab} z?aNEyqu5Mm5$F8tQIc}%m8KfER6Q!KQ67S#!#nscSiIov;u$TT@^^0Pm=~z1iynkU zmyoyp7W{rPu+&JF+~cZg<#838LLAVCL?K>yBib^!p~B(U8-PnUM*sQn`OZx8D#l-- z8=z~PBWn1Cq)JO#Yzm|AjW11Mv?SbQMvSIWP-bOR*7AA`XKA#SN+F)InwGy9t|VQ7 zqyp5GHvT}T1gTkIhQ!RA==(EM^c*8yz>)z|0~;H=FFPD}SEJ=HbKEUQ{&C%pYiABG z7%jri`ZZ;TeW;Rr$lZx(4yf{lp+}uM+?Pd?TZrzDmlL#ctL>NK4W=guB;`iUnI~2a z6;dbOfp-mPS;c4%x(ME35#~=q8234@4}~e8g#0^S-#J33mdgJ$Jss%gBb2GsX9|qo z-N(6#HPYWQR%m3Pw7gzbCM?mTUh*D2$9UpQQpfc+QR3|Ko+C}pNUMp`CWUo_m01$G z{BnQbt-YY@L3-xN&M_n&n`Iycb@1TsE`7^sbl0G_nZ91RXyI{<7cb&ag7KQn-Oe2a zQ2lI1_vQ3XAb+M*v?zB`%CF0!x8K6zRV(~e3$3C?eDj|s9}cXVOO8L284}3dd(JcH z8Rw#6n|w&neBWd{Dvm2BS1cprv=@C6u)l0~mG){CXkfxSX)7LHmCRf=ABTJ%8KVOC_N75DXvvbKIBcrH=4B~AJx9pNWl$K%E$Yp}dJrgNIyW7?1U3fQ81CZHLJX zV}a18fP$S-%g_1{zu?*<4;{vL_awj$Q{LtB<@;gdgn^&Eitu6BUgv~^6IX0!e+7O@ z5mK_sy4*_WASCt2dN#9xX2z>>ZuR0v{wXJ=W*LpJ_^~zqla9fPig^{8{Mu?2xml@6 zPueXueY9yzAhqp@v~uyorOlzhCT`4^N@k=7mDO6kt^fANH;-}^Ys5Rg^(vrRqAV!< z48A>?Z@GSZAvVKr>{xS&>Mu-#jEY`KG|-h$*cqQ1T2&E{tZ|ljAM?a8J@~x}doQ6? zw%PIN-Gv2r_8WqWj7(X*77t=7>*ZVGikWwpWq>ZwHrb+V8=P9ThMB1;;N5VSJF&zE zfmj`=!%{ftCbXTzwExfS%lVBXEPiH?_ixc0W)DofHKI{dbzQ>9h+l>y>l$<-z=Z=! zR^I~q<-L)eFYiA00h!g7VAjQaLx!E)nG}s+CIFA`5dGW@esR}V3i#cO7C3saVdwib zWOM0BPAXLzvs7<9=x%DC)V?zQX|y#EQ4{s|Tyl~rt%d!%VTaxWp~QD)F)~|{eU#lE z(&A=X8cH8}Wg*|CQpq8c+$XnZS_%>dUcOx8YBF+eZSJ328HG>}p28x&slDkXw8@Tn z84bymu$wB+W}YA_us3~=<6O*T{^WWSSu$p(%O{H52o>G($E@t1n|^=WEjRY_s-vxa zC{0%Cs@8r(FKKsyvN=B_5U0Y8Jd(Nnmk*hG+N&GF5dyjCA4CBSpK`p3c?D+lN+Yj5 ze)9K_)R1RZV+Gw?)CuJjX8qG1?kKpZRGPeEX)y^m{$^ zi%H2}7H*UFzb4gno>Bf?-G7bw^KH0#{T3px(5Kk0@%epm&0K3?p6bOJIo^)3L(U>; z#3p(7KavS!bzk9q<@6_yU*fYBfqK%aD`Z7AS#Ij~A8Hg6b$Sjzh z4_#D$#()&;6D8rubH(Sq>z3IuzlJ;V-$dkg6Dvu_<`PJIw&;(WYbY*@wG~Lj87RsZ zRBE}(Gx%Z$8LlQDx1e)l!YDY%dc}o99C|@~$n$Tw!)}H~FG^6UU6&Ueu5ItUR{YW1 zpBPg`)TE>|FIk}S12L?pN{mApv$lUcdbBq9oN#)S9IJj1^f=@UOS9x#hOe(CTGHfP zmt~52lhRq#sCimA8&Os2j~%FVFAc+Z5~NKn>V5^t_X5P%!i)EDTfS<636QK@0URoj z7jky4bFk184fdjd@_o{CrsTe2AtSMdJOHD~5X(|SZF z+N^1z-@MxirCFVd#ej6>GO#o&TRtFMxX0h6ZWm{_mjXLq>un_yi7_ zs()_ieOx7nAFUXu zLlI{;Nn|w^%k>l$6cO`n?NTNk-2*g*|7wjultPkEojZW>J16W23LlnAq4hsNCjQqY zkT8HlK6x)UJ(Pbj(Y=|E7oQy|AUM(-PW_(`4z3od2cz?a*h&i}a*l$rQyHD+C~N_a zkWL;&0ExqUwEPdtdCY_FE#Mt~OUTS{AI{`Q9)hF93m7^22iw+ueEl#oF+mHo4)&Ul zo8)t3ZtMB_@&64?c3x535KW~#-fCH~*B19FE7 z(gP1Pe)F317n+z!Eq) z8T4UAm%KALJ3Bj^f|3e9;d4X5sMy$EU|OW?)zT68SfbNhs67X@?b@RKzrldN)?5R0 z#%YyIY|40Xr`)2Juj69N=K!-1 z>{NdQ4u)Pid?z&Tq7&N1@zTX|Ndej}Yrm^Xyj~aA{<`IrnBTM53^2T{8C$D_+2!;7 zOZpx6N$=^}-A)c5EyH^_rhLft&td>1FaE)lWJ}q|U23~l$?#5Ql{b-X#g5rr`6Qv1 z>8e`PVqy#F^{NONtwiXEoxbd_2}9-+^yu?_Pzvmn7+6`kCq;AQQ@07Xn~wEhsKd!a zn;p+p{zY3{q5%QN`o?pIx;b|wqPr2c?9fR{9zlNo!wc+;65S6ZJaq>6cLaFXvmy`v z`pTRVr@_?T}7bZDUWP z4W~d8pU5E|+u`Dz3!5&fN_I`nB~Sg?Ch-gqDqgi%Tkj0VZkW*p0FW5KM{;{yJw0+B zS4XL(0-(E~tX8N&IVi9nbY)dRiC#nId@fOYzXI8M)SLGRPJjc>8`~;xhQr62HRLR~ z0&hPy3&Hj%bz!T`XZN}~g@;XdCA*LK3m~K3|b=sg2AB;G){YE(>cTj1@97#H0 zOm5}z8p}NM{iId%X9pA}ggwsbw?n(P_q@)Lv&e}yonw)sRe9(&-h-m(==u|jbnAr{ z{i6cger6P&w4Vss5=&FP*yi(;In%13jp==77|Z&bSwb1OWianInKOm?KT#z zZ>~%9CRZ?hitTE?)|vC2B2BB!L4z|RxI+rjbai(GNzIZf%Yto5sDt&7*=m!nZCaJt zLO~Y!%-r1BMunDss$+N32cO@f-zx8PqG!B!^M1;wM8Pw+iVylcv3&v}bsDwPt|Y~L zj@ymK)8i;}b}Vst^8qbsp;kk_=1l~l!1X;9if9W76tQKui&Z{hfz=>gP^Z#7v+f2e zp4Fn5Ti$uy{*QzrOTX@h*A@)xCI&>o#a&rx=k5=S&C28Wuf-L^Fw91G<)V?F2bdz+ zf2Ie&ODm6F=XF;x`5t8KfbjCmDz^Pn@tb}&rt6MZdYYQr)*Lx8dj=+bE&nZgOs|NA ztZGey_6pkaVaJIC)VGye5E0Xvm~zhDvErF^MCzc{BKFNfZ7IUnX*zI6a}Vu#%HEe2 z92f>`_t804b_xrNeEaf=@hYj%TT}kG-CtMB

    No{ZWI6d~*Ns?&%(nk7E*Xdxgy` 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

    NWu3aXTb_Vg6ElUT%h|kZ#*yqqrBS!>+CY-S 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

    AJ{Li$fyJ-631Nq%9$=fj=rB9lh`oj++o7n`Ez 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�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 diff --git a/img/3_guide/ch3_guide_mat_build.png b/img/3_guide/ch3_guide_mat_build.png index 412af043fa6264972f980231905ce1ac6b3869c0..ef6739b4fe848656cb3443f8fff35d4f774d6531 100755 GIT binary patch literal 179301 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�@Vr3dj!Hu}3GucNxv|s5{jg7*-esf5yZnY>5F6;Yb(yxX=O+2_&A=lqo6>v+ zWq~lIxGVw`UE8hDr^l_o6uh=ppW|LpLZe61#Tm>j_l-$6X|eYQCGedh?tiAM8AZs4 zyFXnT7)5!NEd~nU^1fk&RK*k5#g4iDeLwmO%6?#yZ9ZF`jK=%QmyEkWzOogPTf_{eA#fHz>V2AmV~TG1g=O( z&CADyYPwXJ6~#gHxO$_Vr(SnL3d=rxp@|?mMe1jX*}D@i#CzqQZ)M*`8YP=U_oAY% zJ5YbnW+>x%X2t&qWQK~P|5tTj;+nzjGVUyrNI3R3Uzca~)cBVuyz1$bJU`Sy^&<)v zp26}E=jYF1M0@j{1hm$caCoRlrF-u~>Hw>1-Xye*EwVw1H+1ZTQvJoFW9@3&5`VJd zGAfvfe?I1+qiTL#{qz5^^_Ed_bkVwQkl@y6<8Hx8a0~A4ZfV@zEw~4VAi>>&dvJmV zC%C)2b1UE8=Z-V(xb+trs%uHjx#sh}^ShLcj97=g*a*%+o%q8sqRtfbdtzG$$4e!~ zR{ShCS^OrD6L-RotG|T;L<8XB=bGv}REef>_ybd@^IPHjC@q-j52EoFu3HG-U$NNo zeo_+6kWzKavK>!Phes-iy`5}?M`{)cF$Pf|eD$`~j9$76VuH|##xlP`o9CAsJq}hX zlNq}CK-t7T=)&d2Pb+dee1fZ$`$7jJ@^ZT_B8O5o0glxOK@MO;DWuhfPX8l032xfq zjEv@nD}N0$uyV+9z=Y9wBWFqcx6fUsz`zFt!US?3ggK05l<~3w@gQ}5q_i?rzF(B6 z$hydQ688wqw8upSe;$0xrY&BBdvTs9gcQJixZ1+Sr5ak z3O4iK5n~UVe{FD11yEwfwh<~U;{Mkg$MEu1L?(v6y#`Hz93bT?^V`p6CkOt@-iJK* zL`b3@Gb5T%Si+-=swU~?wWp&3|KlIBev(g4rTU*AuyTAqzoKrnuro7qT*|`AK zKJb9Jwq;~O!2&P{ld_J4Y|xd*C*LqV3rfz-1hjO!j%O`}7&D!4YdOq{>SLu9&s9cW z*l^hdXib{kj=+}MPjfV6f>lB^u_Y*jN$_9ndTBQ)y(Je6pOJ+TrJtjzrioVKZX6x= zIsNEXhf~paf18Tb__VXwbt<{n(XQll;ZCXx4i3$||CR&!5}l0)CMFFqK??aQ@Z*exVJIPDjo2PeQ{Z>=nV^UjtS+Zlp3IDrM#J z!dlm{z*eLhNuXf^fX@fzCdts9(30g^{uHiwOk9R({DDB?MDh%(m5$B}j$ zYmMu0EXZFh+ODZsaxlMHRj~4mO2*jF^4Z$Nr_0vkx<@O=h+Iq19yKq&HP_bpfG?B= z%oBN0Eq#Q2gd8W4=cPT&`)KP8J4PXzl5blZR5P#hHWxPam>kAo=Ns`Te$}gyJ%HLv z65BiZvZXxuSC1THha;DPFRvgGMlbBR`>VNQ^QTHS0|pD)EJfFg*}szEYVNb(R!m}9 z-fm%Mg~(iV&XuUo73>kxfG+}jKe7drD8WCt_8bg>X38!9bKz>97koNu0=9bOm8X7^@!7W<#*eEyjNbPs^bVQmHSC#!QI+CisPB9 z=-Xq{`Mxo`fwM`1v6H( zQ|`Fnd*1!2MSZ)hbVp!pB`~jPnQ5r=6bg~1%mZ>y97X#-%+)lugm(oMOz^|8dwxbp zX*h`70Zl0R776tz`oSsEO3DW~y7)M9H@uO=fx;E4jj|B?pTDLy ziBBp-ol990A9=Tje&ZwA=nuT`sJzu8^1zHpD*twLVI1-8UY#~+l6k)x1vmjF=>-p) zI9aG(nI3zd%ducDhp$31w)jrgX;23RnZ9lk@2;3A_H$3PMgyj7mbb| z41>pcS>)}5Fnb#}4Mm~QAPjY{HoT5U5l$mMVt0^q95<)L4;50T3$9Ee>AYN#pDiq! z56y=3SzCcPBQI0qdXC9x5RK~XvD_@Js~2^TL{o&l;@tE&%wyUfbbiDFj2!=RJK}+6 z!_UTJ#mNwP8`{xeJftd~JW^eV6w&Z0u2r!v=N)RchW}D(S z@fI5)GFqZXgI#NhC@83}t{GXW_`9%fW`uzGSBxeV%QzaI zh6qtI`QY`O(2!6emVS*xB&9)keg}lXBfVA`ch0Zzpg@5tDTvsenO+XUPrnUWzm9r1 z>uF~(W!t%j5tCjsRvTfC?TP*M=()vqX>HgJob!L*3_kC0fs*Yg z#J=#RcDG%0g=+-^wkMb&C(4p`ftV~=-cV_aCEQ3QYwX_k@uCwxX{i=?|rUUD=~h~Y{(lDQKE8H={LnY-MsHAU2OmWc_} z+{n-*$n`JgjLFt0hjTeWDz{tN-tZbhykFd9pz4A9x*VIQKHpPwnsVt83Sa9}o*4%x zrsTxQ2D;f>>HA%qyi@gSMu({-;_UlEx7m#yk<8SY>RbD@J+mF7W%7KVk=v$;1{8s z)B(>;m={+p;LPlj5TODvD)klgb-N8Q$dqcF@_t#?F6yA3IfovSE zJ>bd0g-w=m3SM?$G}9Cp`p_U9yom1;{^5p_B|%tQa&)_AXK^10-Aup8n{TU<*bBZ< z?6&K|zOSkre7t8lUwT%c%QI*>QesSh;Y7lz7yWF+x>-msW&*kw=}HqP;*5C8KJ zeTA+&?|cKhW7%JY8@-Ga)d35{w%BqR7=nN6_ZWjtB#}wisKb`9qS3CmCcGtF`llq% zLHTfIz;4Zx^o^Dod^w3gfqgU26;6}zPNb78zPb{{E2b?*QM6N-e3_Ei%Gh74ude2B z^7!xF2?;xJX)FIY#^bnH^Jspi{wAcIGuRg>v_26$<7#Q35u&WhDz%vM?!|5-=yq%G zYN`=EEl4?843!wd5A3g{Muzs-hs|O*1OKV{)8>9s<8=9I5#|Kw=}_pL7H4rC7kU~<;J9lZT*asUaAKH5+IcCAyQo;w;Mch%iNvW_B~cEB-8567z~ndI z+?snZE^!2yDPLpz90>|j6}GoduLcOLrkaoJBQwRAQj@c+np4eu`g{X~cBaWaU=Qc5`F{u!ix4^KYrXlN`*Fve%QDTTzZm$0v_82?V z^g*}n1(*zoS~W-wgFS7aO_F;4czt>Y$R_OsrZ}wX>n_>IZd(JxEu(R+=C`yF?HV~HQVk397;MDZMZeI; z%8R6%l!-haZoc8~vV+^2P{c1x9%^e9@v$9~{1~o5fN&)tJ^r(vjMV4lB0)M;s+@6q z^x5^u?zXqEa5)=j2-B+#~>{UelP%>K+f%OMgVhX5&uKGk$LSyTV)enmnntu=eP`%o z!l!SBEBb%mx!6DwRZ$awu)YeAaNw0iPD%>?8lauzzS3sG9+H~`Hvk?ij^rd4zKi)G z*V@J^jTAaFRDB~%R?8>HCmnUGKQR#>x$Aa2cbx_H4>{12^$xfnytu{AoVHX5yUpD``OV?M%4% z%WVwU)a68`a?jW<^e7H}?hqFj7SCDQ|A|OQ2WGOv6V;2z*ZZAZ=#MRQ0un;kzw$W< zy9ms6hWyr#dpOaJ3clCbpBg51bCXy-U}%rzYyz-RFc{A*m8WM{t0bapaJA%1>-VWq6aI-rmZ+ouD zFXjn)i8TDUzsVW?!eV^fQX(E` z#-0en=lhye%OhU?`E@#64N9!9!B?y46k80Xh z`dhXl1=_J5lR$ART`xU=jl;^~b>M9Yp)7Z<*NIzt5HMog2) z3N`TRotnPZ^26Cx{wWM(I<}oN$uT6_yunOgFLb^z)kE2QY!XF=$I{)67k46bdzZS` z5a1j*wy*3%<>y<0H{9IPJ3Ro`=){m=Ayz#6Wkx>%zf8yYzll%B&H4@z(b1zkDC&B( z{0R-*It71Z&>mpHmq^e2wbsE*72EOW;K>gROMxlE^R~*#rEbuBPU1ecgN6YDwv-VQ z7<^aoR^}Soncqgjqwx2BeEu!8#iXh~

    y|BYVK&2x>rEi|T8 zM+6e*9F0MZ@@&R$bG~<7{80)kGU6-x+F4vXi-a^xss~k!RWjnu(xg)Zdyc*55v1L# zlO)z{yrzBQ2x8@2zw8{Y$2#sQR)f%vUScoUeCBW&S^lO65#(1QlFk~8FZZRV z(4XT^OQIbER&mBj(nA3{?FsV~1;x2qr!q-{)nSt?eOQs#$nW~g9kmUGdwsAK6&A=# z6Rj}QT0Iqp2zZH5sJ=XZ+}5BJkAk*ck};HGx>XDwHxEISf9EUz9-vwITqIIx zb?KwEf*9*Ibv<<=+-B-3T7Z<#3W?uOG2_snrO6ZeSK)+otbblk5+uW7QII$ZLTf!c z;T84u@#esEynJ%Ocx_D!E)YD~ur>dIBlE}bTrnv{yPw!@>Zy_bY`NRrZaC!rs6(6l z<<85V)P^(({rxd{82iIXlC8}H3HKe2xw>R0nH29mUsXl7orCjC*BqG z{@dHsr%!&BWXDN&4$8}2JCc;jl3t@TCA>ynSnV2r6g=fiLwB7|Hyn2kz^kpSNFP`# z-Mjd{+J8?DPV7K{M3UvqT{9lq^Eho&I_m62HeafX@_0;|*BVE&8M~{mB(-QrmidTn z92Z17W``18rN^Fhj*9AsxwriS z{(c-I_c>fbf>`q=oGw;WGY}UkXBW$eb5)*l$6Vba4n}pDu2ZSt$Gk3(kc1?Ya+Bwj zY7)_FTClx={P30K5Ftp$=Z%9NeSdI*k6licA9r4>SK7QvFow=OXFn`47=fB_~ zkgcvvYSP9#a3An*ZY_Y3Ih+VESU8_htvJ+&8)qa-%y-&0pJ| zJSvk5R|;d~4Y_cIcXc=00EI&1Z|VD4wn|OsqRAAfXJd>gRtw7S^0Xu+>cWN?c2q5` zWB?rLo|6&Dzakwzh(HJI{{o?gXD9VBDy=mAU^F8=IhN)JC3h3=28fP(=$>g>v8Q!I zb4^|=Q~D?bFNg-Z3YT8eGd%d2$??nUzoux&VlXfndjI_m92>LE-Zu0kfDd@Gz6X4O zgQftH^hat44YP}tlbAlpy|n!I0>cF=%6I$(h`eV9p`pn46&g?rvi5y|mKbfd!l>Dz za|uBR*bRS$OjzXyq;{CIQ7!@(cs%Y3}s()uf zXH*=m7Oq4?q2pT7zxBSM>WOpSOO9mDRnqYUvA!hgp~+es@zxSI&NB7^of50+DUL?yT_Cmlpl?$(rllzzNZssOL=B=bc*bY%q9SloV~qWKB@9FWpJ z9#JG5x`|o4^G)lBWA4P~Kh0AzGs9&kFB{R~VSHipr|{y~Sr}~aqcc4)mXoOj|7!5z zdGNO_MLs43XB1_#OlOwmC$=x&DiMs5Js%oWEV-^YfL`SsMaFc>_UQ{_$Ml1L`_}*O z-7NE+Jx7J1CpvCGuMY`L3=90114>I>KEJbFsqE$t1zfZ5jn^_@J?gDd-TAO|?J#$O z<9E`UXb6LyiC4k^0X5UV|H*>0e_M47baqGL2|w)R`G1ikX#2{L@%QKJHwz zVgq_6vmXD!hKdTNeCAUiyPCC4SNRzBALBvy(d+J%302_yVNc+EBTV2=zT_Nw6dub! zBCXbJ|Btb+HjZ;XC7@Wj0c5#gxQbpY=BQLl$|@+ZZ&->ER9X$^wzuo4H$jY@)*$~@0I=>< ze|&~QA>juDrDjPzJt7kmlTprk+a+95|7SLv?Ne5|X|$N&{0^pyiVr6BC8ZyY@KWj_ zsocOvzw|wx(isd1Kb{&Tv)A8~#AWxt%l_!-Xe^0s{3s$;%^h{mLmdQ`MKPtQI!Uyy zE9n6PrA1<^!#xZg;c&X2_BFAx3kMZPGK`zNZumMWpI*x_33%xB)6yBAnMI}-nlCxj zEA2%J_Q>5e2mWoKVoAcA@DB;pvIS>sZ8gq&3Uz3J_hI+>Mz68$*f!Y+%5q2=a1&mF!pa3ulY6j+a{ zKPcl3EbB$?soJFnI-|OzAn$QW7aK&X4EB$lt2uSQDQIJxfKM{ya0p!4d163)Ze5jS zphOzl=Anq_U;jM{;A#AK;Y0qRBV~)0U%pU9;;~dM!vNClAY?q|UxR~^oo_35vKKq% zrWm={Ki!?!iJ+sGE@^$xLO$G$=KCkI|4aIu0GX7_8ch?}$(Qiu-#HFYkN?KDxRz)( zrX75d4?m)BA>eWT4lH<7Xy5tJ9FMV-;oL3<30)_&U-gQZ6H>aeRoktf%B;@Op z(rZ5=(Ao)ov+qIy^(@h)TYLnQG ze@0(IyOE3kjo2gnwln;Vd4#Sh@>hetH@VC}3D3M$oWgN=G{B~Osn#LG!oey0r=B0q z^nZPjJk3`1QP9!WrZ}vp|`!D{&x;}{;&9(y?ii^G+(>U49sQ{the0=U;!mc zxzL<;%LptiETh>1y8q~*e^*lK|H{qlBBG=Fp3b`BmYVE)0ptVV4f_BZq{gTl`u^b| zS2k+Hf44qoJ z2C90Q+PAP!RKkCK5u8#Xz&1MP$>=PqK6YZ#A4x7KXz&;5U+Dd>TmUp%`1cn_cZ+lU zL;&ZA$sfWnK>qW)(lnNsFLY}#ZsaRq?`6N%S<~1!0GJQBl6-_LG@dXDzFgz#)Ze4` zNA?@dS4}%*5#ZtB{r}vZWE@HN>?~j$1gog1I8&~v__0E}4i0$km!|KLapi8Bb8{84 zyr!H8H;<~9k->V`TcCr3BU86UjiCA+0?m;|LVQKEW!Lg90<@>Les90 z#;PM+*hN>P(MG#MuLTpGR8Wm%mfDLGBVN5ess=YypF>o0d}sn)|K zBuxneOZgC4$>-O$2BJQflZ=2wT2qH-4-~H(nSewr-TrtT)|AE%(8VH@H7uM^t+lJ= zv>w_F*sjdMAa7H^JpT;k-#~wSJc&Z0d(wfzrXxdzY1#lP7dxQokjjU5%!Qe34oALU zO#WZGqyw7SpgnwONUEhFGAGBdF@&9jgd~l_8W#X=Z07b3--NsuJ%Xx3PXDad1STnl;GYl(;72*qQe{g`AQ&|9>j~!6v9l2Epz6Ex7^u3vi4mArwwiPAQc@}8U-xFVyakekIqPZXf9t4 zxoFgHByxtyjT;k*HQ9{uwn)5MpNa9d*sVIJYSS5(I1qkyG<)~O#Bi=!ZPUd{Awu7f zeU%AMp^_YrJpiGBSvI$&W03V@#v!u5q>p@5QNLbX<>N`&yXB2y8p~Dhylq$}u?Nwi z{>2;$7K|KdW@=LY(#NKCBXq6u^(Z(IT=R(Tnf`C>e<3*OdF*<7^==Gh&)bPAK{cg} z?63gf9l!|YYn6Um&*Y>se!0_gGirM~k>gPchmCFE-?}Y_Lp2lvE>3d{Q}WnoQBbk+ z0_h+wiI|wDE`mlqLttK(?*+fk+3-!Mfk(%};KBnx+`%6GAZx9ffRER6h!Z(q|A0ZE zlFhaP|H!x+4HZUeLIPN;Gcwjc)Tz2FPCPD$($s(1pD2uTkg`g~yS`-q9UmcR;JR;k z5Rg8})wUS&L@(J=B`L$RsY~{rSr!D&kD6T{{e!b0~ zmIMF%>R^WN3Q4S6^?9coVd&S(PVGpvhm%~wk5~{j1ZWm&a{5|y&bK=-C}Vz+B$_UX z)NLWa01KUBxPY~gi*se(AoSBQeqhg(XJkwV>xGe8V^dP;$1RlCyKT?mTe{xghz&}A z0?+<>%Itq|`EW&$xyaJ9wTFLZPVX{{zJP%hayNh?vhy5!uj}i-qW^qW%54vrTG#g6 z--M|*6IbGuWu`?tq0-U|%PCeMKapl1W;uTYOtU?VSA<^4hd<;F-jS1W63hycM&pJc z1p&m&U`0-V(@5HwznL^fJ`4W`C{wN#6WRY{oWQBc-{0a_&g@BS{kfu?V9rqzN5{`M zhtf`2X*BW%ff{T8ttsR5c1T3ReG0J}?;hIi^$&|0((osc%?8xcaK=$emAu*_5Q`?zcfQtA9Q5@xl zvebE6sO8HgrGIFZRM_T_fq&nin`pT^v9Wz|bd>;VZ#yzs&NDoZ0hqTz@Dk?_Pj8{N zX1?>;Y`6#R*K8+`I!sb*mT)!y-mM$dp4%8<{bC=KsR+8k^qWM-{}0f>L%z8vSfSg5 zc%-nZKA?qm(|FQ~n;T8;yDa(l1PF{$4OotD1KTpgoq`I(*zs6&@(qRH<-yMDpBeS^ z6Y&QC(`b@e6w%OTfGhk}h(8}$Vq)9d)0HH9-SgOnj^Ss8$&YN#dW|3u)bV;z!V3Yn zBXf&n4XzKPFkVH8)h~o+FtzFtf&5o%Io^6SJ~3g0AV~ zk@-`Et|H)dNZHCVQc;t**+a)7VQv5`BHF9YC3@OJG@14YPUk;vWwymhpV!a)RDX68 znm8(>irf~Z^x$RQe7(4lE+fX%t0J1dZp7enau~2T5qP9y^ng)_F4HOFQy;fkT~u$1NI!Bjk}pp1tU?yMxG;MHSSMt&Hy?h{m>e4@NU(@BC+yt0mmZ4g~q&0Vg#(r~Pz)=1A~T+VSC`vu>Tn1gmeAFGw*G zPk6%}cfH7^D%@Fad7inQ-^ae*#h`q59h8^R_J1e#2#Arp5n^o&c*#}3jY_gIV9kIzGk z)?R7XBQ{u1slcCBakADnsSNk)!JYJUq5EF=)k4!7%fJyC-r_L#wMWb`edy^{z}aa= zA^0j7`*301>lBt#UHPu_G_yNW{HRhlddH^-&; z6@tfKjn9JDFDTbJ!ps-+jj@Ln}S;bCt?$ZV|;%k*Qfbt8?XqB+t_ zN-1V4K+|%mJoz9ncMMOt5l%0Lu^Fg1F;I+#7nGV;=xjWb<^Xr`sG0R5BuRWw`|ar( zhMdXdmEz14l38y9Nvf&RRp$0>N3W%sZ&L1wS75*>_n+i9f=64C7D?bymD$1xy^_c9*=s^-%M0mxUk#l0o@jdnLMGux|;G`9%tDW*$(?W8SMc4XI+ERYwaC z-`uI_x| z4gv7GEMei>P}ABNmG1QTE)l&dB1HAhY`O0pA>0dx9L~rFp>yIwzlJR=y_1!D9#8u> zo@@Pv@{pwYX|iRARVvS7H<@q=P$e+hiEJY~;&3LXE;J+}oY$kgm}>Wnfa*tMX&O9D zc4XkG6?DzjIWZN1;)M#GvCJSudFn!KptSNVa6a-=ZxA7yM4a-_PfohqS0pjZ38HiA z!={96O3`%9iCUP2cyQdkVCCfKszwt7I~MVGEu@tjfiXsl?h&&xA^J!1b3kpswjS~EOI^OoAbX#hcXv5r^rqOlFXy^y(F!$`in@2E$NuLii}oj)<_(`8CWW@L zbKiyi#Cg*oA6)5gD3@VK)Eg=_%Y1&-p{Y15?0VSV>dm?H33?V5H zZW=C}b?H}gzub6Q*qFmGywR6@yv5kuLB3$BS+@+XAJqq&*faP_;~in#_4CXA(I6>? z3=+w;{DIfa*;jOi-8%FMb*9+A$c&NQXzf39N3Bg|ajQ6*!;E@k$JjNZ4VAs3mE(&m zo-nZ3Z4<0!JMI_1ab00OjX(4(l!ukjzc6h_5Ir=}_{^Q%@n;q7B#L?00meC0zWc%8 z`vskdzLL&j6WWwx0*OACIXyI1eGe;W)#U|rG38gz$MAWt<&5Bv&i07cs=z-y_q_{m#ts4!wyl4 zU^OC9pJ8qF_b5mpVkyh&-BRe_p)38@1qtu(?|f?SSuv-CxM?t;;+)G;^qs6hm1MoP z3$WKs4gJY1p}lu3u3+qF$km+8(j?*1Zd1_L+s=6DJ*|%4;ZK(pE;jY!wGZ~?w@Z(w z_uEQ(Whv~wO#&kKbxC_f_$`E@SATms*O3`-6UU`H4g$ZYahV`(7H3cDOxU4}?7hFmSont2Mo1R9K`b)h-da-7eG zr#O7tA;P|@XNfS$Nbz|8r+c0_C)*={GG|6CP|b3bP0r?;XS_XJ*yK#U`HfD*dHl6@ zT_4+}J<>8iWi!R4)2zQO(!o;4H0k=4MANX(>@PdL`!vgL_0#O!Q%AyfjRmv@A)&}N^uE0}OF2s=l=m~mkT_Du zy;ZC+?+Wm3979OnL$%SI3~<;lM@xpN`&FEf@`9oaUSq8#j5cFuxo@+PnygZX(nenM z+VBOem}j+dMQQATk(=!%G?4ru@>v&ta|9-?TaL#3z@Oqjzd#Z^py?5C0=9X&(w2eC z1}I?y+S=NR`lDO;t5n`coOOf&RBCEi`Pkrw_4n#{x))f|eJ@z1Rfd4=J5`d2{dh*E zH5+mBpf{0#`mTg0phQl{P{}f72R_~Vs?m7Z`5I@mkrZ`lI1|OX8#Z_Q=YV>^mK)9R z6)i@Lj#6iiiW+j?lhh@|%3uVg^Y;Lbqg!^*NZy1ZK@7Zg$F_=nq(p+H!{`y210Sh0 zK+1;>M=sqJ5vg@9=TAhUuAM;xQE1u-b39m*aH6ZTTl;p6EJ~^!Ji$Uk(QS$g-4ka# zs_XVgC$pY7jO}N_X>$cmKtP%9#ZYm~hvoQ&UqJ!(f0SS~q5R3Uh-7!ZQAP<4hV;RD zj3Nc(TrZzAa8~r+z1|n)x}b0!_bS)gCtrM+@;c{W_E}r}eEtIyLkUM0E&4OW`=-_+ z@a)ArKldvWbG2?*LG}376DOL|#3`o_y%|SM;&}SIXPnG}M3z=mzF=D9r9(Ku1YFVy z5dmF3tu=(C?9@+j?5ocOdp}*@9iLRMNA>$THG|u2V2d*2Bqx}zCWnO=X&^E&0q@q! zk-51KnX*zo+V!IKye$n}I_q|w(P1Xc9DF4VCH9F9vAsG7@ff?f7=5fsF6zPuM;E9G z152>XX5e*Wk;x^)^i|w)jZbE&!A~ewYEZQy#Rzs)D#ZZZb+QE_zF?7)Hnz95KE$Qk zbUEql@;lY(M8VDz9P(;hY?9)v12lZ}cOT(D$S>$2e_yWW(=^PUBP-555)yuOLs+#?0m==vUj_y2 z7W{rf*^=MSX*ZGv@#%MS$Vp1}O&B`t8QdcndIBSxws&-lkqjXC`<+8=&R2>)Ki-7v zHj(t^jETx62&{Tg;u~h!MHir2?+mi@QMsOc@a^T8*3@f~DPcIFEC-yrPnDoiQlddY zFpi>n$9I`A%B!5bOy-}KLrtgNT`cGv^Ccu*7|cB?_MAsfJ$r>Q-m~~WG~ecYBEqqC z=><37=9}ebH!wlFk@OK;_P3_iJ{fN!xUV2jAvJ9z{#hHq<>cxYe@kNRji-E?lb)al zy%d}{aQ!6SRmZE7@a)y_-)n0S*#lT2dMB8`j2cRCAXnjD;xc+-Xq)WSzI`R3j%yX| zSRK?;Y$UGAu!VS+bnm*|_W|eQd0eIf-ye0> zPCMoFRSO?IGGoVv3D{q1P8^#x7+7!42?x|2r4Uhqao0?b-gz(BAIDyV-I{i9BTMbK zyuZ>d43=vxaJEU~J4S&evg@VE%c*3t>E}uLvQIQ!d7Cj|%kjc1s4SS@L zn%DcVi+N?;U{;2A0P5Z(nB_Hk#Ny6~;t#0Wbe8u7mGjN1w+8X0@T8W5sA?uFBCbQ7 zX`#NQ;TTr&z%}*u?`O|JHaVXatV9LC_*dw@o&{D?m0)lPXcTq!b`G!)=|zRI`Iz8_ zCw!Cos{2ywkx}pls^lc5tYY1quaUJkaofu&9TShCN*zzLyD?e@j#Kd1z*lZuytf1n zE4ulQ8lyRMaS3fK3_BH%ry4t^|3Q>0Pz?oV(6_)w90j8o-DHP|JdgvJfbO#)!IVj@ zfo|3oN4P|nT4NoaXVGaXUE6r_k0BRpN16XO{Pt90)wYkrpjc@~M_UuEPH6mXn zzaJ8L8HhWVLs3Tf8bNP~df=p&!?S=n*k@fWOv+BR;->wxp<^HkuMbUdU-QZt#+hn{~eX|Et9b(=aQFQ zg;x5A$Es1)U&zt`UPm;eTAbYUN#xBn{_!S9A&d6Fqk2BwAYF2AzWw#+F9ytnI*O%$ z;Z1Adm7GCV{hM3$eAZjRX(+}d!-wKtuF4>~hbGYZ(*tD- z-OmyzRV_ViPPI{?d&L%N`4#3$rEVQP7p~FD1oNW1Hgjq&n5(kaVIiItp~VIapj(kn z4iTJ1)A{5kKx9(5sGJgPzomYQ+OZmTqq<3Kq%20_)eLF-UVkRP*wKAIVrX;5>msYp zXvm?KLZ+>+=9GNvN^n%lK+IsBkEJFq&SmNUy*?`eNRZR?qzr>W#USfX(L)AI zookU$x3>!m9ejS#PZ-}(-PDUpj?jSLE_g_Sc@+tFi7m}pnN*C-57(pW;vFb1yD*VU zcDX%~Uq-~O#+&Wfy<#zO6O~-he}%p&xcXs~(f@W6LUx`|&lopuVM#_e>)@Iys{hry z2;iBD8VsXD)soDKzK738b-}Ogks6)&$JI7FOZ0$y#bi_8-jDXSy(g~SdBVB>sIl^* zg>bqIXnpc5gjJ!%>kr#4LeXT;<%(GwUH`Cp4F28h*iVyou2_0Mt|h);9MY%a%;(Tr*%o1 zzXe7W6&0D?(PuSA{ZBXEu7Mx!J>FpWr%UlAc*rIFNYZ8gFH-QYuq(NHaqc4XhC9e= zy{zQWq>5K>63a=(Ycx3O?ErHL@`X5|Vgb$*pH{`t4ULC9Mv=jVO{%4){mLC&mVkws zGPwiE_Hh)Ly#id;vkvrraMhn&cFMhNw&%W-h|1-6J^!nNYB#ozmCo7we4plh-Ml~X zdca~;70V)L(R5@$p+(6QHJ(?Sm~7GT?sYZab}(a6=^)zih1_TQ{q-f^ReX8G%Pq~l zq2Fr(UU+Yx(L^N_oYfJ&thXRtUU86Xfi|LDR{3YYGj8{pJ$PP8@=unJ0AjIP#5G@Y z+9njsWp2c=4C)L&WnS8b^X}>Jy=K9tZ)LL84f@Ij4&)v$4uptB*e^806~MXrtS!gp zW}kX-Yue7+r^31LB4&97N72I8ypRYdF68$t)-iTM0~88+&6RvucsXJPGvbQ^Gxd+m zG|H|qxUYKU<8mE&4j;IQyisO-$cIG+X*y#!&mQuowi7+>XYjI+dCbbfyM(J&_xCN4 z+sf0A{20X#ak(>$J@L3LT|Fg|1Wo&&<@Z!Jm;g^=ldIgV@R%(ev!9=HtsvOXN!xEw#k-!?7Q-4)AmlufEKY z=EmhEOOCP}7dVm6x4`ip;e624*P5edUd>jjdX9`5UYx!=x@){{5XZoqYGB?>wa>fr z@bs`8GvDuV>1#MbnEYErGo|+-eG$&rxOfNB>}5Goev>JxfRDHMvRiZErIrz#2b&*;$xi&;|EyUZ7kUaE3~$WtB&&qYaA=V)SHWzJN&5zy-wY) zNx~h1s{g#mprr>ps^^?sVqYR&2I97+j~1A+G!>>=QrWvc*@I?#H>NzDQ|FN)477oc z)lF%v65Jkt;54htbOzCKYQvn!M^M@@XT(tFw6?Iz$=ZxFOpOXFgSTZ0vL zM%81%Nr*|;ls&@1f;fx|H2=;WJf!ofITa!zQH6Q`P@4jte{X5 z0j=FAPYyItqUtC*`nAGQtfQ1bE!CFR716Gfo0=s+#C6we4xh92{v-ZR*8g)9ziskH zs}}NV$lk^*WW*@)55r^SxQkytaCOib_jBczX(LRSXMG&B=_M0LeqC2+|b-x@HJl z>k`=s){VH^i-uyx3w@*hnTM=*ml-X@kie2Dq)OCylbmxa&_*{nu|!WJNr80(dErMwyIohFq|}LXHYb8 zw;4MOljhra$#mcgdGAnLqpas=Ml4xK-B-jTt`vgvO)5TMv)}U>@>KK65a#@ww33#F zzbVC{h@JKBDf5=esHpl(fXxqRWX|S#NVT!z?ks%-76roB2d64z1AUTy;FOZ&nO|jL~9>1f% zuYPy%EF&@-X;+gFTidt}ajwZ-)+!~@S;d)>+5no9o#od}0KJ;R*4Q<0kzK4!_ zL3vAlo$NPU7ZKs-=WSB6A`4ls4xplk3pfqUC_#gm1X)`W`OU1a4gjsmTVc(h@R#|yU=(CU^z5sq8 z$~%!ON+J#LRQ>*|rAELGK1}9pYw9l7y?wH`8}!ihxY0y67hd~?=kkK9(pmf;z(Ul% zKk}DV!Xc>ca(=tWr4$F`g?9;2n{S$KK0gf3Xi!5Bm7OMR4YfxyPjza=E5y-mM6H^= z=?TMDm}*s@uccHwl1VHJ312@=UTZArtpV#O9{F zhR@6_;Z`8wIm2FGmsJR1;L;xICC+9vGA^+u?Py-T75OK*0G^G{|nXz9*TX zY>q9*C&6215cbKd*ZU$zN@~iN78P(I~pVhaJu2kw=i<( zBJVVlnv~aC?ZjCh15Pdt%=X((LPv3bI#G zr#$1>w^IvqT2EGyR#e&+>=~$eoz|B21pO<{e7S!8gf#R$N4Kzb%F{T;)j5@1>2b1h z)fK?fS8}$L1lVZ(mWjJ*1?I?@tGF8JT}^d-__1zmPik_XJcuG=xWFbAM+QWux014Z ziR>a2hkZUZyabMjzHE+K)Cn(=jAk!6$wAhU5X;i5iDzl=@m0qaWhb9xFe#M$CzhDD8tWXYpAn8x_Ze_BfTY|i~ zyZ!!u(c}k&@ds9kLLd1;oFF|0suM4)!>(8^j|;u;k0w>pfuY9Y1rTt8`cnMva|YSx zJCk~2kc`qsMGHb^V)T3Mfs#A(``M0CT|c_7t=`ff;RGxhJ&*Vp_1w!MLNyI0=Cj%Ukt_A>OTA5cT6ydLL)cpY)v>MXqDgRfcXyZI1Shz= zyEB2{5Zv7z5;VBGySry4sj6*YTykN$gD|Kk(-iyS2=xggjh z^r4eFRzw(QGh>y}#547^;HRzq7!{u|dSM)@Q~%+4s?A7fsYm<4t+*tWdJFcoO+8iB zP(IU+xFw<@JPYi_4{(g$5y38;RjA)1oea_EHWn~QBQN^Oqy@j#F9dNTOlsaAWV~wgaO&Zl{`1;!8_UQ2#0Pc0%dNbc> zk8)}c<5sJ}4wzn+FiBF(Q53)EEjL^gO&g!M&BYRqwy59od|}!va~e|$Mp?qkgVl=m zngO%k-d6D38$4Ib!LsY!9vy)>3vRW0SFttnHEFTdU@99z80C4R*bL%dfS( zO0&M$WVqD#^-@0x(n}FZENiZkAD|iF4MbOx@F%}6TcqC{D7HbvT4xurs}RK~&p4g( z8)C1`u6E8`3EaLS9PxHvG(}Nd)8Tr?|VAz%FS1WUr{r z!2?e?w`G>+V{cWK8zvcJUr?8QqabSj$0_O77Z8=eZtd1gojA2(e(aeSftPB~gQtDZ zMoj6E3;!MuxM!nR;D?9PsIgN0IYBbcT-U>G(2Ta8X#P@i)Dl|_E-a79ymg9W#!d() znLq{Xig`_HCnFa8+5^&8Tt)aGf`ZnJr|(|Fq%He3*eeWudFCu7nxQpeqrQpUA_xbLdC0_)qiS6mE+lWUWK^3$e-EAo)dnY_QPZA^e*dIOEFq$bvu?)@I)P#B_voxGQn%;8fzM zWQ4+Df6z`rLw6nVrxciOQ9ToS8y2?HO%i7z4>*$chPF8-dXxj~ytcb!j-m6PghQ zx6aL%xcj>Fx9*-`7nX>`*=-)IPR@oT@^1LEPyXf+Q+ zZD*x6*;s@d{#FFyLwyX9qIhvDZmkeOIVMwu26(XXQ@**hXKBX@Ij z&N(8jTHx&GSdsLZM7JZ<^*n47+ud>U3bnr8kWBa-BF7sIRkQlv>KO2T^T#(7z-3$H6ENw^rm5PV>EHp&-YoA_1c(uT$Dam@2m!3{{YhAg-dd^N^d3D zq}^7bQh5c*yWqv(U`1_dczotcI(hNCHsEDDCidhxQ^p;^{Po(PnK%A_NqMRl{a4B} ztYi-?BBgTh7Yv!~*$8=&s93=|*d@R___hCXv)Fp^uwS0PZyrRzYqWKmb#r4(DVG^q zs$RL>JG`D#x0&8Z=k1v+eFaP`f-=u?R!8SAe4LfIG#p^r?b>k@&XbE2IE)FQ~iJ?%DtyYf1FqT+7Kyy2+ z46!n#wBVJUmln+~ax&09g&|96z`VEx%wFEZaZS5Y=fsbyvHd3Kh0+ zyJ(elqXOM7KK$?B)7l<$OjnVE(Q?m%9OcDMkWBTaqttM911)FKc~Vj=4Sd2Gi{%Pu zbE%3FQ*MjAD0J%u5$ZRQxBRI$>~JzS>9L^V8}0)2tl_J3>RX{lX=Yq96|#JPs48=Z zu-};EJCR3u(^zp8@D$azP&if0iUWh&3S#l&GcX)r07sG6!AUKvfjRkmmi*$a~6r=|v5ahG@ z6c;4_Y$|b|t=l`?bq;dfSQ2oVs$O6NwxXd~nz;Eb$d!z+6}XX5xVsr8t!&D=d<$9f z-tU|E+Ta&@s6*06##XKhm!lHiGc_X6R_NLHsv;`X?W=~cY+ppq1pt)Lta%1-_!If& z!kPvB$|8v6s6^WN5FvE>`xXOOqA$Md+E6O2K+mS^<31mHV+GXNOjxwCg0%6ueaHnY$k? ze*Zy0){dAqfUL-<@`ts9&HPSJPcJkoN=!y3ayeM7T+48&%J8J|uS7r4-86j)!dsa4 z_LTT?9O+82&(dXLt(CCh+4~^84q0U1eV0}p?Qu)}-hy1ZHe8po3Yp|+QKI@J+zaFw zrFYm=HuXS2)@8;kYyNW_XSEEP_UbSA`3~l$Q&e{!t(n^tds2d*iO8SFQ5)D!Oti{t z^IuL1c&dfvu&vT4$0@D2aJVX?ItXjs^|6oBWzZ*6^qp{^DgEK;W)|n_>m@nBcO!lj+#w0 zMS8pPp&#NHK7>(pkGKU3jX_HklpF8uWH#Gpr z|L-6}Rf!P5z3TGq-+`7vKnKvTRI&pw@um}kZ_fe0ewjQtDS<}$qQUuSLL+JA~EL#>NuA?71BE}IMFR^KVr#5j7k)=cKQBmAdh0Hs-^0r)kgKbqn`g^8XrFp1tM^(y}~)96YD zfVBTp5+h8c;c#kf0F_S65WxPB8p%M>2N+}`4HbPx;56oPYS1Dc(KH#2#a{kCwY2V1 z%s-E>y{xP2(}QqBYb&qd9rYsW`dIisl%QV_j{grzP^$O;eShsEf7KKJ-YsBM`2P^% zHKTfLc)b`T+B!N47Y>5`4yd?db6BAR8~|!8&>xLfpo|>>h)6!6QS z(0nr6v3n1o0^|w>K&G-72lHkBeFoG_|H}NDq2b_!-JY)Q04Dc<1Sy7GCYRqZKw%h; zr{HovLQiM6^snrAgcW=~2lEdIK*7aLrx5w_rLG3z-w-DMk>dnP+Bnd}k&%&o0ijQ$ zgQ@QTy~cmdHVxZqv4SClHFvb;|JGm)jfqij@c*|i`~RWbECZ_HCF+&Y15tRrBO_9F z1WtQnIGMbza)f&mSrIV;kI)MX3mOeJI1}0YrS4;ihWiuJ_uCP?7V}3W;aD;KeqgUZ zwCYRnNB%<}LH!SX1mK+nW@KdG4?y1>%_kfW{D7K{(sXlcdQPRj)$jc3oi&Jnke!W? zzsuP*SBx-K5CLU2QRXWW623D{#=EpUFIH(!SL6recJ_OGNW!du%;Qhy9py4N~V8LtNMY*`NQ)wF#{IBa>3;UFO-9zRe6`% z`?s2L6h?m;PG)3UZJB~TguoJr6?;TfOsxCoPomq~TZ{D;4)G}5Ab{;dMnm&CO?Y<< zXSxM)X6F;AiZ(P36X1G~FyL`{Vy3cyfgBXgi2qcKl(dE!U_68pZRW<7-uv-`HoH=A z0alRm^ZicDCF?)No$R@s5fM?xD1Wr+dHG9ksW=IZpFljQJtXX56X4xNHA6BH zonF9UGuymAoc*Czp8lK?!^9RUFvO(aLC>U2pYi8hGp-lgVt_yGNV($k^K%VDVlm)4 zuhXQDzPYGhWC5|WyGw!f+UfHqU^bb}fVHE(__g`}Pi7SlAYQwXo9TZ|f+GNQNG zIl9_1%$C%Te8rxtI9S~5%%bg8^ zDZr|Vaz0+@7DxA-Ce`Z37w`gvkgsF4hb(vDS}HhCmwh#Tto=1Hq58*(#%K5J zN-xgaQ(%DZpwv%-=cy&!1+}OuVui}HSY9hBJ zEMcB}OjiG;j1h67pg?8II5YNE-sqC{ zi(}pBS`1U(D0I)Z5E_UwyWH$gTXB^7@sm&|G)(9Qr+2yp^qx8R`*kWu>;tgkR|Imp z^a#dtf9_VlaJ2?ZM0FjX{jxbP@_S@+K)Ya;^14nn+FpdoSyxfqkp{~h$*9A--m-F4 zzx*(fJP1F@J!iWs9xfRSTI{7anqK4+X(QyqW5iqAl#R)Lm=;GY#PEpB5wb*AfYOT2l~2jEn^}S5{ntMs_qvogwpgAWgJRO6 zgXb{*X2^&!-JvZqKTeW0E$&SByJaUpTrC*`Hq2>IE0ed)QA(7lfON$<3AirC@9wNA zEpT<g0cO`e(U-I)$&)(d# z)0W51CJODBx_pTzatK* z1($RnLM}4LG-BCLO7^4iLuv&|qJWtMMOgyfA!(IXU$kb#bh4Lnm2MbS@A2*Br=fV| zAFQ}lMpYmA9{6Rm#0$Ul8!X7-m3GHcaA}&(xqXcdxPqb^Ofq=ka4)i{tg>V)Qn3n% zo}bhWANDLau)Q_3ZLor>EK({Zm>?%&ThX{19%sOomIJvOIHJ;N{0zRY>aZ+g(q#b` zupvA!KNEq#OU>m5JgZ2eT+dM{vf(RdGop@-G7a`6O4DbO%J7*o9@tIsMoJT>>lj4B zHFpYTjrUS8ez0N~+UYOIu^{bFaEY5Try@`zKwH%lFPIKjZilL;Dkl z20JoZv!C7Fh~F&{++S!>L_f0t?(=shlg2L>`~GlEingCar|+J6v|q~hZ$Ah;Z_(2J zBEQ*=P`^-EbSYt7x_ySa-;!$1{M65VtG(UHqcy+$Ru0DHqic!oz)K<&{O2Oj+l;+& z)XGXdx^z6QrfP4~63j7pP_wi0+6^N=BM0-pDK~*OB0bwH4b4A&Ae3|)pq2Ihc=huY zGL>EZTSn0H;l_ESmMv39*?P2>TBS#&WT`SZru9O!*2!CY2LdmEM1Vi8Y0@P#{QR@s z=c~RITHWEJb75kvFE*+P&b+bqCOc$4HrQWNFILbG_`Z~->i*!gN>oaZkcX3H?zqM^ z1NZ0&_~Q0A?q(99oSmtD1cG`Z1#R-%V0>>=3T>sBc2-*v>O{heiV^3%VtDe3M0;Bi z8M_M7te);G9V|;1Ii+gOgb%aCYgnByKdoW7L?eX#;f0XFfxl^^F9Oc6_a|(rZ?CSS z4cBaf=z8#hICgH8+l>d+o)G7E^5rvgp1kf#;UT}^rPK`!lTpOc8X=4Qr-6J~*CkaM z*oxC}q9Tr}5lfDCvI>rBvPbZ)o4@uFerD9htfK;j+H-HURAO3)r5@o4iLUOTRwU+= ziq|8e8J0{>k&Z!?R6@*QyZP3;#{5_Y+BwV&_t_@NzWyWx0o zROAq|mf)>f%da*q52O#p#79Z5P_lHjWcW-{N4MfW1e5btiY!DwnPBteH4$*Ib_@O5 zL`kG>KW9kg#0Y13Y`OxM@Ca7s2<8ARUSEt!V~Plv@aZ2>(12!i3Lgcu1D z<&z=NL|S=SOp0&b)H9;}M?7`g6YSp*SeqS`aHUbDSFJchmXqr06D#}lie1wXglJYB z^-i9MXc02O>IO>-Z8-+>^3j6Es8zLE<*4^ZJ)D*xS1)F;%oqz!6IK<*xTa)fI}`EYTDDir+*1EDzSS>rHA4Yb zB!+Y>US;hs)yt*AY6kt~N&|I4YbOU=+r9U9rvtp0+>H!f9q&gWs~t8^L&q`UzBFJb zBgC)bN7yuHjdaA$86A$>^|HdxXin;mvPhg)8@SsH3K#dL^YtCO@h0s!w$2+*uKd2Y zwT-&AskJuVP^qR?x7N(9yi6?~mEzv{*4bu<#HmLj$xSw1+gAKsOWO%z+W&DHSo@=- zq-UXA`=Zk4MVjxM)7RIl95P~Gz_;M6^fKk?7GfYOVDSp6pBN_8oW6 zptJAOefkcm#t3#@d5ET2bwzL~7k?WNX=ZW=EF2Qu6C<=b=Hat+#N7 zqW}Ha(WxngMo{G=Dhz+w9e2`sQd9px9+E2p1`N|v}`N`gR@ow7%!GT_^1fMN^ z2+bgz#XQB(dlKAS-}ITUzv|lzuSVeQ<`1pO9b9OmS)vGhqHB=eGCP^m&`uFW5Ywq9 zVGAcv22U#NTHXDIDDG4zl=z(*i8c^=+5kcflj=jAaixi!Euxrs5Hj1zlm5_-i$$F- z>Kf2*SZotU;C%P$9Ht=Ynz-^<)Y25sgvTu4b##hR?8=JeoB4bUl>Ej&u*7tB?lyY!d;?7SHrl zP46*rLELd$R?0X%GPgbJULB)tWK4&HJp;vz8MxchjSJT?!dv!h?Qbj}#8nC6RqKF; zal_mg`!qR7k)+)+DV>m&Ci10wio8U>f6>JL;`f=$V0J%XnE%_(hotqe*nSKFOqanL zW~IT3awA(sSyC)zXa3kPU3<^fx1NCo%ZpT^$)Ctq3eEA?G7$pSA3%ZRM+YC!H1$tc zT|sK{2W!T04LOy>%{=7nk|! zP5FVpZgra2zp2XDcAeCgZy`GBMnM<)&QwY!1GtJSwJ{5J~$Vr9RiYec|M4AQX{lX5l`(Uq^i0u{G$VG@neTQHQb0 z<_C@YdrITw>BL`)`>*0G=L_MfhjHg2wHpS)SdIE~O~%a*oy=6g%CwrWmC59mk}VlO zi-msqk+u|x)triwVXP`IySlF(p%~2GM*Xqkwm~c$!qZt(?T|w*as8eS#~QEG_zGnN z@+XfyjFL$HZbVN$MHP14P{hi1TX=6xkY6Sf+055r5sgn8BOH0;9HR7*=#;X7WU_lp z{>+?2{&786AxUjEHo{^THjE6z^_rQRMl!_lu=jeel$|XT_#}=suqfD*lW~b6UHz#R znq4rTQQ$^69+sM%;$jK5jeIqjvC`6^dEe0bg?X)uZO>m&hoy=OmRRFrmeEgCV$`Ee zxcjjVu&TmFU5bHIv$MMMu;?9Kku~zu;RZB`#V;6SX#wDgZVivZ!k;>swMQ4pVWAU| z-Ev70$*3e;HO887$V7LftqtR;@#9zvs?HG~Lp3u}sy`RF=Nk3pdXBrLR6T)LwjvKF z%qSR9Db#_ZNKQuk;aPhw_?xP!eRjW?9%9WvPONzk^PbbVkGo!UEbm)EQIOc@ag87t zI8=O@0Z~p&0Lr&x&5Nls_Jud}S6CTAdRnxh(2}GHBty3)qn^cFBY8>+4V468Ve}Y! zk347ur<5~&+=lS*1cK7GDRu^I7(!{8h4&$2p`>Q18EGe(Lq`EOp9FT;CT%Vu>4LRE zy?76y^|j#RWP$q*G2L|JnjOnPG6AnInFKkK@!{d8!RX8P>OtBKC!qmFA+6|O!TJ(f z-Or}d>EFzAzwPH%wyk1%Pi~6Gc!J~^tSRl5y9Z|3aq`HTb_;-S-acKMx^o~w-I&-` z?7R|}eO}_A_okky7%r(;a_7^ z%viy_{#1bH(lrUT?3xWV`pG2A-rx}FL!OOjxZ7!e+Cc9!=*f)xv~x(^UU)A4&&pYd z9Zi3%Uqmq}$ReZdMK>JM_XH%*Y;QlPt42k$iR4X5XAW9HulGpK zR%AzY8!cpJPd=b}6j|bQEL4*d=FKsd!^)+PXx~#_>yXnFeMN8NL~!>;g`xF-Fjesk zZNWWy8D_m@g*`-ZCeVoPRbNokRM{&#)swJYVJk_W^nV+Iw|t+Iz}?B2VoU3YHEI+| z&c1wz`6!BRQ7ji#P^ExsY%>x$rtqj6I&L*v7_V%DL`II`lwNMTBc^{kAjsNFx`)rZ zV{onUw7j|cYo4r{SQ}H9wVI<6h3;LuQs0N#a>+dTwNP}DTlDQjp;n#g{B1Bvc!gb4 zV<%$XiEDwiIn#T#C!=U?=L(y8<+#ct1fM% zvzj>~qIj^4Cnk9+vzEOz5H_5thS7=x(n&Fm?WqxFb}kR-u(i>~YdD8(JV&I0cQpNn zq3CeCsE>hQL(#kbLL@acuq>uUC^%LmA@l7d6ySW)Tgf(wOLOaV1=!*VCwlT5gRCTm zBCx`uh05C-Gx&gQUb%CVWY<8C3tYYPJO+!l4w9W1?RyF)!f8#jRDY!^5|U5Xqsal9 zng^|UxKOBI<gL6M=bE2bn=5#r`Q?EVFh`H<5)Ucv}rKxHl%Je5tJq$(Nj*{ua&6I<|$Q={n zw7>trw8f_*8@VM5Y#1@)`VA66S%+NlMRCw=m5Ta$5Gso`U2E~;Ze;TW((_Yn_aRq= zqE?E9bFjIuGN{xzQ3M(izL{4w)=P8y37UP?oS3jAEPQekqJnz61LgSJ?(&^UTXzw~ z$=CiiTYqvhH)Sa)d3a7-PrC8JRrK(Lqx)yBfzD0iN(q|o9PbK}=0konc02BJ*JEd@8^I`W@V4+?r%A80m#qhaL}&mJNL(homc*>m z_D%qBpm7A_lT74m>q%~9t*bu=ef{M&Y?ZH|MO{V! zHe(V*%~>=MKG+;cJTIrYHJ3Trqg;{qQ&;sD~HLYb0;W20FZ#;+xJm?`VmCZtdD zadG=-y!XHQF&Vc(5$Rf@$llw0$^HcNYdsU{Z1gS=*CyT;1DENaBuDT$?N4|sV)hpC z?eiYf*@!*aT35zNB)6_~t=q2s4hC;qFTAvL;c!CYY?Lfa>ydjW_<6$`EI)WajQaE& z*aW^fw5O_QQAiMzbgLo9PT%<^9&=5sH8?4f1*5~fF95fMt62h5LRR7==fY(0Hx-hv z9W`F2zF?{8kUPSS=rDS=xtc@ntze=M4eCSc1SO3r2#8>73^@%p0QPyHAB?{^Xu2Irbz7G z;R(o&2XRz0Jx_!w4)U&6xGv)o&?q*=C!gt)jZ`zVlh;iu?vf_*Tk5m^^c?41N4DYXOVFpLEF@Bi6 zOk|vaF|G4N64byKX>iL5IEm$u76sOi;wXO_@EQ0m7MaN6Q>(~xtEUDXx*)}@nSP>nveh*roj;36t>J9DeDaTkjB_$cQ6)VK*De>@l9q#^0k1YbjwPV~@W~q- z!S?ZHN>9taf^#liUypqkF39=#14V2)y1(9gqmU~Y945@PdWAk@y6dpmYnroxD5f6^ z+au*H)ZLG}vTTHL=}Xm!eVMph`NikhACEq*DQfwds`N!q$HQPJiy3o3W^OSmE$OFC zFLaMvH@sWU(j;kOq_DzDrj1-;NzWBUh)?a+)y`78L4xw~{riS(LD-jq1P|oHt8kDBZl+ zueElFr$lBX5yKxU)`e&orDdzU1u&zr?3$4|gSA^NRf>OiS4g$K#7p*!PT-k+H3LqZG7u1fPssfnq7_T;E)=83ARAYDK_334_r@p_~Rx{ zl$YAjse$DJgO12FF3R9(JPeehmKn~hM}$b) z9P))w*k-+f14^pO>49v^10J6X`E;ee*Y`b`T`6`iw?i(a%h+0T`5@1q%s5}1%gO{t zn$h9R$0>cnMG!d?48{ewTUlE1a?%3aYXKc|lRE0FqN(UqyoqSl`ycMqi+SeEof7Pf zOP$bdzt7&UcXJe7L@GdowXgawq(Azgztn;6{zA0^$oNkW?bs|lm-W3kbw5?ENFONr8^BYk2 z{%29X-v~J_MB70jW}68_6-%M4`&BMuK8BBbzsnh{LNPCKxf+RND38#WC-Q=UrzVSOEUzyRzS(pin zhyXkw6+og_0~5iHD97sq3Hz5bcu}!xs2R0uQ4f%dy_>rvX-AD%S%v7$Cl{o!Da|s( zCh1xNhip<#7%Wq_HXLcf7rOg!I11$kV|`&H8q6pNAMo4V!?}k-1J8o`Z(FILGM;91 zLp?&!PA>eDx~(Ekb$SGCw}zJyLhb_#cS_K={-p+Xc)T1t>v=O8qL|JaSj8KyG4oTd zYV-h6f@5ZJm>>2uF@xrD2@6mpCmMJCH4seQ!z((WK~#o{KcINA$_Q-RtX5E}VLRPC z83!zH_xX?Oyo~p4^~E^!w$D2FzHr=Gd&`4Y@0^uIdGB&UG6C{ub6kBskbnRt91|14 z@v2Vpr1JbnezP;<9o-nTir+Z!A6?#KjGw|0$qO(&H19Gl`~t^sev|mAA0lk*^PKMg z@HcJ7m1V~gmb%ozze4yx)^lcyB>$ip19eAqaruRBAbNf=V0lXrp{MLxWTYtG%>f2?wd9>1F!%&LMt&Am^F)&NM>!<|v^?BubAJtoqG|K?;

    Q6fMGw2IQRSh9$d7u9XGklTKyMa!&=-XJP(^vNvL_S8IxVHg;FVKGw^K>~S8S@MA3}QZKti%tQRX1Xcw@n#HWF z7TkDvSW3k_8g)CGVXIV*)D#(u`4<5~zYpcDstSo~I+n)#g3LznWeHg7`l`djW7?BK zH5=iES{hY^!EIVz{fA9n-})Wth3HI69gXn?=2Ggv*A^oht4SKR=+vI+}X&u#gdKNj5 zd~ae$=ghx@hH2%$U0My^TIu}0lX9p%uj~0HVmw#Yss1~&Wpw}-ErYOk`C~M7d^tMGq%-1T!{4%-V{Y z?fij+kq)%IJ|!mo&Q@DJOFn}E&5|NYY)7GBaw-NQIDvG>BPw@Bmd{7t?m_1%vRK#U za^zvOS%V+HxmrJvw0Fs8tuO7_Lga)uHd3ucX|S`7Q_3u-MgQ;>wNcm}?sKxHfhr%> z@-?Mc@t56*H$kuQ+B5k4uJNdGK>(2mPAz?QP&miey*j=?#yb=njclWko68!;u^B}3 zyO9z}+8hHmqBfNUg_K{2YkRF3k($v3&3}w-vZ=&55_ntdUysBvQe&zIb>IHpd1`Lb zs>PT%GBw`K^^YK1YY|J@uxVge#9Z}QFsd^eN9};cC~NCkuAignh4?;V<=k$g4ZIiL zD5_}i@2*89Q!rVBHNM6oEq1Mrl$+xd?29F>)(2?6%}FoCi4o+{R<65%I6XXvb5r6s zDsprZx74^f9`ZL|M_%iD!Uy9;LMe`3uf{2(a5Juf9ksZiY*1O7s-M-e*6?fOgE3@j zj`r-_oD;Isqg!`xeA6v!kNSpikg1ou9%sWX1`MV0ze}Z1GcoX$PA$J)A80Z4)*mlA ziOr#S$@^`+jvycRw=F^9I&0pDZ@J*7Z^uqZxp}+&^>#fqyHY_)!F2?$WTlnu4NkF2aLVGbqWlPCbU8#1Y`Y_TwXtP2Xy)_4EEw5z&R;-;@M!U z-HUdDUbQS6IM2Cg8$Q4iA#pPq#VO0rB6)9T)W9+86%M#LV(CXAF3iB6yD@3q>@y}m z9dW(NZtZ2+sFYQQqPToWv^vRx%-~&qmi6X%E_Zol%0L5}igRL2yC?cl=;2R;>#!?i zy0jGH6@GY2id&3d1Ff|Wnz>q2^JETsWg6Iwzx)jLq zd-u|G%(0J)Xe&t=;QfaAa@s^>?fBM~9~ya+TLZJ`ZYd~oeAIQyLNl|%kvD4oB>e|r z;1I3d+Av-F97d_#CvC-|b$16=c*Al$Z@9HEA$3)PHS*iCu#;uu*Fqr*3|z=R?wF3N zZ4Z|bgt=|`E6CYE#0>ZBwa9*ZZgV5ZWozF3%$!jR1FcYIu%vOlyMJcDO36r9T_eLn zkJmRqstk=g9&CsMi6B+$Dm}p9tnoBf=H1?;-P%Iw(ML~@;1JNNjVbPNfSh7m*HE%` z<0eWL(5fG?9L5oMMqlm~Nz8t~*m)+@>hdXtu`8D3N;PNcw+pjmWn{BYH~3r`}jj zkCDvBDk4@XLI3Qx@Otxrne@GS2|q2`$S$hu4U;s$n=qS>^XVOG`5d+!x!Dy9a)3eB zN8;jl-N3R$yUj#w*l%7{8$E`m?^sHL{OKhA01ZT(5uwrMtr@zrl!&wM`bhLx?3yn`k4OAD%F;@GxRW);b^%U828&fn?3< zJBowibr`k513TEt6{|hq;v-QpY;{ccJ0=f};!%q%oF+7t)nMwcRAYsO2Tn8 z0Dp-Plf_gNDyzz3WWbNC zK7d=wSGNb!VE!cHCL(LJ(=P zaN^}a1s?UnJ6EO!vf_7ODcJ*leZir)ee1!G+=r)Pbj-&|*iEgiJAf*BUoVniBmmrX z&>06n>{H)Gpe`DxEzsX8#+E`C&E&D%wb^v=(^!llJD$#X4Rv>A?w7>G#7G#U;l9!1s^?c%0Yybr$(3J` zI&sjpbl}nqdxOJ>)~pvRY}KT3^e~wc*gUQ+E|~s;ZMIs@&3jZ!)eKh~Y?oS`OO+c5 zcwG#R=8Ef5C6M7!jsI@VLH9U=jw)5`Os`IAC$}$mM|;wDfdGiw+1Vv<>OnF^M6h|%AY)=uE(-tM-S}UhTP<~=L{N79Jv(in(PRKp z%3--9q~%_vRuf6`pDO&@b)j?XH|M^+iXQv=KLT$Pb40L5@^dMBh)0uPE{=C1f4AlT z`K&|KV*epH%@aDt905W2&%Gas=Ts4iC%^=K1{&`FIu!XPgx=)ug)%=mX%C&Z{rS>? zN?A$iL&9*NukX9Z4Kgi;wURW!!NVJmgD*VpOhQ~x>Gt4TEs04<-%CnHCWM2*|6p6Tr??u{n z?F~Q@kOVMOP1r}rwcby+8r6H=j+*~&1pTkNPNT*Wi~O(u|9$QzlCl4vNcn?U$%p<_9J@P;7jyzggXwqBqIFuNLkaQ}%dP+MLC)PExZUE~PhmHBSwlv6ov z)1e)CzdpO&KRxXL6$Pe9kt)!ZaCOdqe|h%bDr5pM_>bq;v+_Ft8d{^>gX8k@lG*dt zCcm)I=)|OnFD}@M0lP= zj8SheLMpct<>T#X1VCepU?3+4heE_hW*pV?Jmn}gj#_=xcs-jbfGa5}`K9*XAoZPw z{O8&9SlVo~;dnn@3xPn)YinzP&SO~mUViPKci~a3be4T3(8MwLb>S;8Y{p4_wi}j^tklAD?!R@>o zioqH6f7)jt-4v-m{2NJ!R#)+i2c!D|Cypxnp8}~el-xn0hTnO!-FiX@?s}GM?Sw;dn7abU#-yHq zzisqj=_eX*w9)cihT@oD|F=~)k;-A1ppT}?W$_pSx1$TQ$1fb9A}Zki*M+m^QcxY$+j6XXF%;orWyur8dPoX4ye8GzvlB+|_ zq#d&P*`eD8!)-c({^e{1j?POTu|GCW zu{W&^(bz_eCb=TJ{K2JV#VAH=SdeAPGHyGcfn4Fltio{Ee}M~eB}fo?quY1BZ~}8> zUu_1i9mEyDjWB+ByrHI}L&Kcn!|p_VDyW-7kmuixio)a9(E4VtkLGepJNWcleY<*4 zhQS)9mI@`y>v!B&gW^V#QBcc@xr*Rz$~a_24kQT-nxgk_b$6zl2jquZ&GMry)ktX>LpQF7rUw@u9OuW3;x;vTO&-#gFMa$Ci$|L(nLmCMS|<@tm>Ks3f0L4vLM}&O9NY5MVv<<(2x2hM!Su`#q{ z41s8JqM=-D)wOM~<+g>VpU=YO*j%^O;6lZ6u3Elwz`af37WH0LIjUo{s_jl@PMUwW z-cMU{IG(6Se(+joKj3qMvQvvkfbXtPjce+BvpH$kv*XwobUScF1O7Ha7Y@@}1wC9DGk-CaoA6K2+1&yOk*|o%wTjZRy4=VVU z?+{C<1K1j}zXK2@4LES2x_8sl)0iJkoG&g03Gc`4+Z+z#@y^;8BMEp%E=K6)&oATA z>X1!KL-Ka)7o>#8e1o_gZ>V(k1*=q6t0}&p&rL_w_2VRmORHCG4RnZJU(T#=>6?1S zKA$}OaIE@vhLtlpuuZk5!H+7CE%)NS2)ZRV?s-bGfMNJX&;McPXQ{#BF(56}gP~K~ ztkyW#=+_vMsd3J2cHvOo6oB^-N%k!y$H5<+7&cmu8+-89gH9mtPD%BC$dHPZdZf=8jJB(T?hxGF-GVdyz4y+0-(Stt)cn&`Q0Ktuv-jD(`+3%9Eh7#gAds0s+6-SAu(}H& zo@yYXV}|cmIm!=KwC_gE`%9>p^ZGq$La64i^hu-AQ%;Rgq&)$6QI`Aw41BNLS(e=iPFuuW@VB6c^VT^ryM8_#;9MUa~l zy%bTH#{(AK*|MY?Wz<8LZWDd4xE{;tSGwvLqWXS* zM{o|{Ft=gJH-)KB1*TTw{){DD8G8yfT0Snz5V`hFC~W4EOBYYs{*ml!7@tj*AE)$6xZR5%(e)Z40uU#s6BNUhMqh~6g)v`@;N^5M?`u}qN@ z+J2b$;sr%J6YZKo<}^T+=W3!WOZBH72lSLuFRzsz&*$th9nBfDs4CaqI%tk2y!^8~ zGqUQB#u4>AS7(&}aZBk_8OFZAt8kH?e@z^#i$v{PnM-acT~9+;+j$@55{RmjBU-J` zn)38AEN3geXg4RkEYfTxuj%4nTjM5sadF$Qp7_ga;d+j+=~fW$SN?f^DI88e8I*1f zW=~$0LmE6!Vs%S6=sW=#J*7N72ccf?;XI6;oOamzYxO{RwG<-SR8O^Lr@9Glo_nZK zjl*d?w;Zyz{KOLhL?zzI+0@Y&81j7&Uj9Xf*LZ}!@S1shU)dDOp3N* z(rKMogj!>zCM2ZUG3Zsb^|O05iRn_rgjfum=t~wF6&q;({45{tOd_GSAZ!1 zi)zJ+muaPvNWSz9$;Ry1mFsYHf)R_C$`z?du^}}XzdCWKqOn#TCxujD=mbeo67=1N zXlL2dbyHj|it|MgrGH%;cid_=4B?GSyG+VjatE z=JN4q%Hc|BH8qJ?0gFy0i5xUpi3%L^MhgMg0_D-fDgeT> zG=kn!AmY#{y9SN6;AcYrM03Uy0xv=!qG1HP&Q2r(^X-h5cKXS{hPcBo|Dim9+o+1} zXpKd`>7y@%;dH7y?eNa%()ia*$y-F6O;4PZ)ufSuUrJpWQIN@8WJB9iaSmJd9Q#w= z3DYgR4sqH&H)CxSTqNE=P>LEq0{bRX;N&ii&=_-w%5Ga3gFk(z1+>8PspI4AB|S(D z&C0KG8JJf=jMSgK0Cj3AacCJwDM6TyIF&CihBR94M%prFn)ZUc;6J})@6ia4=4^|- zOSye8!}}o;0!}Bv)(d6qlf}==xA#cbpLSxvwy(g3`TcN2@(G(7DK#qs1O_$ z7B>7>&R)Dft922NXUc${6!KJe`L~eeX*pD4n-@@L;tJ_cIoqf2y^kUbz9d{18`mBA1 zj5Pq3+NBXndg<*l6=HqB0ouD&d@~cCP5PVj!th1jjeX#E*~#Rc`kC*p)$1=Wx!XUB zQ+Ib7oIQc#Gs314^Y_>1t9@6)^toFwj1XbpRW5Wy2WwpF z%n1K zbgy7+8%&aWJw^O6jna0$A!!2j?;g#>e|kY37W}4lP9*X0zi%MmJ;jnDM{6)y9sw=z zKSvvN6PnQiz_QxLp|6RjMDX##I*~wiNE`oOn!dHeXvw5I$AH9;O3&C3Y<@EpYP!C{ znN9|Y)1?-75*lrk9R&Y!O3+Z;8s9jo7T< znGD}#G3y_2Qi46j4hNxAB=)qd07hAWV9Cp_07dNT9qLs9dbIclYf_?Ye;lnU{nXKa z8p_BIGX6)d6-$*J;cm{?umW`#ygnYHw22O@D5nFvwgkQSYFc^CI^yHYtvJ=#g1|2A zm0G-+4WcucejRWUjUD zMu3Bdj)_;2@kIVT3tmiG^AlRtyL#fqQi5p3+KO_h;UfUSY|~I$cublWANKS;iPZme zktN-rd#x1WYWlji&=12oez=Oby|ciB+>bNT2DLS7jHOVoJ=*3>Z{W!TCPeQM1lR9xOG{+=#?R+~rzm_Y;{uGm4F{#dSL3YfQU1=Pf>aEimRngd1MAa*>m`4P%LS5ouDj$7?|RI80cP0;jMVTYCd7jg|G zwDW3?VvOhlr6ib>KL0S}_i_y&Y_U(z*sEt-dx=d6gO@*@*zQ zH$)7fHq;N$-Om_Be&Xwt=fNV}GrYJ;P`Kupb|0EG(sqRh?N1V& zjE-Y}DU~P0SD!tWqYfLBpMuX}zK`1`6M_$eG3WrHcJvj`SH!V}oWV-nLOk@QFnea- zK$nlsKy-R?CkGhi*OQp3>uTaBy>;MXP}{F;wg~EWm_FoGb(hC4&Iv>!hmD(C=N0Q` zxP?eR_i`^y2Vl4z-wvQE*k1$W!FFsW=HTXthVJ9x%Px!6x};v~lYBeqF!%AgEP)F~ z7Ws$Ns$$}`#f4-Xm5Xt^MF0VQY*|hQ+?mq4V>IyNgDG(3RJsZifwVILm=q&T&R`#-U=gY19TCQaU&M zvy)y#JUUqiEAt`!G;EoR^|glboY7_p*OId}DE!$3;@P$s3>A_Y%A-EUE>RNZt z)P+$*h{_4!mYNEJcFkIpHZvvy;A>*e93f3$Q^(7LIpAZguhe&nMVpYqQ^8Ns(EQt= zbKlX1*^Pu9@0uYo$W}=*w;6(#wBkHu1dwkZM2d)>xXhDj8lO#6+Va@Qm=mSSI&2}V z#NcaUI#5}~lRk58%TVu)**mych$n2t0O+jv-p`8{#fZM#!rYyd{aR^ES*=c7&1wVD z22*mv4z^k-6f?lGAvX-J-7{W{MY-qTD}u&0&1a|Vp`ZxKcF*+0re;)f25SZv-9Ylj z@Kn%Lc}6!%I2unb`|TCifWeF06;HUp=07b?x$B8- zmpwI`^+8X^U_NeryuxP!-!teq=##Lf5@gg$-K(pQ9Y^o@K-xZP0>GpPS)2h-Yt%1kojw6^WXo_qcT>kZZ*D(e5X>(DlfA^BbmD4fboaap}@cEsO^zwcKd` z+d_(XnAh&EyjA#}>gXPV_=&kD6Sg^$T|=X4Ja7L>?bbIsvWgq02`khE{Bq+xvcVe} zkMiduZdYs@AhrOoY?Oh%2ku>e`ePAx(Pd1QmeCS$!lZz_x7#C}ocG8gZtsq?p(fmpZ8;@p!Iudn%@YO}$D^)zfoRQN_) zSYZ1pMoPOfvX5u&kbF<+RGa)eqI^%DyV%ybCk8%O+SNi2hJ*+GPAu_`7PCYR^@~q4 zl=*9W#2bMd!zEgZ^b>5)?@;435D6@i?O_C3XPoX-51stb4&r=C)qzR0B8gv@$DW-Z z?uNmp$te?L^gV~#P1IE10KIOA$X?I0kb{xsW1~C8_#Ch=%zM{?S8WFDMb4R2RQIH& z5n|2c#t>DD#_Pe)rTp;oZ<8*lJV~FP%QcFvPCH$Q(;P`(CpaX}$CjJy&?QCMz>q=S zFc5LRf{1BwuPacfOu#40xyuhG2;gti#$g>c5x?Qz=dU{NixXKS36DBDwtpMo`YXOq z8U;!PdD8fNDeUSjBdS^Rou5MCIHFN#_U&k->lJ<(?rodiKjkQNB!aoSxDq)QZ!%A( z#TYFZ{stD?PSrmM#;0Rn5G}}bL*!c<(v^T(sJ~|2A*p8<)uG%qqxVBq77Ibpa(gxH zF=~7LKB0u`ee&OP@r6|wr#Bskc911L+Ls@a{87l=J%FpHT-Lo#q{o+wYR7^sjPzC6 z-P~0ju#%UT>SGxy)+&A2%p&l`tBjpOkq`q*&LrBEH-4B#HkskaS8mhdRWW^FKGV7mr5SDn& zV`{8|Ty66!HM2(tOqkHF8nJI%e!asD>*N?GNaCh2E1y!UQoS(4P;o_6xRlXK7^MpHYPR+ z+8LY_wrg&Pt(0f6s&l0V`+^YR+bx9SK@0@cM~u*z`43qXlPB!gg~jx-GAR|3kDhpd z36X&We&G}gh|E8l^TzEc(qDt4#5}R3qeJQqJhC>WIh2UIVEWB6<4_02G>z^t>%2cr z0h%S(Ad@Pv;(5(u^@;D`VB#hZfcFNB2!KWsHJ$OOkf#71WWS*O;B&8-+A#gV zx(P5OU)$8F-}3wnb9KoH%Wb`uT$EuvlX&(}ihK1ykCXSuO5hQ>Z#)Dt@0KTehi${& zv#GbAHx2Js;y?o4Xe4r7{o6IyX#vb>7-L^Pb?pPez=BUuJI>=1XLoUGpoaD}=>kw%TR4>e zENt=(Ka6Qw2OhlukZbpRSbW)cfX)wk8>)S>aEX1Bf;E;ml~D%_Wgm0P_r+-ICt>cg z;4eyJk9RvNBh!~-^h|$mAI7^rU(jc9j91&x=N6B5-mV?}4A%RH{+?faOXqykev$Gh z>nBUEqkQG_z<{@i4$z88PYuaaVXk#L3{)*$&pI?m!p5?;eq}L1Xd|-wlC#)%iOxJ3 zD@}q=ojInGRm}?dqaiA}VV3x|7&)xij<~hXlVns-mR0hC&Fi>r@i|)zMe)D^{kraj zZ=t{Y`yvcnTlJRIeZga&mOM+XDSwH7*X7z-z6^i zM}p}I;;uQ*Zks=5<6|9rORf94<~)5l?&Z|u{qh}`DiN$~K!K2wccH7N7keMqzLg2w zncC?lTlAwvaT{D=EYnPyL0B=>JlvJRpCPdW(7Lutj3#kl5@j?{3VrPdZ!Mj5BNxvJ zKeclOg8`2lZZVZRXpe}2!j=52J`IZ+%fXt949&DiNju7?MK^xHzips10?MWi3m&2) zZ~(}r=oE*_&y^o5`G`_DxqxDOCpfLOfzKv{=hX%UaYU*60QM+RFcX}m`c<4%8mGLm z+E8VT8fpeX=?<6BVlHdzR+%q()-J(?q$7PFet=EMPw`wNmK(PvvbBAv#EGR7To``Z z&D11>^0p+bH}}o5A*m_EP%DN&PrNa_lCr{fwk3`1vPm?TMH!&dvK%hP8B7u~Mc>wW zIwNi^aLVnlf1Uva?x}s{<>ey~JYfnB*dL?cK0W>V7g`wV!T2vv6FLp8>ABUn#3dk! z{Wd9s=o-O>^fq=l#H$dUe|^64r&j_(NcV!lRVx1q>JG?Pj*F3nECyQh!=BbU$j@&T z!LD%HKiCL+@!$CKgJ2&V>S9JDLNq=Bjb#L1kpepe9PeV@kCyT}f{fnR@V>(v97Jv6 z4;IuhBY)nk*?RU<;LP9^3tXZpa~vIxaN3O5gtoI}ULJ-I#%Ria6V>8e{JEyO+N(FAt8O$(K>bE?XY zSJGkWv7`i|xyz!#U#l-(QM@}>ev)gPS)2sME*T7n;j4WG{*PaU^QY$Jo>amFqFJ%~1{lBt^nhEPJjG9t+BvKRCtbB*ludF|St zKPq!tIjyFk+|_ES+8)82=cx?xLhTmZ;|b3$bIxgrGt>;A$rxHWi1sZsoXFa8xkvP3 zYuGj+;74Ia4By$3(uDIcsR&3#nQED%fp7{aV~39*_wh%s*<%M#GPhnK)^^HMdSG#f zsv#@!8U||c;wf-{w&wsY%9MlvhH^^VBp=)s3}ghzUxFG)(>}(k#be~e21zs4VH@P8 z$H>UQ{oXE^&X=lUk5fK|@!;YdwgqQmd+pcHFLjLsgO+Q(1&x`UD*ms(O&0gTWqe(R z_NUB8@RIrwOE~SP!$nuYU>r(%KZ~iy-w0*gtAU4Hbs6Q|9H6F6Odnw!o^yoc-cSw_ zTwdy?TB)AvdDRbi*SoToEZ;IeM#cFsD5Cg&XBZ$Zr-0c>3o_9|-F~-aYwr-Oagybe zD?2xBMd{C0a`$C+>zdh?8PVQWU19~2{%Wg2g69qVPS&*=;Q!_!8EZpo_u+BRir-`w z-O)9K?(hzoD%pR#Y24TK-uIqzn+1s7&R&TCXhCh)W_c4&Dd>g4lc9W6Ukx69)B=ym ziYhXD;Ef(PZ+TkSzW#N+`fN5sX=_Z%6mApzU2*N+unuWc$vxP(*ds`f!Oe!2`OS+% zM#jqNPOyLVK4wU?3tud8Wg3UI5_e^d&WWOt2e$#1ydTN4OCB}i?hG*2n+qPfdx`L9 zyr+4xXdHM;q%Wt5Gr_jR2hIboHF-3#V1>azTq zy_-p->-@poq#9gc{o1GMbo>?BtrZa@V00OJjRU$tD6?Hpqy0P?V+vp!h9{B+k7d7r z`a)k!`X1Xkemls7yKLEgH|GqIB|S$A`c~^t?)|QF<=fKG^R{{F6qYa)>{wafWAu(xYI^0fpSChn~4URySwGzZ=T$uYf=vfABY;s`;Y6P{@cQ-byo_h4_665R0*4{ zwGCT>s^*YRvZaqy)n6Y}W#Pc~dT7fJUtDgbDv3E?LdTnPV-MFMPaAFv^o5?QKFWzh zG%MXOIAl5}%kb46{TELB(#P=8EMRD`8mM{yD=sjesj{7?+wsc;icql?nE9AM|0w3{ z3EI`w_5E(!Fc@JaieLpBRfTG7%cv#iafW(4Z3ph}K&NAIbEK1rbl$la(C`jiz;i+4 zq<}ziyC4=10i1G>OyW)r2e-f={NF`~$%sUKV>42n!`LMPX^2PsAc%n>fYpQ+3Amhv z`?^p97!r6$gHskd=38L>+-2qAismo=h+^Q+0O6@|wn0Z+mTinPQpxVoiP=Wb9-!f08Z9){L zZr-FEu3o?!&E2}dmhtV*WGb#h-qAt~RdWLc?BVUytiuvPl^AlD^j1%f`TXnc8|LHI zpz>BDd(2LJYRw*U&@?CrTPZbL9J33AOcV>ZA@se?iu+-`5QnvDT%UfJ#5tBguMJ*bGCq8OGHbJ*4v=zgJOYSvX;k4xHAw0xXioHcs?T?;a$-MQ5NuGKxKroV1k(BFJ z1iKQU!}e?8dF(jnh<)0s}&3CABk zl-S8qR-8YU=;2x8T!-!6cz$>dEaVp;*hmRPYQdKoopqtGhc(6NrinXjfwt)#r3mZ5 zRZ}T}XKxI3&4Q0rc0#DP#X;sQT@hAR!Gg!N)I20uaAso0zVv;Ua9uUPVE}p6ub=I=TX_h6H!Z7xL$>^sG2S}?A_v&Wpth5v?MbnRe-9l;-Y5w7TmYOrDOxYYs^S96QEG?(;f zf+V)d6L7lU)vx;}v~MVL52qLN=*vgW8Gr9C&3hIIpWA*Os$;9?&ENY7^{9N=y{a8Z zq8Bgy>OXK$L(Ns`LtI?72pcZY{INBGeSO8)t+t_sFYs2aMbsmSzi4(S*Cp!eO6m3N z8dQwp^TqTL%HgqoJ$U5V%;({_Sbn!n-;-em`|A7Xq?%&(36Ya@IVcsIa>UvH}q! zAi_t%REUC^OaF{+Q;3W~?**z34C2@?oYlL1p&eT+&H9IH&~QrrA%FJpGVRL6T>Z4P zsX$x!dRz$f7y=SB9oQIQ*bHWZbT_!jNKhWk+|*nxTk;tb{wYnwC6~fEwMw6vMG#-v zcet`IDF$!|-#wdx+w4MD9$m}O3xUC#>SynJ<_`tou8~n}WGo#Cox~QzC4n;naJp`a z(!YvpS^GuQyWY^h+@vwe={`>k{w%XjgK3Z9`~%6U=Q;n`ow{+~+ynGLtQvTy z`#j7=G`G2+(~DNvMWx@h4D(IuLsqE_vE?veTllqHGV&4kEA_=$huu@a+*-jMnc;AJWNHXe|&@SwlwX`jbeS< z9L%ei@$g=7-+2+;98v@n*@D|~d>egZnW5SH8WTreODdy0E{*;dA{A?$4F6#&e_2 zb>UK=Xik+u_gp=oAr5q8^8w~(yf1uErE=N6PXACA<&|5_Cbro!%UU75WSqwM`bBJ$4+&t2af zalVW)c!x#X9m?0&b#9hu=2|z%h&Wtb4{F?OkI55mL+-pGIOur`Q;P1ZzGx{n2t+u{ zYzo`9{QIO+1=%TC^p2nUd9ypo_-t9Eli&;UBY{7WGclislgfeU56z+`sQc=KS+pi# z+eGk4*~w!V}4!~7qh2-&=pwaOibDf7D1| zxy&H|JfO6yDkYMFZnF9u3k~=p-TMUc4A_aUxNOD_;g05UjAi-*pV}~Bq&A9Jw$A$& z_G{}i4R@-X`?v9^><5d==~2%afgzjfh0F+nFxYi-cmDWc%>F-v4GiwiiRftQJ#)$MU zr}DYvAmmf`>>y4IcC4C~0$S%0CxgyttYarl<9Fm(%+n ztD|lWT==QoK7YgRG7#Z(=r|&*R{ko6tzZp`vJUhm_-S^DpX(y`sqgZD?G3?+h7LtW z`5VCJ(S@<*|HS?eV%QZ#yFSDf{j zM3SmBJKX1ZT*}(VZm$Fkqd&;YtwVXg%uHD+4(qTrtc$^v5v=TlvH4OiylnLL5O@Cj z7r6>UXx^K&+bZo;?LSnD6l?`)F(G&8RV=jAzt3$=gG|~!`SZ^J31CWF!2RjepyepW zued$5!xo7JrNS}|!_fzw;~Km98)8qc^hIMaK&%u(Jpoy*2otS5!dt-a~TG( z0Y)MwqWgPFv8tO$KE>eG?s2?rZc;`8@BquyM>=H?z%ZaBgf$_6lTPmHwu_S71KB+o z{-FKh?Ji=*H%Vh>x{LaK-mOT02;EW`?TM3aA1s(J;Xa&n6_JhDt2$fka??1)(QR%( zKxT0u#&FR{N`-7P^-H7cCpf(`q`Ip|{xP+!Ne$K-K9|vWELXPH)w*5Rc1nmTd&h@G zeNC-?-)px0sUFJr_?Q}jG<$mk(B%la(FJeaQvq%2Z;7J~Q``*qXjOW3O75nv_1WLI zxm{C_qBL54BOdZ$v4tLaXK2I&@3}wNz&+yJU#}}~C59~icCWt=b`$J`?a#zbE_Ea* znLPA52T#r`RjP@1ZkZ$AWy~uFWr(%+zTHrQeCYN~0Hcz6osGz{6-xY~;*&0>_cD)5 zj0Y}bm~NeZs`Gij_SBy1m60x{9t`7Fx9oIrn<$KTZCd;Q*><)k1R2ghv)!MX%g#cf zZvXzP{n2PT$<6fzNs@45F{+|kZiN$PJ~W%$PlCx|qJ-i9=k=ExDO(?9cNpWFU{u9a1B|mc9nVresonOC zfd&3iucdGjHza!kTg?>|OQ=xS>s=Ss@Y?{yE{?gGE03Y7aH z)WBwMmAdpMqcv_{HU{^-#dUD<*_Q>TQIz|69ArdcS4SAdo1=L66{*+=snn2mD%eL^ zP1u6FtwV%<#z?ZxE&)n_;dd|zDBm+XBP1pd7PEZQRbSXpHJCZ2#Bv=2_Gv*jZ6s8> zP(lZqx)ZCAV2LAE=Sytn3S>5a=5;?h6V^BwugGsuX@p-z!d0<5iTNb_P8QStALhbQ zcCAXU#iZ$CSfj2=zil)(;GdWQFqI@DFOQzPsi+;q?VlU)4|p)u+1a^cs0%i84+h7v zn1U7cXVUKff~N-3B%`plXQYV-#+bVpE-7``*Ek89q`t~BS_L18p-cv}VMj@QX<}h5 zT8&}?*IF8W`6+pM&wL&CqWp4kaq$Qacen=AD+RT+R6M0%^x;3`lu9g12b(FmL8hSo zo~t>S4WRufnz%n*l4>fDa-XJCmV%IxOX$Ue_YXz5>oVTz4wXX8EZs0)o@6cqJd3nsbI8wc6+TcVMq+LgQT)%}Dc@EX4b@#1 zcsZ+U_IawUv3LUCwt>t@#bpoNc7}KIm!___%4AC9|Ij=c^)`!0%pG@Vp$NEvk&$1M zQd9Zu;E|D~eS8EulI2kP348w~yXrh&jqon5zwfK4w$Gb|YHy~+X7`#W&-o9K<+SQl zHpT{h;b#hd&pf`*9REabT-p)XtW{C5hGaLvG!`C9R-KYaYa#L!t_#5oACd^ zj@)6*kHZNb@g6qIf@L=-kA#UOpQ?WWfkTAot3dEk?w`S@eV6^`v}UGQy_AM=! zSHGDNiZ>(0%W$VJwU3jW;{2aSXF#1<&x-OON+kA{s*IS{Oq3jZ_Y}wsIX9i z!3+ipYWgqHjP8jnN5??1swEZbB5@9Zgzx}mkTY~Xm4D(yzyCi@Y_|23YA0slp< zd|t1IczhmN{#kjNn|Z+S7<`kt&&zzZAEgBDMXl{Zg|_ApUelBIyFEB_;r{_`4V{lB z)4M6PJ!MA!|Di);x9sU2&X$89VUV`KnJ_mSgFUPB1=7gTM1m`2G5@~lRl)xs=qIAT z#mRJD(4(%?cEkU@eA&ey5DV$u*<5aPG+%bU{6n!BvliT0e!RbdQ)ZGJ4I91gtzTac zg~PxhEj*gU@3+Lv1VU#~;$c2cd*RIQ&x;>JCutNpyi-}ckjl!+yp-TE+dfH3O6oRa zgKJ8uy!Qr@Abbh(i2ZYVKYje;#vsrUiDMH?Xl@gcJjw_9`T6a*AK%PhZgZQGWjT=c zN#a~!XMHSPtTr)&lTtG3uaO7@z0{LN#;E@N5a^}e9!^Caa!Z=w@;Lqq$1kv5i&+Mf zcKxhGXTmfz!zaxPTt*@+^xQc9kK!zTZ>Q2Aqo2Yzw{1JU(8>?LR*97bIWdq0@4f{E z6aIHfI&y)DtjE>3H9<*mCI*Z9g`NO-Hikz>+s+P-ZJA%Qc`mmj{rhn6l?TGR%m0Q3 zf>YlNnBLznKi(a{K$sK&)v8A@u2KgY>dR--!B1`OLCNq}sSx5~0m82kSASt-!v0Gz z>Y)~YWm|1>z!vT-R!9$=%;q2S&O~C4N*x(HsG7c@K(NZ&v74Oc2x<>2!ESLfSz8nP zBSJ2Xa!<`|0ORh?-G7kwt3%zZ$+Wvx)F)ajPDjCXj%-gcBy5tf^HBTwCA}zanh)uJ=e4&jxJoyNa*exci73*u#&;cIeXW#}W(*FOxAAY!~}G?$HffN3IG z71?#6MnOjpIytd!znhg$Y38x^s35#p7#|vffrEpiVPqV5yxwI5L3+^S(5eMc=X~mX z(?m1zd(quGtzKUABV}Wo)lQW{>F{KIQ`SE((9 zq@Vk2;kLsLjao(j!}#qe?MJmB=gady{e6cg-r3Zm-y^?2)LZzzwmE~(?DGg&#Ua2y zBj?yU#%37~=Co|zHO&)Mg41X`RW@VAD4?(4>5y7(at0Hlcr;VxnU12IzGv^K?JWV0 zfpOP3rK#`jF2*jy*;9FFPj&F!2eEDZnf#P@=!qoZzfoDKqg(dRHCe<%5qiJ~T(JMg%O;@Nk+jwQl4$}W^rv8Aa0tX@$Ize8!XLa> z^IF|u#GfI*)YsV5z8+sa%tbV6+mXsUm5s_oRWKs*6AOXemEa8m6O)_VU*)xsej?}M zS1?jr+sO-A)L(~&>9SzumPl~QrwJDzwhOMIv_C@8J;g5cSK)p?J-6~#1iRqqo@Icy zXjW%RSCae=r>Cby%GG)8I!fOh+{i(u{2t|_;H|KlUdQ}apmmY$1niIRV;5s7UV&GW z+>0tRpTP3dz9%27i+j6*4Du5@GNDdK!enRF!0&dBtQKo!{=2H|3~K1^Lf~gl2eMZ( z4U8p;T1RLzU;*rSZ%l;QQ0FCjdgHiqlXoI<;q+$V}!N-H&QM~_4?i9yKYfIRa z5G)by1^eR`9%%N=sMGw*j=g-we}<3Z&gfY8oUsanKGznqdRU`bqZIV(WrH8!`CA88 z>1&%seTe&7Hp5&Et7jP_k)apDex)LSTn|_~kK?C|FTvCmn#ooE=QQ_PGBZutsj|~# z^g`mX5kJCQ%Rz_vN45VK!qvg8Kjlr+KeT^?EA&4^Hq+a#|1jQz`9TB!J0gMW3+`s6 zG6WTBeAev^Z4$T2HLBuY2$T%dKJA&bIL^E9B)WTl^0y~1cI4W5ms1rdq|`;I~dW2tk%q*KFgRv zu6sx=u>R!Uqhao%h*M({jw~>r`do#Jlc_OKMgDY4D04iDGcNcIf(?NzBV?BSam6gq zX_mU#tGw*sdFB2qU%k0u@M*57*reiI<;a=T4!btZVHpzr>8N5+g}%&{9XxZz5PJk~ z^NfUidM)R*hpVs+(1`?#=nZaPsa{^^aykN2hxjb1H`eCoDWdI@`gsS z;>Md)o8HMV4F5EvPmFlN5D)&>UL=2cWCEH>`3oKWPs3NSNc6tlq52XH1ZsagFKS|u zWL8*tCC&U+BP=f`dEBR(z>jg?5(Q#7W?c0kUw=_O`=@Qdi*SmVrWk0J^GG7EX>bBj*5AQ*!rM06uGcxC=* zagF}{vY_udyG=zyBP_0#AOBKItH61SpQqIsV4YI@2mqW0kQz*s`=w@JOYGVLr!%WK-Y}z`szcV~*d^C4~ zKdze|hTk;o3EsoIGr3;5|_GqE<}@ z6Dts%?z$9)$oazzV}Y&xAyRhj^Q;_cE@}348lRgL5_jeRho+fpT=d{RE#?p;38!L2 zD!Cme$R5F&IO%!b^}99#CpfNSG)?=YzP{4J1;<-jR(BP^_g(F_|5jyGb5IPId0ta~ zlk-nqC6y9_@TC4XS(orGSM4+mKw`@MDp$Tjm7}(~K9NJvZ**uOzYAwxGKf=Po2%aj zR(U&vGR{=rq0-Oq@q2zFDqflv?TYC>QDdw&jU#bbU)+i4sWq6uAND>~BlvWB2n&(l z3ly`R*6@^sEs!4GrURQL`}fCt&mKf7$%=SmmPJ11U4iFL3kS9rzZHdS!w4L^s025c zo;qS69&UGBXL*7P^8q&Pp2U)w%kC+&O6G>PjRHiTX(xGgInrlopvGHjV95O%ylCVB zpvIFgys7TMV?!OebX{&E4kN3yNT}`3r_PSt=Fe_BaXUjnK`qB~nMO)vduh&IV02s|#6O=qwu(SHyV%p2g5|nx9~Frk5Le** zEX{!@=wHaIi`@y<#w4HLmg~|LGvB-sg4<%+R0AC){-T0p&&H;V;$n`bBXy?0~Fn267out)J=}5H6 zPzL#TVQgZ8xt{N_T;ZMIIj2Au9H&u!l&@%KN4M5q*Rwy5L`*EXrP}jSHSb2+YE@{7 zVL#c3u5%I$v*hj~uKs(lmJCRkPr3n686Cjo(ma87_<|j<){;i*Zx1ULZM2(ftVTu6 zzCvj1wiClCmKAYO1-VZcC`JL(%8&6wBHI=Tb7>(RcfyaRpH#Yl(T6k*o(CcV8qXw9 zJr@VE@+*E6ip%GCfYBzfm(jv5QO&aWdUJ@NgGc~T*Uz2$%V7Hwm$O_5Pxp&$g5)Ui+5yMv3ND924 zFxKFb$yX}$HRR3j%9G*kJBfF<>KRBUig>Z>&t!}d2taLC9whM+vm)gIu9E4`t{Xq4Va}ZbxuXc2`(7AZ6f6nsVJ&`+NYy%o{;h z073tS{w*!=9CKcCQS1E&@wWAt>TfAL_zIwSdrNbXTs3ZzF!3MX_N_c6OWi6}EPiQB z6Mz_?redLrXvz*qBESJy;D7W@J#Ui_5hd5k_q1t<Jp1~C#)CC zdAk9q*Ep!8yZWd~x7*$wd3Md3P=mCw#Ba$?Y^wD+*>BcQTV8<4aegUsw*BL{hr``E zvgDOG0i9Ew&6lf}+Sj=H+r4kEl3T?}{egb}#@ILVUIpfDyrY7U3ZvuMr9QqIv?YlI zMp|92)pZ@_TS{nwBpH})9Y}lmVA+TMcM(IvQncbw_JTcF`_y>Z;~$9lGcSF48&e0gaoR1ic@ePJzPMdfkWv zuUC3lQk$3X4)+9Z-Vns^j+mIv30~I&I%H(Z<$E^UbfL;C$(C=D?n-kpz_$BQ432@!l&q?(9R_v^#rkg~O**^#8w30E zW=-f{+9Vol;7}bp$E@l<&p7z0g!7#^k6R3w!$}sl_EeZDejd@nG878|1altiKx7Ke!GtDP`znmH?0pTP+iOMLAX<)`Uvope%*m z#?{8B(qVA0U5<{>gN=&cXx6$p=&#M>7S3w=Ttc(y;o*>0IlB^-*Cf8Nt2SQ3re1)>ehw$_=IiZ7_h)DF$zM)yY6 z&Q+W$zYoKP1lL{>y#$tLtye4?*q{M$1c|55Bn0gJYC$B&zMeUIt?NAtx?H>iQSx*e zq2Sk%FbEdl9iolgL>tzP*zVNo(>3Fu(^M3Uhoiz@aUO>00zgg&qRYF^1Ag9(CbG_? zzt8rB*9v{0_3qT%pB_Ie$g!D@Sap_ArZU3E8iC;*p!kp9xIOYy;UV`Ktu019EA7Ee z+U53K%>DUo2}9!-=z1J`r%%^n6*ehl4A8ba}(u- z-y=%~MMB)1_l$twol;AB=^XGO?G-ZKDkwSG1{vaBO@!WX+Mf>qL7zV~E5?QS1T3jNXy(GwgxWu94TX)tKf}=5-pz zkFVI1nNHPzInNMex*_4F07a#j7VoQ@MonaMA~#Kyrjlta=0A8&@c#~eWlHlnK>@YS z3U$A%%$xymQp%vQ@SEfQuwT>v0~PmYZ77r6|G&E!5WeSgBiMo$7-YJzb7j7RdDbR#!rfneU!mXd^!{6X!Z zJyR)shr6^EWK7L6S=57vd#P79I|%8h*<|J3Vy(}eW~OD6wf45U3hOK1R4kwputIwK zZcz>%@T2F@8{qH}gQHk|6R(p)Q3hY82kFu19YD`}zJY)JVj7hTw>%^p9@dz3BZ^m| z`%f}Yd~6X28+;cP>Te?k<;w5cGu%8(j++#bm!`%p6N5XN=rnwNkh|>vLZuMVJ9L65 zE&y(qdccztIR!jkf}9+;v4w?4#lE!>gRA!kP60ks7{A*7$mN)R>BFt^+|ldawbG;G zbMrTbMt)Sn)xW*<>jFg4?Z8`3`okQL*S8bK@>A1C`b(0zHpF*6d#Kr1{igm%T3z1=qgJ8X0vEigdkfo78oi`q=~ z@%~=)jJ3!x8`Juj(BiPXYu!fjQMt@xc@f*KtVlK&om1YZqDHr>ZlXY}z6%`roM7d^ zm~^}FJ^rAoQr>6{A-+weYZ+2d$G-fK@-?&Z6JPUbKQB1Z%sv`;?B?pKMm|cc*<8KI zQ0l6nCN<{hnr;t5)=8II&GS+JeXVx`PODYYJB~Z}QahB43%;#>kW?G(PrD})aDl#a zSnCE{Rqd9Nm^d*Vl2>)EKAn&^*L3aG3rlXnJfx9I3{Udp- zc7?!rCa5@J;s=d36XtG;eXhsyft>mef`M2CH(I)#Xx&wow-XZwyAEr`73rCeb=GcG&Bv<>#o~kR{ z-OuGN8#)(u&{&1)i209Z)f#3jdDT|O#SN600ghkVl)4qh3R%(B5aD z+i8wqZTx5dE^gv1&t+EPpRr*y6cp22;$=TF&9$NB(VY_ce8E+RVU20TRKo0{Dw3Ht zo8U29bSK8`>eF`14`1$ZX*gyPxt3xQ6taL5-}K~20mur8t>(D z`DQWi-9Ms6u3`;oPMRf;fQ2L0+pQ);-TIt_p$DI~9zRQBX7J1^S=~N=I_gb6k(M0z zom0C-Me*8aqwb}Hp@Fv&K%HmJ5;v~ZqpkjlTk}gT1u>#9{9S7M=v9Y@?wLmHKh#T~ zDr|#I`mt0S@02&Mt1b=J19nxMddIm&z?YjAmviZfySDc!QOv8flS_Y9;?%okQE%U-olWfjR{tu_?`qXRY(Afm#bAHW*^>Ng6|sk18O z2;YSD$nIOG+mY;4r=mksv%5S@QmJyYGIWO>-m{kgkKi%gdn|C(=Epf%kF51)%1hSP zOP2YeibATJGVEVa^wxeW-*C@R-o>T*9vZ*r*>`JHtKKp!T-FZK=wwjPP7h!2J@^bp>~Q=2r0%W6+KS^hcI+h(-;h$dV2O7R z%?MM!=5@}w-&fhWc0A0K{P;041w1?ZMM=LJnnzO~3?gQCFGHHe6zu$uPJ(xrkN50%887|G+eSg{?p=N_ zE!WSgWa&56_m9vyG)3gZp0M@FO491P?ANY?6uHwwi-4El)3M~lRV%Ks+>=WlUx@dm zac8H!Rz9y)j6AQCSm2_c!eTtnu%Flnrm*D;)KR*d%`$f1BYc~~w(D`U_OxQ$$z`m? ziKU!hSEpf+otT)od0C@*IQsgydi%5pvSxYqv0j|(Gqv}Zn*J>#_nup7nZIhXy6H1; zOd_oJ;abj5y+PF`D4k7K>%-U_f~^0ZbZjE49$9O&dVH&nt1rQi7HpCMQDvws2p#xN zMx5PcQ)g!4_m%!S>~kMw>VlqrL~0mT>V8$_1BIG{mO~W{TyZUJKA%kaWUj37kY3@Z zW$rR98r*uYbiznl--w9T(MCvE-e-?I`<&bXPLELjv9!MIJAtrF{RN5&+)5qc!yWMC>9y@R!dl*}KIt-3v&nRc3e1RyOv)`O6_j&alr0 zb!%&;((6F-DM?TW9B(IieX^CS5aX)8)67tW+=S)UF-9ZH5DBa2M^2P6%fEr-jB}31 zkf`o9IErM&mm(R;7?%}pAebix5DBzJxg3!^@Bai;MC?f z*1Y=Zfo5|3g+hby{^+r=%Q_^rby^SC0rzN~lIu28@?dMlVP4OEf^SjZj|?tLpc*AE zE6R>J%L>s{L^sR*u*z|Iy_&B&+?kpI$vE^FAb3N}-`%0G=+;qZ+}|DSUv)ia8-1nK zI)VZ&xgd|&a_nqMlt*s-l7KmchyV7JLO;}+os>_XnZT6w_E^-Lba+O#M}JoKHTAJd zWDYkgT+?FMMRrtTf=ZrU7s3?skNLC-`2J<+>kOi<;EZ`RhSeX9#D|F|oYLGjTTjY8 z%Fsfog=_!8frBvhv|ts?8h`ef0i?|Btimt-LQrMV*h4jb<6LwQsIZ07*i=7*uuVto z_X+rbf$SqtY6H?;ZeC!bdhrsb58ke|g7nyGpzDNe8Pn(Rkp?P^pC$5le8FlHSqI1Z zd0=omy745K?ikPgYFUbaj%L;D#f{D*1<)0KcI7-_>Xika1Z-w#=|-Ko;dbmTM+2)T zAs_Lw@Iukh=f5)$@64_rGL7j5$kYKlgyQ(oTic9-oL zgM_m~Wl@^$;iF5Yo6)2EgIlDsyKH)*zUAjNj3ZOC+&WL~rBcSCil9F`6VAb7;SC2K z(K_Eqm$#-Gm@4lsQ4cbm&Of*s-!UGaXMbaF80ZO4_WebaZ~tr7w*=dh(4rLZL|9vO z`vB+HCWP(3yr@&pAGD)iSAm01!T@(jSl(^pA?{DQ*#5+Wr;)H#?HRjynP>d79VaIn zAbiY7fZ2g48aOs^GW?#I8G$J~?6IiQ7<|#@s!@cC8$xashrLK_mSo&je?bUft{_~h zi#zF-O3ngj>B3H`zOYP@yVM$)+W0v)HKENOy{KSS$Ty}O-%XU9dri*kuhE|Wt`nm! z^GEc`d=FKcXQ&@K)Qo}`edak$v= zL~q&83Tr3tFWxw(C$FesYo|a~Z(o<(j52e_cj$o+9kiba%rnL1*nQ_!V}9mT{Kg}+ zuXZn%czYpf0VxgxGsI01{7S1tufG)$*W(VQO?I(G<9Abh7*S16rvwLOSmaDc$=#S4 z>IshHRYauG4uDYTbvo1AK3L4X(6XBg|GHiR!V^doM@D#Y$ono3&>H{+7|hAiG1HV# z#8u|#mZj(m7lqB?2^idNwM#lmdGp83qSQX~!vZuV2O?9{mT0@CXg`U@&^W~h0%T2j z#a_#L%B(xY$quNrfR~ZPq}>BDFQ48a;8B{Do4<}k?V{T0ZIMwmFK*4hzh$yoX7Z@q z-m9N`|9CSgdTZbed0f2Tyqsl=>_B{|X|GQjtAd->Uh@6gI{gEamlUvIqtWW7?jW3n zUAmlxlxGF*8f%y9tBV}|>`mVCK0cB-Sk6Q7k>j-^eqd9_rMON3_VDxLv<|^g3D8`^zt2nF(`d7QbHimHlz`MFIUpvo>Cq(4d|s$K8PjCC1Y{|zX4l0SGLD!gyKf`DQVzD-4RC zRhk+Pu^aLF!S_5A(ey*u7*9KoX1j-g&4s1o`yQS&{BDD~DtvVO9K4iKXb{e8kF1Kx zE&8=&C{H&q9=n*B_G{}s3btd1GAZ}Tw|HalsJKUET{AaYAy8-Otxg6RGG>fu7$|FW z$%`m^J3+3Zce{z!@q^ph#Rb=UZTp5nn2JZi=+rFQ)+bw}mk1xhkXeV*hJR$|C8g)n z``AgBru?+Gv`jczB=RbEjB}Xehq4tbAfHXKEgr@5&$pUvKZ#?~s?BV3>$aPk)|CPr z7+`comxba3x4Dok_a2|g?>Xj528od zvgUT{r9|#j+mKZA-dvnoSzk5cS?N%Y!V*w3O{*h;=AyfbhE68Qr=o0dLp~g>_$*pp zfcj>-pNPd@SU%66Am6N7ZF0LCN8LwR^)StVDzOLqAhk9IJo%r;oHn7 zAjex_>$bK|9-0uQ$LnZl872Q4_3HOp3RK1+W_!kcct56B;+(5LywuXG0y*Lgj-2}e zv2wB=(dlhOq`{egRDZR{e3;O7;bAD(3yJ)V(y*Q(T_#Zvkc~a>*_s)22V3%4$JH9` z!*)9qMa*@_l6S??V%@f0efeo7d*9{IPx;ONzTTw`drqw;G`tFKs;WD0ikDo z3ILZ|=%xH!Y%X5(+l%{}Y%F1N6g)SNgvj-#&=ARoFYkLYL|05h8^M-9ofwo-{ClW? z393?R6Lz*%rZiE_B_D-O1UgsP^kHMZf!<+SI^m9XVmw)OgfR({V+8(y4W>`h5cMcC zyKQ~}#^FJj^cUrxInD#Fu019}nv9L8M8=eO%)~}h+Xw@(Cbbc$Mhv)fF*|cqB*)Ve zeWK}J9BBy`KUa?olqf>6(}E1Ra*(+0XQsk3w{8bSBkR=BV_0!RvYyha9n5V2vFVGq z?o$R=TfacZI#sNGJFJLK>$ehLDOG3#>$c$Jhw-S@umiGW^0NG8dCo{m2_-}}CIr3a zU*EhV={tclt|M(Gn;&>Z*LJdi{CS81pqbRG4MDrNj>rI^g9dSUp<(x2@ejsYVU^~v z1@|+a*0tzEK!usU*OGyq-(_|KsaP@WNJ4q{=Iwjc@&1&F_;cXR8jstG(|Zs9Ry-9K zRm*dd47N(D?l|YcukglO!()iL4;;L(I;>*X zK8rOiMKEBEjTk-(6A5U!`h||(qu0n){RL3j*Ycd)8I#^L#xvCC3>@slN@g<#4W)Ze zdM{$-b1-2+H#^bm%%Qc}pJR~B@b9vn1ggi1>3@U%;!?~s(e4|89Xoy1?C>sS-jQRw zz~hn*JA3$#Z_z9Cb%J=TzvWOs1sPp^V5kc-XW9!1HM>e9p~|C$jatrRueQQvJlfUD z_{lYCIl^R-O4{l@O?3HA6rRBv{?ZUh6ufSm(o?X**QYQue*f>!o$hZVCWHqe7g0ZhTMBp7UcJ@pa~i`g}PZuat}ut+fw#6L=CkG2Sy9W967pyFW2Ka|R4sb#;53wQUoNcv--o zA@3c?2kyKi3z;^ov16y=7e%6571dXgc22tlJ+l8)V(gxphv1`@j`&|NhK#UHpLofX z^;PEwZ}h^x6z=9ktzIGrS+lgpZ7gHZCg1j@f0$RTKC$_7W)tB*=V;z(9CI-Ikw{<# zH;Y6!Tvo;OvArr_k3!@9E*p9t%PSXISw)|j87J zv~F(~-0@cp>erj^4VCLeZ;Y9ttonqN$;Jx1i>|bAAa?rrYX}Pc-_&WL`ryKZA5;eM zZn{Lz%V-8oeX!?ZVT~9WV0U2s=3dI>XREqIwYf3%)6GXzK4)Gxypzjo7}1SiK+K0u z_cw$U@yMojTPOY!?_6Ws&I}{+`mfQ~{u@h;5-J{Tfr(4V_yM24>r!4&(7g1iboNKT zWU*+q51w6`r2X1rMnG3aBt<0r(ZDFH<(;jB2~N`XTp;z}cV0?eVQ>3bohuf(w$%a& zggn+kb7Sr(akZ~~Z}!-N;RXXnSxyEIf=%l+o8bLQ_$gdYN)#Rxn!0O`hg~SrWtkf@ zD#z7}Wnnz=HEHxm@fd>Fvkpe*Hl61k%KRNy+F`*#y)95lh%pO zO6g9Hro+ob48IHACy0;H@$|%_SLv(yp$7*v>)$Yf)D89WQlG$?wb8FBQzVUVnqg~j z5wO;YL-WT9NMzJ2>;bfq%I@Xfhl}-N>jy(iN#G?T1yk6^SO{iQw@CkO-C?GgB()If z-7e|J6z^jm@j?joz6XSo2c!GxA^n*%iLmxw5ByZOMMVgUH>D2SYeTkusqx|^6t@CO zoouAg;+}&uIggars8xOsWNKLMUThBy4abM99OR{uPxNwAbXu+wp(zW+$S+H1!I9Oz z9YOT%{;SbWO^O-zX#%Jl6pVd@{Q8P~FEm%}J5JXoN{dC|QGi)S31&Xnm!*6RsCyIN zxQ4U!YnGw9d`C=Bf zlNP1i+cgk17ah5*K&*xNiq7d24PLJ}={+)T2-cR;c7!5n8O3pcOa_yY#Pp)+wz<6H zXDd2j`ZSkuuk^VP(z|o-aTyJ*q^*9Xy>s<`1mR`PVrgXwfzF`lXjuxmuS}|CeuHZ z{VMa|S*VjhlQ3uQ27z`mqnWs#H6G`EHg)mBLLbt3405y)DKz7fK3Th7@2N_3lu)GT z!>1Azdjf~Fa`gIb?Vzi9?N4efIVkZ)_G?gAnM`&BpEupL9;0x6`_%;UpZs})kkQp) z*lHnEn-l9~_U4#cr+6I2&ihZM*LVyn(t7RvL2}V1>isd-)ZQOiQRGf==0o zYhn8BtBxzur}1@~<_4EcDW%r|(77%{O8$9WmGU%zmdE(x_M!EHBqSqd6&I=YYeW|ZS-NPiwH0-6J?m&+ahSz z_xmj<5vOMWGHH;vt0|!{^27A-cki>V)E``=*Ilo3iO5@5Ic6C}w@na*L|OaEDTKW= zN;MziRQ_ehxGE_Izdcx@;2qQ~@ps1T8EhgW2PS;S?`Y538ZnprQ^MID)uM^CcTZjfqesOf zHz}b!Fa}Hs>9pix^_%LS!>n9Tl@@sfF*=nS^TCg=Byh%EgiFDA!F0bXXqzL{A3lZu z)F=!E(n9;SaOZRLV2qnoLS6*5yP3$uwOz)>QaA-MuyG>Ao&E9(S7jb4H!4HA6&6ywv^M7H`tfkL>)dbD+8IFs1916 zXs!<~${|Bg->3;EHIY4rl48#=uz_v61zbI%bdKOL>rN=b$zUWJ8OlZ9w=Um7p?q^**XVx2f68s*K|GZ;7LN0o zUXyVAg^s2p(5<{aHbgT~nphSygE;abGue(^<3lMtPVXU8&Q0=jB@^iuB}5 z6OqYxd)r_}m=25Xo1Aq^os!uqm9p#vjci{47cBDBvLY0cSzVSgSq)Kg1&G0CWl=Du zEn`Zlsr)q1H2O1KIO#bjnxJh9Y6|>J$s4|^dUb1%pwW2dM}5LE{QdTCq2RUnS7ZNB z*Uz56*q6LpA?su&i17^FbKvb%96QrPh@yfSh7*w?hNl z(`*;=C-j;ItJ9rAc`*%ppTnKGVi@tMV7z<8Nc8OC!ChF88~*jQ<-M}vB1!b!4vQbO zN|xx|2Q#8aHiu0hq|fk!=e}?4sU%1$rIC~Je-jkkib!E%vi^caHcv1Qy}iAtlzA2X zk=c$qMhDP@g`0pb2Q*b~0Jg{$FS zkR0N>?Qmvjeu6+5`K576$Gz`A`3W|W*EVe@`g}iJONBz91Qos^3aAoVYMDF6y8S-5-5OT(Z$4rIS>1(;>du zlf*H*JC7;q{D$NCHi;G_aGK_x%Hz-ygU3MKRib1cAABC3=lHdJ9v~V{w?)hwe)kJb zrLr$Al8l+sY>Tkyy$X^EV6b}hdN(BIyp2c;@lid3SS>ThhJF)looDVt^FUlwm+Vvq zf(I-P###hknx>)8Wx*~=vTT^kT&_$(59&+DsG%~9$5cBJEx5x8+u<|T}+NfA)F zu}7Cr^cSri%=;-D)SpK`BIu-nFskk$|NQ&F+Juvo@UUeCCND*jn(652aM4Pj*bbVe z#I;gS;gm@iuo%mQnKl6)<(Z`QA@lU^e;FlVT7#*pb&E%gV#!*Im@0Sd(7%}xQwJH;uizz{#o@o5q2P+AMjpwB= zcnAL^R&Ve`5V0Lp%Ync4PwV{7bHZ5QKkGNjr>L$L==(s@dLzJKI%bm>a_;&yxYlP0 z4w5vo1#r1}M>A;&Npxlvy@%sS{W_lct%&hP{NP6+Gg&FKGVL+43igJ6)B0xje)(=S z=~bnl1*_cML|+HF%h~qZ)n-Oom>K3j*Iql!Ct-Fd4W|m?m;s98yNV1>%V7(&m0Nql z48UmusAjpOhNR$UzZZK>co=h~-iH4Q1*(eUDrX_+xoH9Z+DZpHFUp(gtiep2Wrw&^ zTp1O=ZjfE=R9k5L$-8(kb8!u6vYJI?YY3@|ynbnM=eT(VLZeksP6!KgC6E5Y)1kI^jMHD;f(EeexZ4`7bM_TAMELz z{lP)In2vb-#C&REug~sPwA{xxSHa#acXgpv7JUIDw2JfcZNE3Rwe(U63K}%H^}U5! z*Psjad_rO$QkEyeulrk!pz#j^$}U}=GcI=Fg zx8hjoPA4BKH}@PCylRBIfw8)gf^e#0wlIfcTgx(BRUI|65$y79M4z9>SBriq=|2@% zY^+K+Z1h(2Ur&6I)}KggqfK%FAf#LkvC&=GAv*0aa0sKz5@HUB7z`3yWrjPceG0q| z+HlTuNDbmWZhONvyt38X!L@VsGEvOT!Wgn!S}=t_ubaAUEAo zIE@ICB~7Ed6^aGlI1GLxhAe#ne(dYJIi9*1q{Q}c@*NS${Ery=cHHYuCD_@?S7pS# zt1$-{(AA$6*z-FA!X=aKcYv4WVVY! z2CSiVAHI2=kp*n#wIn{ia0@h=xbCgs!R$0bHqj~%K}NA8eU#q}jK!>BBuco;R7hAB z3ymKHG2ziY2*Cpx*`jh21)|>eKB%*RQ>uf>&F)=I9WbI&IH#M0 zEFj@ynVSipj%#RVOgML_VppGLp<+m4gQs{;Zsva&N3zX1hYL1*j6(tki!DNMN71$+ zfu!1}(P0)W$=o&-^ofyiV8rvUAXI*g$3K%ix@a|ar6Zc3kN1-B1YG>OCD*LJfo%a0 zs2+0UN&>348!&ZD&3F8cr@kw$2J%6M8SnmT5&SF8CaEv-3pLqDIKO?y{N>?DInt2G zW`BFPhxa?qc9MY%FY3YHSSjyAc>qj#3gGofR%<(h}p~gmK z(2s(pJyk=hVNK3oCD>A}6|dxgZjP050@6@9o@!qe%k*&&F!guntO3dzWL;%zMjl&# zuwEG<6+ocBL_Pc^=3j~QV#-PHaFQnz9II$7${a}404wgcp6G?^j9$oU1i=>-&>uCV z?^4Q%Yvy-An|Eh6u;!Yf#|yW15CnZj^tulib+lf=pR1T>@U3#A3vAf5ux}r#NOm`y z95^rsbq$*-0E&!`XD$1p(itbRzVRBcR?{E>V-w9@?b(WWo>^jaT%>-_%#~y%pD)Is zn4?H2tXZIvCjZ@n0$2FMP2r%)UMU>4T){BJkg>6}(>-xG+^RHbwxRSkeWE$VNAp9J zt=hXMllE2BOL9S4fNGtQxj^~~Lb2Fa?l)0AH5owlc| zLF?XqaKr?7>SI@7=}U*7C>`oWqQ&h{wt-8^o;o*kE{Hm&o*X7w6(wno=ah=s)B ziSIUSdh872x6XSwt~7o7{|lqzrtL^lE zSaggZt^W&iju~_Y7z$%{JUUYBj(Y#No2gZhWI{g_o6DaiUwD@X0Bb>6xkhQ4E2cTvL)4aL+Kd3i7U_qZ@HFnZ6o z6fU=>97KJ8@!;@r{O1}RPrQFnP9|n%DNRlMr>CclKYt>3O4oax2Bi6K=|iC|&uYpA zN1av=hg!Yivl_3|jHz5%VBlZ=4*EC0XZ+fNc)av>Wzc)@`!3;MeP>2b1-aLRwY2*u z%>8CxPH3**zc55@xI$4`SLSr9Y=44ec4LA$7RrD-YA98oUU$yvr3=kpICcuOvl#jx z%U%<2Fk&F+a&L_BJ&fO=Miy0smIRa5iv?>*X$kgKI^({GV=$@EzYb$FwyT(J1h45a z25K<;t8{GgI{($y=u&4hgAj~>jx)zcH?X4n4|W}aAkH>oK;f!u8M9e4Ix>Q)s%k$j zSS_aCU@tL|C31e;xQ;S&){6fZF-QOTg+A-R7bcQ0nR;oMJax0A3}%)l3$2;ijR87! zY{I1?RFhVayo{kTNM7EoQT&GbPIw%((O$RF(J;ONinN+SnX`X;JnLwd>g~c)Qi#yV z1vMg6cXoD^mzy@Y%m&aNROPXxVRgfe8!yA4kgjt(s{=%bsV{}9&DS1ZrhyvpFPC7D zweZz2^1m7r^5w2)w?wnF%3+z;ezj$`csZ6_h{OFr!>2WkD&k>F4A$5l7z}C*Zh%JlpfF#h-dka%h+V*jtN z`p;|6P?KS^Yd_1Y0|cty)RMRqd)TMN!^fv)WmWPE;Ilwqd-8{=Flv7<`uOk=_3ti* zeC;;94AlBO#|)q;7y^mCL_k9mbl@5qcmA3z|I*OQ*4$Bn+LrcxcD04QpE;1`1^(-B z>M;Iqr~V%LZx`%;4mzZk8uj01)X5bBPT_xCwJSsaVxXz1sJ?dGMrffn+U`!c__R|9 zW-6~KV2yv)ii~-7oC*--8Z)*zG>oJdju~G+90eOp58eN^s5OVgbTW&(G)31N}Vsof=BD<}9fE=aZhCj@lIl)xPxS z(2KjjRA2gpe7Bzq`lO)|Qdh@)e!rT)<8^t9+~jjza(8ri$o%5o2OR>dtR^VP_?_SU zmC@evVysnAi1>WI+Mm*Lp!?_aoauj0d~{;h`=(pj*R{GzF7|RqOA&BqqM@Y~wPkz9 zr5=t!-nYK;E2Q?{L#Vq2naI}p-thjub%vlj3XqU}U<)MX_y?6Tcd^zg_vcUX2+mxY z7~6&bS7tIwO3Hg&X!o5Wxr0V^gv`?YzpfH{n()=66x-{QOkKc#u2YC|A@oARK~Rb+ zCvJ|H&HB@B&(i_eiMVHN@KCVN=?yeem29F5U6o9GQ1WUmw}3fMN#x$ zc43I%cPiTM)r7GW0Bky+(?IQnC=g0e-$!t506lp?4MzfmSy@>Z@1T9CXBOJIpregM znDxiMSATw|0g2O36;j@~Cixe3w-`=f00K}95_DTVSlNs_qQzd$LFWHrIYUMyf};Bd z<7h)iYF1VZplVojD3cu#6;;DhhfhGT2^}nZ{D}kSj-V`iFaadsX^K=979vA7{`tHSRmO2D|da!YWTJp+1M5W3#uF8 z9wRTf%*Uw}LX;F*jp(E0VIS+>4(-frXoRUydfHJ}hm_;<8w3n8>&3OeSAU>aKc$)j z$j$*I!uvguH0b`45*&g|?RC4Fb(DG*V9>VT9}poLMlF?vhuJQl`JZ0}1chJoy8twy zqPB@?Cg?A&&o-5Y2|F#BAFA=lif4l$Kj@`Bc=%zdby3is0I4`4RXOnjW|M z9-r7_HFP$DXilF|O~F9gdoU*4_cIL&858xU*N^A(>C6QKMuEwprD03U+*UJj4UNZ|WbTT|ow^5lJA#G|PxE)#|ra1P`p5?doR_RGPA;Rz(> zU>ppYH!2Ovrd*}`pIhzUyKP@_5LzJZG_h$k4Eu7NZ**7=65y@e`vlKL)rdU88J*!d zSx2%%{UYXi5keP7MsHAy2 zep=E(gA8sbH9P{W&!Ks6U}s>mR5(WDo@9ViU8vXyxqvI&+S(eCkOzz9SXwC57mch< zX^Voo3e61?J!&Ex&vM6w+Bx4cm|JRX2EN`Bblm+SyWG`;#L13cw5R@O$TL87wPa#p z(~yjIhNojK&~p%|b`8=(I9z{Hymun(hHhagIjOO@){WyX+bU~P|A5J0dTK(7Bjz~o zAf)>>yAQB83TrM6Nm;N5Mwry^^mUKHhaeKwSTHB+j4J$IX1~&n1zVHN(?Y&}%*Y)r zD!7)(b`~coRHX2gSo3b>VCfA~oFjn77h{Fc8u|R8#~u_D6X-Kd&A7FiJpLA&()MTFTH51RqH{7TXLAIqT+pPcWL{(2 z7;)TY1bG~>X}3OmAe}+-AX-PtUsvWIHZ2z+oUfGC)g^}J4zXh2Ww(}ZCnU8% ziVNGSU2+i>P_K^ddMXTeyk4K>p%KSJOq*X84#w9r#vKG*-^Z}gJ0E>KfLr%n zG8wFyVP&y(o(i8`4M3V!*36kJv4G^SLcNn3eEwHAbncdWWtmv6?>`Qj6w;7GGKDrN zmhT1m@!v6*{;@y_vPRDslfLrLoa#Ohj0Mlx?Gz=&bH}oC?0xeExE=B&@Rd^uja$a{ z1-hHudMNm2cl~gx%J&86_ED@}|;YQaDNUBimWew@zF2+s2P)s;*+M?Y@P`yetxGmP&G&~e>`uZz{# z%btiF^X6BOe)rKrHSE?vOfU!pYST77H6jl~JMS)5KRG*lL%>$nC-$NmTg9=51PB4r zN@t`FRydoWQX(FGJPCp-dw;bJ-?I|BKf4m#XlpEjW+2`=&7~x^=w(n1Z6;KV@sYQ} zv)~i0Za12~2Mqo!-3RRQ5cb`TPK5FPWWM+IER8QwdldUY#4-5lI?b3XkK9_ut&#HH z+Lz7*skE=C&sL}XDmw=Rl--oQC*ZRLCznhO;$O-yVUf_FOqF(DIPLOXY>7IU@pceC ztK3hXNG!|_3*ii*LnP>$E|!_) z+5#wYL+cepzmrmx5UGc4Scapif2dz|fA!AXIYA#g}Pb5h^kpjyCy#Cw|Q`5x-@qQSs zXa*UjBRq+iMIDKFLo;}U+Rm8!N_>qayt{0-J>~42;GgR%S&!0|jv{V_tDfWc%E2HL zV&2zl)7Uty3ys6o*2XguEs}Nrcm2ywLXb5PMBz(CYz&G~Z~_y_;LawRrW}A8Sr?On zIy^8Ar|{Wq`@7(S$<)2Qu%CIG$U7@^$?YE`*WU!GHbrYFcQ?SrV^s0NOhcNSJ%~=< zWE>u0l*Ic)Zc=tOq;=c|?Un%VRC-(We}B^Kt*764ph8}cU2zMTkQ+#DY-`!yi#oO-l-35Bqj%D>CzH7>fMZ0?l)|DG% zl~PF^CA#viz+QQ%=nq~QjxlW-O&Pko`oeZm?*Mq+W?iv5mGBD;1RllujN@dy+M~=F z59McZ_U%9GJnd;EE#CXvSWq3b%DX^-9A%wX5t%BRZ6Uv5_+lw#Y$Yi4#>j)e`nXE~ z(3pnQNeA;Nm*_Dxd5Qere;?QnLaHu|q0bo)ZU;Wf^z`3hjqvOrWb0T7ZhiBKu zs?C18NL`^qxsp=dh*|JuME_J2^K10mDKlK*H!X6z+!ZPGnD`=&6g{cGDR5F)-oc3^ z-CkOrv+)*fg>lA(=HOcDz?fT`u-yC_r5hR^8RyEG?&CjE!iUl0Bke z2$mW?4lX?rpE5=wiuG#Cry|^$X0Gcf>O3!bvc>cu$>Z?5lN0$6{*khdefY8_;NWMg z!K}6HZEQ86FUC=?gxEno<7(#!nI{S=CMJ6=&PfI`J_TAt!?kpNMAdtKRvUM@e%8z5 z;3vqqbH#5;K69Es;_rXkvW7W|MMRbxP!k%P2@jC<@#P-$Xa-Oq{+P+$KTFmyh@X0N zcAZKuI(=~Rs}@BTxaamFrrsX9{vAN3()z1a?L@3erP&vJ#vwx~eTUk~!Ooewi6$Z5 zv-5-41?ot( zg4Thn>=5)zBH$J{WMTc)u-9wElU!`qp%u@d`1ekX3i^qox} z{UIH1kPsX|k{$lpbs&ugU>rvCg$UDUbh-cRuFua#EU&c&uXh2~-dptCBJ}W6VJ~3C zNF~+uh-93y5D>w|nlXW);pqSrQD$bHCkB1;&m{C93m-!{sWm(HLV&cFOXdE^Gn^GW z^~r7XM#D7oxfGN*T7O}#Kz$qJvc4IzX4^t#l5tGI-tK*7(r&K@cbea)m+SdX`oK5z zjD+`TVdjfS@fQbGMmF4-@87L~kKmLQ%HZ!fl@u2oGJGMVr#y9=Efsg20ohTTUMl=9 zbEc7pkjKqVn0fTaE{5k0hy9rGqZJcA-DMFnQAi=j1Jb>@{V8(q$y(KC`ssf7 z_JS;KG0WQHOvxsYBe5hB6Uc3k4B*!kPaPczV*eU0iyaCGNsx;?EdG$+BCdesz2p}` z9=P`5Mulr~K-1_0;kTupWhs=%{$Y`}<({c2za}-wBO9Da!~o8Ba+Q`FVKR0Ab4uzE zVS%h^aR%~vwy0N@$}i8~t+09$)U}XhIewuN{!t1>b}Ljl>`B@Ge2(x|UyCwN2d&-$ z=?9HvP4nnE)_|W#K6eTt>KwI_bDbzr3sSl+f^zNiUXE1VeFvN@X;1h}D@H23{Okm( zl0NXYP9tth25x$kBpp$C)3wkH%PiNht*3$5cIl`_Ab`Y}8=>4GL*=QO6%RIH1~OuQ zYhA72mw~eQl43Mz3Yu{T>ZA` zGfeeZ{lT%F>PT*eNw`UO>XO$gix+(z+T!m9{fWaLd0VX*3DWe3I^;@m#Yt7 zpr{@tQ6M>qn+|XvOE&(vwxMmnDEzKP`INvYyd>u%6155-fBJ1Of&c^}wXu^7JbS){ zx1RiY({{l)5C5w}-!Oi&Znf&7WT2(V-<6-FX`TyjRlDNQremd#zvu|Rg)o`NvDYWy z`GH}ec+@sDfli?9+b5#+rW0iTGM|-ey&u?XRiY~fkF*8i=&YuIrkqxtvaI859Tk~o zHaY8LrlOxEQ%z9JM%yK_p%6SuYEQ<#QJDog!xXf99;T zXc@doNM=2Q?Ov_7FVBZf*DV5pBZ^h3Dq$1rU3Emf%i&V@7DToRZz+ut`2`1P*mO}H zTt@x?UmCMw126QriZ3_7OZ9B)Z0t|$bMe>*BUS!$$FiISJhngW#Nxfbcx4jI%`qHX ziGY+Z>ISU4DB>eV%KU*}t_>BFNdp-{BJ6#seh$9y^kj+4R3{KSk0QPR#X+8ReNBZ{O2xyD=}wlr_mA z7!wg$5LP)p{r1s@=UkdAvhTs**@gGz#*cQZd9aYLL(g1s6oa7KPsUpW=)_I->32r81I5;RXEjGo!ZkT7gX%8 z_W?Hp-3xDdm-17b{T;%!u78SuctA(NLlV*F1 zrI$TRPHQQ)ul+R~+r;a&)#24ynW&sYm4$Ph4^(1_1{#6(N! ztjpYh8S&|f);0*g`pECSr&+<)8Jmm9(ROt+2|Hz-Wuws9UT!%MrA*0k$rkt7wa2X+ z>I1-1^HB0U4mt|Pr1E|B@7+FI3n!ZA!Sy_SGr=#?^>$*&%e&zGrA9G!-9P-`nBjYL z6~c*^`v4R5XMlWnM#D)8j*}P>gnIC>RymEm(H)CKQK<^W;;!w)sb43YM<0_mmE5Tr zq|=NcviO1-p{i?u1nS>Fc&p?7!GZk!Ebs935z%_L4E1m9ehisjrgO$gG6}C<-n%=i zOE8m%v((K3z78Bs%f{}tu9&_UhP{6bj25Iu-VR?94^&x8?Q7q^F(7@^8iQ4Jz`3kt zGgs8rluAn#Cm*s?Fpx+;%7lz*hG1gWG5pY@eZkG`ct%q2I`gYM#-^d6A@?{ofFVnId|z}N#IlD#MCId|M^RS?4XSZ)Nj`Efnue!?(_|fW3R28PcSWIhsY;$%fW7qJFbcQ2r)dgBitq z_~W{|#nBsI?THU-WBpld4Z+BdQU$37D|`_Ao5%%JDVAwtNs%8lob2OHhOqq^VhGF3 zUAbZ>;EFHpIm13HW9|KcX#fPan{ibCpOz};Qv20zzhFDf14y)^|9oVs0v9)qkrPn7 zGfA|Z{wdUcOkTJT5FY6HZgn&XzOg#Ct6yhmORx4fZ*{|?cf%?pz?wmj7QRkYSy zUPz$o`p{^!G#KX)2GO)uFIckk1Aq4O8_*TJ?Jek=!9hfMaF2_$S#IIbnhQ~#H)BV8 zx&vcJfQ#-sL+Y1ug(@~fJ2c6J!zy#s(`ycx)>G2GiJ|5Qi%fIIK=McPkjBgyuJ`Cs zVW&OMN8y`3?vFId1*Ru=JWUl$c7vaEVX$1-Q88U_%*t?ul+nNyz7Jc*z%}J*HUHGb zR&zF#PX6FlOo~6TPOm!rLv-RtI3X&!(MlvY{6upjOLesdcRSukKiuUSU59!?j`mn)thdK!ecGD5JNtn?^lNR`~T zx%wxPu__MjnDmvcq3xFEh0=-EBo(Oh5?0YM){uX=C}6eJy31HlpB^)FZ;MysFH*RU zDSB?Uz(bjxrJ4@U6Xk*|>1%B85;i&4fjUlnb1Lnn!2eMRbjF#aloC86)iF^1`0y<7 z)rC#Dr?Re*RUgD%`%IljVm|QmwiZ36{lVbTwEPy#@4`$xW5hFOQ~brg)qia{B*OrI zXKbc(n70x&>?!F&a83*eP9&|QVF#(X zU3hU5HzV@BjP~RgeHPwg=sk1;ZHhJCH9v6eezAtre*P$I&Nc0{#w8H$hDG=yOfq*5 zkIF|^J<&oBN7w1peQ+$`l^_I{KJB!bWg?P{jeo(iP=Fq=&WS|JyV~ErGS9(x@3}HO zH$fVHwnzGFd|dU8?uCsp-n%Vp`c`@?^m68=MO=eGN+o%?CtQ+iPC!C2!mGRf3I0l{ z7pZjfsXhx}P=yAvU3W?T6|R(Ti=K^wx7Jv&9Qgk*_LgCBG||>*f&_PWC%C%?CwL&Z zJHZL=&ft*X4#9&vfx$JweQ*n|gA9Y;$$Rd(-}C*ufBJ!$>Z$Hs)w`?KUTg1e`E6g_ zv`u@~XJ6gOr<~&UwK#0)d_Hf(<`BqP+b8IxX#b5vl4}6-J)8lg#XnVn2X4blZbo$Y zaZH4u;kHT8+s#3n&6i+5cTW1G6Zs(JeNp9S3t%z@cFgtb;hQXaLO=>yjmTL^$s05+ zI&6C0DAZW6LcJ|MRTLwlKOQfLXD6rhN<`DArWU6QXY0`J>a9sASb=t8@e|=6Pv!a+ z4S04eOC3bCx8Er@GuEkoQ+L*5#T)^LvwRe4Qex-RMZa+sG5>w|%R&uT8TY&lHu>P_ zNYgFU3D@=aLBPtX!x=|Jae1?HsmKZ|7d*Wj7<1RaGT6u!^oEh$4vX2LNBN7=Wruy~ z4|$L)b&*SU0gR#2Ttj{y;G93Sl=LwEt4fR zE-j_XN_Mc*69Qiovi446;Pa$P%tZM9=T;e~%KU6_Ad@a-0-kP2h`!_rK2K$}b{zE5 z41L!|E4|e}z$=BtCfSDk6415dYevC}qdDP&mA0kbZpZJawfx7%`GjxAZr zZ>0LY;9ObF+`PQQ^+kYkMBBc}1bt*NFwq_HezEHiBvGgQM?s1?=vg)2MzG$kH_pd< z-B@fim`Y1QP=>;G{REuz3dO=yzm4pKwyEL8qdsC!dgi*(Jiqg&D*X^OZ^U^$&A8(v zc5zO>@ng<&+^E^xGyF6gx956Fc;`%DeYCgE0OPX^+)P^D-7tSw{I^abx{`)YpH&n` zJ)d_;l+C?sf1fjtmxyblHe!q$whoC7A=P9-iVv`jbLyy=+TQD$!5AVIHeSLGYPD|E zjYEIk7ONo_r~PD4W)A-J0pj4;iaDcrWAR5~bCZaTW{p6nG|GDh2a@4nE|u%d72mZq zjmJZ7wDUSLC3J4I`bL$mfIk)O2kW4LengJlT_;Ns>ra4E9pdl-gA|JwfpV=yPkUsV zl5Ar#A?#yVrGYl5a27AJVM)EHCuw0=)@j-Ru={)bpf2t9I-u5eq0}j!^KHPOwn+~? zusbo6pK>FS(L7!e=SE`Y{}y*jJgZyHKm%oDI->*Zi?+MqsT=IHBE8YJ6@)JX(WLTm zg|a0uW2w>Y4)prJSeba2-NqNF+Rvtb=fS8vefrYmitD$6x&SB5m7AyAb1EKo)8BZb ziP{_6c^8>4SJtPJG&+kJY%}TIM~`q7qV!~_5OXv3)HLKePJV!qrJsbS7Mc&g()a0# ze<#skDUDddogBE#ox`~R-vwwG>9^1;9zUsMVq+QPYK_NQ#TsLmn!$sA0=ZX$MyiCm z^|&hETSd7lTIpR_m$2S9#J1sSQiu)jT-NxX`c}VMU%N#6G;!nx?+rw$_Jtzd519g4 zGgKfz4%s3vrm}?F&=hS!ax4VMb@*op`%Y3-A))scsG5k&N~V>IZ~3?3U4r;?P@L?Y zUjS1R5w;f>Sy`U_sMdMTHgvV=c4)&iz&@t(qyFejb6>e6yG+4DE!TZtPhV2gYt#W* z%-BsUcRUFVe=b+R^7YQIO^fdd=HsV!J26Z2nxo!{{XnQc#J}ySc95U_v6jnXhkgh z8H7kR4$$L)WX9a{;FeBh>@<8P&KaY^`SPS3CFl0C!Xb`3FxW6M?$ABIw#(5vqVqs= zDl*W6k~kCsqwdO8eL#ndtiJ9u&$~095Y279I9}X$Hyx}uLV1E4Zk>noy&b`s&!@h+ zYmE=vzn^j%4)Q=c59Z?$+oSexObQ~Or;7R!uWtv)RwxtWv8C-B+l5d#j9l?IuykrP z`_{X>x?*9|4YgpP71REW;9S`LL**@c?&sC+d%%M8Z#^8NqL+B_&|kbXnAS+hQ?))%8;b; zcd;6rV>G#1L(3?+^{htCGGmJ~(}?+BL3UeZtU@jlw+hWQ9qgry?|6waikni$xczsWVHPo3m{=8ByIWY zI0zm03b+igY+v;;X+xDvR49wI=CQ1|FnoLEON=LpSl6CC-wGxU4=;ZWtrbg+0fji+ zBhJsogBJGZ3S6(xlc4Q2qAH>TYapRFoZ=_2>D;9YrsUh9h?pm2jD#9S5510^?tKH{ ziJ~TuF7{1+GVv**@mFot9)Fd87c^s6xFU>d!pX{+%%SHy)(I-VGt!SQWpjydJiDcvOuxaLfxM7JxBi^0gPCM;sS2%oG2sEXN)Of6J)u=`5FH~hQ?(^M@RP1sw z;ANV(g4U2mEyXY2;{5%JVv$i>?8g)_Z$TOQy!Ae9dkOxd;=%3M;3`$dcnQ3sb`{v5 z=S|U4&H^H1(wm#>6e-BbTl(^xB|lpAhC54efuX*|1?T$BRMM&ey7Dmjt7u2SmHHYH zOMXuh==CY-+0bZzmIXn;mB2m_N7Hg06c#!lxSgmG{pvX`{y=q-&CwyOyy*FM_Vq%5 zLm_fYUr?AjisK)&K(Q?>ZJ$yulx!YW{H=^CN2z+qf-_@V#z@$M?JW^)Km@o;>TRw66JzPKj%WBt-18Zo%0RFM?`g2NgE#3V6ZuW3 zymrj8?sUs(%WqrVO@`#5$o{}=HUR39#fmDZ)f>l(w(Mx~=si)Dgw;N$K z2?mMczo(H3GYww2P0Zq!!T5;Lm2ON*=e0Qk-$Z*sIG2sx^uR{Y=g?^d-nk*lC`wTY zn-_M%NoOMb&PgQ6rZUkVt{?z0%nd?!s6`8nEe-KjhLDVNmk!cQe#aVVd~A`Pireu+ zSzuG5KNlT=bYeJgLVR9{qxQd^m>>Tc@HR(1zaE*FUqzdX;c8A^CH`5(Hn=@SU-?C& zair{OqYbdzDXKqA6YHqr@Yt?5zs8(2rl@sQq(21PacbK!c|G|eEeqsNJuv%)h#HlA zuz5hVTRst{(cbpi5!9%<0tcN2U-mqban*k^9vyl_uEcOAmyDke6KlqeeSWQAy)o^> z2k(9B{C0m3_}3^=dbG*89mw^DiVEl?5x<OD zuf^!87m|s+VZ82lMF{BTAs~0E=Km_PwrY`uZG47n0?Q?F0#>pV;x(c zcZJVqr=1LmuCmTEIO4bOMrf-=SbCeT8Fi?#FEygD_KG&CE?jeuu|rQ*-<@>Kq=xH) zKH?8YHr^h+Bp#hHJxMR#WZwU!n9MIA%s>xYG98IcJPm@l(CBd+G9t|M3*I&e1@NF( zlT2KmQBqdHFzXJgT+@uHWCA%m?_UF+cLPvHtgx`l!N#Lud;HU9eCz_iKl7 zs-(|p_e9v1e@5zz0dQHJK|izQW12rhD0M-&8mKl)<}VR@b}mWg~4 zh)s~xfL%)W=}yrCk8s#LYdE+ct0zdg(-hub5IP1^XmNA0pxAqv=nIoZ`r7i}jQL-E z-V)c;Ey?60RnJ5^*=Ju=T`=7Y194iB{ZVoS=zy^5kixYS9;ER&KGuAj3Fg* zr(2&>7{b+=Bu?aGW~+SZ_c(Tp`m$=;s)T%|5#6pa7AHEMIUw}g|31~m8|2pTg_-ZLl&bkd3|LO9<;k2cchvOKw!xhNj6y3@&_2{xJQ>_~6vV?muYcHlFzrQrs z!YynBveXy>@^8zjO|%=#ty53@Xt|EF7pAQ`emu$Toqzd(?1vVVh+8swE4O7&CR4xw zC^ql4H)_yA8d2)CVsm^SI!{9wPWH}hfq;Kp=l5#y*``}|+sLIp@ddk74225~Jni(e-1sjEa19TQs0>RxoX#deo79fuy4$yJr7kU!eoddEayFYi?k9I( z#gG_WkNm`kla6XSs6}YF5E!0s7pwXp`>UG>mIzbE1Tp11WeOpzy34x}r;8upRG(If z6pj5uK0eBJ6yMX_M!D_v@8ULzit8gXb(;Aj5n?)7(MJ^V6`Nnp^=bD(;|DX&gmv3j zqz{OGD4s(%(7-7^SGhx2Lh`y^g5&cpiHOfEBM_{71yB)^P9&7q@?q;&CDJ$cjcsl( z(kNkJsh}5L4^)%L;Dd_zI`=HH>7~~TAut!!N>SIeF-P%ssUitqs4XusF8ycm104=MYGr~qq(0$$pF zOzzeWOjl zsXa(%ph2)WW4h7Ab7?9m7;y}apfuV+&n4c_TX)`ytQ4!}F$QooJU6lok9p^`h_CK5 z7Xb=e$HaQq%)pdP!3-{u(JB6nG*{(WFYv5$56mRRJYIv#w}MV z&qZ~!5dnAl5?tdDYqtKWxJN80XuK|ULmCG&aAr2N2Qa*|E^h&TL;)moM&LW<#dLBh zaRBH&Ii5({i)y=TA}Xupp0&7_>fWxYuC95Accaxi|G;|euiaEPp57bvFMu|9?TvXR z^ja_0mWtTI>ujytj4?LbAXixJSii_O^L z5xM3%NhR~-g~7*S=KsW90j(<;t9r!EH2|S_<}pY!&4JbfsH$Thibc~MsZfY?g;&p} zrjM52bu0->w4e@fQw}%hC8dnXXe1@M$t#ioh0nE`y}crD{%w-oG0+dpFSI%79M|5o zFBZMcP@Gt_`fG*mSpyL1VUtbj5l8a|lkX3~>J(rNo!lO$u_SK?=@W7hKy`xnoC~q zwmYnZVGZqoiu{6wTv1-%M|`e>29ibe-`ky8vgN8H(?p~eMt6CiuD&OD*=(yLRBL(e zY_<^l-WW7Ao5*vrK}qMe8w9bB7-bcxj<_pAG3eR+aXl&`f;izrO~0XI^A@MQ z;1+)P&+<#0;L$z1iuFlB?7p?WB$n^F?e6B7h?H~tW!*tlmF~bvU8-9FJgsH}$TU%j zWk^c`hM{{;*B4L2h=p*_A{kok!DV6k2~?oVgN4 z;T@Ae5b_aiRmz?>?Q$qA^>Ortd+i5d0^BaH*ESs`a!gxlnuQVExv^fXAP8*e>`J!HnEE(^o7*U6J zz3Y5NN8Jd5F6$$GG3Q&q;wy_*U3MlLNMOjS)`Cd@t$G<_al^%5THqHQU;)uxl0v&n zpisu$L|n4{90A&F8{K@hPfu<8>(9`sfv(iea1+X3om!2UQhaHE6 zg!$=tA=VT6_d@GiULO0?+4(ug(`I@>@C(Ui;9cJ3$q|gNT@2Ii?1=9bUyuxR-EH_w zbCOHjcixO9O6So^+!%fAvb9Gr0d2k~F9%g2QPIZVDbYk=TTI@#&-OD^aR>e(F4`Ea zF>Je>Rpyi`<-zPK^gfuRX#e#K<#jRkmg&cjHgiaPOn)Q4zOyr!j#|?1Mp5XTvqvoC zmwPw}ENphM0f+ETC+Imdi`RB%$uw9lAON`FGZB&eJ^}Z{|9<=8z2SBfuL9SvNG)bK zHchSPyPj8qT8hiNxGVG_MMc$17{?TujtmIhiQ|8{CaZk@SEMt*#b-N`D56Lfg@zw+ zblv2<-l5m!jJ9#US#=y-GX2ZlHUP40Yd2Sh!NbFooSdvt6a(N6$b;EM7{){SOhDN# zh9&MEwe;q*r<}B( zXChxD6E8{JqYO&GhBb{yKGxWiNym{^(xC&e@sgyE=StGn7RY7_%5lRY)8wR$l%PAGijPNpBDbx~ztx-W&oQG~{_`wZRaLD2 ziZ8;9UQ}54=KlU(TL2Le(R{7l%>xHEuJSDVEe^IHnsd(mn zy|23M5C4kTElZ2z!Voc!P&TDLN6CZ#zdu^ep8W6XSXf|EsP^QuvoqBT|B}U>f$^&; zHxm;RkI>xD!Xle6E2Jth%-i$hqas@Ikm%H`tNa_Z|Lb-?BcWRTUmsvg|0G8IpS%4( z_oH2H07oK0`2Z_h$nAS&6;I0lQ+f{e#KpsOOK2zb|21rZr&`Spj=H|Q`~Xu8{Wq-y z#JtaQHF~rDGX?D6JFD$W?SA$5<9LB2mE`LauR)7_By28f+wI7?au~H!SEtnF{MUHi z@d?03A?h^1{&%?EXUXX3q%WxB!g97x|NruP zxUW|eJ!XP-(;uL48};Tg;QZKM-WQYt&TG++cNe=bVGZx9?msIfXZQXe_a-DFvIFyy zK1Zb)g_@NSkE-A)HD_n%{+`>na-VMm#`C#9>9q>%6tMc=9EQRq+2(tH(he7Ea<=tA z2O26_JaW+O$wuojF0v_@fpDIt6ah(Tj^4L&*>J z_7G!aX*ZM<7YeTvlCza7KTFr>pi!v&&p^hvJ>LCXq2xirB*%^_tQhBt+CAAh`FonkW&*OO)1 z7He4f<7akZJ=c!bTZ4<9EIQ#u~G=fZN4H zBrMFi*libXaHPD@dMsU<3Fd_VXM)btYm<&%nhXA<{dXmk6B7ilv;^f?7C@X@Wm-p} zgiCXE1uSwH!n)1*s{73(R$}yZyaa0 z9fu3oXZo|Ih4PFn2Tvh@y^q4F_=JxBfS&a1%&)-;pM~qf zKxv^1#(C84e2BFhx_#5RyS|)?f$q%#H4KP&_@m&K9A~3eq+~yC+{l} zfh7v5$M0#lp7Jsk{_p8sIfDhTrbo4_`<`LTxh!Mq4J|)GftvyM+q}!|#GFx<$DNY& z!VhIer}$kLdL1h)N8c!FGCYwZYdXN-qV($q=4M>h@#~^`k1y!7t=fF?F$xuX-Rb7R zPLx%7UO0n*<9(bZmz7!yI(8})vLyYOq>LAz>N}~Px(Au2AeFdf7d2wqNsk~2&xk$e z>syhlM;|Q4m$O?Bp#YVGHf@clmbm)(-}5v3@qVX56cYyrT6W}t#*DD{oExmZx%76B zNyug+0Q~}{XEziqx_pH#OJZQv%~6J+_m9{alN&^$o^S##``2)FK)9zHyn0Kdtpis(o<0Adbd@GQ-rM(L7Trt97d~7 z<6EGpRok!Qr0WR|2}lrq?DJU2^)}j52B4T{4PlfOc#i} zgBW)As|WB-X6 z$Fz-(Tu;Wp1Wt(JoGzC)y&<0C(mW|A!QmbExw2O3k7K$1T2P7etVrYHu-#TAGVr_Dt;Ph~z zh<@-K-g-P0`z)6J$--D&usJ(70^nOFZa!tMmg9GLwZQ2kTZzs*BY^H(Mk&InBGtO= zE33%vY6(wk>3+%N&D6R%E-k@{2);$~*;xOW8;b3YKbji4EEin$DXDt&L69EuYG}k)v4iE>j&HGYl9MgH4pJP&Qdw3L^tFC`_+mxdenku!YBqj2YAY{ z_iJ+0iH4!nMu+kPlXcR&ev!L>$F4T`t8p+)zv-`{=Xe=F{T+>pem^-{tezlutjNLM zi&r-no10wd`X7C;GB>(HJH10~3l<123Is5c$A(CLCLjDQD4fmg;bc@vmN~9CSt#Q6 zPg)P@{`w{1;R8i;S;$#1j@pzR&5c+kWqziZZ8LVelR-1-QcJ7fZ+eTNajj{4d5cLa zD#ge^%duxY>Khm>b}FW&!Fe(};qLe-$u13b<tK%zXGJQ1>NpBO9m6F{s4p7mGC>oHKeeHKo#=bGTRt;<*w_y&>w;QGA{-&pK z+KS$xT3# zs^%a`AvuSYDT;=n=tJ53PGsCmF1CmsLD!u$i1}I0^8^hHRvzM#N7nmc-r@mb&a7+v zbspBW=LPJqS4DSGGi7!r{yD2S(h|2LImT)%`IkhJFNJ!Lns_Fvp5>iscBJA_G#^Ji zE!nL@SaE{6_IQSuAL3BGXT6i5IDNc+r(sROMUDg)3zdXdpzI2BCWU~1yc)@DTHqqh zyjc*Y9@_wd!pYqpZEYIAL!4>s7qNI8I5MxGEaPDF5q+j89>-wZ8(qcO+AZ`~K|`CU zd$@k?Tq_I%;|#Zd@4GG^2&~8&exc^uy6&I;b$hp#6}l=IM0^;^&kSDvzlr@vRAe|S zOCUigzoQ54Y@35v#R>8yQfkVLQm{UucWybM8i@i~yDo z+dGhv80Dh}7AdXGieWI9&B{sMXHrYahG!vPK_dU(dQq&^?ER-_ae~=sXnFGbO|39Q z%0t{(BJ0nh1)8BZQV_$KRWL{bRj|QJ+-Sxz>EH4Q!FKY^MK>Bg{$YQn<;a`Ju>Q=I zqIMIWR=<&X&7&pP)`|-G1q|8|>0W?@O>U&(YG@Hg0DY&MA}+ZY2Mne9WnAh5!A zLi%YdPi-af+14(z`6J^C^OfTYW+LH08m>i>!qi(kPVcZAB@v$G1LR|R8DwA0Pt;mU zM;5x@aRHDkdsJg1i?7?FXR#d3moCl+7QQIZdP7Xcp-C35K^^NkEMI{|FItNdEG9Km z?nUmIwlUCK9r38~H0;kH2VF>{{#`|j{G0_PpG>bdrdQIcDY8oh6k}a(FAS0?)42WMUBybd6^S1Xg}WAEV&J*?z8v1(ER7#KVq$bbyzX@?_cBDL zdf9&u?23Q14&Ja}Pz#IGUv0QGVj1xR*#aSsz9Xtg-$oNFL6GfL4~x~)mUs67z(!Sg zkVNzd&k9VsQNcN|V#d5mrRs;@Av{LYkg1@c+bM4^^v>|w6_}6ap!?hIbV{o!&}wXf z+c?ps>J3D>OKW1GYOT=VZKoLa@I4#{T zp%5KRN}iW!yJj4JKwI!cNXx*Qv>`fb>1in=DRyvqHA zwl0;}{kWZgad?+2nyWHp4!~;IwGlua)K}UAjrcS)RQ;1qc!)aN?8WhBwm0BBzi4hc z=5$}H??8%UF|-#_zsPG}r7B zC#G95?aN!0^BF#Ri|MOAbghMyJ)yNyd6?s3<|$X9#9;9w1zkcb2p5j9m^X7qI?)Yq zibNNKmp9EeZt*MOd5iC*UYlv)AnncsEp26IcAyMi(QL% z_3&bigq33zIqmdHcC;7M)kCFkoB%wHyqgXyRFCeUYx_$>XcNdjXi#9mySpoE57_qC+J!q zYuVRECKpjnKR!{71L~)tE^88CRY6c}w1jstC?-AW5XV(Ygq82vhG(H`Bf{a(Vso%G zb2Qc4HHEt7Yv$G`>`A%8PYe+ErVM>2NXMUry#f?LL2?nV7t(FBJd6{+O#9-h6>mw^ z6FnT5v9-T$1SXtGL?9oV037lD6)I?3ASQn@ZCw_a3f>@@N?eVRbVL*?F@QO^qgiS% z(#jB@i0lY1oye=(+m9?#mu~`VQaH_ZHcA^w{HjtF80I@FX=dp}VNEP?Y#-W5?axv( zV9;Vt?GyyxNuQHZh%~Z45I7l6JaOX{A!C<&#tHeiCq?7~enkXz63IzEnPsM5Xm8yZ zQ$f0SLnaU}ioVR+ZvieQ_L*-z?s-5t+3hVq(_x#wM_Pj#DRY2zd$q;uQqKXS3btRj zS&gse%+j3zo6O#HRCSvwZ`78?hE^3$}7_+J6epm z8poYf{m~MQBAUDa5c7*JLX;!x`0>6c?XQTlUWvcp zdniN@()LsG`guoRh(AE^E8D@x+z6eyVENFFeW* zi4dD@&Qa^J z%=Iu5D)U&J3@}~g{Ka&Wx;>VgwT!A}^ZwwDSlkTW#Pl-GJpaed!Xe}Q>h>cZR*UtP zA~LsT?a=oL7JOhUv6jDZ2Fn(5{P=J;*tz0*;=_F1Kyb@MaL5uKY?lFk$!DuRyTFwB zLZSu}ByGkF7n2jLuy=<5?uVB`>9p3jSvF%~WBJVz*_(LChy31CxMQg^T76|coY$Xf zcNLtQ909258H_BRyRo9Xz^Gv>sNx#)r{tjZ?(dy|yO>4EXUh6kWKxX2e}{3kpC6 z{Aavf1!3tqUhf4cf8JhG4pbA7^?8l}pwMY!4aRGq8Gj4rBR~sJRj5T=jd|nEfafyH zrL&CR-;54Fejv8E|EwO-pE}t-c#m6sXuYqD|Qz{S!&_O5{I&c`*s&QGY*s z4_l9FW}Ua$BchWc0Q$lsk1VE0pqf{R&8H4`c0->KFusQGn(aPY=R+TcsE9xR8YIYc zQ$llkv~GXWBF+XEwG4J*H^0l!^@vhwL_xy+rw+LE6ISM|k&0HahkiI0zDK}}`a|t0 z7B22~liUcl-aKYrt5aTU{IbHWrCzYrHuFFQ7nc^kMz&#%wBngMTV zom`rYC8^U$tzvkLg@Wa-6F>6(i)2O@%*!ujRU7jMDZ3q&yYd|j1jKlQy}Fu#ynkoe ztBq>_BitF$(fZ|uGx(_H;~f%{ToWI{eq6blkyEWG1B>SMI$txfJadVgbMsg8Yl-ddW{jgUkhkJ zCRddOA9N^P@A+HA$l5!zJD#y7J3$Na-mVi0ml)L(+wp+Tk?qU?YtocT{`()X z+y!=9OK63=dp!#c6=Es$R?s)wnpUKp=Ao`59O-_5OT1aw$jHNGQapWA{>npgp6GQE z{NeECnpx9EVE@74=Ov6QR+9Fj#mufUgHL6 zwa1`@%8)>ku8(>3(6wVv%u^CaIXxd8b;3tVjJw&&{1a&kVJsyH>)&PQC!CCqN=Xsz z4hy4dsyY8Q78iupQ%9`zX}^2~FQ|k++;u(@FoEIuf@9H@0uPlrq@*m_!0YIEnW&hYAvwP*)&t_BGkc^unnL%5Wz7&kmj&QnKAGN} z_~kJrBNLsHgmq^{vvkS&#n>f71jg_`XT7W=4`eEqeb|$>YoX(E58xHbiQpDNMd(_1 z%d@;Blv@&J0QAem*P(K$86%8h?7ZaK1jX@&JM~af{i&8V|Untr$EI=3X^jCuN-Zw6*zxxO-gAh_QE=%O+yp^&y+LU-*=J5%!-K6L4CG zHawsc)H!4V$R;Cc|FQ7lS&DeLx!M6H49G?(bn&-sKUM1mlV6)pD&97NKjwf4WIe@0zP-Qi zpb({)lh&yGuQfBk47N__D*1B?lZog7XAPr8)xW06g}-=OKR)McOBXCWC{NE zB+h#t7dHEliSh&>?zmB;bH<;!vVdh#z;QM}#yE1#hQ!?Ec?WjXKl~A?-5KbwKe>O#w^-hs8H^?_EIW7R zZw*w(T(71D5!j-|Z3%J_Z{R9anU&8*_o+M_*ShYAha0H&(vW$Y#V%2*cKL7zfYrO= z`HU+(ya)}zChX}>ePt#NSA7a3O^c`!s0yv|(DJlRSL4cy=Mt=-4XNl1PYpfh6~XZL zt0WI_N{UAeVDtWm>i+P)O=?jW_zh+!;sN9?ozG(NzgtPO*|>Pn9*0k)v$RosEwIwj zjYLOG@R|*|D}pFS9f2Fj1Iby0>7Qx`W+zzwUULn9wc{Dkuz{_sk3@_nI178zKtlkA zu|MJozk*JU`0w*%Z9KS0QRQYSuEnT-(HTaxA zBdtmX;9%q~J6r*PnLTnmDOpk1q!^z?B?jX#jK)oRJX4T{$)Qw@V-08}UuO=?<&oj5 z)im9BP*7mtW1mL196CpQ3b6?Cz^7&6*gt$XLNE-w$@;b^eAI)O+hy(^Dlkl2i|a6Y z2)5*{QKgGeV|*+x7>8)#!-&O!7VGIW9UJUoB_h^z8q7t;H`{Zdb}go*Q76Y|FDl;d zs|Gir+Zc{FRemOi#V3uH?xs(4JEu#@+kF`vZsu`UoF@Uob6X6=GfQ-ZC!qdGGO85M zI4#BagfS^c$?9%UQ{eVe@GzwbmKW*2X{H_4v&5$N=JFHch7UY4dUf}=Vf)fTekP4C z9-cNnSmCPAkp?XPVg|LEGgVM^Tm9l{FI=<7Y*UR-&OUm8HanTlzz51c+@KH^MhvDCl?Db)M>Kt)9@8Pyo{?WnWCGXP>gmio=y zuU|o~f@JCO!XgxBHqX(I(nHtgAm2wC)SEG;CA#)dR;vzSl*%mF3a{txhuZ-q=inyc zwfe>|os7#+apt|W%>2xRe&f06c9N*@ztx)ExEE!I(17>L$2DJBV{C^UmS^YBJB;q1cjzsA`*C9L#TuvBC83q=+FuSyR=|HR%C-4aN_jB+wJU!sEtXq$x|nJ#K^dO zG{dQ`oQ@G@e}h3wN^RMAW&IA?UjzkHTc^+CX)JYIxh#JV5^8*5MB0f~a~R$C71_x4 zB&LiH7Wz{p5D6fL?hzSt@%jsBYD)j=$r}*azdJoOp)=4aHkgMFL^cHVhVR ziKsJR0syhWr>)_vXdJebai*sjTz(2@CX9V9;O4wBRg+fDu7<<69xl9SI&X*i+D4pp zTAP%-hSz~dp2c$NHaotEMs-)ziONs{STL+aJdYz_xjc0~G7T*KURtl#=LM%X&PB2^ zsI>ZdMu*1i0ZUoCIirY5^%m`4Z?;2;bM?;1dZ=AaAUv~(^o*+)#N*TT& z=M0Osau>j?;|IyQ-&T6#=YBUyO`e%0!H%ac20hgYA(KDzZmx+}dm(=J&jF4uDSM7q zLVYu3*Z6{Udk=##d6FBcL;rwG>C>~}Y0=>+EM(-0ye`X|TN8nmpEz0zV(%@luM(wQ zvXqxpqXb#`)g#bPdm)mgn8` zVjX%YE{&QMP^F)cx#J_?^gd$x0K!16>SS3VZ%qrypZQSg^wtF{M(&J7IyMC+ZZxpt z54!xMSQFIl{%>EmzxRRtMO9I?L`B)UfLGh@d^sY}MlhJar-25yA&D~dE{{2b(X!rN ziipoOW7l4uaTU{lCa8%hN2swNzoMU`~Ld`WTRFsr1C$P)RCr&Yx7i-yO>42 z@||Apq=0Zlh89*%AI{L?zic+G$6?W9WkV3&`VK>7l}B5tWj`VqP^z4PY^1qthZkhp zb33YgZ(&w1NdNF*xQb*&wEo&^PKw^X#afI=3}-x?_amxJ%!pZ58okO7V! zCSQx$O$8a2w5`)>okLQ$Wye60PcA?m`UB#+uW{Mi+k#k)=B3Xc+KB(xg;e544X~pyyiFjVNk-PP!d3k%% z_^rww&=wXzopK~F2;ffn^B2T|zawZGrS&g-3w}&y-zXxM#H0G1MeJW@@Qy7c?Mdr*I=5l2RS8jq9uA+glZhfcph?UygzHe~IFvr6>W-Jfw~B^LD5% zrjTW{W+wdz&jf*x-x)N|y4I}+x(DYQ^^UUjTiiWk&J zMn4SCu%;8t0O$_=>8~tnoIh*5!!N;ogT}#`cNH`XwMy_=u*tBy?!7tm{CL-3^&9tJ zCPgq9Oppx~fp+*XU2phbpsZ5EFezl3mXUn%Hy6<9dKzrpeu?D871Qx|<`a7ahioam zp#YwzS0H6h5KCD_uzp_FvNSPd+~c`x@n<2#F!oE|-qS+EfmN;$7a>pUX22ou*lk8n zMX+20Y$r>ex2Gv|r7ZVEkKd}qSKcgom~E{q5kEAH&IUH?QIHoz|2zI+g3`YFoV;TADP$* zbt0X;S>okwnAJ%lJiCqJx>sE9U}@Qq%UZo6Q(naBxp0Znz2w9x|DyAlMyYrFcq!u) z3XNV9C*`R98Uo-K^|DeIBVOt zx13VhdB?eFin}|5>^OEesq22><5Te?47<73D0^$9vS0q=g#0bZnSXITX~nZX|DnqdQLn+hZ+d@!1QxgM6h$4A>UeSg zdQ&I(@CJ2$=5Q<=5nOh4`7e$ys#J3v?xE*L^0T147!iwYaP<#cGyoaE-4_EO++X4B zLRk2XTH6EE>wM93CHQ8%SI>gS8w()eJ{*z30W&^^VW*Y%Z^ulU0n7&%zm>;I1yfQ+ z3#KV)2&F@tM*0_}&oXw};4onEW0YUZzk4CuZF`5~EA7AoDUHvRsF>;zP1-*5l*&P4 zBU6q!Y6KkA18pg+jw3^kqEzOlwW!?B#^bBgsR#7ro05cTr$#WsciV>>%HJj#e|w`P zLX$~YpsZXpM>JQpby9Dzlm-nE&j@$>i{Tvo6m-#sQ!Sow#M+xlL(|8&=)7!cyaztC z=WyT?$FQ~5!qB`vcM`4sr}wtIw;gKQ!QdD%UomN%|A(-*42z@N7H$(<0|aTDAOV8A zTkr%6?ry=|ElA_R-8HzoyL<59?iSp?BCqUwzq8N1e|UHrs=9hrFR8i49Mj8_69TV3 zNuwGd*TeOVn(nMCuG56YzfTZIJk5O%GU~Z^=y{xNyXRSyQ0>kgNKjN6&*gKb^^&*X z=MP%o9~H^#{m~(feucUDyf(|~ah9?Laq~+1`I?XIjR)Fg!M9=kt%%rI!^^7Nlob4` zG>R3^d)m=7-jM!&@wJmOrQ$9Muk_%xbHvI-l;2To#j%e1aN0! z2k-JeIUO&0CnqPLT9v4fu~WI?8I2`S(x@l%x?aE`

    wyE)p3>}>|${I(;|L6ufO&)z08ggR02YAiIXU*HF$0wKpGi9gbomEpg)4xV67oltJ0O!5O!Yj7%=_8$ zgza99(r|F!E+Q(6RG(XAv2m#jr!N}tLd%>|wLjLp;K-=;R z{QUXzi;4=Im6et23TX}2$@DOPpNosjN0P|Ey0>zyyY2uuEk_j#)LT{JHK6?G9c9$t zMJFdyKLO$wxDV;iPuFdorzsB}KRY@;HpfQ%+5&1Ap!xu8uzRGBh}_nHxOU(KIsS|u zo&c2!Dw?&(1Q6~&_u}6lg^>Rf_1$$2PiM(*dsaFu+s~Ct?YULWm?IBV)eOO0d-E(3K?;;`jf+baDQ^ zmYl)O&CS(Rr{#|6BIOFlBQ-KIGM(N~oWQ_90Xez1T#ko9CFqB|oDtBl9k zn#$beCA!-1SWTg7)M$^P|7oA!H?r^kf=CO8ff6s{m4*`byW_9lym=#d0$>JVFP84k z?f_~$Hgjxz0)h(DX{xIG&&(dzOCQ`H&M={%9{5>IW5OTry|DJDSWJEjFG9X_v6t)2 zG0G75i_BC=aWaAXD{um@Ix^U2=|3c=z~6l& zf(igcb8>RvcnzI*^**q(gLcN!1EQnRVUV!D?M>!wbO)hR($HY+jB|SYLep&IsJh?k zAGSyJ!RBuh?C#D#^?HsE(C_=rXqARb-=+bz|B@;3SA&pe{o5dsq+){E6FNX1z_@A6 zdWk3sArERNE@8i90>kUJ$1A*LmmPx4AEC#du#Qdmylz|@E6M&UY=a-D8JL!~tf4I4?QTrtQ9)~) zier)D2!$A#By3YaCNw|&($_eGLVRK(;X>6TE9v!vcu}*7WL=JLFd35|^$7{Lu_@~y zcqKx{dvbDbPLk(Y(&K!`aF>s#e>RXgft&5zg=ezeV3}?R2<9s8`5ycwNOo&sR}C1L zGMq2#mz^*Z{Oq8a|^iH3>_el7Q2f>Qmqz83r%=c3$=n|tkN zAOBJ-oq=1}{<=CQzLk|HA5klJ@cH~zo$9S;_hEcGs5Ut%HE-egyA<~6&#J@A`1C5P z)uJi$&Dd%o{?Xo{G4@KX70p}Ms_x6Tou>@jzPrx>_YLdFei*)gk4kd6&SM}gJkidO zmW0(7oi~I$fggQgI_Bq9n-zC%Y~ULm?0RFV!y-O=i-aiL?C_sY6v!*WFtQ52$VO#E zQ-WQcBl^UMx~tQkWH9CswDeX)%JPe*?z_p~&s>}OeT$7Jlu*giAPVh$O?{@`3Ujf` z6U2lzxx>kVTaJZdOG_80{YmUc?f81j2DTC3Gt#o^{i_D5GxB3#ReEFoO6h?bHg`~# zY0{>(Jc3SO)`(E+>jtIw1q8PYiyC)2qvg9>9V&%GW;jQ(b!Tq`Hqt~OaxIq+u9ech zIE@oBdO{o9btY+*Ettpxlx8Ugq#NcjPd~_t#byoBKGg;8nkbR4pkMx=7pr(VEkvwAsGM_y{CI2go$+MT zO-NHT2PEOLpzdV;F0z9qy8eS+DQ;9x=p4Z!$*4 zr;?TlUkBF5gJC)ONs1egqCO)IVPJc00#@%z`sxRX5{9Eb6;H-KCt|r1{&v!?BXhL{ zJZZT*Q+d^>JXXO4RXtSZ2kylY*RQ`hc7Hr(jz&oIKnLRdCGR#gPN*kT@w_Ljw3B|< zoXecERlq~%kN&dA_CXA-0`)D!x zO`$d$53i0;)$IY-ux$` zy5EwSLmTp8d+7)QevH~~fYXMti|2j_dYe)@;wSmVmEPUYH3zizh?P3LYbw zzY;fwN!*KLsUCt>9F+H6k0 z;wmV;E~@~Iz<#vqRJEi?sE-U40;+f7Eg~+>xu{y4^?c9fNEoccBQu{pbxXU>(^Fsu z)t_qQ4^aAf?D}wR6I6rK7&Uhu{q8x-RwvQDR!75$y6Rd(6j!GVrnDZ|ZC~NedQf=+ zh06*IF6ci0)lh!_#UHHz`pX?}>VQWh9wb0df#ab|meboWJREHC1rw^`%6?SW%VJyGaC<%=d z$Sl6DDSUtD-vWL^XZyhY2*aW_WGA!|vJDB3YgR zHpWliAd7UC@rE%jF)HDk~%I{Eho{ z^3!uREG)cXrGd>^J~PMu^Jh>M8wJJ{WmE?qTV1ZxPWlH;!!z*}Z$2XT^qF<)Zk|^Z zM&)J7LbBU`Zyp{+p2;$Qg0Z~2ly1*-ugPqQIq(@Dzeq{47O#7w9&_-0fk|@vfSP_Q z(t|@eUnCj&fT2T7YjmyJ`7y>n-|CmY`92U2b8NwJBXhN9GlNATknPr9k-L8Vlea_^0~_T5Q`{etv0pi5a>z* z@ZM(-_7V*n?tsz_d42HM1zKh%&(MiHsV>p0tv16NJD*D0tpf7)uach^v@CEO&Bsn% zdWnR?%H`y;4anC7f?@Wr-7=drOwmf`;t~N3Gq@~MI|F3E=I?NEYWhY@41P4vP|)n0 zcUVr{*-iXiCiSNpWpo*q9idQ7j=)WO%zGN*Wjc@bX&C=`#sj2TCt179e+7iwo<2~ z6TKt5Voi5$g5mg-_#MI~PL7iiMa#>h*MPtrw+7wIXh8*WVf$V9&IGV{kq(jGkd}sD zBK}m9Q78LneJy8^bo>i?9+pVp>gnEpV66p(vDA$Gc=>gjjq5kawCJ&S1ss(XMBC@Xk^DIu@v2^>g*3IG(%vXA1&4 z%Gpd~5B6rJ4YH{?kdyp&7HyN&y6%ubKa_TB2lrft-T{`?x*jaM-+fLOC8dK09wX8o zk-p{_i39!HNkmzdR$qDoNBob69Bfz#gkn_NcWmvO9C&L{sQ4}ZIQ;6>Qu`V=Yzd(p zZr)<#3(^a18!;^c!Td@eky;);60R}kAmuD< z=Gp=CS=Dsy%^gJfZ>EK7+q#0cVppj`nYG9;P%eUUVLk#p_$DgPijvR9-inVgQ!bug zcljz3%7yFPvz^%9h4UIC$?arnj!oB_V-D_iMzb+HtOZQ4H7__Lys11=NpZlm$C$*c z+7STa)%y2({@3lY5(|~v(y*DjwcLS7K^*=y!dMOnj}}r z?)W3a2<^GCD@FZto|ioxwIj0|TfKLia(AlE-(U7o!D`JbMckXubvPbrW(HVE0mp9N z+^gi7(f5?+4vK3zn|a8}IR_I0*nd@WlPUj<99ZT);$?3bwkJGJ=`tor7lDj!uNkV; zj?AXA{3KV^9F&1FXXZT#jV~$9P81dj+TUq0N^ zJ2&_atoKA!ZE!wEy`A1rz^~=%L~xvhG4gD5vw~XtOlKSRK;U)$jQvUVj^tsH9s8-y z8lRFbrh;ahet9^6a^d=1uX(;*5s7&Ln41C^wj7*<=o5(0+q^%=hF|+OcHHh!YKRwh zobXidp@!WopbYy;9d=WeEvtgaL0z>&3Pe1`)#3-b6PkS*ZV_TF%a2RL%*> z(+DZ6HO-{O_g=at3Is>q+M^9|4Gw!U7Hfb4y_2Uq!H;N7w84|w8vfFNDnxEO!$O5* zsuO(kN_cV1=wLCt!uG>`#Asc|^Y&2j$3W}kpcV;+ox^}RmoeKkz`6X$Eq$KRXN5Lu zoCs=L;a8%2_{{2PEhDU1hqkRl)LXU1nx5M62pf(xq^U6jZ@a8X;>gg6?$D>mLx_#s zX~fz_c^m>RP<1}-x96AiqE*MF(;cYi1wFXJqvzt4!l*$wfoXxKXc%T#iA7rW{p>}uchJ}D)5_aSTz6|!3Ut7D zc2wQ$L(Fr2zu0rd1e|B0#VwJmd9&%vf$yu^!(v$X+?`lf0;B2^H)ACJ+sOj9$z+aa}t%lf$CP6d6t|i4O+D`FRQYZ6cq;?z7Ws?il z;|bHaK_GCU>~folIRzjjIk|7(0yMa&L|E1rV>4J=VMAB)CmGAu0_w>I1j(`f7$xCg zj*hk<3<7Oa{wXHCct_;G$Q)1ad(4gS)dzkqK&W%LX7E*F9~{$+Yd3bLeL*j5I>RVw zLC1Wr=q1pNCV9cwR$`k=QnMw!7=$zf#`Ae4oI~f&k5VdECNw}KahA3@ZD*rY^f4J+ zAgYu>khPyc3Q`>2ohm+pnE z2Rx^O;b{Xy?US0Jt-G+cVrpRJ@k z+l=8P1!kWO(fW8<)~|+TiEv?L3qE0P>Y=t$HpBSYF+!Y9XC)Hp>oBfZ5b3>q#x#3HK&5Ht9THT<=zQVO$_l=2RY-7HE{>k?b;JCgN`(p-ZlN`KEb_86m4GmfroPw z+agxv50zy`V2nL`!6bUD6&lfdylz2JuDgcA<2nujRJYYH)YbDy_Bt zmInL6Q~(9WFVK|NAhkU+T@T**QJCsD)qA|;{e%GKVg}CfQTh?g4MsCS_fGwW0u<*F zQ-fB;koFwBv<|GMToHojYQ=_eQRstQu(Lr7E@;0vKSwswzuq(N+MewR(BFo#n!_#q z%;3suIo=b5THNLXu_Cs6i}D?n6K8V!oi6uH`J>Pr7OTK<`}FYm_&T| zh2)5dJ1uK1fps|-12GJ{T~2TvpF+?5hmDxf z05j4rA*!Zt9zi&QIwrkNugReYRqjK)LNIt?+W~l$sf@HH!oq4!GW0z17n~r*?!ZEM zRHF<2cm16zC0||U8-0tsfX~opk%^JCuiQPBjO(zX&5`tt#L#7$d(*Igr)D$I zKczh`)3#CDeD~0rKuQdaq@6Ps9-2=$?G~5!b*doMQpJ@etBu{vH(ExtgZK!0P)@dn2&u)In5+HbeQKNv zuA)Ds`HLbuSE$s=OnPDY!xr%X#>0y9b-@AeWK2UYx^p|ddODVJw|$oy9Sg%99d&1+ zj$Z?o@~7{<@SMb$#Lv5E1?slA3GAy(^Xt!~j)B2lsGXz6pA;>^0^XAvL_C`EnJ21h z#(&1%DHH2wa71cLLQ(%A*~zDs{ewx6NN(%b6{26f$O%x5sGR5_he?wc`>Iu;P&r`O zUgHBzu}aJP@QMVsVffMCN8%hme3ITKs%5}K+}(X7f3B+t3&pOkKE%_J1No2bAaW+t zKl&dBQ1+oa36xN^!>*Sb&4l(mxFuko*8$JCggwpLEa&DBCW%_sUcwjd2YOGrc__Z6 zB)&vu;4}=s1cndYD}ppn+D7!@-Dz{OU#H67IEMZ1L`0t7kyr0|urgQ$eTOMb&0f6} z6sj7lY%G8#?^)`EY!XQjcW|N64*wHp>Yw}`z@Y8%9^KX7eqSN*c&SE_?WamELSQ#g zeWbp=I@?mbti*S`y@ar_q}h~l7?n6yvVriUFZ;*bb>$%U3WlxLPXy>5nn}T5+KZr3 z0`$=0&6m&v6?i>V^zdsBDc5U(yv6(jIY1*7=jx}EAnc>fuj)&d*^54=Z{HP*jJzk? ziFiiCUtXHb9R|K{%EX(;t$J2cxrjjAJ^b>A!%{O%b4ue;Y%w43QQxEg1GCH zA@6HLAt%+$?Ug0|Y7*4?TFYq73Vm$5)1{8|i~~VoHqs^+RqY72S9gRaHY>p^_C^*& zsfu|{?@O*_F=uw#X0!X1i(Bclf%yCS3TVgxt4@MU)aQc)w+sFmR!w`mxZ(qdoaYq_ zjWC3cDoa}dBuy?_uJ7EOF@Cdb7oIPBqCnE2rl1cLVEH&8VAl6<-1l_Q62U-^is(UX z)7BuL^7)iHi6xIdZ3L>2zal5;G8JbaeLU5RE%VbI?#slCVy-U*gE#qWIaVb;Cp1RviUgdhV}bQ!)$=MG&WyNBVC3xr;M+t5E$gkM z`U@*^`U`}7?~?ug*tt3gV4}s{c2BlRm2$Jn%@&Org;Zq|dtFg3vf}HPxM97zcnhod zJwPK=5hmOiy7g}^pgF}nBRo*f409u1QlB$2eldEU1?oVZ|B2CvX-JP5oUpQ`8Qv|^ z0TVip#@RPzJHq~yKJOg+e2a_ULy}zIFuvoKxww^Iul;VVHzavvY7<|o_2nSDD)Y$S7BymFOLLG)7K_=DUM^F zkL~n4h%HcVYk!tN-6zZvVCxG#-Ku%`$7}O}{({oFAS-ZDWYt@Ljv^Bc% zyy=Ln`9!l2&cb~!YX_BaZS6TxX#^`icmNbwpc0m#hsLMz7mzR24lX&YC^)Uj{`N^_ zP75JXpJo|3xN{ofyz|8IgDXOf3z>OC?!jaR8x{p)WN5yNai(lt$G3MfbA|E>YIluH zAZP2$T8Blk9t%~z1O(?gd!4aJg~JUYN7XCSNze(q`mjp4(L&{=_+(6_)L<^Gp#K@M zT`j!sK%}pGedRT^#_&p1YyI<8efBs$C#4@>Sy0b|*@48Fe5Mk zX+1b)Nq?3DLLLmc0{k5mGU8NT<>7R+zVfT8sxMn@{+`}ioz^K^QHg$#1*Z8m&HZkM zE$NYkvruUxE;p5sL3s2V+P8--D@K|L>}VI>NVa*@{T!~yAE;=x_J-Ut=XM`$NmVHe zwapoy3w7j%(@(q_iuzb^zy(B&8DZzp?h_8=Z&tjZaOZ;*x=(Q01ctQYlc}_f%6hgx z4WFnh>AQ^zowhP>{r)XZb6?H8-!x#O=;G^frFVj$3CY+!faBmuz9vjJ9au21TN3qW z174wMD4yVSh`w=|aq`D>+A`x{jW=9qBaBq$?Uu?Gt7m329Bs>`gC+!np)B{B4|5qS zGwa8mxQP+!F90yeMzj&5hPWaUjnE83?vi2D1?(xBHoQ(ltc8*Q* znvJvhHH_st*u~|{lU|pIw&#uIw-0CA_bK?x5wyw~>Xyw%SJ=DSaJr4f8{@NyOa023{lNA1;7e;z7@x>TU+XtM@`SebCuYk zT$m966eE?a-vR>aN(tn5q}qR(nG@;@WzDWiQR?gzzVE3|#3nYpAO4l2*)_n?9WK-y z&dt>Vn$ghT`Cd;4c9L-9tFTbP+NB2*qPGdV)s`IDOxoxmE{xtA79V7tiXvWdZ6*vN zUYnWo_jO-ITZVUCK&of_Y?T4Nnc!nMLMp@X$=RFLTLygB2rG_0zyh4nb(ntI&!n-( z_xgNcXzk&^co(}F0c5AJZe~NSch?*+!rAZzIn}>{PdXwbM{Bm z+lZGRIe=(0k-sc#q!aOoulFqA*4g68`NF&+Nh=D&w(X8^eck`sO{$LGo`rEvJ`P&-`QjDu#lS5Ju+XoC-7w7xv3PmfaP zgseHg{$)a@ms{Qve+8;r!tuJ9noXCP$ZuDJ-C7!rpqcKizI>c?L?geB!44B))jxpIQ^ncyz3V(B0&*L8uBINc)uk< zBhFn)LbeWOmGz;7-#Jw9Zyvq|-gthahg?(kxl%)^%)Rl80Lb>1)ta5Bw7LE{qI}O8 zyrldgeiCyd!rBU@H;~mtZ^gpz4(q5R?`h(;Sjs*G4&raO?pb*k3i6UvI>jT}h!D~W zw0O`i^bSJ!eXnme`0ydB;yeT(JlBlol=y|~9x%AEZV~VG22e}iVV?i0=xZ#k*Erbg zPrhcwy5XM3jw^+YOIL^TGG4m!XR*`)NYV@SbmL_#!sV~jekAAPrIE)Kz%CB_Z7yd3 z2Jb{$Dpb_bLb=pAE+4fWqZf+v{ckOVf}0!<(xo#8P4AW8Qf^n2s9gFSIh9uB7RfM4 zmHvF26??507+8*_h{o_JhI1R#X}%?$;Ty88SVB(tojGx({?_1h6n$kccrTE#_^6kE z*ccnCc8EIh!wuV8`AH&C>SnTJI74pL_x*d?(tD%Qko_`q>D(tU>De5a)6UnYYzNU6$3BSJIQ~{J zVX|fNZ=4ZI)yB%|TS;SW_5?KAy#4{}m#&wem!c2j!LNZ*JI6*ly5imG^*hX}Y1)xa3PPG{CuRejFuaAnr^0c_k zDvZRqA-^O_5X|mrxxx>#<;Nwd7@OV^qPh^xKdbpm^WdXdO`dgSovS*dVv<0;ii02- z-5`3Z{0%w<(s?6`VdvPDEImFN+|VtK@%fhDrp57&=9=v5~U({i@cCmS3X^NP+NaiNJsW zMGP_TGg8>GR{Kx(;qWD=4$ehxT%}=0SDo8b1$RUJ2GZz}@V?OU7Mer6oz87ED|F-q zobaHLIXj^?%5_!!ftHiqvyj8AdPY-X5=j@Dz#Nf_F1TYv)MWdQUZh z|0!!@bjj(j*O%^8Ve}0zg_g(}sAhN3raQ1A-QmyXHD&btK|@z%+tqfQS?9SFRSxt= zd!9iO+-Sr+h!je**Q|Kw!7T{1=|S*)8SV{0;NJ4?Zbc5AsZuzdsy+SCN=^=42_N?H z(pQeYeu!tZbs`@vMh$sR#_^Fd0qi^dh`Gyb1-NfiRaKSvC)c1oaoH_to}k_DkLmyx ziiU)g6x`OPR`DkN!Go%@stVk;w6p|%{!5EWFgf-KF}}F>;)A{)u{mIX1;=Z-!c$%4 zPXA2hc3R!uCVx<;RtgIXUiP17CPx^WF=%M$3IF!6J3+cu-}dnP)%GZ|Uf<5Q7B@sx zY?a$feWTHoAZ@QlOn~WE+F(U@0{|+WcWfVumH0gu#z1+}5EqU_ z4jkH4L)LZ9=NH*3HbhjL_OAaovYe~ijc|Sd(F_D=%8Fhu&mw&G@(M4C;in4r8EVq; zvPd)5>F@?`DM&8;t23Qq%v$xjhf96aiez>xgcUq3=QU_?N)3t}(f?4F9Se_c|3Ij6 z9{(>V@H*fGMwJWskR4AP2l|%xVh9c{JnDG>YG@|?JIjpVSv?SWKJ$Voq&H^^*9HOM z??9&T&sL1DtQO;Kc_6YYe-l!_2ss9M7L>T_*+KPaWmpPB9Qj#t{Te(b2 zkqcu4h5rFiMG~!@QzNS?slCv-GKgDuI@QUK%)kBJeHW;OzT~YdmQy1mtBR&U$*e>e zZrWtMxPKcCfdfALZN9De4uM19>22|=+N4t?xUjXqcY%(Q5-wZxdln*b?u#E+hONR# z((*M+=So-k`PFB?sYqq*vm-#>2hh0yc{Cja>|mMF{SAr|LLwLd5bdACCIx;N`7`1} zGi`nXUMP?T$U`|h#ZP~On4kZ0@5(VDyvTeZaO6^fljUp|Ui=LY#w-t)fBAFP2)!@w zgwg=G7x4W8CuUX7g<)#Orv5`4enL+JKn_6L_2Pg5?oZnS*5FJzNF1vD7fU)S08ZUsBYs5qo4W-5qkj_o z*Ct(rse-CE640E$o%fIOyr= z8wI2b@&7>8pL5@u*5D$5A(#@8ie@aaAaL&d{sAffx;Rw1o`3kRzh3~rM!o-?bQX`@ z&{wxwZpI-bB+OSXBXoCnX8=6DDcnxd`4#`3nrH8ylPc~5rr+JU3R2NJQMpM+;7b=i9lYl)G%W>~sR|?g(nN<{$k2 z6(WmE3I5$l3YhAwR{RAsQ9H2#de~8L3HuR9pBfq*e0#jn^R!TBW#!mbGB8#Kscr@9 zerE#Pe5r&-qp}**-Q8PnC-%R2W52vRhmtKt7Jj_Dl;yXkjaj$&bA!Y2P&97J4Qfx- z=mC*-XWR4LY?~fHS=T!p#GTf?=YyC}V*M75GTz1?5d&4LB|!4};n7=$ADV~v^`P!Q z?J^~-h}};{92x*=j-a95=-iGRvK<| z-w@zqw+2k^$(fRtmUMFew=h;rS2vR*V00k5*$H{>@lYQ6{#}Q1kJ9%N^^TeUE{z2M zeuc0c21YX1q%M}1D1!hc8j0UN(&Z6!l1E+lPmt1@d{oGz0n4lT8PA zk6}f_VH)jUdp;_Hx|^>Ft&j1o?^qbzIp%gybd}@?gV5J#;t{%)&M<+eAR!SCmGs@r9cCq9SMp(u1shdp_ z$fBmoM<@ICT}bGedqA?%Izjm*S(|l0WeM|T?_QKh;3Fo!!Md<bd{I3aM?xBQ zG1G$KOE}9fph`!?$fVTpD5luq%Z{&Kl>OIMmU>8Ioi{e3aK1=eT%_Z{mx!kAS&5w zY9A?q);!~QT4^(3nqyK^PUu%s+uyz~f(O=;$iCVUDxnpWoe;gSi~0$If}9auN;&KO zE%Bw|3b^x0WFLkJNV7oNpmQc7ek~2CK9h-}he_{kL~}dchW}mzh3F;>LcKZOxo*(5$@eyl|BAq-j)b{Ah~L|J3u*Y{tM3C zy~p}9%@o)I^9nnXkkZ>_$RAEttH+wF^Txy&FS60;8$*6HbT!GYPc>La@tXdh#M?t;6l^3@eY zDZ^Ni~Hs5LnV-mtaP(; zlkXYcs&YbapBVm-?|t#j`WtjhhFWbSQ53~Lq0Obn4r!s##xMDJAJaty+ePMy+hS~| z4vK}0QDny#Are{<+F{6^OOuq{8Yf_EB7iub?=fuWSBy_~1iMBRfdvUm^BwdI8INF^ zYJODEZiFayxf-bZ#?uAs+Kv@#r{V2^FJ7l2Ih|l2_<#CE3shIiksQQ3b<_%%RSvbi znjF^d+utI_&(XzMm67wE#F=rHc~-X2MrU2##Zt`&;6B=hS4Fh!d8$ZlTUhj*CM3x8 zI--ZWjVqmAX%7}O&sw6Wq@j5##;mOCmOrOQ@k>Pdes#`NK*pJSAaf;IcT#8~D=g%+PHfjc)Vcuj{AsS)Sklei z{eh6MIVExS&7~$ycpqe@jZ?){s_~Z-#%n0Rj)`NsbZ?S`I*R1;^t(-KFon&L z{^G#r)q!DsiSL|8oNkaUZQNXvDw%na-#ei>qhwBTv}ezhC?(7~B6Y@oqg`E`>V&F! zOUy5e`efDD8%WhJ6N?<}Xv*tl4-h5gIGC|7>@|W2YXGBU@8yc0w(v{F3acuj6w~dL>w1|MpWc)dTJkPrUW}0&Ko`t6Ke{{VA#Y6q8SVq zet*>%oko_8!)d`+KeyFo!=0blbGDikGT1@sso&*qQ6Zm{g(EK!wIvS!0bToQ(OhAaSS2TfHude68{THubvlBJU{J~zw zm9N#L`K>KRR`UX%_!w>a0*--zhyGuwyKBy#?*KY_QaM>_UijC6vO8g*7 zjjy_iTguDr9rWH(Ahe-gYI}<0_hmgVsGvF`y(tW)mK;Mo9U^vM`9N~ehOc}xuDgyu z^OkWU2n6J8^mY&p(G_LVyJS&kSlOxrBcnr9$AlSz=lZ>!Be~jOuC>9Cql)8v`N`-Z zTi1%xO)D2XZ$Rh*tyJXGV0=YmvIw`6PG2DtejBHz6n4?$HmkklRdU&6V#%c0AUsAn zBo}v8EQ38>dR-S&AqAj6ec>h2+N5^_rBVKV-jA6VV3>CHRYK%C$){M@&cLk;hNT*4`yLFzs zg#a%nSga823J3a?sDS1U;@veGP=NG-_a{WItkKxpuPYg0r<|V{=?JfrJc5H-_B%xm zw`^IC&GHd`GafD&?rvyZGok?+G2&{|%d7F>09~npVDHLtY9?R%JsVTAB;=^eV8bm0G!_u(_9Y z*$;^v1in%-Jt2>g-s>w|!SGcXZRTD<9`6_#F6`GfQpr20Kwl&UqMm%7XS#X`=^w6& zX;jQbDHwi|y<$@BjluSu(|BTp3pKDXVn$up9ki@Ck}GHbxZ?Pk>~K1l(KCcjg&;sr z@U0(1Uaqr{NWz8a`a-3`-+D!e=_;c6{h^<6?VKPrsosgpUk2hUL;VN!AeH(zsQUWKC3 zC(sM+evEbaO6)r@Hay^h_KXopP9}bK{YR={k7EkGLXQ#!84qJ^E zCyaXtco4BR4ONG=0qOCZf+5K9FWNUf*AgjGNny4AS`1=n*EI;x zw_T`vPXPNDvbzAggHmyWsicPFIGH0}qu|tpyq;V@F zlIUHV5-mpwy_!+tTzFZ4_ixOe4r1z@Xkk2_`s%8+Dtk{ld3^bc|CEYWg5-C%Vv{Mz z8;bWvKw;kw8sI1BR!PJN6Qt~X;@{5b0ef)+#!Re978UnM?VDMUuT)Q{ADo#EH&Et+0abps$>dIi&=mM`C;^g%=CcWilx> zENqu`$0d4vmz`?0WiudsXPJ1+ytdavbKmffCv>#DTBJ%*U2Vb>UeZzO z;W0PJPu7k`Q0qOnycExr`096srGjG#R}x<6u7jtyW5ZwJU2H6b;fSY6P$TE>8J0`l zwBqcBaWS1aRPB7`>GvRVtDMbhQy=KLl9=Z1CFi?vAqbt1wm|ajpCopvQDuByKTpU` zSiZ3+ZaIJD>$KdPREOIY(Q~SI*Wrtrdim-W+ds9AD69SS38?azC{eCs_r^9Dklz4b zv1Zk7p~R+eg+_-T!$RDX!~;M&m`D+LW)=_Os=?czigatjVEFX|ebcK%Mvt@NWPA%S zA*HF~Xzu!C*!Q(UFI9rO8X#km&#Q88cNjEYKI-CLONTbk`Tiohq2hIDSmsEpu?CfSRf=;Mj*Lv9Bl& zn(2yCCp8k=&E=H1+Z^S#hr(ki3S(}VFoq3beW9R84sX}ACPCT)Nhlg8v6{lFiK=KN zOZeCOv-BRY(VuZgZ_#QR0h%8*XL~u47?j}rMNALX*&)Frn zLNE0BJ7T1IK*CA~poNxxnH8VmjGPHla^t1n6(`btn>g#k zqy;wLz(Kz^59Z;F+Nh1KOlZTdH{cgIfZi!D)P{^^@PDZ}oA)~+drfy3w|RQbzQ6n> z0}fX5>!FdN-%4mI;Ai{UiAX31M8~Gl1d~~P&wQGqokOIr;nTC_HQD>i3|9Ts#xmesQetK%q1%tQmLZQ0(gz*_-<%>s&zhmmW|607A((ZZRt1W ze6QmZJ-koysrOQ%^D%o{(m#BPEELVfzZufY@s0VKP(IFE9Q4jpLmvE%Hp=Tx47{!c zG@vvNAUXHk0;vql=60+ce>O@GyIXt+m^ z-F`!gQtlPSt+BOJPEU+%Iw`2J2_F|)Z;|_9d#o#=HX+TOh?b8(AjiaF)l$wpeMqux zcsZN(RGs0|u8ICc19;CnLf5uGc!8CxQS15CZyTK3T`7_KmkLl!?@=CelP|U;hJ%Nh zm4;@22%htVG9t!0^AbesGk!R z+G&7NCUg3EZRsd>!)w}Z^v_nRTWKm4F@l-}WbcCleaR!{XAyYcd+mc?wMfR6pCCxfdKj>yL58BZJ0UW}R9HF^R`ugv?z54p%pVAYU<0vXM?CW`qWJuHFZ9#T?e^A?C5&hCLy=?x^oO(9NZF-O!Nrw z4KBF{ufK@C;JRrLe64TApKFN3N}(k;ZWHx(;h=S^kXs6?jmXR&L$br} znZ*0M+cc`zWv6|q_?j)aS}aD~D4Hp2+|OjkJXv~LH6!Q`t!8SlTh@ENzM%)buk=4# zl$q+OWgB8qy;oj;JpvXfcBn7m(8v`2krIyf65lXw=?d`H_MCubt}=#RkX_}r9?@H?ewSU! z_5O`ZEfC2tES_LmKYhe0VOacS1^s{Mde69~o@fgcMX`aX2-0Ii1*G>5A|fE2(2EF! z-g^rwO^~AW-aDc98WriGL+C}200~t{fP|2D^ndSt@5`Gn`H>u^>@%}xX3v_n7&D4~ zoP~Tbe3R;x+HtP8jdmUXRiR;T+GQjsybwPem+f(x#EX&rf!*l@Avnvz+`gWZJ%aYJC!(Joo+aescn(jTg>; z!M`H%_u~gJozOGl+h@dgHchqcixvex=c>oIssEXl94GY+ppuIXd=GHRv2<8GZ+Hg^ zK?KvTAfjkrzr6xsN!)*TRy@Pk)cfrg&x6qmA4i?*9}${-b4jZ{0QW6C_|naEIty?b z-5gr^)knN}LjI%2*4FP7+EFz)%Ij#6$cEHQ=|0gZ>#75_w4^)WbFV@=P_bv2Gz>?R>?RK9xy|b%)N-z=Ny@S8qsD-MR3uJmg&J$*>yKVZ5O1?N+j;*G{78Uc!{-LS1qs(&;R7-i*uysJAm$igM00m&Tq?qk$#Trvb%0#Zq?^? zi@T5-*eJ@8S8;hF{BJvf;61M%C~KBn&Z_3YO8{Jg z!}N-;*{pf%LYZ@~a3v{ae5&NEx+bN_p?9l@3mg6t{cO@{t9`ZhRG42k9}^;4!bP3K zvDuZYO8kYG3!|2Sgx%Zm1{m(};(Vs6V@qQfV*Vo>qwcR!@soVzWYa(eyX+KL0{CYkc`C*r)nk1K{^ejGv_xOVT@%?*cUfYD$rs!`9 z%$0At{Tr*N$5*+pvrl7R#`b;o(Rqs(F9%pKoHjv;(acj<5gDVD!)ofd!ouPge*{m4 z@V5=b_AKzts1ggq8X0$~B9lPoz!P0;1 z?r_X-T$Gu;(ewo!P#&myR6Axa73;qb%b6$I3C0syx zcd7FWpv%Epb32)pam3nm0Zts2II)*j29rLGEKBfT_I3l%djm&@FIFZH6Tyz*SEQZu zrZt|5w(Wik=TZBSm2N?BGLvF^mKP=@~9LDT+>f4sXU^a zWk*+8bWl6y*z+TAj?uhjzRYz?`-pQ+yw4#uE|PTRl_~FTaCfa2`J=y~_DMs3oa`pm z`2UjJ{lthe5xy&N-1hsHqW0ozpyO>|4H^6v*WK$jE%999{d#8ODwp-dLt;m@?p2#t zYv0n|;zIi^OLK&p+wjaEm499d;n^du%^p|~sg0KBZQyCmH7@o@x=XVIFBs|!?!Gm_bssZ#= zoDKWqxVn_t0YEe%{xod(TW^(eXk-14U}oX$HInt7+Dd-q-dQZ%J^1a_a4)b|;x&!S zjzYJ7mTNq?C8scX-x2&`?BXxp43l7@v!jsirHD@#bROrJXn62F+<1>f-k`~E<6>nF z-qmgU%zVu)#P}=-zI+DZ7f9__c=CAP@6U-;%9{5GPrv2TX@JbU_0}Iz3!|Q$^Fyx^ z*z7BwEu-d_QWH%0Fq&%U%0g-;(0KnJ+}44X3MgM8t_7Ybr_-Yrzw4_st9>D1|u zO_7glIADr%*h2*b>O)`1fQ0oO-`O+4U`29=Hw3-kDmD-v^ZGCpoR;rt6958X1&Cy_ zOUyytOlJ=>P5oAq6~Ik?z@Lq)^Zxut=DGIl2;(e5W;Ew??pP_t2|c+aih4mrp<~2* zeY7;Ll`vHetncvCrlf6Eboy#&e zg8Vy%?VW=<<|cAlmeJn|;Zr{+eHxnJx={RyKfWtkMk8EbAYrSdQTlLV625K|0Y4WO z6G&j^HnnJHyT%=;DqH7Y{xxvuG`{Y0RBz_Mrn$^02fZ^gqno4bYiogh^lX95)2Yrq zP6e?GRA8ryrdQUO6Ov@gjfQS@0~f6G)(k~*qiLV`>JJf<=K>)g`I^4U znAUilT^Su0<^O$l-s~kUpua;tK#P~cMZ{$27fGxJUt#n2qARH_)9UaOge zA*G}+%D=!0Kov=yN90mIV1G?!cU1H7I?>PH%gl4Xt!Nu^E`zTqDrgjdLguKajYOiC zPij!qjq<4>7x40O5pCD4Mgs!%{uC8?M;v3UT=&p>M?`n;QWZj)>*uyqQtXj)e0Z73 zT3YYqq+`1<^NFdIQ87lc&af!Vzrk+VTuKBlnK}P5{palJt05vJ`pK!#p0~)cncMW` zp6N8A1`BsfP%i7K(no~pc_;o1Clz>HEY@22*}2+1;=sO_gr2Z=8l%2=ZK7ls|b(gIOx1c zCYS)p8W zYtb<^?tM+5r31&z+ha~d4ff3p&*O%2kX zY4gZR0?8DO|Gv#Q{z$Dx(@TJ4p*n^Dk*V>7Jtrq4yZR{Xx%(ld0i-jQS=d2eKh}CE zO{n!~Tm`#ToNZY6Yv|*HL9&$uK1+t-OOy}5ApeG=B5C{x!OL!!3*};o>!KLZunJdM zBw8+XCC;knQB;cLtiS8y2WpieyffD@0Wh{z0h~<+<~p{vwlhxz_ERN&`QZr{$;j&8 zat^&Zb-j%QarqW~S8we~`K>5D{=-P(P7j&rn#Kd5cDG*X^kuM>e7W#m`&B6A@Fkt+ zlgWz(K_v6Ux!C5#@~LI1{I4c+pPv^w89U1kDuhx3#opqU&mN2Tqa4V)#{YvJu%9^9 z_}QMa$JuWsOl)#lF>UK-UW#uFQL+@k!~fEK#MQsn|1bTBV*Oir^GO{kOT+7u&q` zbaWDk&u+2)t>F5`B9fL9HV@=iGM~!Y$1LH6=)6oOyLLw03u-$5^!-fC z_8f7^FyFcJwC6ew@fC`2}mG{FNpohzm{2x zq~QUxhm6gRPr@s&GaUMypY+P0YkFBH0G(c}I_XHAQPQUximS^mRnL|_V-qBMf1M%Y zcF7kx_q-PrHZ6b4A^T?Qy7KM9qR(3NKwn?AbPjL0v&x${lK|;v!3Xjy91;@g91s5% z_l+U;-%BvJ&^29l?PbBQe&$I?PcK(Z7q&$qQVpx$e#lTOuI#`WmfJzb@)YLUysJ9T z@t7y6$|@>5QvYh4V|D*;k+L)GxH)?c4vulatb$epcTJ$D>*%TSWFZsxAtArLj$_y_ zTh@SmIrs*n2o|@ryU$BOU_$vvE+y0`s*r? zmN)ghfLshMU_8dnqkAp*H$3pOPACyGBIL7ADs$h^THk<|4|2D?Nj7$i==jf^^^}+X zn)qruaH?N!)a0~;LiG3dqo=E~y$w49T9lQQVH=27;U7k>qyxN)*05tn;`y;7{Psa#K><7V?So7Mw)hL>gwzz32l0PXvFR!4ys&YJ-I%)71FYDjD$Z{?} z{IBgPv^XnE2bex8gI53$3%cCP-%^t{qt2QdYkbV*pU8b+_kV35E|Z0;7d2WN4*s!Tg;!MfP+Icy^B*J10PrzrENY5U-g>vlafmL zXg0~XtZA8hiU+Ehdy}Ok@;kd57jiU)#lxw`FSBHynjGi^?_1jsHS$`srqy=l7$%yN zv2eDh+t%nk%(^!^?#3NKC#=lmr|vQ3|E%W_7Z-N~0KV*iAtc0MiQq_Ka%z?X=sDe5 zjQvi2g;zk%vX*%KaW6M}nAYmutm^ryJWkiabG3y!gUQK2_b=ns{n4C|9+z{1BganO zqb+;5SK6(sim}Wn_aaX`^ljlt#~b^8ymNSO{{F=Kj1e&MHxt#PLm%4Ta}?ycnL;GfxbdIG6Aez^;ld*L(>qRh z%ijVVg~fofe1q*o4|H;8rzv01uywc9g@TXkC(;%@V;(7- z0IvT;y=_$cLo9IWpr`oA*TCw=b*e@?zl}?(24-b{kmncaqzitlu?TJr39RS`IHZp$ zWER0D4sMx$V$kwrJxlP)h~c%Hr_7wTjYP6=(r8ls*s3tNx7jY?<~h@hBqJ+cDPQ-) z7g~tBInycKJr+TmQ@_~2*uN! zwN-WK5$I6=@WzJCi(R$ErZ39CdH3G@aHy_PEIrvc~Axn;q`}` zNzA3v@SX&j&gggf1+?C()2P}c%`t76o2oM&vfay|sa2yn!`_t!$FN;P(@L7$feXee z349y!iI-J#>>?lwMxBly^Io&huV#+j6ewM-Bw5~>Sl&d4K)7h87d^Vy2 z3nwSkt-`{F3icxQ>Q-P*X2WtTrnBD{Dq2P;t#mgdy4!S2zcWx6R(1H{P@s}MM3ZMh zy;dMARNrEb-fS6H2e<&=kOyB}IRqZaU5ifBO2E|WO>i{#-lK*-&tjhteFTi%l0ij~ zf*m47)S14{b?urb#w(7OB3I0>B-!=D%e%V?nBPhlQ+eqn9ikrQ=jk*Lg7c~GzSrH{ zl|h59C?9R4D%sr|T;9A$Ho7ppn%yaFt_%@<6faq5@cqq1xa#m5f0DLabUrYGZ90rA zuND?|ZxQwiKl4bJPMb>P#;_P|hQo~nrfTG6X^xbbbaWXUKIK=W(G{>03#hFAfD#b` z%U7lBu`zs0@_xzbI*aN(Xdd@U3TbTU0OzsI!Iw+jP1Gs9C_~AY*I4EVj!lc-m;*Ig zVat&%ffgn`huKCW^T&ZnL;67v-)5_FTY$vN^83{F;$4MkZn+cB@TNE4jjFkFy&*QmA!3pw#(teNy_*D~ZA zSUg)yo1PEu-sYLmJm@(Hf?zvp_R^uCYcG{rrNt!^A?aqrhah zXzY%YN!}Xj%Ue!Gruq7+!3d1U*`Rg8-0VyhCuEbSaJ`Hp;59MobUuBAsds(rsRcIs zz@W-I$j){Y?%3no!@ncwy2!Ui2*JJ|7C<_(I+yxy2(GoOp+|Rhxx^qaJx(FKypG6$t38`U@Cf@>!mf5};j z7eTjmt>b@>$>Ea^hmPr{ISF0l;^(XRzR;}Y8 z=@Dy|9zmyubIm)JTs^`QttL4!(ubzW#1A--mHuSXeaa7SBHbcCgPAQ2{RK41@NYDXH?Gp5@X|ry+w_a(P>lHIcj9&$> z>E6JS)bCG6RF(_#oo=YM3svA;)X`1}JJZKd6*>BicQ(D{f`rAijX_Fd3ZAn!R>hNT zkm@Hg{5gV(FSMuV1#9a zMZ{Eu@StMS#H7eBzh;;V=*%Nkq&%(V=*o5#lOiWd#sR@Ay&(q5u@Ra_15|UmnhcMx z&K6N|M)z{=PF2f|McU~sr^=YqwX$l~VY(}MjSC!(A^JYa?26eiBICtGoA%1df(B5O_#NP0N z`4ZHSVS(Z6^Bmg~idQhJrB&$pw-;`v(PB%@*EPZ>C?Uwcc!l-ChDP&Qz$vDwZSZtz zOfoq?zs&TyF$v8>%>qsmwIh!V;O84%X!_0m$>h>p=_a1V94H7Gb z!f#^yoevM;c1sO>k$-%xcMLP~B+Q;QN&i$gbAQdYtS6!@l0Ig3kEZa`$LHAo1(+Kq z{`|Y4OP>QStI8}j8XfH&YY!u!_(yC~uqm+(?uiXV)`~{PpM>E$@C5#>T$(pH>$gLo z@%Hjn8IoQNziv-+;l{nCH-?plEyGbixX7TE>WFucyb2>cz zaAV0ql5SOmr+0Kd!NFKk!M@4HJ6c+l+tI-2t+D&D4Kjo^QrL{Vj^AqY85bv~K+N84 zTKZ`v>;VIT)}GlcUg(!dqY#gJB5fk0fJ1d2;`0I}_*F+vE&p0#V1euvm9nb%vja#z zfwtAY2lYOuZwLF7bsU!sF9?Ll`@5%hi&+g}!-N=~hoyEWmzGcjh0|#Pb-|gso#1DUt9Rs^JZo!XJ_qdk8x};&d zjniBi{Nw|daVFYX7u|n9pY%kY z`NrT({q*$UL_+8G`^gB}R@nI~fU`;Jn0r6|sj@nQDv} zYNH8;X*JrkK;`jpdl#LM5hmO4C*tmcg5m>EhjKbdV8OsZye|ErjvcJs;6p#3rcos8 zbOWDeBrm6Z*~KzybZ(BUU%ktRu%44ELY3X_4ehmBUv) z^^PJRTfj8+bpHn$L})O4KB^|SPOSA*`ex_3lfFcKVEkF^~-EzzP?iY==? z;gWJOhzgK-#M=J$^Aqe*5KK4JeX_}--T&m7f9sDjXp3SMvvEoKYQS)C%gzq2F;m;a z7B(VA-!2;(YhuCN``HjaC93Y3>9f`_7hsbcmI@l3r#7HaM?TV1WT?X2+;L-=e(5MD zYr-t=X;kaFbGKqDX|YH8v~sXP!Tv^6?=Azx*d2#$@cioP#0gvD= zbPqd9!MouT33Ven2tI*(s=fF?`BrFXN4=eV7&kTy6nyksF?Ne_?d)EKacS9dXBF_o zhva^~2YRtMk;;v}7ds0^h4IB6?a?AOGaZqUk;nn6d7ax|`W)t~$4^XM3Z0nZeC*^R zEIz#gMyrQrr)#FpNqA|GXB^OdX_X!c7WjJ*;g!IaUEjnZO!$V=^ktUSZN&wO1sO%X zrq6naWbQx{^Y*Gb5H-473SVFQ!YW@|a3w>y%ygogu?@vXg&F@2-DZ(G-V7IaYfeTv z3{8{wn@kQ%yjUlbss#?Je4y>;U8mM8Tx?&(GC#s;oRo}Pln;daj^8xsrTX}npQuU? zVKY;Eh>xup;Le7B#$SxgTWTe&G1OJuSGhqHUYQtq(x+pQB0$I}Sf4$P#^Rf+RSa@u0udJM4wjPyikq3zt${w7+SAeNN zR$PINPrO8us83d=8tT5;wP#8D=d~)HhV!uo7h9H_S=L`STP|4a2_x2p@TDb=$!p3< zk9oeys5mOIQ3z}-AEv+?O;_>8lxkT-5jStYlTn*Z(etRb{2E3G z#BC7*5agw`6FXf;(Xc2TH_HUmg}2ORC_Z{~9$mnErJBL4-=1 zi~#wwHSyFLc|K|LsC0RGCroi)$-Tv?hZoYDaAHq%3L}0k{bIb!vSp^Qx|wU*Gi_3U zM>jrLB(GF;_wQ-Bfmc9AQBX~E^mv+D%>TSV))4>fC>Uk2-(53h&k z;52ujZ9AxhUP{5jKNCaKGsE4f*@bV^OeeXZM-++SV)BRLLwm;d7U6f54F3FnGPOX| zx4U%xgIp-c+nty&A!e#Su#e6iL=v{!+|4~j@4hrmbA?6QE$mJHnA3x`{@?<_5-zjV z50n)YzUq2@{}F119?flxJuxCv49loGA7^A7+`d5LEG$5cL@Z+q!AcX}zctuiy$U;X znH&=^xE&2cDeZ1ut%a$yd8L4oitSHU`bJw4^27a%KrUClGPjF$W`E3d15eTQ%@8z& zdS+rviu!xc!dMCAC=*cm<~_yIiOFaozqw}lQV#Et^!KmMkRIJ{I+zNo)LkHnuRpf6 z_ys4~)A#-a7F{vOr_in>$Eh${a9KNAQ@_xuX6aD3fs{uBEJ{5JvPp3 zVJaMMGB`D~bp1iH7hQ%9c zH;VK!2eYMv1-FigcUcbOmaDBG8h^gJZtSM6*;D7C2X8{9u}qDKLax)xWw2(#UB5}d zc-8y1KbHrc&X?cbi=8Ux>?w6GcCYs{_BNU6_ZgvurIPggkCYTb2Xte#k8em!`NSeC zO?Xt7s@1~-nFd$tZ6eKLe|)2~kfeRSWk@sgd|BHzE*V8rO+OfQ93t{z@I-i8q~Q07 zjBfsepct*~;xyg7sO7druWf$Zj9zW+=YZqyQnbEawf9xlqC59$uc?7P+cgy&96(5mLZ0Ys zPV4nfa2DB8BCGknM&f^3&(u~h)#sII>75E4QfGgI@}hK%_LxrGDf#>_C~UFq{k7}6 zn)5LgSRwy=q-Ud;> zcbwtLwExMAG~$hS7~{f#&nzc_&kzOya4epB_Rb|fpb8FqP>tB6D}lPfUH#Am1!PEN@mWaYhvztk%*+yD`1+^u2wZDXC917Q&MzAC4_X z4Bqv(vrwC|+pp$}jKaTkr*qWwRY+`f($6g$XbVg`CAjNVT@vFSN$_{?Gvz9FiZT^u zTDdY`DYd?|fZM+A&MXfzmDS`Kniw~sEt{!RI0b>xWy@1Y1pF6;D!!vKCIU+#GoN)D z-Iz>zO|7o1=`g_-LPoZ7HxP^Sqs;sNL}0)~YAh{u&zWp7 zjQ1@gi|dXw!J+u2q_W))@@2G$u?eG(dxyy4jm>;z_m*6tn^G`jrixk^80*;Fh>@zRLK-9*hgy(Afnt8{5vM!w3$}0jzv)cMkzf zdW^!Xt78iDmj_{)wh5nm?UqPwrq>Q?@ISDL2hzXx?US+C!BZuW@(9E!t!j_zMXI9R|S;MzcK@9%2)g&)nH9O-VQ^q?W|@+0Tb~F z0%Gy+_wn0xR|EeT2dy|BJcJ{Fzv+(P3wIrlxF{YR9Hi` z+_5NLk-uvUx#?*syhrWuWw-I2j-u+~CVa%G*poj=;+Lt@yZs_kCxQr2mg?&KV#cbb zwcy>Z@jy-@x7};77_4VKbFDU{k&8NS4yF% zjukQ;>7#XTu=G~IcBTy;`>I;W@F(5;GoO&JXjV==5Q&{hfN#f`>QEn!;l3`-IRbZ;fO5`0z(q1;dlM@Umt!l0x`! zuZT4;x{B172<@;r6BD$2S(}$% z^`RSqIwv<3%c<-wq$kwOr5wf@AJyEvM5&6K%2LE(m;Wh;yXL( zsI?Y$9JFZGR)>a9M${!cSWsvu4G3p2TJOv~s%$g9f?d9hX-49SI2O%g0eiI#dA2rfd>)zVH$tgAK5a8tkOfRCrl?y@ko#+G z3y&R3yai6b8}1)~JXGH#JVaUwjC!X7lnk}&0PACDmAyouC%q-<*K~i&gQj!q|?Q|pskC)|hFm6hS zG$$oSut;=BFH^}UGF4FzixtF?GKw(>m!D7sm%%I`YPg?g9!WLcWx4+`78`E=j#1|9 zi$z}JT@VrjkF1#WfFd}>b^avr^H6m_dw+6?AI%Xj5TEsICI+(^3QBUnmc8|{1r)Aa zkJED%!dW0VjRa4_i(R5RDR@RXE%KusVWTAvJ|9^b6sj@KF9mGU40T91qRtsNR^IkM zq!J;gBIIgN$oR@uEp05fFWc>sj(EGLL|cS8tDB2(=YqMSVTOUP5!Am4NMI4oCznnQ z&3jrYGVB<==5KH%^4=Con9rPGHNs~ef0Irsmuc0`$pSG*0Jm>K8XRk=EGcZy6=z$Y z{62NH`B9`NIDCSdOfg@&Le-|Hsfmg^7Up=yAQ;qETP0N4VyK?Ya;Bf2n+h0|YXaDB z64;`T?U(kPcH#TOHzsql;8#o}y*kf#T5t0EpAuT#hIIowtQsq~#)mhg27&!6q)Iwq z-06JJx;|+KuiKK(13PZK&3YR+Xcami?RD6nC{(#e$f^glY&zPEUz!|ha=te+#g%tyX^dWS$1hB4WaR{*Wq-JCd3D1UqVsY z#TQF3UgwrVsqlgnEPPS`Xuz(4&NkG~|IA7vaFUVNpyW zxhLf6MY8&<^N@_<`VIfB++$&TyFKAZY5C5#e?8H=GHo{o;53dAwEPi&j;eX|+muu_M}dW^wpCn{ zX|eS_e=)yQsfJr)(cEnGphTEKD@4TV;p!aQUYd3Ib@<<)?({OrDQQk6Q#^B09XcMF zeoFprYt=B%my<*1-$;M2TMW$cHw$Bq9`hR*>f8IRYB@nFCF)%v$f~dKChyN;(oLTE z3@19}DO1l>%E|AzN7**9%+Y!ro6OZCt!MZ^5m~=E=-nMG38)xg4QxMQ_!o2W9^%A-py&%s9U}kcx?7ud|BTp8xJ|@+#P@N9_ zYQ1wOE@7RWoUfVb^vV{^+Q5`gTe9+>J{@QJRVu+hsIbzesA7X4PkG{z&;|KmHe5ZS z`R+6Ob{1~ml&;j&UiybZ2Vr7z!JOI3`LKfvz19>jubmUE{+i-DPtd6ffF_`qI@|A1 zRtM$tS)@S?Yb_%H9X1>1+hoJ{E7{VHM#IH5y_z6uo24lNRxkkX@V@Tl4Hm?BE~WKX zkpx$f-y*@$=>B<{qOglrY^NjXZ?Q^zK;WZPopH4Krt>l3KZ~p-R*)!e7x_vKrDD5Diz6QYDbbj@Mg8DeE7|&kZUybO)TFSy0#f6O64UQ+TMko2eiNOuF9&) zb*&LR1aKNQR)+h|rI2UZu+=<`+z%2f&v1g}>iwFot~JPJnj}WV6a12IhgO32HqBXx zLMxJ<05)cBwe5V=#c(8A5y(BPSr!O?ax8Y;69Ji7qx1^cvWK}R()e`)CR8187;b<2 z{bC1zEAcyBPwo=$z@y7sN#}%XmSh=UcTI?yS&UvW@02WnhYd47t*)-d;~cB<6=Ta( zlDTnGwo_%`xz4~gH#avJp{Aw=Nn>Ly~}puX4-Cm;u~1lbd7t6&mlBI|I>k4dnv^ z1KVO{JIio0fEWw8GccfxA^i_9&M=_aWqXE?Ku1OveRvEfE#gyc&ocyrAQvmfM3w{c z%gQ)RJjN8xT(ADvop**eK%JWbl}TD!1ug3O$DL-`0P=2n;&U;xbvIGw$cTus9}D;BYyV=v{-qqTe~0J){Sm_OH^2XqY|8)O3J^6FW&np5zz3wd zk>y|Mhui+kNCIF&q-*`Q|2^wc^dB-v|F2D_P5mo&+xDb6Q%+Auf}DgLh6e|=0q2O_ z@1iz}{bvQ2C!ha=Hb(saK^rX^-gRHc2m`sJh5e3f6kfix`Tx8;>$24E3IPG_p7S&s z|L1D^kf+{)D8c{$qqFUeVevzk77Mzp$nMq9@5u{!qIEh5yKQMA&RI@vJB?2yhCyd5 zSM25+D*~y>Mj5x~8dShwu&&LrVbJb{Ht)U0rC!gyB@<0eOHPyILQMk>6rvf0&@k8+B_*Yr7z{wd zggo8It^&A((5Q509BZrr%OUWEQCIRh3WZjb!GHD4LSsnhJi4KwEIJyaa-g7v@1oNr zTZcy`fCVOiI@uE0?vUkp=DeV=zQ{p0n$f)UKB-)Z^DmH3Lk2=`0d4kZ!~<^&CX$o& zrO*rx)m^3^IRd1J=SBjO4D;Y{}vmu?+ zuSGkV0U);fe}@Itb+3Poy4s{&_Jy6Dz2+S79I`F|_Y(4pv9&#QDrZ%@7C>c(w6E%b zfcx5k@!pC>8g=x#A9UZt{2An#E>cZDDwZKCk+5c@LI8$iza)#gYB?g!DRo*oA!UB~{g_1a@uMeYWbd&5q-R+|LK~2R%rZ9{O@!(<}x{ zr9C*0)LFGhKN}91Q-D;@`#(T6KtR`wmX?-L!VA`f?oBpub-ZbhEK+5X+W$sAS7#kN z<=lIiJO+`&1s*HOoJJgN74P0hS<_-D(E>RR*_A^)wsIPYtYA5% zQoGIx@?lozp-zp=c?JFahc6cn6^Z%3Lx^vPf!Ku#yxfb7-P5%u4yTh<8@7L7%v-{N z1l$yjx@0c3^hwUE&?tk;0zjX)_gM%!TLTRY59nVD= zpADRK3-?V1Em?Ee58vxs$QDMOFBG4Ry9xPvmq>k%!uDpZ;*V{{)aRcGbG$fS2kD*8 z&i}Y>Q)oP(DyB!Cb)ustkq4*Kag_8i5r==GRS@kNlhIcATjbcj#nF}d8{QAt#wjFPSE@5|boq7lt zr4ufWq64uRZo14W?}Cc zq>aU0WcmFG5}D&iTUrhB%-z5do&_4yckL;C9ntAnDRaNkOvyFd?i;K-_QkS?crt@)$i9>B|S0@kIsAQ*G zc^nL6)nXuxa4!-2U%xCkv|CyIx5XQ5*UU8il#N@`2tTf6o}4s(`dzTZ~eUHO@D|qitCc24>o*^({Zl5 z_Z`PmKYxa?CzzAjn8aaco+^6exwX9NZUSo~qebsYmmI5~y^gJaA9;7<$8!s_%F(@& zmn?PIgbUrOfQOzLaTR852$V1QDY{=aEt~ly()-JeGef5YK-^OhQ)P-uJrXP$Xx|A|pc(6c3M4|Y_klb%WvEhRBQKlFn_YoN#Ci&S_O zdBM%5WWLG|!0^Th%}BOXtmX|lGF7EE%=L>u9rmHp${urdZ?Cm#+G4gag9Wzpm`Tu` z{hSj4t^h6Z`_mD19HV{lG6y1=)wpT;M^l^-Peg64c)3MJ>NPvi z2BE_qX38a2d7W_j#9Xg8;XHtDijQkyiA|)`ffKx?D(XOFc51x0RMD0WfA^`L1rAk7OOr}F7G+J~x5hzPj*jWBS>p9r7|)CTSh|uE zA0h=#AX(KW9i}MFfjk%hE+0TY&iUaS5q5#zKkKY}q$x2lcZ>2S0SML`FYVHM0c0lS zT@D?6ptcBYP$S$--dYQ4Q`;~wlL*AN9Uo&#HqtlsMz)Y34~>kCxw<0%qh4nfj~`iu zrc3w+ZuIyt0J8EpR>3zmPiB4Z)$7^2LrPd_8tSBmTN@v$;xk#If5yrJefVE`&->pJ zs&1>(E>W$huoN95(XKtalb-;^Zp@Jul``*n>pSCoWbaA36fa9+Gu6%sa24=((hoSh zL)P8m6!R9La`UVp`Sj==ytLgA(|W1T!SPu|k2~P-Hss2|Xp7`5)=`xS(rRVre%*#G z)u+#zv86$c<=g=QqADFgKMfkSyO-W@He~3Qx3I@!o*ZqHpJE2w5PEQr(o%1>0EG^5 z&44z-%c$Bo!JcKIbm_~Z{A=xcrc2rp5J2Fj+In6l1F!b&+-Vv%xF!fSk!^@@MUc-M zmm$0_jtqKrw7Mp9VCKf8KEu{QS8LDgnY>Cle3aCr9^3s1K4#|-R~|$<>RMTSafkb6 zy58gfi|x`;MMv6A^7zE`Q=>aKZ4|hSin(ZeFz;kc9b<(%ak(`_4=K^p@W>blvs{i) zbr>gSxm7bi;JjDo(M83|9+Opf?yK8gBNrNBe#O<-l-aXSsfY6q*5lX*a+U)=~bvhzilcFtnkiQIhYDKG%eYiGi~l#BRyufbs=>abD= zRU|((b*ZNjUnp6c7Y7`0Xg`hCZ#D}LyiRr;RXyCawY8`G+hl4W zd+SVzl)D$>Fd21NrG@GVhW0l8vEH!%6QscwtZe}vJM*bU?np3eu;b!(J8izO9#<5U zb{oMvUz<3kmOE23*MVw?uJKFax`u%!OiRKW9cR!A0{jl#5qdU{@jMTi!avbhph~0t zw}4MmEgq3cMpjPslTN7j1cNH%LCl+_@sXo9oU15K;Y$sN`ut79ac(i*d@buXT?h1p9gNB z!Bgc+XXm9_Y~zGNW@~T9H`E}c+LLV$KhENF@?P{KU5uxCcT(Zp>Gu%VI|5+-r$76H zv}_Fuz2@cnO{At%niiz?!t4B)Hbh?b@g31ce~zmC5jT`5)D<^`Nh&R?twO1(fa{N$ zFVVNY?u|NpyBjOEozl}$X@UA;kCK*_dEsc`G|mMVY`op@2GgiRKi%As(VKKRjR*}L zm~fuDWx-T@GJe74rsqvPln!M4Iq{UB1um-6Jg9NoJFb*!VHa;2>h*K^@i5S9`{kD} zjUVVMVYD-4Tm5y|;??}J*U*=jyL-XrX4I(P8AyWz$AZLs=W%V4LEbo{!RyW^i`WeA zOrrIgAwP5}Ww0gbS%ZayLb)t8*IYquu0$X$QrF z*cC#!2kb`&$fy|L!OP#zRhSDn@`=tJebJvyV#@S!Nyqu(95Ei5)88d?PSeD;jt7Y6 zH@TLNJJeD}GCgb~ghJ9zkF)}zFuxPQZ_{kY@LUq7SZ>G2Qr_X3#Z)ij9mJWbVF}6G z@m|BB<%l=jCiFhC!CHMDVp5{E5daG^YByk0#Lzcymv1D*d+RKN+KhOh?yn1%u-jAa zO=q$!?{-cp&7^|Lp^YB!o6I};%bkSGPM%`~AqiqOX|Qwd6ALAxE`06JFg>Hc1Z+U+ z#DFUaT83#4Uq#mz!EdIP0vM~|69p0FW3fhC8^iX8ieQ=Lm44%(mnr9dLC5#-qi3P0 zP9q^f{_%}ykG!Jx_;Pc;tWnFltc=r64o-DLbHwVenm>dLN!Li=2J8nXUisAfi9*Zs~jX|O(_<kc?nci1S?nyFkhbuneNT z*J14Jz}F>o_+4u5v?;z!+_z!3y)-=UVW79i*Yl%qg}T(qqc|Hqlfi5)g?^1ie(rIW zBnRAfT`#1xCEa)azAY8kBS8ogl(7(eCaX2(UQ;i8K+RFFXq;o;ggsP zhUCtk2=ecoTE;Ez*dGxz94bNJ?v|!f`FXT2GfmTG!@bukSG(#FivZv|ZQ?LN8XJ4R%PT}F#{FQ9}{Z4BQ zu0uX-Dc1%z+8Ub1PZ&_po^shoN9Ske=$WPSm$TNXiJW?NI!i&DA3#t0>IUQv^)Q{d z1H1f@djF~eXm8z*4izDowtx2%nX=eOa`J>1v^c}kGbKHaTt9`m^Aq){QeqI}Jo|Kp zH_ASwr5$T25*_r!NF-z4lrOaHH-|{0h15;KjQ@wa^9+lk+4jA!0YpGlKr*N(8Ob?| zh-AqbgdykPkcUxGP$XxDoO8}YRAfMM95P4_1B`?r!`ue<`|iEZIs5E$p8MPnw>~H^ z)7{n8)vH!j{nu}iPKffzlevAWpmVP0TBw2d*2aJ&W;05HYzvW(C`KJ12D-)N^#SV$ z*NJ>DrC9Q2+wM_z!+Sv`ctewVr;cdU%O9l2oAn923+qp9&}T6x>SE_xbiAv$G?f-Z zlfruPk6eY1&d>etci0ujhP_sdS3bE5%xICeu@taEy{wK{W3BJ&v3zNZc+pyI>&E9Y zFnz(7fOIs)c7ue=t8)9cfTE*wy>b4z1^KVjB3R|XVH@)>u7K!FN6o>boC3hnb1jq7n_;{nuF3+36lmT!KY37RkL zXzHC8I$#Jv1m132z_#6;No8ucfMY6-&K-g3G3mEY@>iDb1_q54>n_}1|AIqAADc^? zQ|UA9Kf|pYuB9_CVK<&E1MT09CSCV#=L8dNdyP)^Tf@BVD@|i?Z|hgfI5xbVLi1=3 zse#NA)vmB7tD|D6Byx(W^M+{=qxNAb(!axpLunIW`TSDPBBJKj0z-~8Yz5G2N6b&S z5lw|m7osWMlY6Z>uh=8NV&oDkTS-Dvu}KSb2oHkfolnK~L&_zJ-CQ4b}e4uaU zHj@mme@L~yakML(AlZoOIy@pLw|g8)o}P@@^;Hn^$}idGVV}@hDV4G}6Ws)b`A<_7 z=p5wq8F|+%qFT$jqsf|{uJjVK;E(k;3J|L4V@dP$54s8^p1+y}qEUI2-K2n^xQCR^ z;KF&+jT1@YQhyHAot5*2bcg0!+(EiGL$=n5Ni)V`H`Zfb-QY9c99Th&Iv;UxgQ4hs zKuWe5@fE(b&Tmt15ji8iF40W^(bsak{zKLV}_`VtHL8AkW*(tb^!B zz465C@y9~0W8(?>j&h5v0B7+6#2RuKP+@79su()3QSGf2aPaMq3qCz@cs1GF@8EjK zb>g736&M-G7<@)fIl_B1He!(#Y`I!Ctta?EYoJRux95X^?OvsGfSRUOA5}$po4V>k z5?p0OWEsA3q$EuSq@F1bRe$r9&Cmfy^e!+9lGP1+IQ^a{HigdYi1G|VX}iiR<{T`- zmPcFNy@A?!m(S9^{*_rQ7_}2MPcEJA0AHY#dBJ`_S8dlt<@L38XeA_JctJy&?n=+M zLSJ1iw`US5NojP5Hk>10^k6ZKCgLD8bnmsAcNN}#qf3W6%eF1s!r=VFZ5vykk~}W- zn6{>i=;5q;{e6ivGUcfCl?sOSL4M~`O{XuF+Vv6wzSSC21#=cx?y-DWMH&Ao*qhmJ_kN?=Ud`96E&FEZ%<(iup0W(zO7E2I`OD%d68Eu)Fy?t+>AOFw`_6K> ztQjGnb1R{my!_z{N?SGQlrsOdvBqDFTMrwPn>C%eRN)rqD_SY!yaCUZj)p9~c5vL8 zcpj|aME#zE9ZFIg zpvQCb8?M6~Y3y^i^!!Vbhl(Wh^UrX5UYtVqetFNXeX7an;_rc%M)o@Q>DExujS8HE z!cRuxlt4z@(y{#OC%?QWpqa=&`ueZl?f6NO$&^#8)3zKHX(|CM=D(`Jpt4lNopE`H z#B=+hRb$WM#WcG+$yNN$H+j67=~Ktg0!keEwbSQW{lj_F2{%EK1X6cI@eCaSyU7YMRHuZ()6cEYX*>$~R%VqGGCv z$_niOG1ArbF2TQIWGpml?QNY`TnambuFkGDhZiREwlThOL07<+PH!Kh980v9Q75Mf zd)Rpyi0i6HKYDFz?a4GGJO@pnjC&cQ$;-NMaK#a<=u*z>;l!F3g2&(-XcPxcO3!$- zSCiyjXzaqfr!{TKe};9+PM#te`!HR-Vr?#ADej))K%>|7%akx8*F=j{=0l8F^(&EJ zVrsVQW2cL3kXO2C1!(eYT0nwjpOVEWa7>`R)LLP%lOz?h3ql8Q^_AQ4h*}*dv)o^p z;z+PeJXu|$ttHR-k;-~1;vEUfmG-yVkP#Vr6jp)Adp_x z4B5-u`Q*TMj$T5w{dU>0X`c~Dgmh3v9qevERduq!&}i;MGen=g^gHsoVxlYq?%usI zUX&wj(KmE$FEWwChCpdK?@e8UWjddD1+T`?ilHqb+H4;dU)$7O;({Om;TZ5ML77X2 zM|QJWM;vSOw&0b`LI~Fd*qMIt0euE3W{wSW{^Kfyw*R&7ZYDq6d<}1b9H9%5eNQN5 zzHb!&YZ#s21&3xyz-UX~U<2`Zi^xN8Gqe_!Y zzLk|$V`E^JiP4$-?3mB{%kRa)DUltI6ske`vpsULnz%~b$%?DsQEq4P&3yK^+_8PY zO2pIp^wj`gQkllfabc)$ zoRyDb;Sw<&AT>0kAw0~%Gd|kyI~$K_~-Lq zSLO!ozYzr64{6!oqE&P0^ns|&({9 z?^lDH4|G`H(1QP<*$d-)=9))hE1^Z@dOjy~V*)zdEZ$Rf0%HAD$6JO!1PwlI?P&57^I_vu0j=7N@{ zl$^@9N7Dg%kPYTE^#uXr1X(jNfhU~@#<{03o?uw1J@h2u;8fdF2*-i@rW)t9Ji z;JzrBes-YmF0WYCaVv-G%L?!U$SmZsxj(l>GXhBdM&u$e?7i$83iA+l8H+T+JP6nJ13F?x>?|R6 z)Pt6SM_ZGJr~>U$inOWIdR4idDo zt}mi<2rNk%oy4u92N1kgTQ$N?YmR(ed`6p_+wK2?fK(@OPd%GOWE{fd2w7D@C!uzy z1R`WvM&_Dy?Hfti9%qj4dXO@)GC%+H8u#Xi$%oMQY)?k+G6?bnZ$2@n(7!oPGHTe9 zHC6YneUW|`ga}{rznQPzS6G)rcR1sP?YCjZggf12zbiYq2Vcg%V3x`7*xclF&4`xj|-q zzMTOGc0_e@JbDEGO7MO|_Wd^RLFn)ZpySXZam_6|*Sb0FXqNAF9cQuFa6(lxtJ7CP z!xYjak-3Byk098UadmS!bPV5TtK+x!jkdgr&?q19$%Xa zhXu|ba{0Z~S7R{{@t;CGoZHuLil58@8R@s|+TH6~HjlQxguW=6TybtT->}~=uA{~7 zCKvOy3GH;>wV}#>J((wtJxAqfK{kMR1{bZAm(8y8*u*|BzeHf4yO;N3pW8_bsAu&# zxAk9g1)Fp0!Sk~dQaU=v>0(~0Lh}3UhIzP_%H_w-l@_ug)T%kkNdU+sf!7wP61?!G z-=9#;#%Aas)br=Ni@ohkK*TlqbXInn-&QR_zjCkB?rhXJd*o)UQ_Oh9ONmV}L+E)M zC5^62#RT%@{@Y(;e-U;auP~HO;Hi;FwN3Gp~P393#{KXer^5rIt7(LcSv@EOSEhpWhOZ4F`7_S z3YTxK>!*o}`{P+@>Vqda9mNxPO%jOrEG)P0A;^_Ir+vFYOtfDs3sYi z&=NC)Jivcc?%t$AvF<0vsxKO>5`wy&It7Bbgt!xxYA)W;{C{RUIrBh&5>$JBwQDq1 zy%d&RN&U>H@BsAjPTMl>c^ZQX`CTTN)=ia7e56AJRM8|PY5jayLde@DY(02FqeNT8 zZ5)NUe*XuhuImO*f-ddG%)ooVU&Nm6ZJBi6RU|H~e@G2j*CvYY5W}>qDI`mYE^UDY zUV>GNc1nbG@a!>QHe_XwLvZ+F7UHfpS)*Xj6pgEw+M{>yEQ^J;eGU0=;87@`JO;v? zzm)u;oTqHIs4X}@@z|YKUBBb5o~eq+A1q_ctmjU}H3jw?Ml5(=86B~tj$!IVa|SgO zZ^wc$1v#&!+n#iKcj(HQY|NI+ifp#Nq>ZP1lnQ7LEDP$r36=u6k} zVJfW#9?^(;^i#6jmTa|47FFwuj?P0*S<451zVCUV-syj%cb-}}vwVKu`lXJ)sLKBe z{!DkXLkMj$WdzMFUCzM>A)d`&ZOu?6tJ~&m7y@&P4uxGjry%AhHGe#O1+_%mj&Q?|u;4zY5LLxAgI)~+ z?G232)~Qhmy|2$3$yWf*WeJZ%EWKmC*@aRd=I@aym2Zeu&M-@4>>Pzs>`C6p~Vy8S5pTy zf=y+B`HJJ4+oD-j!auur@W|$i0)x7Tr zD4U7$3YOI}6$rmd_T0+!(CM;pK*u^p{Mw@f%EtVv;VX_Inz2$o_PHE;yk+;pgpC zALJ&a`)4!lEXaLV99?lXQN3ADGi(07*?(km7diu#uwg@a655CWs;I<=-O0>y_B?hAXeoxCaaZ-ED07&ib*VZtdi$nv~|YyMOw{<%`#6lUcC=;po#^bXtZ9}t#Ql>YOD9b z)Dac><5g`=^vac*PoW4kA1<`kJo+Kq!$Jd$D2hs&4~Z$p125QVZ(sb~vi}d*X$(Q{ z6x9pb1F$jvxQ~ISKj%_?of{B^RXF}}rC$(=J((>^iC^xM+qGoqr-bbG2xygh49Jk( zWqY*IbhfXLI`GHmXb6+Uu`=;#76-aWNe&r@qq%g95E)!LM%{WDfam=#PL!1}NkrWY z?LLcVW(VlcKTFyU3SXtrE?%DSR0J9yFetxEC3VrGFz2V;5%pOWr zVVz6X(|Ulf^b=R2KNNZj>WSl$1_X6l&A*T9eFGdP_k&r>xlCv&cS{tJMvwy}(>?>< zMdkWyxVHiPl%oa^5IVBx29Vt3{|Tfv=|z2UlD9m%DC>2g;%~K906i#tAw*;k0KYK_ z2xuqp+Yfff^Hc#MRG}ngL+{NhuZ^U9SzKPz6USW@TmV|E-&G|Ba1h)k-pKa| za&|nLV*BeSR&%8{tFsR}x~}f}<4Nq8_vL9NyDpWcZ%fAk>?0hEviQgai1*BZT#bDq z?8Z$77s^;yK&4u;?NbWSxqJ~`B?D+E)bB-T(~D3E-@Iyvvv;?tKWS=c&=FD}svCOD zeVnnsl)v@g`+e8{zwp%3FLc6`%@lNEUK)n*H)UwK0KZ)jJKbVfn$^|f5^~sQoudTmn>|7^m2(zhH-x~qvH^O5p$K$RWash zR=-wWZPWk053|^TKitwb@a@nS0&8`ZX!NLapbMX_}wzv3)$qL420yE?}(X7)Z-Al3B)?G1b?8Zjf;*j?N zTuQB3Q&9kNiY_;&Dfbm=M(T)ZK{lAXSF`?I=TU<}v=XGaJ2ex8n>1ORG;t#yXVIs) zoMG0AJidMChiEcEqpsdltZ?a2Yt>`TqaeW7A2LK{}oY&20q3glAOKBz$Wm^U4s_n*sU^JYjX}UCIV| zv!ud&OM~Pxd`opZ8pTnXA8vCTi|0REAu*(+8aWJn&rlRLp1+oa);Q|KjzkJnsRp6* zyEpgvs$J*F^uRxv32lj8Cyb4G!q!eo&}+{Lzy_mi z0$-Lkm5e^Ve{LApwfM>v@J1kXXun5&WU|HuQT1E^M~XM#`4 zZ5abp88FI{XK^NquO*@?!YRHDA4q?WH4Z^;*0k%IbbGEO4a31%FySg+6Gc?bZy=qF zZJh;VJq;qspK$Jpm38RYpfH6X}-A z2#}05l@xvwdffi*-kGOG#6;Up_#Hs}9Gubww3^`N|BPlQ$yhO;WublyEVnI6u*6$7 z-StAQ$42DvqFo{@zYa+Q=s1v__fK`>+y`$TfDd`{ka+7-7+NA;&Q&bmz!b`Ov( zMN7TMcRfMCgH|MJl55Z>YzbxO&s)S33=raPGy?W1^q`NPr;veCM4o&~-7j$FAjiEF4O(x~5p7n(B;GK8|r*2J9N(Be~C&rVSPRad;Q$Qg0x< z*6m1U?}Q}FhkPQ~`I4capeEuOIsn6A>$gOJ@6;as@2Pesb=`rn#z&j3;VxId2ZWbTEj2F(ji?qMDYcI6pDhd9q=icqnvneah zee(UyTCOW&@er4-`SK3pNa)~J&tZi#H4wnwGm;csBITNJZEtZFiF)^R**C66LD~R6 z8B(+&{*z!pso856`{uy`e_Ku3eVi-G(Yh3_KW^Zyi+N@=i5L{C(9&c=g=T&Fyc^3U zL{l@8=}L_`Mw4O~R+}xZ99$JS+t$q+wXl&RGgJX9+#ZjEu&IOpzhzGV@)$z#9 ztKhx(1Na6}CD!Vr*fnLw-`hnAbWJ;froP+wZKtOzGtBdr2Ug$SHVT&-3v+Ch&b&-a z|6&P9e!`e{mSVFw_cz92crn-!5oDVWN->cMbFb0oyHrb8~8zzYu6*=OgKe1{{HrAP<7o zL?_)G3AHF8-I>~+a$W#e&<)B@kC^B4Q=+E08^0W%9&@l@rdK=bht1a!57L4t$iZ6Q z>=oXee!vD0vC6uuc7AIKGfw~l8!{(jsRd|j=*mgOhgFiY8}b&?)TnoBg=f<&Ln%h1 z&%&&iR(FS;%Nbuns+yjr>dm@_Y1s)W@LWC@PfeU+7(HUIO#CM zK`4yh*Ij36ALLNLSA62sBjA_dW%d{?I&6sbS-E<)@VbR_pdiU>MJLa=6x1{6Ue3QE z!Zs^aE&+K{`ZW1Czlrev&s5#N5y9V_&*RH9Zu>vl-ECCwr4rkl`%1T-`DpLk=ajrr z{kp(T=(J<c*=@S*=}iUHpVYAx4F4#Pk$n(` zq*wQGPGj;{71~$ZChqh;yJLt3)2SNcgQ*1Rg9vAWMx`H!HuXxkFMz23#`QP8L$&YqO2>Y01b81)^Jy2kVG(i7*qv6Ur<-Ur-Y9JTak@#ip%d#{!p zF*Ck>T#ael_8`)tXfM-a4YBG%0}1ScFG@6_3kyCcM4(=840SSAnpu7{=If|lJBz}+ zqfi9k=qE&LrH!Goe}mBtNK`e}hXtbC>~-DL)dZvqqhI{;f@QlQC|bns zRMb~n_e`W~Qr=<@f8uOY3hjN}b%GPHdBQ8iV#kR?9-(Tok~SuBsPZ`GX4jRs9V;u-I?Bryy&h&eZsLTX-s$2s2sIL_eI?L#l!)s( zIk{<%%YRJwuOW0D{~1CTOtePT!liM+{Zby#vmdwLh(yB;^ed}dJT{U|5PX)##`O82 zW4eJH5lgFw^nAmK(afJV_(3zKj}MF)PHy&Vh`mWq0zXmsxzigz;Cvy=ID1S z<+YR1{wA0rweY{8&?OVXV^%+tlCqQlJ9#<0h4yw}(odlG{Egho&dw?8;0l%>3G%lG zPtWvuv)mJ*u0Ei1-L-+h&-~SM+)Y~7`m9aT_UehMtmQeHUFYITv& z1FrXI^I01lB}JSFpKPZ#O=PIBvTE=P%UtWV&RFL&EG)C79V&fFv(Y{?;2P?iOCR8E z-HY@Q3!9SJY@pY;-A_O1oAVB!{7581kppV?;)j?IMNEKB{D7dTVOKf2L?>-0npLyf zG>d^YIcG3m=WJIZWf(ovsI1ActlP)umM^csGc)JE#$KF}a||FAcLsUwU1e5@>J95F zTL~N@D)^o}=>!xEU0kXa?XbQj>oep7x*g<`KZ$dk|5M^z#J%?KqriA+C1(S#zj_V*g8xWzFf03pyxm`>g<>k8ZWP* zTt8aiP#_AOsVThx{2}`=b#*s^ggCdaTywj6lBv_?Oj;yD6l9^q8PdlXR3`MViE}4k z{wv}fpLmbERfqi<2?Zvd->%?@&vesOu?Mmbcdx~fkv%3#Tl$MQ$6t}&ik{%Du}rLQ z;V5qu(X>j;$dqNUeOdaj4#3ZmFHl2{;kwZzc4LwU04vXzv*x1W6OAyT8TH0R04|X| z7`!P9t=9JrKFiy*&9(+?=Q6oWyN})lwJyeoR09BF#}f|^jn#x**d;490J%r@xOUbO z0|>{+EABj%8;(YJ{~7};FQGtPviq_wM#P1qTlLo@1$C*M1gpAL!_;_Q+uQANnS^C(ik_}4}y*~pg^Q&^GskEyzGSvl{=H>(v~N2|EF14aa^9e z-yR09x9}b?UGaP5~~OTQeNK4jHN13i>{!Uk4(6d23~NGg!Z+R<3}F5b|2nJ6AM5KB@9rv&HdSq zcSxvE0rOij6@}d!ejtlyAAKQU(MD4k;x!=^abB*9k3ah)T#7ZH1srY6gZ+iKfeTWu z!ZZmD*(J=a34x~SE;g~b+uypU;5tggX_;S0b+d9+pc$5l<}3mnrhqQTooFc4YC-5A z2(UHOO?t&5?QBE71$VKUu!_xQ+x<5e(!oDMtq!n0IeqsDhmN+(B52?SmtgIp(Uh>% z8xJoRM=B;OndMV_*Na2qg(@0G&a$fMTk}kJTaTK1E4;pvSYQUOC3KznTe0ZW>w4P| z;A!>nH0TT!fXI2hUsmB@tC}o@DgqhGLs%%g0*^7))+7N8PkXhnfL^f2Q?HluOuqYW z&+Yv04*7I%I%$dpo0rA^Fi5~0%OX5^y$7g;3nk2rvd6px8m();wj!9g*NJ;{D`l2Q zH7DREAM;tz`_{|oKEuX)i?yQaTRkQOcM+>g*V>N7$J{oV50s(TEB%`k~VnXO+ORVT+74ztaCdVDOj5OJEk;b4t{4_{N|nny>t%DjGTnN)1X z&supOh3@^zBx&O{gxv(v7agu|Vpv3-4Py0s&asOQdvt<9I@bV3Oz{5sLRg4z^~=`Y z&{50K+sKkp$cjYJ_^LVJ4}JZKh7|tAbbEK1C8ejcMmSp~h2?B7rzlgHfxP`WJ7mK~ zMpnkE{b{VoYYLwVL>yhyzk#$p^a8!qPw5?$)dYm*`uT7ws(lg64cEQBn4c#Nm^Go} z+(82etDdFPxRdb0mjFVSb04Jr2~fBr>WmYojRyvR1;ol8txqPDqCP>+x6>=r)5J`# z*173P_i0{)5Wj1!r6`#t?qVIzgiPSppTM3MjinYv>sR&?+}r{h-_aFU0I|(iDyukD z%IcY}Wz~wjGwO!_liVdCBG^@fq+C|<3acFfX`XJy0?T8vj{$&O)(u35X$z(cXZg^3 zyO^CE%-{gp{6ZJl2I50w4NE>8>Okg>J3Z(O9umGBSgqw3w!GkgXUHllytn{bytTlL zTi!ihBnFU#duxC)5D}e_9wlR(|BX^5ABIw>$Z40uY|X8qxOLPkPAJ+*O)xOe*XokH z?iVxYp>AW

    pA1x`;R9!2#T}E7KXkS}c-MXYns9!?eLye9qNfU=hXsJN9Ercsjpg8p zJ7N_T206lmaU1g}|^dq{?niTSC~n*QoG7IUJo_ zV}*gLWxbPnXZzXTjXR{I()zgL`VP)BcQEoARY-ln;m(|1giYcBp)f5=i`DIrhj8|B zL0K81yxFiEO#HUqiLs5v(D_3zuXa4mI29d8^dnO1kE~1LbAdv}F!4>u$9x+(CG8OL zK0&f}jb-9aJ0QGuFj>OF0J@cp$4HyWRMxy!6Gwxy@}titxhR)!0fCe`h5M zkwe#l_-0*FAR6l1+9kB@>z~lJ;mL$vAbH)-=xgg<27zUC1;Ikt4jDR>WJ|x9@#fKU zQc`pHu=D3_@m7NW5w-0y*UN_w*RvMk8|{EqcgohO=kL5lDeNYi_fVQ8Ay+ullf(?8 z8sK`C@FCQrSdkP`&S(A-e9gQ4d5+PUdC<@d|CR<5%@_L1Gma#{`J_6rVLroNS>g0AfI)tc0(89@hXLl;WkYMu{lW z7<=xD^*^Lf=4&N)B`>`}NoiL{8Fa?vqj(1D@zl1`$hqxH_)`oe0!FwQQ50A$cxVT~ zvU`@6JzX46C|xHln1<#I&~8OP9D0o{?=QyX>VkR@D<5G)H5v1hCv4aXYuHf+(~Yhy zYB8^RKOxX$67kezugB1qk{WLNtBP`ZHI8DPw9W$Gl~F(*@LEh4zyK$D`nY@6s6u=! z)Un4#9KoEx3_;YbXx=nPd%yUp8}aG-51Vy5^7niq0StCtG7IxS_JqT*V~Wuf^r%!% z_L(2=4}#Vpke(3yi!kD(d-O!0vq6mEO>=5fs1VRBmWCh z+ueUbYHRA_%rU_~PxBL7S#A2dZDScK!T&Sd{&>1&mz2)dpPMW{vhQ>z`y6n4oR5dk z>NPTiqT_$w)_SHCuk4LPevd97@y4n!bGlemZ|wqIrvIjeW;d!tRv$a-qL4MOH}JD9 zBnSvV6NV!Ke*GAyD=?eXFr?&sJn%D7n&qg^6W&W8yU{)s5q;)dcAJATd+dRjA`Zu) z4z!kmVKv|kGar}B-WGs4E-|(B{Uo|fO2gu*5FhJr)C`)xPvf=e+jh(@`l5uIZ6JNl zS?cQhJKbl38tGNdfdyrBAfxg09}=P;L3?~2?~Ev@?Cn4wUl8hMa&)nP2gml8rBkf7 zFlBrPfL8C)k*Ba4Bl^gF_~V)vMjX3*rsayw31BWp{HW4>*Tz?Mkb~F8HJrb}>DSm) z#kcFO*uU(Tvicbn?5e+TXoP$>F9WYrQXKOgcU2tA^pjCp^{<6ZlJD;Ll5)Ux?N!{b zQ2fhZk;* ztfOyR53sM~GEWR#Ux+JJ<-nFJ^(^dy1P%mN>S8Y+cFG@KW(NwC=+TDR=_%-35?QXa z7?cR^vEg$z38pdI-#Gv;B^Difb=esXWhLd$-ZB7YX#4A}jGN0?-xs#y#g5S;$KSjh zspc*uCI$!!#gd@R>>Iv3VUzeihpcQ8rM8^|3~~> zDV-xNz;Mfo7fDJidSvNuV>eA;7Ex}tF_X8MLeZf^#ogNiGhOmfe%p6^Mhi&qiqw34 zoA?q(E+|jUu-O{N6u8@Fet9{!cZki&0b2V46;waypj>9PCNC!F8iCR7XCE&ERfWFw zS?surss-c_0=$;JuNDp;Rl05BWo7b0uyMK-7HdN)5+jIUD%+sZpjW`cT)RlsMtk#! z+r{>rE9J4_m7DknzpNYg`n?nQs@xOqPfIMLq1bv1&(Nvo9PQP6R*xyRJtvTha&YNu$=+v>xGLL{s$|guKtCZAQhsV=7m6oaYrF0gmNuq9X)kaZ0@d%m3t*`PbxD59xV^OsBkWj_40zs zgL9iYmzYsG7a$1P4fUr<^O=0RjJ*MTc`R`&bgv!f6uj z78iRx+W_G;N@Xa}*!@@Idg960bW*jAJY|5ycP=_P06$6dU=|ACy53gIG!`@uskip3 zvRMO4HOVhdFsQQ@RkSeF38@D^#;e~Nxnx|kaR0!|A9h^p)5vD?D77dR?M(QYLfRx!aHh;PNAjX6M`JA$uiy_)ztDd zYf5H8>?f|pHMVbH^NGLFOhDIU_*33y9>eec->TcN4;!Az8-objGiMZ%%Yv$UGUDLTrjQJ#Ck?KASVHDPH38&o9|PP{CnY=0U)%o`8%6Y zELb|m)2ovA0iV-SHq%!-m~l#Kdqg^Q$};;6UAg_8{V0k`ye{UKT7Az?EChwP8+y)m zmyh?lor`Pw@GrabW%F9e!LpuZi$^n$yw~oCGYNA4#H0S&Tq!q@IH6`I3kQ3oQuK`B zu-Z>J`W8hbk2>BKO;v1(iaGG|TRB{6&ph??u_J3hO2U0WoC}nn1J(BWjvp0S@yzl^ zNx7MeT@*}!xL`7M@5ow@Go%0c9mdNPvZv)E=>wv-z0)KETyWAQVG!RUf+_7j`zP)RYH{YR(IK7Sj38u4=qvc?ncrs`x+pQKQADu zFysYq1>!r{p6>WRF|v?8pEq5~oH&4FE$Z|Y<@K_i#wqQ7vE|)zXKJPJir3RUSshA1 zgpS)a>+~M;dT<>~GEU`bnyPp=nFT9mU0R3BQ?si+cXr;EJE+v1PsQ?$)b6{k*tp%J^L4wR4pw%EXSXi)DGmX`)?_1 z>I8r%d;^SxS{e`iU;qWm7D&eNcl}_$%iWGj(_$stX^4~6Um`@wFE1Vp*$7o}cG0x| zW2Xt0%#LW%iUZgX5g4?Hwz{m7Rq*}grqoH^AlwY(~__TeA5#3RZ#-ZF-%$6JuAP3IzHlL7U@`x|V4ul3~dW6uDMUCpp) zGf{1YxQZE?^WiZwshEg+Y9wrZfcx{iSe9_!;P$Q@B7U>Cm8RYa+8HeTNe@vf3;eSA zBi^KBhyXNbw)E)7ILnTxqe^lUuSLszo()&LiDE?3_rs!57?Nq)i$TTuA&b$@P7phe zLkW}qJ~E0gS^lr~f5k2ew8X_o5b4b@QA7FTwz$jtAg|@lB-Cx70S`a$j&wKi+D@$n z?jXJIQRLj$Gf@OGjJz)rkP%9D%6eVIe?v~I@D8JsH}EXPs8~A&zfH8u|D`Xs4FAQ4 zab$VOYL_1%qd-RsmsRR?5_vpc)@4{VZ{VmsJj@*hqt~RL{v71CRYsea5;f-r4z3fj z`8`?zt?*XAi^%MmvwcL4l9CZj1$5T(V`w$&bxyZkTiuN7?8d=8Ghf^ME%u?(*H2W% zrWax;5^P^a{8fQovpGDo%a{^Rw;RN_F~6v5a~=UB;_s4(`KIwu-H`d-`Ri}f_=sjM zXeqO-@3n+@h~@j<6$v4pXTi3Ab-`B>Cb!I}<-r0bs=0_mrJQ#VBhhd7Na`wW10XzR z=nLC%S)8iz^ob~dxY9a$AhQ_z8@-zK`OY2<2Z;K;6qA7+;w#wB-CmhGnOWso=Iji^LJKKDgMJ#i$76xSzYWs_4?E@O<^{vh6j zQc){SYzN-LaQB?|8|pBDCcI*Rll(`Q2br8PJ>$s5Bl$>efr_4m(rEdKceb>oYPAkMiE^FHYJH-LXJ{{$EQ=L7zF%>VIB|KfxD|1L&E zi&d+z)B!j;)d7ff(*hLh!1Ohz*swnTQaU~HSEyTIVdc4T<(n+pL?OBG@KYMX%lZ~w z;D;~9cZ6og_aN&`@`f9gpAxH*99y(o!A|512} zTKo~Yck#`ONS8m427Zy`x!iKO_&cys^}ip;|F4g*-cIaPeEI4*8O@t?~aneenI5hh5Zp^h+UTw<@c9pChsWkI6YG zLbfxhT`+2n4Tz%P654%M|&3A@ix=g2k*Bs#73Hme@-5V zh@*U-Fn9TSM#bLegk~3NBTn=_h{qC&9sGH%MC)(&JB9($^6Xsax-Kmc76@1y&ERHW z*!T3i%8|p}bL9bhUlaNwQSBddA89zRr-&)YAzX6?XJ?`lOgA!A`se5m&jVg>tW3Q= zvBIw_Zb@y^CZs)raegUkm7G8c4iyMy|c|2|PBDZ|Mg;Lzi z{6UPHS+X5J8)x&>v>Q$64NTW9XXfW0nNJ2p#v*IiZv(kP$|J*CAk0sVKz0LBIh8mX z^TR;S6;GmWomgYIDYY>MPXox6mApAwXmK{uZfDnFY2@0uU0{`;m$ve!7x9)yoBSFD z)}#v}5n!<&$UEfs< zXTgBPb0`CYh_Ua*jI^(GbB1)pmO*&ftkW|y|FKrOI@c&>O}ciFxIum+pXNFn+%|4e z_-8J9yeCn)V)`JOJm*FQ^X`T0=Ak9TkCPebKof$#WWLBuZJG0Q*gYil&cJ?{xrxmVKg zfNfiqg2+Y!=9Z7oGI}~AChS3(rR0dpC!C}GMGCHN{b|sFH6DM7qhl=1L*mE>4Z#>l z_G^f~&;Inr?BJV5)2sh@6@Pr!2cY{94}bP9b#S<1E0Cj2h&x8>fR_syyG-`%!#XOW zF!}R-&&0;KHSTk8H+prz)PLN?VxoO((_0-EVDf9FNCFE~$<0o@Vix?ZVuoh!smFC53G^sj0dc8cwkN1KYg~hIQY;9#AajV2mPuvQQA|y@QI1G(ma?C4hA4B|tz0 zlrFs^0zta;9#Bf?C6v%3HS`c5lmN+|fPU|L_V@1ne&4>XbIy-*<`1t#GM{HYWsY%= zdyHoc>ll4JYABgg$65MiDC6ePji3AEmp=hNlKxgvjP*Ej7B<$al2~}0DKWTu9a!s7R0HOI1)X) zO$*|_T*7F^ES1gC!5Ta6_a$aUE$@LIxsB{49eazVW8vYuXs#@zK39j{jN%Lk{L1&-G49|9#C#|xZ5A)wk zayYN3-{b|<%H$uJnJ{UKuloeqv;)UsDLU(8r7O;JKK$p+#AXAqTUC!*-0nBW>iGxK zacQbf^Sx9F@AJ}#nHw}|V|=Qqs<7eG8iYA=+n-C7@{g#Y$e|x9ZM6^?;@uLlxoFtP zAE5Zcns0Y-qFmNgT0!qVA8Dp--}d*RQs5LwC)V>NaAf=VZS0EqN}jg$(m!@v_b^~^ z05$HQffPCxr3?dyBAa`$Kpk&@Smyiw3K!3@d-0L?UCz3DpIKnijiQ*%8`caIrhz~} z`p)rPOIo@W`^cA531R>Nq&98Ej?tGo-F=LivDhu_CJf^jK2Y6T6Mgt z;eit`;q)@lyM=bz={AvMqQ2*-HtKi1_u=!LDR zPfJDs;3xn9M<-SU&Mc50@ILHHpX$pul@i&P5>H7R;QP7w^z`Cr;H-w+sl5SA;jg<- ze%tf@G??P_w%gsO39(N1 z6aZOY#Rrs-Gat`TP%P^5EpP)YTuG3^i=HRlxVtBLW1oaKN^~LF@Y4f_F2uqX5aqV zAuo6O%pKu#d^vZ-4W9V=Yxi_4L$;FBSmk;b$NvNTa6ef68tJ%>pj>@g>cyrnde#>3 zuYQ>J$Vm~Fv+Fa?O3y!3aL}GBog)W#l1r!UIE$+Wd~!&+V?%XTG@S|~v64`1ytagu2oMrml7Nr&7mG1?vl~HPWU-NUTk_elV~k8UzLo@8Efv!1q>YDE|2huT;;=( zNI3Ppt56lXQ^gUrx2me)(`&O99n|2kC`B=5F;@&6EM{pAXOvDVsHu5cwe4El88&t?QV)%?yMLn=y7|{-VefDumi%6)5E4@B=bd#?W;<4?DzngEl7u9a0& zHOYKs8ThB{wmV3yf#u;e{(^U2T2!VQ%Ug^DkU`>-@m(`WQ~KQVFk4FV?%g{ylI2~N z4>69qFO_@N@%Ci{)|Xjn#11a!SdeiM4jlx0!$fa)7%*Sq5{^=R5=GZ`&K@a6fKr@D83HwpjyZhso2DK92AyvXHE@h|)^x85US0!_T&3LEcri!ntMp2>ZZ_wE z$b3aJYcD@{k@TTAThcGsyZeoecbif!LeQx0kyXWCLz$cjs`x+^rFT zBF{ay6F%jBe^&qhq7`#vRh7yAzG#A|uxj){T=Qi!Z|AQ7P;Q(nwqHYy3*-K=D;j}Yuum`Xn6No_5e>6s#=4|B4JC4M^smnR1hrSGK;HP0 z`9k;cs^_UTNXkQPpfr{Il^N$-J+=H^WPY9F~rv$G>CGmO;i0Oe-WvMh7om-nYPGr4LBdHHo{VoGEw=cJ*+^MO>9N6b{ zk)uK<<0g7?dCcOccvbV)`S~kosd}waP18si8UOy5`H4Vu2JKU=qV7d1X zmi5hKP=38fr}VqEZ)7^GO;;6&09Zd%$sMti5FBcTp}5qYLgxx7Ii*hc7I2`!c}!WD->*1jFR3z=htmmS56+n2?;!w z3N@c9+Z#Kqce&FQ70%U>-ltDYIhFup%KGAzcXfzFhrTpv$EE&^n>TMhLr;v4Banb5 zh8FXgTxuBGG*fuMdixL4tD}t&NN7X^e5BAIGdufkII}F14YDXqBj>rffo2Mj|73h( zVsII#ceUe+^fCD$X+OnOSg5pg>LB>}XQ}h1fAtJrMJYGvvXTi4Q`e;$+q&mx=%Hzr zCGzD%1+ONdB90hpbl;^_cO0DZm-i>+!-K$p9N1^bcqt!S?H3{}trmaAmwo$o5u~eD zTbx|*%@@JH_$)M(`ingMskCqUn>F&~%VnkyK(2zo!rLEDUpdoH*G>+M0+&$YFWB(8 z<2OB}!gfa1kh~W7h20)R|8g0UBo&y0Kp?4P9tK9nFkzb!kn>gW?%GG7R9S0N(*p_A z$OsLU^p2VY1rP;c2OL1v*Vmuj$Ig`i_07b9N>7#0*_Myj2d1afo&(4Hvy1CC4j)ZA zuI|3J!<{0kZ#UO(dEd6L_8si@YX8gZ>=B_3ZPEZCmyj03>?>wpyUcd-jpXN_LitQU zwKiqdYi%jw&TPpiqvg>oTVZkDn(x@TLE_g2_;#7+=H{$VhT3#qk?IVU`gxwFO$7e$ zUyV=sS2eJH&@ac5AKUf+?o^36Txwt(7!gW~c1EOZWtCRB zK^O!5`x$Z$*kCn*TkobAOU&IxB+WD?&6IY0PstopM}(Y(NFZ6JBsqx`F&#GZJwhI( zCNO;CSpMlN&>e?>rDbJN@euXTg99aZ*?L^u926SkH&%E=1E#sYC9bB4#hQLy^f>J~ zGBN%EG@tlvSZ+^Y{DFHV4uO!4gtYnVCZ%s0Qo#LvtmrlBc{h?RNHp^M>sZKLf-Bbx z8zQ1A-3=sU12wGiy6kOVkmH}fls?E&BZQkJAR{A2p{9$3piY5Uew`~9!5c=6Uf9Bfj9BnM+-Y8U>Q+gMG*rWq#aSOIev7 zXEX@j`yNWZXZf-(@F{J9!rqxTlf1e9oWON23gy?=!L>2Y?=C)>hrf&vNxIzN=d-&)UPaE)%aOPmqODH?>}sxY-bu3z5Jrq?DPHG zp0>}u_^7{#QVG)gwDqRln}^?835gK(e$>dl8$NXY;*%-KEoa8yOgQ4>ml?5d#V#t* zO{TLmQED^KcF?J+z1CtEWYYr36+Au#QJS~fXj5{y!Q;f&cVA4pyOt2j*`LpuI|kC~N2ZXau9}VOwYn&y1>JUA?DRJH$}vqX#sWq8TP{jC$!|2}h8zq~#Q8D;SF4%>Gg<(mmAN(9>O8{rBNB zH1tYDwuy(1?X=L?jg3&1&2`3 z^quYNxF};W&(Fx$H|w&dyVktAvs^>1H{L0%ETpK2`{h%HvQ=(faZ{C%uEU%H0l)K> z-)V3WoJiH;sy0If@*#GrHp~6~<6E~RlNe1)jd>CkKl6j9NVTLDOaI)8<@-756|F3) z7VN46YR(Zh5Scfm>DPQJ#1IUNNH^P$xiPI;q*N1r5~D^!(vA2*0b10!)}|@zlV1Mp z_*ES4UT#sNdfX1%@`sJP>MAn1q#A?-xx-iEclGkfF*%B^UibGNW~PauzxYC;%L9dN zPutP$rm?>*=+G=e0sm>_c{5s?&tZ!cyG;2+d-I=I3ixSrA8 zDVN;SxFsw@<~ef=x>reH?ZDA}s409k6q+${*5YLv!`p&owH#%RT%D{RaF~QSvdu6R z(f)*uev7iGb3*d?vW!+YxY?irs8j9}MXM$bog-a7CVp=x&8CE~%mfze%mJzuE+uw7 zE?V(gPj+)ZGu+~$&eOKL*pGYL&pe2A>gONh(+WtXSZUS_{z;`0#}gA$id;5i7R=j1 z_!xRI1=*Nx}TVyQ<>;o|>E%a|4Y&|djij%! zXYQBhU0(&KW9JS^MBq>>#ymlg6r|tV_icUH} z@#^uNm|WX<+1KgH?rZJ&MeGmdhY5qq<_3`FFKbhz8qCG{jg9p%ZLFa~*9gd8{-EJ{ zdNp!|=>uzYip^b;aT+kXI<2P#^D1g{)>Z=iB{E16m)>y8@J@y9VkM=Lon3-@^@~H# zt=nHcaJw`sflSFqglBK_deaU&_vDXVlU4`{E|{+rhMkz6=Dc~Y*r34t#=ah~I)eNYbkHRj@UuDd@K_MJD%q$<=MJ~NscAjEr z$W&Z(xh7om$7gG!WBJ8zU%i*NRqA;X?Z6@MJStu&%fT9}Jbe(g;1pUfrbtiyO(WJ- zDW+)Znb1nY;69=K?#rLg?%v~^paDmlJ@+C~-}UdJM#m^tS(Ou&4}6p7LQa)*lP6LD zxYAVO!@|Scl7wwaYd%PWcUv;#f?k=L-cEI}u~9NnO_NH5_11x&6_nFHy;k0REC(U+ zt0{#5B_)}eBMJ?wo+>FR-IDc{8Ywbj08(UjR(=(8oPAtgRh2VnW@fg$T674z;yzg` zt#3fPgc>-R5sh*2{Rfk8j-dhLXQUR1>GJR5rvD0oR*I1(0?HyZw59#S+cWvy^dsk2 z?8`r)(f=A+(|`K(XA=8%ZkdIO2yKaFUz(W9lG^3Vm$SC*?Ch}pa#Y!a06jPL zFA%-WeV`)m)%ErD<(<({U3~2-jJJic%06O58zO&#IYS0|zmv@du8Q^)1cm;J_c6s= zOacS-TlNHsTh2j~?a#P8o(BLtB_(Ovx$_dpX=Yg}4&46pkuZQ`fuwrMCV!B;wgt+u z^2^8+1)hZY7=HfcHYG_o%bo$~i~l|v1sVdbr2pMijUgyO0M@L_WR;LO#jK~Bg@ms! z>1I2iyD8+LgBElNG4JBTm*VQr+9MDBT@p9R*7(oFA_6Nvu(6(SK327?#45Y&K4zKF zd8sXV=9x?Yd;Mn&O=EmpL+dl-)oR$IO1;8II~Ef=BGaF>GxoR+l|(wi$E0sIkCo1L zw3@nCO3A9>4n}MZ1f)h&8T0dmN6%;$-C973YmAQ3%8l(jt}|1Tmv^D!2^C|duoF>s zg6XN1WfXrO&w!1p8HyHeo~m0C-5r|6NOPlO$1La)1Q8AZFDslH3O-kFDNt9{5;t{q zVpluWEQ4Jl+Ew9ZG?_5))hAGWqK;ed)7qEABgk3DpO+W!M$)ZJ@Hvhat!N9s*V%iZ z_3cHbpw}gEW{mmeRv0N-yrcb5rvHX5OmVs^2SDGULZhF-x2fW3ntqWcN%o&^;7n+B zKnhMUt!k*JZ#;!#&0Bx3QzxiF;}qo>%t1^{w{SoF2VTy3e(b6^H;Vk03dNnLI3fl z|EMVKljE+8jt!53$mc`!Ordoa`i;;N1sABrurfgx=4PTT^&IoL|7_#M)t(0mFxPT+ zDm?YB=lObX$L+Daicg~6*GnpHC}DtOy-elSwTy40n4yYNLcy@S) z$qIf4e#4t~Cx-wkS*fJe#zTKA<(k=PbT!@@!c=6R$As&q6QTb}phH z>^%t83}CA{5!4(zEqGhswkS2INAGo6B`AQusgblab|q&vkZJ9|l|;*{9ntKAz>3pP z{GV_P}je=uB?FihqPYXv%n?4yN`Yo9RJV}V_zSH4lMbZzKfJL=`t2Jp2NjH+{Qi$&mTL{#1DRwOS2OliQmuukFT_ukWM}5_ z`5JX8)m>)fmKS$^_0(S}Z06=#kt_=I*GYb45)xB>gL41wsHmX^h30sQ0UgDdvyF5Y zWOYFRP_1ZIjWCje%br<$;R2--b$lUo1<;zb{f#FNf{!FO1 zTjJy~600S<|K!l!Ay)JZ zxdTgyEFy@h8yYX^rT=n7(&WbhR4LZB*4D*EXrw?dy64H-SQ$GdqXac6De1Defq?wlscOI%k+URzmxoP$Tef$ZFKKr!qwnj7rTQ$FnO?z(u{+H(0!xuR%i!wstBZB`LS zk|%+ax+`v!GFL{$gBpAN-d{*#DYH{?AR7{@amB?exnn1M&WrRsUi{Nx{I$ zt;b+6SVCGvBo4Mwiy?P}7fxhW44rdQ>^m~FvT7S_{T+yH9}quT=pXX?e|yFXLC z3{5_Tw0`9M1t*Y@Pg>!o^I~_R?a2nJR_ni(bfU;atVJPGZ+Q_dIowD|GA$5;P1 zr>gQcz|uO%ySPvrIItL;q1SI7!u*jOj~%Y%DOX)Id0jg5ePhjcHT?UGEer5K0L?)v z7dOnn6uQB6C+aFUTP(>pgYnZloBkB!^;gy*e!59Vmsm^TVrd}f?6ON;dRTZxI(6*P z>CFjb{|Xvg-4+CB;cPFK;q`(FxjcYBsH)di&ZrV=%-{`FEGq#kO;wHs#?EdweB#cP zNdI_#j&nk%>Zrk$ZRlI#zMhTEM2ely6Z}D5Wxl;-aUEhQi9J0-y)JvPI$+v1`N&Ji zg9u{RA6ZJc-dEw`Q`NFz>-*I~ZXH}p76QJ1KYj2H680L8(wcMTWIl^r%;Tzk0NrWw zmfKm#Rft8r+vi|P(+S`nM*LhTm}$C$2s#Su%c&Ni;1m%utdXpwMyk-gmr8vvczrK5 z#lfrA%45*u`28_WRRgCg7k$Ff_ze|2U38z?#Yb$ercryCX#p!g{xXawP3djhJWQT< zh%zpf3SeYc>`vd`&#wU!Hp6DLj#9jIo`0nsjFOX-x}A*aUg|bkA6?p zVX5qbgMUieTSR)_mm5IpcteiCob2?>4*hcrhA^~x38AxQ2m)sfNJ}UUgj{QjX|Ba% z@|=20fcb0b-C^-r_CI)Ud#BdyHkC%;Zma(h9pt5@c&Gx?2Cbr% zg5GiSk#n?keY%GLztlc<4WPk2pJ{x0FYC!x0`9ugAdUEJ`FX#?2|&XJ!--J;2RQt! zulu||0sz}yIjPbwZd$oa1p~72`_KkFulI!EwioUwVLQjrY9kY76CZdVhgqL~K`9X! z&cvybWw9^a_voc1Q`?;x?PGVX`o)0R1GI_uObHi=(|%&pOVjRbM3ASU~ z=s@;FJEX8!4nQPg6x^mhqvg@~S-sS{UL3`=u=nlz%yV1~%51|obPBrIY+RlmM5@Z9 z?z$-SEP>Mk@-ilC@$N(K4TNjSR(@o#&nAQUv$s;h zxnK{VP(Q+aAxyhFfajuFp5%Asn@{aChNbnIP|mpxqW&Qk8TKW zWNwkD6QzZ8`EX6bt{NydqbDgZ@3|tAONvG$ze~9XblWx%wcV}q;yN^=U=$*LE06NE z8{EjN^Rxvu^MP{$3tp^phqF!P>8?6~=NQJ_O_`WCbr{|A^0o(=#%<&BR^KTOw492!#h6w7RE)Rj6Xe*Gp`ynsmga$v5N(F{6Jt4Z*!Sbl#) zD+6JeFt(SH@KQRhSLH>`6SwCwL%JEF+&^WdMx`4b5p;@pr_Vxx)Ji=9x$=3SFtE~` z1Y^K-`8RwZO!0C5n6ruJz1%F4!}niSm%){f?}mSs8b$dae};m^HNzzVJGplCQQ`@7 z8gdz{bibXH2-gf!uB#d{s+#$}#A95xf)@aM4Za4`bD0j!?{EK|t29``LKVB%ez_4n z%fO217c~DS@X&H+5}6+G;DmTMc8~Sx%_G;mKabk4??hQ?To*Z=W13{(El~{UjSd>s zD7SKvd={L`%t5>Ij42Jdp6Qr(MLMA2Q+z@C8=mXa8k4Z7M=gNF%NZ8_TgPV-;5Wxr z;ektC>Y-WHga?D^Q||BwHLoF4u1ch_MN61IBtU0=9eT=f{%UNTacxl%S9gM>;9*(_ zx;9fnH+LL%$n{;{QkA+BnM0^cx>Jy}QeU~A8ib)fc`(0L(7+9xD$@v(My)vZ+$~nt zfUkvmC`M9+8QhlKp8mux4N^$+4YvE<+-@B*F%O~uASz{FtdF&ho z>9ln^EoTAYP`1b!E{V(>zH6)sn*tdW@9&+_8okf|51q^ZKW_VX%xC4#KmQ50Il(T& zP2HCbYsrGjep%4yqL2Q{EMC#3=K6(_NpYUkUR`i;4Bgq8l{XIsKxfR>gJ{4@I5-Ts z15n1$*MOJ3TO`e9igaP_vWsQc>6())emV&|IJy22C{g<4TKh?txqOg4&@eFw;8I^; z30qqmua8DLVVriQXE=tWcPd~?4%!a{PcVFOxR=ZexXmcS;?C@=lsaL; zq(N_nSie3MS9pd&6SB{|AVU-vwUM=CW-$4`IM)EXkSyU&DBXt*m)bAjpU-yO%>~b% ztn7{dE`Tk}^w0@K1jg&9r2&8`tPwiHqe(MOY~_zsT`VSgLw=aO=rpSZ9QK~lXTy5) zNA0%|JUq66}0+0D=%hfZ06oRYU2erO9RULCfJ94w3k4iKEB58A30LzX{@@4RWUq`E_t7F$qi| z?Ko8~<63)@E@xk9U_1+p;7%>cO=-9Nxbc1bLr(w1RYr8>uX_}@(^$G{-5*25<(5B$ zhu7PEydyC-f=Z{56Om4p4j47)^$^iq=OqVX9^xa;tXw{ZkgtKtfUWCkh>@{G*bYNStW4D?nB>;Dr_X4NMM=bUt@c_uP zN2+Dp4hBq3YR^C7AVR18iWQR7i(=<*5=KP>>hi ztJ}2Z&dwMU!bV8R?)}zp=ny7>2ZGBd)^yV=fbQ+=mA~!0IcVqjt&ux989dQ=^r(J= z(QNEi5Aeq%g%d^f>v!(Ax1m%i&rK{>8;OuYtUHQ3to>eOq6u0u@?Z{S6DCWTEd5YM z=n@fZ+y&>%SxzIeQb{fEo~(^2KM*@*e)7Y;K7yFOKB7ZU96xN1ty$H{rdl{Ju)XR{ zCP3y3*7IJjifi?V7Kmmv@f7DFX3zGbf6AQiO+8t5zgED87u<<0_P*=GO}Lz0?3|sM z$?D^S0i%*(y*UBY?J0EmCf{=mE4>#hK3Hdhs7X*|ReD$CCclVh zxp-vFVSvVfI(?13b{gK=<}#sk>!vJgr2n?c*(A9clO_f+6XE-75Q((s>_r|u!J~(b z4Lr&DIA$ivtBr?2?4>nPHYg{nqjYAliipmtnLAPC7QPEzR`UVk+^pJKxslHG{30kJ z_2~P--FU+&Sdn3kfR9n7tsY)NqoYr6Hap%}(Zs~}U}48q<{h1X_mP41-ryq&P##z} zOh<*Cd)cvK3xRM8`wOI7;Jcr}ebvm2AFtEg$^fa~Kg1OfJ46BJJ|YZ)U6lxtCFREE zk?pcI79h;GpPUUrgbX4nV#%WCVXK%al7NVnxKR$|^F~ z4ohknR%2A3kJ#1`ggHwqNDQA5u*C+mC_@Adu`Aoo(MI0jXwlrx@lds*l~HzzhPXOj z>9K|qDPBBMlGo#}MxOdD-s9(S>qf8Oklc z3pq$GKN91z+xC$SQ(`jhQ1WU!+C(~h@aU2KxSvxTzDs2ry1NPyAFuNL3~iW27NwUC zJ3z2?bqJB&;8^|<*cYdil1_;82}F&SEcREP*ov#hTiOJrer2-Y+GAG@Z&TtG_5HA4 zfgy+`=k51Ga;M-1A#h#C0ng*Fz)iqwbAGKphq}?l+~>An348aPs#Ls+$`0;=zw)t6 zk!NN}Tdva^c|)(|aIu7*-jS_^E}Ldz{Pf(gfcNV2SbBth);4I-z&uh8v#}LJE-{0bXy1BsXpXJu%(puDIwoG z0Q5b*Tb6I;Ijnc|li4Jkh^NW{q7kn5rG>KxnzS$eJ$=v?GH2vabdC!`%pAlHLGp(_ z9bn1LtgaF#pL7`n!*!RWK}?~2lVGmoB6q$G!qAMZSCQ0BQ8uc$9EJ_93!eLfOM=;} zMPVI0jvSj3d;MQ4Dk`82_~GK`6AaUvf#t_XeMIkZ?E>8wgIfy+ZU=`ed+dOlvdYlUYCxg^W9--Ll_?2H@xF_fYvdhN75Kn ztVjsR$)`t@-lS-*+?nd z;TMCodAl`&6OKDb=Qa{n7zK_g!B}dzQ3nQ7CF(JG0LTVhgL@Pu)3sk#$I38%_ANVpT(Q( z`bXqU7~v~TR8UC7NYVy-9PM86N$Q=SDO`~cpdv!KJe?*+{lpxJI5-0_C>9%tEDF^j zg0i2vs*lR@-jgi(OngKI`g_EomId)_QE=~R&sTjoWebKqGj{4Iza+OD)N6Y*%=O80 zYZ<}6og|2i>&;NFg4%yAep=zQQa3i_5WQZe?MjhauOefstHPLCpAGM^KF(rM8h9r< zVp|sT)O=2=BZ#x^pmwy{USm@2=%pP8k7t3019y~sX^MMai!^f$H%#Nm-C9cKmWlUF zs|Pkaem1*6`d|!jdnhSYa&OO>PL>`JZYl+m)ZqoOQ)rW~2hW*~N4InrIZs6H;^^Bo zmTgP8@rQV0nd{B69vp;~pja;f;!&Q`7og1FXz-vzZXT9P^eDBJITDa5!P0J zIZ+DhBAOQ4F36R{T2BlG-pl?89XQB>PhsI>-9uXs&~0Q6;qr)$huKInhZLVT(a0q+ zAH2&r;0TJTtcU+t8P2yk+iL0h%+cUx=%B(SC*%3%*eP!#Ec%<94<;|t3qr`c^@V#p;Obkg!wl$him4~@8|c4aeqs>a-BZGbsUjfBz zkW6%-2z=vMnf~$QQNHt(BvhzHhr`gS|8Q|da_-~BC;Jht{w{0f>NhnE9L&wuy5GgG zP3EX?;Ih^8Ir|(>K_@2 zt1RoN%Exr5$wF9c>O7<>2|@8+%=KDaiMyJHgpCs09;sZWA}$E14qIC-o@&4G&HTXU zr*9Hi2ZrfBI6z`HA;G-T(U%QGbkc(T-HU@o35!)`Bd!*RH}heRt5tnj4J!F}XS z{3GRH>Dd7xkB;WF(svPU$IE;U*YBctit5sXK`kYEHAJd8Q|xDF>=@$B0=^H><+I0H z>;65C*u1p;%)#M5M!yTq*ASd@%w`v9;dy!E!p>i^J(_7JMneGn`7X5zPIbXo(3o&Y zq~RqtQ_X%!KVlc=){86mt}8(k`F%`aC&x=oEoi!l`9;i?YZF9sA(;NKoW-$?c1z!p z=0e7NK5yMU-wjJ`3+HSm0Tc%;XIv5`BGJb&t>Ge47K=70!ChpnCaO-#{$QLO zJIm}Xq;C+yzCXj;M$QYFNy7t#aYty%m&8wZB*V8Zj92IIVV;P7e6^$WG*j^xa9u44FW0JLT(N>m^mS} zhd+tS0Get}6cW=D%M>>fBt<^mW}*^AlsL*|80?>4VGtRnWEasX?SCzis$>mnURPe| z$jMOzg|}+x-4tSkD=zm;DuKJZVe-li-qnd!^$Xlqb@Ne5h&beayTKXEsql51)2%<2 z;{~8%d;wjA31q)jcSM9rl_P?p&B%&LgRY3HswApi$Zk|%Z*bD!#S!})QpR0EKVH6` zSk?CG7~DJLTcQ&Ep6hUql{-6fX4B3gkAB0Z^^RPKiX45~Bm*WtU%|O3ttLlS#ze{= z3xb%SuIk+RsHDenyVhNUgzVEg2TQKSA$#082hjY$3A&25e znzuMNRueN(s_){)^@X(7kF#I)QOXLhxu5uLPxq?A5b{$8H)q-c*w^7;`UUwj>qui*S2WBfZZX$e;*$(n?W(?tFpW9KH z^>H%n*N4WK0?UbfLjdlogb)Vdkb~PlP?;=9^qTCkD}=ibrQ2Dwo7Ao z#sZ&o1tL>64k&Vrp7izIFmdZp&05zICDwTi2OZ9RfovsJFU86-@-h=2swl>?dG}#NJclaSC`KTz8JkQ5T7MU}nDYc(i?N0v(Wp|>P$@5jV zFj`ELDsij~YimSRR4%=hp-vISMrqJC`OM4kc-$w^i;LFm)?d}TJ%I?$J~V+|EdVvYgyWpF<23H-v6|Z5S$xa zt=Y-&;nz38K%vL>N1a=Wswq_K425`Qig64S zqbMuk5sAH)=&{+RWG1f?=fvk`h|9I2MWOaPB+DWf+NyWP!R))$;()ymUarU{v6$Me zmgdNdJ}0JQ-j#Q&Zg0H0d>0gac-%Zo*Hc_i_5*d)gUVVzL=k<*0|NsQ+PtS5MO8I0 zAXCb4Y&h9W1Dj^Q|IB61)zP`u!aj)GS+=J^X{04ax+n^V*0HQ76t>21Z>=3~c^oHO z=)8k+P|DEnu{Q)15tQ|ZAe%lamrd#Q+@I7t)^Zr_!b!PNvh;B1K(m$6xK{aH7-VO3 za`=OIGIkd8_LV`yMqvqltE%;hZ0t^`r%DQb21PRg328iBb7(6i4w5giRx-)mg~!mAiopdMji z%t+8Q)H1U90vjg#E2O1%Jp#^ZC8mDK{C@g!+cQb{9oLsojs3gJf5c$E4pekDr*^lc zMo{miJbRQl4&Zpr;W!3}@WjUV>JsbZCtfw;#Xy!CqXting5;eSxVEoDyXno31Mi{} z!PAWC`&*j0mw|J+a;@>$g7_J(cR^hyL})p@Zzc!2*VMQjtp4B)gjiI*bflbp$icJ^ zZk_8*6m5{<>0?79z8g$m-@BFiMMhbh7V7b*V{2_(E?CWcMx|?J!pyW2Qv(DvI&f_i z-=##!TruHEYw9i*118|xDA(5qY@QFWyeQmt>~?B?=Q=Hq$qffc^E}Qp3UJC4=^AaP zB~M$WY+H<03(`S3$Tjk&j-E;FP4+G$>&L3gs*kTbT8?W$drzo}K566OK?}1r?~NLd zF9U5Ij$JHjrAAEC-4Vc%>TGW0_;^w!^U+T-t1h5WdOdVu3*fXCR?vx-3p1Ve;S<54 zvzk<|M76Ia>QNai`s$BwH2S(07<#Hq`jo?%I==6>p`@Zxt$VqR<=-eUcIH+j_+dOfcoTy ze-ACZZo~I}+sgBe(W1SU756Dd)w_q2qYUYuHcI7{Qdg3BeRU>}HIFUDY3in<*U-G| zYnE-LOagtr+XEiE43I1AggFe&gz3>{+Qe*-q(g`xZCG344S?UJa-aIdBa0q7IdiFUS<5ewf zEX|B;A@!P^uOt{{6D)B~Goux-aZ85h$hR5GpurBaC$fJ?CV1^uST!+PO() zX2XioqqH<$71p8ZqqwERXEs=-0?Fw^Sz5EkQLRf7r7B7yZPF%3&&t{0&mSeuV(+8f z%_s5ev;1Z6?7bn_f~e#}0#)0}mYXy-Tj=#Zh(?IIPn@GIeSNOepi#QRF(=YHkczg7 z*EetiW$4p0&796~*t%3Jp%-r_$+-t#3|WOmryqvxYj1f*%^)_$sJlurps7Rq&?>g{ znay?V;ugA&?Lr!T2-1#d?Tuya3Z7u|A4<+IQpr7@bnwoUF`zP~~{$J!NlgUHH7 z6?lK5NEhpjWk5+tcQu^^W$S)88WU1+-rTU=F9FVOGH!7RFfuY)Ndf^A<4&A9MamNZ zJuw*9rz0DqG!B|rSO*T_TXjV=BScVp8hE}`PuBx(lMq^CZ+@oZ*EY=(_jFLWhFSb~ z4--dob6ndf?gyb@lvp$2(YIYf%&c(L0nYZJ_EB?rPuWYbX&!_C4BQfxc20b(RCx<# zlw9g_cVeCRT0HBktLNla1*X-=A)k<<1Gj|jJ*waTsS;gp=@cf@Je+=DFGZYv=cu9O zc$7Hm(f8U>7IL+5JG`yJN+yMRlK9l2UWQ{Wojb%e{X?-Y1_htUkJnPzJ2*ytbQjW1 zPuoMv>QyxU1I52vRj;>z5WKyQqh-OpNG?&CX?5#NUMP3*0mA78mWi_x9eyhmP1xyj zgqjQWmdh}6=kw-Sb(Cf;OjL03Hi)8BZB~QJ!y>An@Dno`nggUam@k0569I}qp=jJz-(r=p zkv$3-*&jhGxn@;D4gx%;Bo&cPEc(`a8ctM&dd`HrdFK6fb8I$BU%Q^?s(a&``}&JN z`zU`qq+GI~|KT~4erNFqgYO=1%l_!HM{C^PlPIxNJbY#r(TNGh#w!h4wMXe{(GmD? zk8)oT->(aB`r^^S#EEOHL?kV1Z_3BsVuDqG*^J+ArK`HJ8i_w{d zzZ{-Dt9TNVby~;hXY-dw=L3FOg@1}O{49Co$+>cc%RJn+6He+*{SBNye14zbev7JS z;^Q;gUI+6|`%htdb#4Bcrk>QL(~HVi{F0xt$InOZN7{a;=wo3^)-Rv;>vhT9Pt(2L z*I#9>?*4tI{8kKjmRHQ!d75GStJjBg?i#Q~{Mc6+pI!6W{>;AG^7xPQPi_A961+ab z=j|Tgx?-_qpD#MMElpMYIw2EyWI=?_r+G$;>rLl;11`;;d6(ZUPXF1X>!r)~W@C*MzdQV#BNhPCN1C!AYh u$!6jm_d4h2r>8fCKyefUU-K>c@jr8_MW&;XjOs>^gFIdRT-G@yGywpP_k8vM literal 24748 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

    lGfMBK#q3*P4{Izw3s!( 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 literal 25688 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 diff --git a/img/3_guide/ch3_guide_mat_ui_build.png b/img/3_guide/ch3_guide_mat_ui_build.png index 13a9b7afae3c2dfa81ec6b8a8e3a16527c3b4235..bcb1605d96af485edeccbf208bd857e9a4208d44 100755 GIT binary patch literal 172575 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

    yJLG7_tRsd7EH}g8o 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

    OEl+@`JV-;;o}H zW9VIU7iJgniw$dQVEU>*>S*5&+tupJJ1kuyS3}Xe=JLJ3Wu&;bNcQQROjGfQ zE8v`zfKS$7>oy0ZkqBi_w-H>YGu-v(YvKbAw}6vlHR#^tH{&`l*H}qvxYE$Kn;xFSGa^?{ z$SdW0<~<(;K9j899kp99X>;~f(DNyR%tx=d!bNV|#Fe2vy2voM@w0XELl)LS4f1S_ zNaXEninXS0=q$ZMnYnuQOLX^-@b*hpz2FTWtD$K(M%>&ldCnENeN(t*o!G~FXykTw zmLN;Zjsb0~bj_{#k_F6XO(`ME7jWpGrOXFH9=n)G%#kei>^hr%u(Yr2Z@Tq62)1DG zkM5IvvP1^{V8n{4n^_S>fv;>yB(@z+2+8KguZgRgPB_dP00HyC3MFeTv?5|F@u$zQ z@;jSGhCePe6K820Gd_0wQGAUM9JvMz?>j*+ZPRNfd`&p?o6j=s$P!`k_((H~H4Wkw zLr?(aT}rQ{R2u4_kr+382uxb6E=H(XrMtRaW?mkfmODs+-vrz>li~yn>VY z0Iz~O(gleKac2st`y9DOCv=rjNxQGkrBoua@+Hr5;rxO!y&nd+sR-BO6!nHC!wd$DH1UrcuDIO zTM8@!SNi*`lBMj6(~f}=7=gXR?z_Z9hRZmnpQMz9)-K%DWv^ONyYueaf+9-L=|`v6 zH&R&9k!w>FMUL$|aEbs-ZYrGF}BWHiF%NQXC<^IGTy%?cg-vz68lQvGvP&H zF1OOuJ0)B@5NV0NOnnL8s;uP9G+4$k-TQ%h?Z5XFOp^Ne0V$R3o*c|PP~pY@#n^jB zHT89C-$4XLKtvFbNU_kQ*C;I@ic~?6A{`Nt7J4tCC{{q}MVfRF5a~6b(yO#c2?6OP zgc1k@k~};9@B2Q_dCwTndG`ky102aNYp*reoWFTp`{x4w7_SXipny^#>?t3DGjH@7vu+*(3F&ioec!K?eb9@85i}7DpuOsHU~!xm^EW{FJP-u6 zr57rn71PL|EQ+<)gJmlh@yliOy3UO$PBTT{Zz6x%WHiYGMOl95$-!;8L)4(nbw8OB z<=@C}M^5-onpdjv$&L;q!I(7b<<0^fKE{XmPBIEkRlfmY)y3g$mX` zZjEh=zoUtQj@lP3kn8Y>if86$&2n3%_ zkq(V~4+!;SZ^yI<64$*9u)?J6%Wm;j$INS=)AL#M@aUjoLjorGBoxFU79p_Zs^))p zAw*YX_Cu>3@fo7BDX3~<`Z?9;cBZ^u>T=z2^kQoycasGfYYTthy4Bi53~9>qpQ zE!d2nx!H08Mv(KW^5_wB`w1F_Iv)nfpUAD1rjHf^J_^Sc@(F(3eIwQf42ia3ItTW{ zDyTw%<7kwoZ@AzRy>~^>$jVClz32KviYKh@CE2wBs#(ep#=NY3_A)Lw0T=zE~>JjVroE~&vxk;zln1KPO0s5dwa6_*rTbSl>xc< zM+p04#wQib`u%4)RBV;-Tx*ljutL2g zMwL1k$~iy1jtb^0;h`(T=MXj5-`cK3xTbUNDNAOX*7SAIKfiC6sHLr)+fB$rW^;mgS!V-VXRm#me>JWc041hFsn#y~r*Js^W zr_FH(v$sX1Fb;%)w(Ly6e(6_rVW>`^fr*1Mac#j<_gmFLg{oZ9OE*rEcvjM^DZ+l< z^eFYAG_--cW}u;;J*k?@j=ca?J@d^yjm&xg>OfXG`94WsfM`276k*r7$gf?s43&G7 z8!o}0DB3^~$1O}ljD>=DXj`bv>Z|oRaa

    1^XpkgCgQap?}+*u?CDJI=&lolWk{6 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≺B&G{=LichD=3wp(&00L(42@88NbGt^3Z6ycgd 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

    aKyHt>C7jpCCO@JSl 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 F1OUJ(ZvX%Q diff --git a/img/3_guide/ch3_guide_mat_ui_lib.png b/img/3_guide/ch3_guide_mat_ui_lib.png index b6b42e4d7ac9acacc30b770858f75e31398a5b8a..da57460d3398c44b395707c60dc87516377c3932 100755 GIT binary patch literal 153433 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

    o4goIb&L>0to`{_*?_Hz4DRocZ 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ÅH<_* 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

  • rP{q@YKKl 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

    Q>x8e6D)_x5thp^#HwW$cM*RKs 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 QP5MCfndZ}CMf1S_2O@)sK>z>% literal 41397 zcmZ^~2UwHY7A~w~0YyQ>jHrMS2%^#yq!hB1@0RJFJ^SE$_Wb6|dk}c#YUF4L@MEvHsqW1^Wj!Jbz#sdaZy4R!v!^nKZ^!-s z@b{r-dY0aM_V9n+{odQ=`QCBQo@@jCTQ~0c+tS&5O;;>!Cipz{Bc(DErUy4R&s~-Z z&;&1R&niww~F(7wK9cb z35%1b(DhNgW#--4WcybQmuRJ2+`ZCT*HS9*Rc325vCP;)W|kG*FP3Y@ z1tNp)Z)o__-Rz1vU*(&1o2mE9#lw!>9xulr2bwn)JIdc;)RTLT;`c9%P z7OMQuze)Cx=-7*eLb?};Hhvk~>z-U+W;vJHYMv+2cD7BtEfG4@(y+5iNQhU}cC<5P z>HR&Z$sx$nY?|jeN8bf$xVYNHX4J%cTkbZ|>gYxARgC9$zUOI(S5?nG@aBgMkkp9K zNCDzY;;uoC$)WhTk%DqOa*T+~kZbj9zuZxo7kyPIF4uGOmFJyu|1Z+k)8-&UyOAf zUmP+4d0SRucl{UC^+ZyT+j?XNFzW#`()rrwiza`W)vBuA3BRD#zgl;vKurej zjx?WzJ31$9Paf7UT7)i0!0i}Hb~zd=Xp;vs`rpOi(V`gDtIAiu4pg=UbUB>K;f%Gi z{5qV@9y1LjBhDd?s+zUUbs-8`PexrZ^___Bk;3Hl zIg?UouFD>`QwCN_1EYDx;IkLt$ASyRPpQhg(&;+u(GA^4IHY zt;pFt%BU`Ev{wNgG>~&9FNC3j>Mt^m{sUHUEs1NxDxD=gj+#!vk*oS&O4BIlM{XI0 zgOrMG)Lr63@5$*qq9U2^)3rJ;cUI>2JSS{1<_0%{dp97-N*z9WJ>dJSItOcOoOB&s$Uk~ zGH;D6gbrgiee}sES%2c`J~!=MD3~uZ-uk6koeF5yU*(&JnP22Xz5^DwfGp^SvZg`< zXx`*BUjnkSxc-?~i5cOIbi%_qpYKJV>2{y!uG1%H9+=I2m^mKf9~Ri-ota=g1Yx|Q z8(JHD*a{S}}8J5FX}T!1&lKG2ZtR@T(co04=&Rx2>&_<5C5f=wXeUicr^ ztt=ELc&*GVnyy`L9mQCmrPg}|rnqZS*B}HT9a+r%6db3kg+vc)do#>6zp9`!9bnY$ zjZU7Sl=s)#Cga&Z1-KP~-y>`t|0sxf4#M7RKQdx|Mc%?}a!Na=28@I+aPM0@qd6bu*@w46uZUb$( zJ%V6E%~L#cBuk3aPR8+dMnpCohc?=Ayi$zm$(gO6I0?1lbJ*Udvii9TDs(9+_-aIy zSCGA?G6WuITf59TKU#&jQl%M^vbo-Q&8y36ab;_s%dT1z4*1#Oy&KKjl~Qm*XJY_* zjdcbrmRs_M78%E*_}FJ@zTH~BX=Vk{{yHK+^AemGD+#(wob*&_j=EbnW)Q-q#8sH9 zcTBzS(}l1Ry6WKXO-=}Gbkeb^PxQo;E&WM-J?kvos~*2f>@(OciYckPTgpv4^RouS z3+@?K&0OVRuIeyEj z3tIaqFRZIT+f@sT^uSi>q>$ljBRpKF+R&C>x79-|c*Ac` zj<-R3m%ERiXdIr3eHD=Phged3hxvNpA;?BxXYoxceJSTc~2974w4{a~4cZGOTs+PTu z6gq{)f*i`knqNMS)ytdR>W~FHkl;fX5;7;|)Zoo6Di+R3^fm@&P}E6sLBdfpA-VoC zMW@A-P>v8HE0iH?aG)a1@_$rp_ZPgYt_8h4()>U)*PORlGTD z;#1-(Z=hZWb)ALh>Y9Q!x+iwJsj{8{5%*ISEZ5tb8)F@kz0b~33Qdr%vObc!(OU5j zb$Bnx>iiaHn0_lJM1KN*_?{$h_LT>5-(B{9Yd;#gf6HTtly~`VU_KUd0C~~F5>-cDoORzikMn*Oz^Y>F6ywJ2!QGo%J+kKF6nOTiF}X~ zql3`9U~M)nR9AERyPil_Y70mxSN8kD zRx{ecCpGR#bCHvLQq*Vdfrje{_`p_Fg)_f%6-D$NBVxx8sY^z%SN;c-Lgf_j3Vpb6=w`ecA@1rsgdC&gmM_ zH@}UFCiYxH_uq_bK$yhzr5u)wGT8)y_|R#}OdKLA@|IKbAgYf%+kktoFIs4&d^OMo^IyLJ9T+?|0w3g2yrqO>fnsC5*Ky@PU=mvSuJsxmO%aUUC(eY4`L zRVe(7zlg1bc*7VSkMZ4Fd!3eO2nLt*KtX=K!DS)vg>*G@XS7#;u3?B{$|55U3YJwv zK^QE(ew^2!9}*(R58}!D*9Mh{!B5CuFn_oYUNXXK4(Tt7REYV`` zK#p9;A0Q!~U$$>3x&E*1jl*9D>q6XiKEYk0(|1w$BiS!32wRz-6> zT04tH?NDU$t*m^69*I|#RU_cv9hcOXFf=!aj-fiuMfYx(`;DV9yp9i)Ej6U!zTl?s zTF3jn+uFth8@77~R<5F25=JU^R*`mfqMkN>B6Desd~cs|Oqxk-y^$Dkh`OUBWM#NL zdW4;==n>m;lNLJCv)s_XK4fo8@3C!dn&y$yxw+xYQ`4JG>yEVt`2|uktWm!cuEcK# z3i6^+l`E3(Z%%B_W4;JUqHvzCb4wY&EnFg%3h(sM*GJmk_nhViZ{tZWydm$k z>)QM%Iu5aTw4Tp6)CE$2QIti-&8u$lVwexg-5N_*Gk5mG2|Egf0e7J^JH!N!yKe6W zu@EB$*CRiDGM(}lP@TN0klxxa5$9Y^y)Zav=L7Af~-6=Y~I!L)X4agzdBoU_od&iCZ| z<9NJ7-_764iPfB>4de&kHRYYVxPXIb((mirvYOBS2)={y7x**jIz(@tTvr?eV4SB5wt*u>Vl#6R=&ix?FF{Ss}?FRxv zu~2G6@Up`Tjok><5H)?L{TZCJDyZM_gIQG5$#MeCB+QhA4VjMCYKk(;am!lRsRHjb zmM{cnwz<5op-lsxLM1oSTALHzEj^oeA-eoUEymD;+V-Q}elGtWzp=J%6<9{srsunj z92va_j#agzD0ti|Gb+`2I^>2GEBu@V#@<*y{r-zgzlI=fu<_f&UfRY%;`e|{R%olJ z`sby3>d4OSWUhmmd;lvV@1%Q^s>6YFhV znm5o5Nb=QAd-w;W$IYQZ`SBdjr~J7*$HJVW=jtYc^}biyKDKHeN;{+{a-By@(zuW9 zM~R%SN&a#(A$6%bQ@=t$SJyVhCm?}CSY@&Zt|cAr0?2<{1oL5cUFv{{`!J zHR9w?wMhb0xB)u57c}QUisFtDZ0Ua~*IuknR&BMBagkUW@{~0hsS@?5sO_@RoPoCm zqCLdmM|bC?0cp={KM zN8mK9#iK}ofl=*0M_upBiMoQ_POTe~OB>b6KYGxsF1R^RGpJleAXfEH{=XAVy;0oK z**E;yG*76?_BF8Fz~gqk^gD!XqyGL;!`S-Q*9XEf>7A`J3fqIr4Yh?DT_%*KInAeb zn0vy9U{g$8{HN{P-c(#!O51{6KyvpmZmsKm=A%|G;09ddRGWePdet}HlVFXdNoq^= zpD}xe<@7`@$m)qC9`xYJ|I-(1G%NLh^wx}WhCQ$Ad7m=A`Bmk;MKjfwdeoDbA>6vs zT(|#&?+wZ>UU+-usoJFjHH{uG@E$LW(Tyu#g|QdmD&w0v%#mIL9*M4EJ2rBVyNAT{ zU&*)b5D0t7*MMTnSxqh!YMv(yFp1#-qy1;zPY?B!k-Z4AbtnE@x&G@EYUeZVLX2Ao z7;zQNHnYrCRpzu5H|IvfYUj&R$(O;uJ>pm3IFOjh7qBabp0i&(os+-Cys*zICkEfa z4O=vgRXu;`U)kFO-8h@-HXxY!b3X#0$wsaoOu=mRWzQ3&?JkfSp4_qB>MXF}&i#bQ z#nzH{j+j>*RNSX@=0`r&X-XMxKZtZE7uWl;oyTnV5!Y~vt5CDvlH=R!d(Z-Xfn2J9n4(kmXXROI$w1)q}kF?FQ;0oeW z;}EG2dg+3-58nI8#^JAa7#tn~p$Ral6Y6TEQ^W&SyNIA5ExD2p+lf2{A_Z%lE$TdnZ^s`_P#zzopF=#KAWbpJ40mr@4+7s==N8|ZH- zul`1tU8a=u^GXR(cN(1HhsrH+fe_ftJfXKbZsj-ZZCrj4d8p zm+9gye6=i^e#7%u$D{yI_|iecbd0~rv!Vq-^~yt*BabtL)#M)6vF>D^dm?r z=Y9vtjxV`BN>m7>au9G2Z-&c1*wI*@OtbZS*fGp^aAvSPq@nb{qieh4g1F|^AG^He z>u1A#`3E11VFx;SEo2l|YFOj>9h56}&NzNX{fMnnTdN0g>>Ro1vwaY_6u}! z-X67? z;R|olCY*yR6360I1B^e%W&x*+?nQ>>UL; zms@rhB<#(P@|b#9{d_~KEFtL7?qugd7TNL~eM?LGhjwAQnEJQIr|b!dgjn@5a?85L z!IPgxK?Q0}g>%kVUC@jyvy>jc*ssrh?}-z1ZcRh`&r}Lzxi!c(jn(8vy7kr^<<&Q| z9vq@>+yGmiBlddKWE)}c+w!q~+nwnV+8ZT*XKLc$DZ6V^E@pL0k@Lp2R^uDKon_E> zRaIT=JNiHMZDz$=``|O{wY`@=9D8M$9v~-hB7zz)oQS{gC>bL2R9CW37QUK3sw_co zW7$jEk&T54Y4;IGMps$fjX#_49e!V}=(n(v4H~ei?WzUZNn!`m-W;?+6Sz;E;|2oQ zFUME=jqGP#%CxwP?E|Q-?mLdyadmn4<-xw0PQ2%7`(`7auSw<3j?~v!XSHS1rHYGK zA4u6U{Qf+D&^vdpzqi~i2EQ<89}03NS&g~Bs5=(*CjE*>{lc99dhK6@Z63NDPmHKc zrZCL#r)JHc8QEr(qB)shj!oJs$#q!HdJ9vt5M4iU_EFC?q{rHDhxXRZ57v-k)jGF8 zi;~X3>Ez97`x8HXPDps9W-TSwRsvaa5t3%68zydt3i-~}_THghzOOlF2CkC+^R|J(N)kKwAa`4C$wf^uF7Sfo`_Fe za{c^6F%M%yBOhep%51^taG$RfO@-8NXZ9W|=uur1L4&A1k%G&ks!aXH%LWWlcMFrP zvj-yNEvT*6`cG5@ud?+-P6B5TtpMri;nT3G`>r1DukJZoCg{@@x>|^6HYwZk36SbA zNWV4_;#swHTi7eZC`I05KRQ$n2kG&2Gg6BvlYf{_W)@GKPHKV$+@j-Z!AxcMdgB*P z7|_N`O_liB)d3diw-XS45#Wg6dkoW;tcSPRZF>v(bsofQjMQRs8JTKK=*sp<vwF*N?8a*A@}WkZ zhZGRjv@ZjGdN>8f7e8BjX#S<=QL#%fH$Ed8SiqZonwZtb+fBOM|@-?1AA;N3P z1O?J;@Rq(!PCT)cxBT{oK-#_UN3V`sc&5^(-LF%I;#32&AZNdY{?&Yad8i+!o5CyRFU)VhF zxdKoCJ)tzmxUPqkGPaa~`pWXOWEoV}5Mul^taxj`#EIkwv8IHvnnF(|D~s(CkY1$q zny`gfQ$OLkJ-}@soni3p`#W<5lbI!CTCeq6#iIb65CqKba+h4v-?)r&{ee-DW`bLQ zfPIa>UyvLAAz=9Kc?nHJe1Y3TVgfG1B?&s^^v6f_KGB)5GKWe+Dy~THBYB6ceApg| zcEdk#UNgZ>@8pm2bsY!rO4#2<1H1(WN0xA>O=OGU(#^~4Bg0CZBACrhVJ~ZL!m>F&a!A4o2_EvqurJ84kI}EfD(L4 zu|Ep@*Ej9Hr4v+v{U^Um14;bf4lXdG$Q3?WO2f0)O;W*%XoofWbxn<+%OIXtM$z~K z5{1TPi|v-G7wi7Q2h4z2XLC?rNfc;f-Clr%`wt57F(4xa#Z-_ZxGz7_q7+ zW#EJsK_OmD;?V;J+=|=GcenYH1wcGNJ@TI{UIGBL`+!qlin{RKDg#NgX^B-bTMmjx z#l4=~g1yBrxOlRj59D=?EoU$ZKx#Gu?V|isv^{tL4SuYUwtj=!C7X+o%3}PPsE^ zL3GgPmq9hT4Lj3XuwsH7ei-$G9H;heb2HS9yc+Qb%sD_h(r-~RBfAA{uKX`*Pw__e5sc#x#Df5Klw zAqMFLWuOGo2db=pL)>*+%8t7M<;=Q6Qaiiv<+Bln5cNmf33bR}w3X7ANW2Zwg-wB~ z*59)cm0#{GF25rrYMoo=k9ceuTRfQ8+a9d@zX34xcDcF*w zCmF~D)nt!L4=6QZ0TeSMJ9zE2Gggn4A=<(u6aK2N---WV%RT!-TL zJMEqHKruT2`cjYlbsdZ*IS$3u_iIa7h3^Yw1K4o?JB#q982r&=&CPF@;d7nzr2sd- zeEIhYpNnMWP7G>Dz$;Dx8=cXdTu;^`#~_J9YgwoL7igqUv#Ma%Ad9kl*C3i~;o-`wVs-h*&&c z*|{izj8U_I`Sn`0D9W-T@gJW6wU7@~aw%TDKBF%tp_i4eJC9g4^cafX_~o!j{L|I zw-DNc_BW?=DX$Re$stm5R}M-G!MyBWLQ?IfdSeLw{o>-|zPDa=Il_W8O!G&3uWu`m zj;yO-E|l|+fKd&Z{0Ay*3S#We6{$6%kY@;vOV%FX|Jcg_1TMkPY244}U=MXZ?%chC zYLHQs+J1YHacQ|1G@xk^zhf_`(yB$NLM#{HlN3S3=|KzYM9fK9HI7Hjp{s6alP8vU zEYt$QMaq;3Xi93bK`VPBek^%&*Jv$DuHpm+J>wINcbWVNo%+a|7^VC=?CF4$f&%C^ zD}zIYdjTQnBm-|A6p>O!ZuliFlp(1IvZ;(@A@U5LLWZh^;Gg)9zXNx`?!}{}L)qq{ z_bNEm0i{mk_F@g}?rAhyW`{v^q?~ITRMJ3?1s+#QMKt&ervN25G>X$LT4^b&KjxK4m@QZS)BZ zsyvM`9DD7*ObEF};SBa7?{eSh%N0lA<1Uzf)k}{%xj|9LdGN%Nt#vNYmeE`t8XiOjFxpgcOfd$Sm$N!V6F z-E|4c5UJ=`56Aa-mxd~WHBPs5v_`V*%FW3XzU~cbe(1kY9FQ*&n_H+>PO|$xfKW>O zC;^xF6aUBSmJBZ(_zL`AWX57CesAPnkgmaD5SHINUe%8<3low5Kg`141^Y#yZKw1r zfB@(Q^$l_ktdU-4zEnTOZ}r=w#@))|f8HZJv3ZbLWHDygJbBbUWJ;xl_z#Kr-?`5$|d@g-z+8&&+U<*_r|2O#;K$d3YQ7M1|qvf^@3i+l$o&MZlJx>}-_KMhL zJHE!&uT9vGeuz0g-+EPvE%1ko=6C=nkp-m2|D;8oIMppVtG~!QA|?TyQv(TEJ23}m zI;Dl`Fu(V?T;W-$qE1}z6eOxwc;h5QpYd8+QPxcS!%^>tD+Y5sBbM!&K^C9-g$ zwRcqDC&A3OOE{XGTHD!v1v_XxGGIp9NsV}5l1`9}Fe&YeoXWdt&_U zL*(YK%N50cx+pqQzvSzTsElR0k9F`D9~(>{%YS6YnPXc@h_|t=5&LNs82kb8sYB8E zW5%n5qPf9A32`$cBHhG9mp)|ITO00v)qZ|m{Ge$0i0zm=q7h4Qw6YDtERTL~YP1J{ z)Ges^9?~m-d~Cibp!XN=j}vFV#iB*$>^%IUwWPZb;8(%dg!Hmzx`3_ zA)5O-f!EqBOX8wHPGvOy3-)(v-CfNs(O$o0r<-N&6J9qboNitlyEO05bUT~)NoOcG zeFIu-XAuh&SfK2`%c{`61x!6nep&M0EF}_R>~~hUvj2N?TYWIG<{FSf)N;QE8mg7l zxx-pPG+_!mwDP1J9NzeBB^UBki^CxLrNl~;u<76YQjVFZIdcA-q6ZtbQ^HuY`qz?hI3l+CMjhE$!zvJ zc=S5tO+|r&SRgDs#h5cHnfq&$<0Q-G=!p)M>}7lk|MV(Jurc2o!B@!i5*@1V83=)^ z&D5Q`2p69#jLVrl@p=Agzqpg_Yn}*$hXB)q%_jRSRUR{nscL>T7_CyI)yluv;z)(T z2w`%+#;7C+JEpm=&K5|k@1ayhyXl5sIa?`1vXAOKw_zCT)g7#2<>wRXb?IQJF6Ggc z)bFkj4*u!^LA3PVxaxt@_)C&{WPE%0shzj_zcQnu5SWEtNC9vDL3G+-Z`w2Jx;iZz(k#QExc56E9xSYuWnZ9DS6||p_P>lH1&`2{ z^je9y9TF_JnO0;IxdLU<-cS&LC?_?WRl&zi`T`$4A9#tXNT#HP;B#LU2e? z;72LDw;DdI@I})-pYNcHxiGum*ypzth z4=HMn5ZHZ<>*;4ONBuCEVr^03@w3Kq+^2o93Wr=j`TR)TRJ2rylz+1dkI-O-X4w)O z?nGf`6%!7!tmn%`B;c10TtzFED{)VsFE><~Xtrgyy=X1tLXDbxJ};~>Kg&;@Nuz0% z6N70ur=imFmmdRdh#8xeKTP~e8y!&zMDy^0?*mp@$%}}IHdrh3%(q(2284|0^1hEO z)4$Fvi)p1~;E_Kg!1pu}43k375SmJ{xAWY9Knslr(K54Wwbs zAQsu)B=nNiKZn#h$7Wnz4{CSqGN8bA7Ne-oJyCB1hm8cx%6HbJ2kCaWF}b_cp+?X9 ztt{u(;+IP|JW;W@1wNG#$xF_$^#`|1vDU$4?orO=MDJ^?b|}cXrN&NnWBi9Xz}2n^ zKVExMFxLqgbc#@$E111zprS$~eagGdr=uC@?F#Y-UdnJ4Rw zy`-pZQ(sejGJCu^;{zrg+m_*|SS>#KddbaHWy=T-X=AFWMvQVJ{z^p&J% z{pY9eAZ$rs7Y{fG;2Ml)JjUWYd2D3Z#@1u`&C1y%J@U}eKJ&HUu}2_Qq75-o$xc~? zK+7L3(#^LK4Y?ZgNbUYZmIG8ZFlFL0pt9S5=dDZ02$p$%W5lc30nE|ukEZDUau2S$ z%)_PDuQ_&Q?#;&4PKv~sM^-B#BioI(j8YnAOANB1Q8w|JwqaA)dLa$BH7&Zm)uvO2F!hD)wNvabD4Qf+5Rcg% zuSRLMlBN=!VKK}4Dg#*(()h_oy}KNc7(%w7>~F}cf+}sp3j!lvx3aq+_vbR4kiML$zXly=CcqrBzQxPDRyfWJV~ z=%2pwO+ZC4qCy2<2q2Yuy6IaZ=GWtHK#XTQG%e?v?dAjH+PonCjQDtq%SCues@=oz zlFp5|?LYAz$6Q*2|GaeZ*8&XKKEuJ*@QJl&%mmb00u>GRe+LaFWd|<4Y@@2$M- ze(9JvQOxO-J5AR)%=QL>zU`gj_xUcGD};FqYsZgpJnM0u2YovV#C}I|H^ot z07>n9oa0_c5=OA|%U?yCH{M6zt^1k9JArMclLor6W9~%T7hKWYi_h=5+;GDTPH+#+ z`W+(1FWhEtH|j8bZc;98YV>*iZ=I(MjJuS@F5^`1jcMMhq&8!f!nm? zRzR~2uJtD}cjkZV%@T;QfB)QgZpfwp>H%tk9zM?0qH>#lqKdLwwhG*y2jLsR+2aUW zqx*uo&V+HtMjU3hC-o~ zr;RxC{}mKGxd7jT1n5^tK1MY_>+k26d|%-AIzF(YklPE6Vk6u;L8D40g< z_>YEM%TM)FScvJ!MHT+OzVBBLqw(s(=uk^VYf2X{d5OI(1;Y0JYVEGV2sp|ypSDo@ zHEyh_a86HFzeDuxus{A3z=dOvEeQS z;Q)R)JzI_!1*@#CcLas=SXV z$TIS#noeM?3kMp(ch&2y3gySj1{zyhsaw~&WoS_g$G~Uu!w5dnarISz`eVPW^X!5A zDU^xagA);hRSWq&Yx6eRO&)HM3Y0mMxy~B_ziz171-Rb?5__UHLcT@y*j1@#u$Dw& zeChHXYUxDD0GRV^@blK8JQznmZ+zu!UQf>j1S{MH;9&w{fP+QHk=Te z|LSc(*1%Jt{ofUv${3i{!st=kXAkf;q!+t2zUIbxW~S~1W=obC)uhavYF2)STJ32{ z)#92L&RJv#YZ}63FMga` zLAh95rZ2~IQTg>aU)7o{*3MC_e;czFy}USTHRQbg0=v^-=@m%4Y-QLLK$UPW`DU#*9&JPgYM~)1&1E!)bl%Q{*f1}&jD;-0GwVQ--nd2%@duq`ExXcuEO`)!tnGfTRk=DF*Rp9!jE!TPh11xeNFP^CNR5I7H=bPB=f2n zAgR~&>dOJW{n!U(UvyDl^vFC})=bq9qr%>u2?O?|fKt^t)S6Yu;;oR{zHXW{eA}#n zT1o!Rvem_(V3lPMK5x=mER`*ZO7%Zow@Wxwmf=hLSByfW$~eymkq-y>g^=$D>urd& zy&4*EYJy#XAH(fzGr|Wi=a#4VuHi9mYI$R?{G=Nb;Y4RMzreK8?J8FP)X8Lwm9L1? zWgNbvLB+&+7!x`tU1rhak{mg+F4-DWLE7C(Z9Ve&c6x%Ba30w>fW=D0%?KrJuN4<% zwxLQmsMZwBHCufFSa;4$j*3i>Wv6JgcE%|=#)ku*BcAS$< z+i(uKZ|Z!67)VG%NXNCC0g0gp93J)Z(I{qq-f)1xV7rDg;_5fJ>037hx9kNcXR{Rg z{ZQk^@E=4W6hrKYW)9YmzlOuCb-}+^o zgG+yR`7Nx@G@0?JHznxke0xGts$CweT&V%MFs?gn19%`KK#%O~c?D(qW1qQQ9M7+Fj2=j!BdkWi(>vUS@n&&n|}Jz zKtRT&>{P$1h~;%$b@iQyA(IcRjQra?hkajVOThQuXv1oA%X^mG#`Qzr`HR}b-muEX=)uXFUo`bLYcU*l<^7OM1?O zRAO!7RgrF&Jjzb~OQ8srG=3ruzvMg=U*BV#%Nr-9_V9JEhlDErax}pC3dgG{}!trT#PGQa(){;Nphd-63+7 zO>r4|UoQsA_9M1MM=l252olZOJYm3=I8uxFLU{s~A4BcdPp{jD9{qwyfc|`ahL`GU z+m}|Kw2VJZPszZ29pCz9ze$4hlovZ#nu|;!f*n(&kcexCtSl*x@Fg|h3Vk3r|K0qS z1o^3hRKkLmuAo$RLR+6YUoSk8Tz{Cw=k>h({;ESrMqj%bkdno#OE6j41lMa@f9Z$V z$x217Op!Sj?LMnSIs1fPGv*kmjh^^kk@z_&s!C4mfB6~&EJyCkDXFCj7n6(-up_K9ZVQQg$~eBD*VboC;8u6Qveq! z2%@dxdN~$(Jxc`xx>;odtPq_-torpr`SHg>H(dboKeXM@Vxwy8Q)@G*Zr^`@I9Lj% zy|j~Py1aQNZ=8{1FvcEn-F7f&W}qynW62kpdGez-k+IQ%A-`+I#2=xy%OBqp#LCj& zL>44{&$;5%t|O#JzCOJLJZks1_Viy8*id{_$IC1w2~RBQPN4voRb;`C$Vf|ehJ2jZ5G?UA*a^h@pX!+PNne~1f7zrdIN#VXujyYWf>DkM1z zcUb8V8eaa;e6LWxiSU{<(qJ$@Zo!0wjLEPV#L-WLOQMLaaWfjrVB7PV>_OjYwf$$e z_6gbG5pSY#c!9_*fZv30Sy-jc^WkaBhs=KN6D(^IK7RSK-;+_M zaoTDWq_b)*#=3^4;$$<%6H#!hzv?myOrJ`a_3eJ7X3Gwjk{S;zbl6p>C+?R31QUJ7 z_YNxq+GBu7J~Gbr2N3B#U=yz9X{=i-Qr8=>=b0(Qw6?6B-lQhv%|gH6WK*!l&~H-Q z)hoaKzM~q}9(_jEkT>4@UH{AD5cS7GRxydCb&ERWHNPK^^{+%_TPm5MuC;oP!ie`z zyAx%+BVH`CBxCIVw+Y4%$aL*+Hb5nLIqrCa06X61j@Sz+iD!NxRS!9wGrvjs|8_4T zP1WeiyIBlLsv`RLD#qtHCA*R^|Ix?9K~m>nYmFQV=aAwT{OYM?ZS(Z}56o^B`sGLg z>$|da8GF04{O&lrL1*CB_$|sfmtj7!?ejKxp%QziQ#Q7C5&v!~CjaG|xYDp47s|q` z?d32hnw@#F=2&HkAw_2Lvioik`r9wPkQSKF1AX^pZ4BpOD33MR8K5F>ftb6jxeNL$YQ!M5FJq|L_WO z4uO`bVQo^}*OfNy6Q=+FW~evhUy8spZ%iBMOpde8=Z$YvC#~HJn3%eTROI@k#8^97 zynqk;{Qs zIN8h;^?<&VC-mVqv9jfZleC@;g9oZ1f++pu9GmR)&odWa{nz& z$&k{>N5oW?cn>VyCXp6}BB-jds>4Ts_3k!ucUu)ed#oeouq^lj0T5LNqQ5+FGH_^b zpuQ{dPF%iCfS>(G#j>k7-z`QTtD~*T`zPEWJ=_^fBr9tq>q(fLbpeNz5Wl@_l0Vx4 zeX@4$*j-dw2YqWe&^XO2oO5VlctRVo)YarGTBXT3?`&2;^4yvjv~pTWe2N1SFEt3Z z5iqhhR`tzqzyyF24u)IEZ;k_GC=UyDTRm!b#QEEnn=u9`L@w<5?}-Flo?UOsWzatDBvCUae>k1ven!w|=@f+K z{mDFCY7zbTO_}nSExJ`SX34fQTx5Pc0&iwZ)3xgrHls*Xpp4y*}*DkfuX2>)kc*g`v#ga7KVA+xsH$UBc6G;vPE-e-X5Bg z7ky~Ar>tbAtoV3xTtOI5@yj*=b&%3x6n}>7#gOhnHjj|)FW39b?Dl4vbucuTerr~; zSSn6}Nbx%{W|2bky9!4u`mQ-i3ExDZUuGCiYf!fo$uV+y z>_KQxC;Xu2e0j;d?6oqyPG?y3(=y&S*+uS#)7VVD`Y`RQ0fN=}eAd^z0#!2hF@;4l z^e;G!EN;rt4 zPsGO0H51nm6%t}i)wN$jR{>k{^9_LgAl#HZV71qv{QCB6Ah}^EyYy>?eS&ZH)HZ38 zc*)nC@X9zk`K#r_k*{|#-FH#Xr!!x+7R_#)_*4(K9S#NGT(y*>_aWfrqE%tNM#2vx&Ct`|kW zKYWJgkmf~ii;kgUxNO6`M4&Cur-?I*j%9_TC+3Pv# z!E48-@jFg<6CQ5QyV(0;0yCnj_c2bd2WXzF@0%ATrUib}k*FS>q%R}7gCSFbx(j~h zWRZiOOM`BmHP}BhkN-JraEXzbwBT<=CRge<1Q{{oWK~_SAk9YUE$S_Q{5IYA$M}U> z>nHP5$gsIbW`ivowFf;bIdUql7RkFqJ~$`>`SDA}>M6)9R5iT=SLy7}0TOPZ%+k-; z_p8%$+8Q7OR;zpRjE5GB2tWgNON zr@QcVi|)eE^|#hXY!|1PPv)Onh_m|52)Oj4(hN1wDdu+#yAB6a%aYC!8MDJVFY;Yx z5BKLO&Vtl;sOs|$W`AY}23ONKOQ;V(B}vi6hCW_;ZZJ0bDJlD0it1jKVPEN_mv2vh zJv#&z<~Oxp{nqY!+NiXt*P$0P3ut3{m(rLzfp5Z`t`*uMf%FQU+?&4m?y>LXO_Hj~ zXUy8g0$yZ35FL5#?pvWiRV4P{D4>}B7xIlNmEESsz9+{YjhMjMe$BPrHaSUp0&<=m z8y4v2bt&yIrS$Oog2^vSc-$^h3rJ13@CQ6!T?aG%k>jgPPN<~5z4~N~-!5q>KT(_X zju`Jn)S070_eDSd3%0vEDxQ}7^3J`@(UQ@JPZwNm5K2z!cI4}*|8%P@N6E!s&y7g! zbaXEapQRmX^{EV)x4q&_v7t73ut>4Jb^Xn$KhF4(o_HtIH#e+DDDy>K%>r6oa-xlKIzTXY zUeW4#rG$0T$puVlZenwj+@Kxi1D}Zd7A!45_{NmIs7%95721@}^xJFc{owOL9fSWC zVyeGb{ZZ^XT)|10uFc}RA+UOnOzG!JY8HJYtqah%`;ghU0*G;WTqO^zYdQ>*(U>dY zIdgU|#;}P&l17$0N_q2B3g*2q-b4p_-f@=1F0a!vM2)4As$oS`0+Ciq(<8^bSIJ3M zhznQPG@nLkXalfF_1#(Nn{HbSo%lpK4<}-+yR!)~NgfQ#fGs>Eb~ZY-Z;0Yqx1>!@ z11tRH`he3Pw`|O_ zm~`YVu?l-AJ)bYjK%>C^buO0vl&l_{r|%;W!j2zoYSBgmw@?#1aV!WF9nx>H6-%-Qz?uy9I^PE zqGd>}37(pdDw|8V5qcR0*u0dfr@MfbHl|+>)ymRZOfE}rTk1<(GK^aqTXJY11o)3W z>U!3%3P7ekI{mhVHt%jDYIWqvC)HHXy`uQ%gGY4rCkg~*>e6oljmrm*t)U;nW~GW*24Gl z%jaEFtIpqPoXrTFq7?Kj81{@TSJEBrI5i=^mcDFi3^40xzlNo)|v^+77dDxynH|?e!^BtM>qZavn z2{%tq^zIC?n*T%(fy9q$q_7c`@(d7i)A^ z@WWf+Mx9VTInh_;tS4|rH3meIF3+GTEW`_PUIeJnw+7yVZ`PqC+Bc&Bw|5Ox*~*A+gTA2(YO?&rD|2hs14DtVj4xt%(V)cO?-_OGV)k#p6F0t&s_JL zRtHw295kdXprwTqj}=)LrIk-G)@pv?F_Hv>3o%wa;*;A_o29=hbx7oqG(6`F#tL2^sg z!q~jIE{mgrLh;b?kKc@JFGILQoL!U&0sf=~$N9euryNe7Fg)mYr9m>jNig1*Qhw76 zV|_SsET9QmAveVL=&TajRy7wuP|<3z!4G^i)|71Fc17Zb_~#~;umL8bHlg#`7Cj1X z*uyBHXpG&T7TX^riuvr_o56^hh&bzRnd_16^K|0H9%m~l5Eo6z6w<;NN$nbs(@~>qKYo?Y*u|N@ zEc^SU;~-*WGr^A}=`xLl)&U{3%2X2VB}o5!y%^|KHQ01eRU;-w`1E{i`McJXU4Imb zVfU2fd=Pf)Q=BZigP_wIZpqZIhQeQ;xh7$^ z0-Q9>EAdX1Ggu;q+nY3R^wMAo_k|}hJ?BJT=;6l2O+_I#n9NtU_XuB)OJ7_G*l;O( zb8KmTvnSLFk}2AdlbWE?bFIZn#1(~uD`emg+|7xa05PVbh0LJMZSE9l4FdWcbN0gJ zonRb4oL;%n@;GlYG7c}g6fu0r(jqAeq)EXt(gmdq3_30s2-YjOtBA*E!zC-5HsvT?_O2JX~SKC#HAR+C4t2MH1nq?h>4G znJp@OCck;u!}mS&*&_!ht7c4+(wwTOXC}|Y+{P4=Z{lCqfOq7FZI`NT^Fd+Ua6asO zLNjbY#@x%M)`k#`$kVQ*2Onn@%@U-A^7!>>U9<2Ry--|py_GvIsC;H^`8B_cp}7K@ z^bya#sa;8dpVxnna4n;4X-`|!fO{Kg%aD3ebFddRI?vWGNg^2v%I!r62#x~BzG4No zrGT}Ao&IP}wJ(Om_xa$s{(20vp)69=U|2R~Q&H4RhveuQK;)n@yoAv-UYFn{ zM+E#@kASR;S`#12>yJ;3WU3B}S(nYJ*%CxtZQ<4>Q0$som>S<@Fmn{*iga?_$V3B7 zIi6FuaT=uAw2eF|W#qHvKz}%Hjpr5cM3=(&i-os`#FFv5jZUNrXCU^47j+!`M>1!U zI6LWhWS3Z|A_i+noS%|^jSa71l}Y}iI5MhF@ZX|I4YD-Yrp&v>AM7=^Ckg1j(a80a zaGjiO3U=xs?o2+FDD?H%?ZS&EL%a5G)1qu_$s;z(6$V>Ae0M}v5Is@ourL_1N1>w~ z_{hFALl^FdjcrlGyFkQR^pua5kCv@n-Yk#^0~*GFEVf*(i0(p^n$k*DLG6?41ILZS zTfbM<7+~ox{F}!8!TCs$ai7a2J854AZ%ddxx^p&N$e_WL zeSB)!^Wey09XYYx7B#{n7DoU0MdMusDpC5gBP`L{)QSHYH}zu$7UcrAe-u!*J+HGa z5}$r|E!^6p!UU}<1u{oQojMO$7sMrcMDcFh^^{+N%Nr|xA>g6x&l2jY)}oqUri>X> zEtZ1LB{DBc$gHxcV&NAA++mLXxKEd(xO|sTa!uE9S;n5$#<4r9lwzTHm_r3?YeO0-A7{XI{*Qea z*AE;!&TY~pFzNs2H9-77;wYa$dzgE838A)I&-tu-J1RzludXuT*F?0 z65U}365*45hpIvI#I7>8$fN2Ct2gcf{5p)BN@C0(OThOS1X+uecWqb97`kcW1bq~Z zlMEHCJ&G|=tf%*;+&Hb!-*oL+kGXB;zT=ybc|lS|C%L7KOo{jG0W{PIy`!oBPZY|z z3cAsVXILyk>qAS+Oyv58)%&t85!u9P`GE2$L@V~*h|6tPaC6Wm?tGwI z84)RQedfSFa&owd8OMS$)CtaI#EqWn7ri+1)9!&yA$8sk4Vlf4Pxl36-g~8AidAdj z>FU`!pldT9^apej-{S0VJbbNB_iby-^+48owib$wH!RGPFj|x(WNjo>LxKc zYVq3D$qk9CM8icvznrX4rD5M6rCqCD@GDzajASsP<)3n^8&|_K&^w$6jrfm(K&f;> z^gqfD`9=Ji#@`*}D@3sBt1D7twd7g3?SIV0`@faat3lq1!S^48`Ty)~uk|2)<;O@5 zy>EJ{#bv*%e%{6_=4dfvzmX5%sf}!fC|9R>AEV;A0J1{jJyk1+@E;KFviU!>+Wu0*|2J)l$5qbIv?Dj8^O~ zm0hR9Go0wgLdeHg%`^V?T@S$53Mv4NOLnq8pX(fnwceE(TWVTcWiNQXUom}PqTwCm zVgdWYYg20Y#m_@k7*ZeaY*5jl#A^@c6Zxf};jEVPMDM*jbgcF061Q^Cf)MskHKz!n zok;UmOu&!SW^Iqihuw{E9(f|>;TKNytmBYX9&9LGq9~(trFp6_{D%B{{l6d+$2waK z_lqsiDYEl=Nq)-lt;gq_8yx%>N@;bLG=<{7Tg13Y!asC22wP%r=DxWJ^oUa3RVd8I zDY#w{)qd4Sp9m|x@W>H#y}K@yoWr;Qd8XAc?Jom+Dr9rqkstH9!q&s88ArNmAaXmH z(2)wy^g|qg5W@xJT3gOfSFTM)x?1e1q&+`!h~&{VVI}Ab`Ud=5EGf?rTF1o6Sutr( zw!xkkMTC`N?iH3!4aaZ!8(xTbC9^t5ZCT36t<@%%|9=1f?;_y;P@wz|fyfoAT8(o9 z^aKugpXby7%xwWQ$q$$upkq_{ZLqa3*+abTdbwtz?9nhJxA>NJ32dYvl8r*frSytU+WfBGy z4(NBH#%nFAca>n3$(rf6$2og*@L(u@Qrj7j2s&BOx_UPW4Y1e5ek?EmuyI> zk;wK_V4B>9D~sAT*?08nuwa5QAg$ha`pWAsiW%zI)V+7`TO5~R=sXvOZoom`>SRBnf)J`;pzNiN(CYl6*wt;S5aQ zWzi!|z5~G*eU%F;<7Zmx>(?&hQGb=(GuCd$U2+mS zlphOVh+PG47owQETNvHgMX1W=*Q^6RN?`Q>vu|(X`suE?!Wo@LB@*B;h8*HX4G!pY z>>H?g=C<4Q7gN6c=M_Tz^S7o%1ZR!(A}@aClxN%f@(fk3t?kbhqm|C}nO5>HP9LS= z4YXR2bvg0VM0i(AexX7y%2~m@!tgJV<|LB|j@Dg_Qc0w$a&3XMxNee#5XO9*o74s< z@1cJC@y&>%6$W6n;1q;B+S_KJiC6QCYg))@9L3X}*mE3}m#XepL^(y7k6&o&L_AH2 z6FJa}KBLPi(Cf0EORBR6m7Jx0?ly<)REwL3A1Jk}Ra{3&pGBAK*=Sa5Zhe>K&+1J{ zbHCHdIqJRx1))u7x!^8|aW%rXj8q4{fxT`?rk1K@US)G&R2uORy(jEZz9||mgs{};wN3HQD)miFoLNp5k@O5! zYN&a|t#A*lXvRN)AIdMhu4ob_fY|XT<<{)%J2auSSh_Fo{;kbEV-}^!N$ppQ>Rfa3 zO=e`RN~RQA+kk97qd{GmB%)su;lmyenwyLI_{47XVTYS%vw}{veQIf`fAT~JWf7J% zdl&DR;<4m89aLig#MlUE@c~W9$C?VdTEEzav3xJvCGT!&qk`<1&*Bnrs-8_rYVXxK zKdOzELbjI2TXEuU{a4sTNn!ExWj9ld+dTy{?DJ@AUqH|dL?7}-KXNQgE^nwYmv8Zv zPH7|OjHXQ_$*$k~N+hPw`M|fj!`rY^wfo`ih^De^KUo(;cWm^~RczWWj4Qv5x(oX@ zv_G!-0N2x+ej)--2`Vl()f^b*h)c(A8vC5o=*@Q`wC@}^;6>Vt$=i``K`OsJ#g`=x z9cW;)u$s0bd4Wcqw?KJjafs}atc9H^vcLRBOslbKm=U?4G{}Mj^X39?O{Dw*qS51P zdIC@Mz4@ubE7*F^IVvb>DBAhbs;-DE+g?six3F$?`CBh?&{?5S<{Bdp)1FPV-laTl zg^LFrjqLUqo2EU_7%syTye5ewR=nJB7nFMc4t{KV^=IPG*8-U$ii*?sAEG)(XWhic zp>^r`kLjH{u^8ApQYTBS3nOD0`FG3};TGoyF;GA^vATa+AJ@%sIoRhOkPK&jg9>TIQiq(DE=vNPxFKrjLG~ET}X2y zfvDqVIIOTI2T3F1roq`c&T}d#KXI`mNAq95*NGJr2Ar_kcqqIKFJz9cqi=t8DOpan zSf5UCop4z=D`pE4ONeN#kFIl8pErzf{o<>Y;$}oC3=u7(?#u14y!v%3!e_O;5U)wy za75&{8@Wl#?K=Ni$tj99KgPe~*%0py@&V0OnHe#$+{Dc75a4dHO$R5IjQKZ$W6$2q z)K#H{lt~eI9kG9-%0xrdO6z2R&%yRD_+M+*Jmm#hUwsJqe-*eB0FYzN8s-6U@Nr~m zra;QJg4ykWr-8g&v*wb@U>}hIf|#OPebos^+(`QOH4@fN%6cP$jcs9ky?&fW>&D*t2WxArcZIL%`Mh>g zG0WMb!#z^-)7>Qe2s1s>Omj$m(xv%%;zUYe1T#MPmp7HovTgyM(IA+|$WN5K!3W&m zI`XR2=t!uK3$#u*2_aV|E4#bLhxP%fw3Gx(Y8m}yO5Mqz@8HA?_RQwS0;{6(xXv_s z!7u zSF_&T?w_>OeE=Sq6;Lt0KIj4^%BHV*i%>^JMu$^hzFopagSw+X8S=vc&z3%CaPtwH zIg%cNu+ft1Hu?UA0*Js8yec6&dG&e*Lp2`hic{Fyhnd zH|^Xj;?7z9p-o#Lav`gC>E1dxzv`+9m8yeGhgITD+vYhCh(ASWm|#pP@+D!bl!|0eWPB009_9(zf>ooUz6nL5<0yJI zo1jqMs1#|-)DieeQTMcMV*TvW$0P4{)b|^Vq|~Y~;at<=`(k>DG)Ek^oq>e*1^s`F zvPMKIS+0M-=fJ9=C_unjCAWY5-vNkNJ6U&R{V$8)dy(205r2cpVOHBaP!_~o5IWn2S%xOxl4PXZnCb6<{S;o%Rq6^Q@*&#M@G_4xj_KL$Xp^N)=e z|3~D1R++uss!Ik=uWP=#v@dB1!bw~&nd0#s!r+*UvorRbU=O_{*Hmyso{5s6*Qdc( ziYbZmp*w;5>{DC09E*5GNA5yq&rC6f|BZ}zS3$h zbP5)6?|j#3&=_Qe(|on4(}&3~=yci!(T_fteQh#N;l7ybpHPx*5tHT{aqFJSyxMUg zZf%=`){drt@tg1Yo+jZ@Hc?9p%)_-4!*c8oDyJ;>wd8!3-?v@!goh<1!2QBizMne~ z6$nkyq|zsF>2*5)%0VOLW#?b$H1T{E<_p>5Z-Y9CL0fro9PMm7OCEn@^}Kfhy5bb0 z-X+-1oBa`VY1C-1p8Ptcm^Mz~)(3xA-@xt$2N+s4k2VwgSp}(@S<$aA*_{cqNh^sy z4AnzW%nJ>6R$U6ZH4;;*Nv;fLcrQ|Asv@1vP?YK}z!3%~4peNbUXWgv18g0@NT4%c z=1|SXlnUDmhSwUUkKc!-5ATujil%7V^pPem38qZ0%`l;o7aJr~vY@l0fv(?QwhjJQ zH;Cy2z_TDWiw(JtBiC#H?j8Q2nTy@O+ha4r5pj*DMnj$ov5pb!M>fwur3Iju;&hYxLYHm^ zCgC2=Yw3{HSc=Iiu*lG@?}5~7^Tf=8glF!+MP{)oD7>09s5xiIm{N_0HpGKkeSpY7 zy1+L?7V%`?GV0s6g8H;{f!G3|j&}vr38w>}4S<&G5xPkaHXNvcfR2UVpUD;Rgnq5z ztBU~rgk@7UgM-OdJq%<`3MKC68CSxT_?EJ>%lJ^uoLgIRNW?vidy}V#!QJNpMksJb zRdppyv<7X@mxkX*tBzhdrfRgmytdVE!B!qh0s{Q|*tkzlii{^I`ZXi(9~Zeo)XMf-2=d|e~B#18z+6Zk_xoGv32f7GU9=i&y}9nL*N7{ zzTvWgLJdK9Z9R^90y2OS8~i}SLZKgNBKcNa2d54AjsIekcnxTxE6GiBY6gP&6W z2FSXk7I252RF2>0j~``NF{be^m=IV`^+KoFgubM;qz>GhHnC`t<@cUI56AGb<6esz z@FeWId(CdYaX}+6nWge`hy&LYx9x#Pr`@>QP}L_=rfA~aQ1>}erMY9W%Q4V3(>v6J zee#l00RN&wH-Ow+3u6B)78?u?q?yqdv88717FBp_EMHF=UWc-tUXV`P3@14Hz}q1Q zBdh!mDpp@JM!x*o9=uPh-D-Dm)^X>OPMU9%O{I)EHX_2f_H~VK+_*=j;ee}C%H6Hs z2n)c|G0;};AS`14*x6ISfk4-!dhLNyvp=_H>E0kKOK!8?3%~A0(DPFDf@MJBT5;Nz z1ZSd(k89@jPz3wr4W$r8jHTT&$@{-jf;ef#jE8nA?O+Cve90UeK-L{jR*1T~Fhr25 z7+vfPQku`y`ty9*uz9mzcFy?3aG6nlMsG4F41UfY=1r9`{ssE1`rN)aONNUA5#;j#UYP6@@pL zGQ_m1V2UYS41ljW4Ek_INXnso#z){B~Vy_9tj)hk`!aJMXZee}!?dEpm z4asqliv+70TFGP#p;2a!VD3;R=-Z35?su;hBq*UF&eIKf(Vd!9j$_|IY{Wb1!jztH zyxGRPFCOmN+TMI;E)TXaq7v!d?rv?Se7UvX(VMx@T4OGl`ghzG59H);|+0_weWFQ>x{~l^V0AgIytlTlFWuYFA4X#eNF=4Y~u1CG!t@TE|@n1QF=6>Lzi$? zLTu5evN3!xT{Pc5eixGCcIWEfO?in=k=CKQaGn{R2#VzOiL+??cs0NbAT0Fw!slg8++2fYX@^`2FPVg z^8ojs@BvNXksxPt&6=4M9S|M58)XZ`U^-|)&K2aq`dBj)51I@d)vEjFoA3cOR+qr( zP9xt%kvTPF23oXaAn-<|+;}LGXw9+%OPKNso*6 zZBT@+=#n)O1HkLtj?+8%Y8;Da@MalyMf0@$5a1nhGoFJ5bMuGD#u+Y<6f-NP$&xE7NPZ1rSae)pFh%JCIOH$EkrvreU1kp(ZV<3&pEjk$1&`tS5)SCcwh!e&&#@;)+jrKw zgX0KOaw6tRYZv30-Hj9ejnxVT%(&$BIGflm1s%bDpH&k4PS5Md(em4OLTv_T)P%2_ zizNMX&GH6IV=7ZC_n_w_-NsI(Pn92+6f%m;>1t>1LQfc4mu0`pNKl!YCA`ZUKqn^f zr8DKtPiy^Ef;cVa9stgkJN(tt))zOc zj*7?1k(|de^WO?ZPZ4SvY=#CqM!zs3&T9LC=&oFmLo?D+7`npV0@SEN59-@Hfs_Vu z@zHM3cv+vA>cPr;lEqTq2>19@SiebkVrr_Jzv?05AzjC#C9!KLIJ)7Tb!`LD2xeeT zQeE4d56on||H+!>O5hB0dd9R|10xmz5l%I>Cu=S#>2 z_32>rQKwoh!I;*O$s93YXdJ?@XG;iS|OJG@i z1{#b`Z~gn5#?Th{*D(;t`IOs2@1kUe-(8EzerugvwZ*%5YF^1XADlyuk-(`oDIScU zoJnQHsB*TW5zx4P+)Y(-c}Z>>Q-DQ@fJ$ZK%xKfU>^7+WWWo2yZo(PHLbj-z10!k~ zZ2&Ut5;5q<@`WNd!G#&$@ep?q)(|2#*7!C)n)QvXKxyuqg5qd-^;7?>BK04D>Ax^o z95AJpb`k75Q`kZ)vGu{-w~*ft}_evab;TrXDG;o(m*0*94O|G!=B7YC>9%n?Ac z#ZFT6PrR0Rw4&7TY=Ly`apiApUZ+dmf?Hw(k@2utbbRz8s!;l+X|rI8*^n+m-trJT zG_6^S&@5EXQK>B$KR#<4%GWaH`(4_Q*@}?$h4$p=(xeNcFRuBFAtX-l!Bd%i9IK0d zI{ChnWOtBC$dzYxx&j!J8gh3w=pEH5t#U%0CN0MleJtO@YF6@(iGHnbOEZCmv2?9q zPNL231LW6=g#hrin8Abs8AEhclUf>Q&Rs)VqMsqJ#6@NiZHcr>5JCL@HhACKHz=@D=vu8vk3wRI>u7z!@4@dC0q^!H583q_DR?-TaN{T{4MO+^b zj0OrUpY?cqqG!zMC;Mg~<>lP$o+xG+p=0ST87#kEn<_1>z5-K<)B_|NHv?7gqf5G~a*sTU?XgDy_KC zGMp0ngZ1NpZKFsZJ~u=oPsZDp7>I?Wh~D`8x{Mk8gI8eg4F4VubD63d?|kPIWjF!W zff3~qz54leeZcTRU!T6jP~Y6oN@+H1KcT$;l zr=|L4ngw%CC@qbCwJE097v}a!qw|mExK=3mR#bgVBKf08lU=ZuFuy)nOf3c+_`F(A zSWv^2J8q|@*KNGJ^HI48^t=%K86IYR`ODzDrkrdvj5##Xhsx!hzIFmTdN=0<7v4L~q;?6C!_|nhn<8O796qpE!`wbc()k zO_I>jfx@f1}SGo6!3V%qy)tfy$@wpVlT9wZF#PXM^i3r?N5cO3_l@#R5j!6 zKAtnCC9p>?FpUl2i+#vsu`9cXPO0Z=^7uW_OFo5?J&PcDiJ;?Rnc~*X66rf0RvUNN zng^9qy2vTWAFwPR>-e0U?A}7~sFmjH?9cYT_zS6o3wwI&>$?7mRp)7(=-CCyJ+b_s z%+C}6S1XscxWpY*y4b3^|BCcJd(Qs#d&GW`gFo^0@|{1R_2WW{yxe=nkb7j3agKaTtcM^FEl<@?yu z6R@EC08g$Dq<$#TKtlGch!%j*_@59OlW)Va4W*2YYW;jpGq$wQ9yU%^fVs=O-hI|3 z2`~5(=+q#EQ(X7QCOBxxw4wq)QwgWq*f)YHol9W^euXv#MUP>km&oKjkzG%&&2x-Q zkognwSO0mHEGF!nrC2HBE_Aya7LhYwwf&s8eyv@wk*!(ybWdwt0G7X%hah+R8pf{= z6?PNn4TM5dGNNO04Ek+c-;pCgw+E%o4^KZx3e`*BnP_!1dqmjM{qOWRh~xq6^v&B; z!|Rie;zr7qy6VU8h%=~Nlf?5)k6z3k!Ax8w6?d03n6q~#q5mM&C-0D}!hHj2%R>A- zRpU*NT6S7`Tw&a$?!Vg(9ap#SdUWp4u3e!TM~x1Z8C(&va_)+5l?&Eqy-ugg@$J}w zkvPit0Et&s^+aX)pXLH_Hb7RZ7}Q=TX|6T$umRnw;Hoflhp?}nXmcLJ?fQsfS@1Q{ zU8%w_Q$g#B5dYD~`NeVm?CoRMXH{yM_dT4X)PI%R0`ML257yQv68FLjoZ+$Cl^+& z5!O?JYXJb;&hk66JGH=3eFHyfAy?YdP0h2Fx-x!#-aCJ zyG|5{F*VlNt2KldWwo9@O-V-fe@D-Yzp8oAE90*I?jPFk zztfuk=fC||h+L43*KvxEvJGF3d3SReiEtFM{=%Qj;vodEEf6`~a>fuXZWY}Eyx*{M zViv&G#|k>+M|RT(3q;s!mVX=dGX0!4T7Slf3ZB|lumrNneD{0e z*TRKC?<{Tj_e)2ps6oUdpD<>zl{_@(ohtNh)OecRSrL7DrJzkPtMi*dU0OHSv)&kj zRJ6MS!5#3zmcN~|lAN47c-JTFx~`uW@yQ)fMG1h>T8Ng-AZPS1ZL$lzf13i7@+l}U z?rYF?_42o}=}KkSfv2eOFSxLjSIEpCBJRa_j|WNU@f%oky&&v{1C&n*Z78xVNR8{c zg=f_jM{W-7oe42CmP>2cxlchA%n@TnmD6ap@Br^8Nyt?FqmUUVi6L#2 zDhVi)zID1pVL#aBTfoDkY5|wi6J&z(k#=FSNGHZE0Yw-9X6S+ zx4p$Cn+;1P%$B}1+b)yho{7Dcy|6rx)R_wZq;hMfg$65)p(<*$lcONzf%6-|<<_J1Ur8yX)_rqVLv zmZvl&+c4LL?h$o6N3(*t72%$b%F!}Zq~zvDiqn1B*1bG7K*;HORDXiK&VrI&57F#^@G9rJ;I_tiLm13xv3&oyX*cHeP4EzGV&9D3cU%6V3Yf&_baGcJvIVacyW1~5yFiNRkK_gKAG7LqYcnT?=1a!EA~vlI2q{z(E- zaonduSJ#FpgK8{;9{9#1Pp-c*Xkj!SC2p>N#%Q})Z)*|*oTjBNee+!yNWsahlERVw zp4J8*CdqkR>CJUq&p(!!9d_#LE>L}M^p28TkR^vRrOM%tH(MOev2&$8Q@~Cq24{}u zTMdUqnnva-%J>^uO4_5OXKnn(iMt_41vvteWrbH>GAjg^oPzKiQPnJ7v9bOf1vdmCN<>G{U~KUK+<29lDeGaITuu^G}>% zdtJ+pdzc6^gVIU5J4d$FD>R@UfkvOOLCz_&*w-y;f$@!j4q6M}MSgDRmaT=;itUVq zPquvPR%jqv2jQZW2y$1K)sKl@QpBQZ8xXBU{U5wMe888l?!X<$4+abwG>+(h<$bB8 zdZ97%-H3Owdb~#F$|*`9?U(O%szf#yo*SLew-<(2NZo#zl(YC!{Fn-Efy(qY+1#> ztq$APUP;mq#5SzfctaoG^LyA>QX?WF=xK3!#)7`;RIr*+)6NJfZ-jgsDtHZ0OkN=w zO3=hu`30SVrIE=E@iRfO$W^Mfp#eg~6eiJM?SP1N`rgm*ASEI2+%jr&J7UW#eDBatxMA>Mm--PodRAtZg+bSo=u1qHE7HHIk7auM4u61PoiC*WV{*~#_P-L z?{3_(2iz@Fix2KpgAm15=F)EI2)y!pjNPM3Dffu`z%4N#aKasqt0HJcQeikzp(&-? zrE^M1#N7{M;RA35(gtOm!7{X~Q6CV>e>?5`;-+PkH3*^(-^tBF(~d*s%ekIkmSK_R znjPV2X+cf)eQn%Qrjez3^Rk~Edvp3e?`IvEDh?KRK`exeyj0c`ZT%>kAPe2LDMMsj z3_F|CN#qpcUWN>1E}BbTlU|aW?P7`$l@}*Em?_Mb#gb${%i^sNVuW_jbvx!>78^J% z>5n~v?48oc;&zh{)eg$t$5(Ocbt(Q8#?lMt((SzN8B1ervX-Xwt=~-5&rU?*gTHF+ z%k2vuXLJT)SrahL2JN2bE5nha_?YNXH}uSIu-7BE3o$Vr)z!BGKL537C3#(y`F1Ha zSm6IK?n7VJ;EFd}e4!&48^|}}G-=I351r{;KqKa--Ung^fIZwpdp%K|R;`TaZ zzD2Tj0>Na$gXiMRIjTm3%Jkh7Q=x?=&Iwj+%U7gg=#)5a8@_4jgEZ&q{2S`!JLk48 zBhx8o9f3DCyRE5xoSaaLM?J(vRh$h4hKep`b5Q6Dv*pBF^E_sYadJzcbG_&fj{Q@O zI3+{4QfOL4v)C|69=^i}5q+x6p#CM9VK=KN=r6%^h=1b$mLGJmar8KIB{b@Yk9MIr#@)q|X&9+?t6Wpc{HIFuzmkv=pU zM_WMC-{KZJC9&YaQ}wF;!_wD`Dux=uUaAK66n2I!Eku_O z^()(GfhQ~vIjYPT)sDdK|BK%acxX;QVi%93r(x)P`1Jvu#&#Rw0P^3fUDrv)So#x}nN z9f6S1SqWP|H59m_93iu#;^A+qI0^xMsL**M)+a=0ws7Ry<*|#ahAj`Azph$zJ@Oj7 zq9u6TzF(1`He=~tR?e9sz>L?Iw!||$Jx=84lBGf02p2UrjdvkoKF|ZLu$a=xNS=qy zPe$5s%!)qc+cZPW@Kbq zt{~_^f?-a7wv-*CYmc3^MJEc4hiOEX<^hj3#^7O^PEwu1EpKMJ{v^Z?WcI&33!^sb zv?$p~T{|n{z9(2@T!+_4Xfa(YM@jW^+E}w;u#J{#{%}2Dj#g-}^0NGJ-On0(0$pN3 z(H`fIuI;htaZ-4Yslv)K%luLbyJ2mZQ&`zE+UPmqX&zfjggQEmEkc)K=^i00WDbsl z#OhP#EBaqzzqEOnLg#kQw)G>~`RqmB@<#sTMcklh^FzZO+mDJvLlm4n$}3}!i0O>K zwjM7g6b^Vdak9sUE1WfJ$VF0qJ}P8$ccIbGR*XRR))Iy(yJS?!(|{@>N4{}ZkLr+Y zEhRKOdK+)cHhdC5?ca0IQ;a^H7IW&lC%4eX*@3QJoa@YEFe3$yCC+&K8J3=3nv}Ps zp*gd47rg^f7jvd?H=f-apF!5oelp(;&djz;l+C)^Ae|Bb+?q!d6Mbvqa`eP{*Q=Jz z=~2N+L4xvg{h<;B-*ePtA0cMuI(Pp<zB3M)a@HFGr5q6}YQDyC#vkf!E?L=YdFl!^EQ z#l6_<{(a}(bI;7V_k8!SRW|x8fMVioj0-iiuY&3KoT_p}RB~T8AQ~ zJ7{qxW)i||=;1xSB-&BPO&SmgyQsc$U03xvL;l=4Eug~m!WX`x(NFCDcI58~In%Rm z(3&Pe?`}vg*)52)P~Av)L!T}& zToL%o)S`3&_WhTRvQ4UqnAhry*r*72U2GW@QL~3F64QqEeHel|Y43AT)5k_@+YaLg zFgjm$E$f5C*(LnVwMIwP%>djiLscIQc?6Lvi!x8hi{=k%PFG#1ETXlwx&Q4xH|I6h z9{D>f4vR8IKWa_Z*#*9xWWDSvY;dVkYh9#D)`-k^TzZjc-%}jlQIQf&J9u7!^^}%( zD|cCT$@cOEH=s#@ka=TlY$E=S{}fb`YBLn%xk>za4QT8Tk^o#C%;OoWp-#UAGZQD?#v66akB;b(=f?oVnzM1+tUEErHFhbw@e2dY*+D4dNPE?TrW&%C{jaoheTG|wc369vx6ea3NSH4Vk^>YUZP~Mc57WA6f z5Y#@5Ixz zhPhV9qX4sT);mKjLk?4F5%d-5c(Jcz#;v@rF7UD_$YSt3E5D@`@w1v$P4B&%dE*)& z{U*iI?G+ZZ#V_wtJLkzhR$8qbkeVY64fgcu7{cc^A=q-RIpCFIv^PnE?U|(MB2lT^ zx>!)DP#I!cZnU|QFG#I5`?3{QMmr*yI)z#Hb__btLTu!)v{`_nV@3itV}bjB`L zVmCi$qsP%_i*5AX|GWJ%R2;$-Pb&BGVHcLQ@>E(Eiqg${5SR+>a)qYFcBeS=-lRrO zdC+fLqM3xo`_VZQ{jZ47bSI_C(hK7|<~>Dwk?WfGScndlo8)1vLz(@^dPLNfRqW?6 zIYwadpM-PY7idGX&K#fB{}ifpYd4A@kelJ#AIW+cC|;)CJ;&h>YM1wIK`br_WMbS~ zfFyNZszL7zF<))2u?oWY8)dz}>Ds%oVRi|;+LK((kp77Lw~6>t)+5hdayV*Szi_>h zg071#r6#s+3oAAlWQ%&8-nm>^f@D?i*q`l_eIVPZnw8>HkcSW?!AY~?ljO4q;U%&xFoo{YjB6J z$a|i1&UgRZd-oX7T{U)9?OI#bT650bAqVnUC-=NK z7@q{r|EI8WzcIak`tQ->C!rXU`~N=n6BLa`{of~gp8Y>7D4$-gMq#D)1GRddnPoU9 zS}!zD>puJUqIONO_oV+GJbsd6;qFgY2Zsv&@00ESyz2ojiT1DXz1!V*b=*71vuMry z-wnmh%>3etbgdHPmK=q#Qn%**AVVRNTF;dwx~Q}zcnySK@)q-Q>PRj>Z* z9v>OsKEBFxedaHM1O{G}n16~B6?`8qd~LgOv2V9Nh>S4(f@E*Td>~~r3XW3!9wI7h z3IWkC(lh+q_-L!(ls4dQe;SVa7z(PYz#7XGovLnQ+^VyRPzeN6aM<%d1F2kci7W<+ zU(Nm*YgFA;hRY!o|Gl0Nz4*UcK!4nPHlcI;9m_}g{BY5>D?6IRae(c3cJW?4Qux}O zgPI4jC8-9|t}+fucO2p~Wei%O5xEK})2tNN=$fgw&m%(rueWO7l6>q&KhWaM!o^xu zKQqUq^43@_WR^3jynf|*3Y$@o4eI-^G@fIPkX;B|2NC(-tr>irQXnMFI-3k#pR4r^ z;^!GNiI!;_p(S%;+BcPauj2$CZciNUuQt=z zuJS~{IXW+3Ijy7Nl3+`n5@<;+l)0v^PEJ7~q9I6EWmgk!^>~Xsg(S}K*EFlAzdq_c z4#h6!$Ke1HE*}&w#HQBNHD5*}{ zPu(u_YLjh9$D>Jl1Rn1zs`!TAsYjQdQOlx~OOgs>o}HK19E(ZKl(C8ec!`N}J%*Ew zL5@iWrG0aCv9wC<5M8(xVhDI$KZ@BZ$btNMOXIGhmTcsQeD=4V=X-1tlJtXHUfj?t z^+~~|AZNq|DfijyFh!*X4I+E!7io&-&%m>#FvT+2ph-33^6?=!NxiD3FMyW*DK!vc zkxTTE(RW|RCbT9FY^R$ORhJX$U;EV_dD@h+k{_P>krQH)LPv{&l56Q2!DJH^EI*Zt2RuaqTh0Y zRCG6*Hxd>Xv}xcjs8_XrZ?oK@dZP@RQs38uHreC}h&=uIk=N?ty@Jn0(_*hiTdkmB z@`pgT*6Z<#-u8AsMuVfXmslsax0@nKIEuVtvT|~RgyGzlvn9~7T4(OHeB$An^{R32 z+G4AzMz7R{xDjes<0d4pqo>=U!Up%5CURhCpAL+)JpL{JyD-N?f03`eg=~=h>N@Bv}8(sI59WK@AeNF)~#oUVZHZ5 z%!jph|7X|7{VZ*7h&SxT1)Jb)eO47M)Qg^%ZKvxox%7y?({SdWowB6d+_ypy$?L%$ zB;AWB%(ILQsWwHJ>w)Uamu5S6F`>V@T_)0w#3Z&(+=_^r(sr-H=qZn(lg%{AiEx9r zctb|Ja5@ty=&H5ax`nN6Qfex(Bhy7Ffs=cOppMHPXHpkFVrabaaR9QbHP|&wEtb{w zj6~mS>$x%`Y}72*b8%G4-2dgII+ zga{Rm;F%Ifk0(@iYw+{DC`**(u+d$&+|_^5NSqsmPMka1M}R|}I_VeXsWs2=tJ;eK z4?G{`jAghx@bWm_f0paF)LHNR?#kk*&tT)?YZ(J{!-|6V#CdlSib`K!-`b3oh;4bq3%rBNBHwEoM>uw}vb=L?!@-C)6xAel-S7Gx z*ia#_rm{QSuDXbf^NRLP@E}`}R{$Hrl-ZjhptCdZ-eNwQH+{5CWhP^~ER9KR<5S}p z_mI?oJlV?1C%*0cxPjzl6_fwWi5+vR)L9hl| zCb;}E+ySe0&`8ee;?ef#r|HtXVdF_G{3E@2wP&G_KpBQD9W2se+A&q-RKn%$%A2p8 z{874No#P^9C!o!%mN5aga}JT|V9%(Y>5saLG8cj?~s7fO@`u{kB{(=31W&0~5JsD?;rA zk^p}7Af;)LB^VG-qGP;0HujXVf&0(YwdR)TjHLZTW2nbHCQKgp#qTlOY~u?y2sYKU zEt7K=Wlpi=uDzQ+ftlH9s)BT2Qm$CBMU_{nt+q}Ey|yLZ&tUg4hYuP$%Kes;tH7#z ztT&-;1!EmXzUJ-Xp1#T@1TWNPRjLHE?cD;EZ!sk(K|YFNvGZNmp>fr`jI; z>iW?{+p_^j4ed6*ryT@COK2*TsY!``a*ui>e>+7Q2cDaKwqxMX!qh+h#-h=DGcZszS|ajMhXd zcV%}ci)UeVeJQ+)gG5L&t9w|0?4Y|#$k&O;NMcFwy4G=z>yy4J$gdd>cSGe#riOv{ zxNd(Ib`;nRih$fx;|CoTTgJ4S(h$EJ8EsYh{EnMia~1Qz4I(3_?AHx<0&@n8R<{i6 zKF|Ik{^X=2ejqj#=ry|fDy7XJ^Rt{r6PXP`+SQ!D5w;`W5D3k^M4Syi_$4O?bzyxyudTQs{XfcjdQ2ZSzc(Ap$^2jsnONVRX7+!X#t5m6 ziDgf*W~K)72&gcWy-LATI7ZSq-wsb)g~bKL$;Qk~Sf-f~Kkc>PA|0(>oK2O*Q2g4x zz?bgee!To^dTM zP;SeQv;3kdc|YCN%AC&jk7hFT?iRR-$<;iKe;z4BoR}#CM(!i&IIY%$8_+GHH4`JY0x#c(6C-8 zqiB3#wOOQ@vPq}45s+HQn7}+)GqzOr8FBLCsX9qjpLWiH^Y(y^wVqD@QtC!zdBG=J z(u?E9)AA~P1J$zkj-;c^VtmvfLiGDpe_thDUSY>8JP$&PiidTU<7=ymG%L1>mh;rT zYMXx4z*%*M7;p+MQ{PGYDfO;LLg>-)q?3v@@xHP@GaAT83{^(#Rn=j zimP2}l9YY}d;b2_IynP3^OnHx)5LuAXRwuby+-&r)co5qOzgUWc95{5dXo#t_g+*A zrgZRzjdyzAZhY|rIp=og0JoM;Maxpt4E{FuKr@%Z zlijJR!A5%v4c!7##0$k_GwAd6Ko zO}3g48Zhjey8kHDstx*s3BpYk*JVXkOC4khAXU+~yva=$(5 zUXPVy29mC@S9Ed(5Jh$%=d%+R7@z*S7XXW$uB42r4?8}!wN4`ShUumfm@ss`^GGX& zR_H(5?y=y?grt-RVO)JP8_|>XnQ@S5I1x=${+momsCg}?oBxvyg`uSxU(QdEEcB}F zPG<;wT8^o0D9@JfVI8-qi#Iy>Gh`=ZCMDlg902__!mU89$V#9Z@9tUo$sW%o6y@{r znR85h6O;PvT)X?(3o(CI*M26r!bT&RYKjug51{)glf!EybmK<_(6b>qo65`JmiH==#W zu4+Vw*aTjDb-kDaTeAF0y)7=GG-BV(Gj$27?lYc?jNFJbcH(we#Nam%T5tLcL4Mf> z=jMuUtp3ahnLKMC*m8f7Zo0*d3<^Li9pljbEH1d?`6D29DifY$;N#x;L-2nvfu$V! zKk?kD*b!hL?)bvayG6?XiK#iLm_BhWrYj+1!=cUEn#VCZLj9w#gTF3ze zldzUKD#OIwA}tNojHuD2k(y;O)B7*d#A<9$0g9RVxm}C96B}fI|0lBKa^*&`ZRkQW zufwmb{1jDUFR?w-7UckR4-X$Nm9R zpoaZ@3C>V^4`9Obw>2*JURtFSj=9I8s?^d;mM*ikquRS6yvrp^_!cUwN^$ItY>GWz zdsQ^n(9FJeD2IKnb{DouQD9Ig2y{h5+o`IqPR%o4qnWtiRefgb10xbRHq87zt~bzYveFlbI~$P70ymP8Bb2^uA+5wSKJ@baLB zi8{wTmkhKBn0F>+TBtmlkOy3t!;~|cpPLBhYWqSgOChHIv z1kjyWqex-xNWKli28*MW=6_CZx0QTjH?w^8heRH{I7~UWlNL4ye#+BNJK12h zOIJ<)qK|o%qK2bz+!Lf|#jVbd=f7j@f@vxa^*ke1t_XyzH4`hzhOT$;RSLyI-({@z zK7*_SA#i&%o&oL9%=({3wPAdfCnTPq1+$rETAmOo2p zrQO(4pNm47h$`DwFgc~nh~7AtljS^7%3<0+BJiQLkqNNdQ>~I74#{$L4S#vL!gvKO zdcDl-7+-S&+sz{ANQ@nd)KGct`&KOddQTAY&kX+vH>4 zNVy+$g?Q$Nj>i+w@$9VagPMAo=1bxg`+z`q_4{3(wO=_Brt$}{MA@vX0kZ*wN|#!% z6m=2?ELLIoT-cHBLe_L#x{Ow-#ri8ga%x63Ym5g*{*1oW{tRNnbGoOm$YJlm-M!V; zc*qhmD+zrK^f$R<<+BGpcYWEy<6KS3oc+jgacE3T?12pavtu9|VJQ!1NW~PSuIx=` z9x{G@?yTaj!e~6|61-NZsaPN>XqdTa65!JcxPyG-fG>iZeL$ko1FYhj}TRF;U0C7BwjDpAxM53fxstUM7#o{1%O< zQI~5ua9p2Yi3xp6M_&@De$X2li=w4&##~pMYGGFYf(~5a51FyLyPj;D@D;gT#@cOr zM@O(eRc$EOSd?uVQmv2ZPn9x{v9E2+>=@k; zS;j9l?-M7A@WqKW_2@86yHM46^07g(ZFt1M2$m)~0`g}c8yKc*v0qTP*19IM7MpQMPe-Lo~#ST=u8QKd<~@_yU> zJ*&ug+6(VvDved@9$mc$Vk>ZHT=X8DhW#JW*4AlKA#HXX`otZe}91zo3d* zcp&cJG&fhQbZL9X1ak@nM4g_z8Jz(gzfhSM5-qo`ihGG_h@_k9gbSFIla};v!BS?UjsEW zwYe8PP!bHT(C^$?p)9OJbHGT(K`^9R|o3&N2#8ld+m{ zOE@ORR6NgxjH?tKX@Mkhqd+GC>jjKUlOAkQF}|?C%*DmE zG1K$S^?o>EtM$R6|7Xjh%jezGj@pJJfnWP1nbQmYhXS4smhF)%hEw(xwGlH?z(i~R zbAm#fPX75CbMFPro8Y|G@>r>x# zUGNz|lk2R(X$r{ZbGz*quLrJ4CS&uxb#6JwmgW;j6YIYEvj2E!l)mFiQ$BiXaWv%C z!!Ip3Slh58EVfLAryI)TxW9rtkq)F(YZWnA$F!T=y^$n(h3t_)Fr_yE-A0xgg3eF~ zq}xRYKhN5WKCh=|-;^DVBpJbDeYSI@Aok`5o zp|24UW3`XGUyzQM-&@gr{^{x=lB=&tBThA+w0rpjBf!qPJGzC|Z_FcnV*ctDYQvud>g$gi%5;b2eB8Q(}F zmLv+nsLCva0upsdc+=+NeA%_Lyc_MXaTxc{4+iLhj3n(YLz^q0E`C(TZ^H9+RcwU&{?+H9%H zEU}g(Ybt8N@*gb-CEvc>-rbE`?@vl&V>|SHxLN;6U@!(>a`^NS0a4VW?+x28%~*o% z8J{I$OpYnaRVS$;rmDi$E{irj(r3i>7N!p}KTOs%qZm6Ev^h_5YPF7IlE5ZDDymT+ zMtKWX2`#4DeB07Jc3{WdBKN<;f!Gb?_cVIs5D2+I;dsce*B;4@c^}J#R8AeK2-(L} zz(}W2j1+I>YP`aS>d^bpbC7T?N)g6Vf-lfL%IHm}j?otcdv^L>vsw+U%SC|)|cXfp&kmwlR+L4^+J!-Q40EG@+j%xfh=AX>XPq@M?FB=D;^1SRKC%CqqD=+dQzHI56fLuWlOhidEB(x z#tJLA0^^MM(GY(NA=>*Wk$X3>nu+T>U#^~UrrAM+4EQ1AtM2g=N9Tdrw~M#IEOOoX z9#@KMuM80Y{96LiwrT+k6W8K-(FZWx&@OUYrwKU~gkDrpbAwXj>!51VsC{_dLhK_^ zbr0BOIQ*siMv9rSot^R!-{u<*l&kRlM<_6R>6i8+63&c_^T=pQQzwuQk82n(J)9Xl zn3O*`Vs2P_1uHL~c;;sZ(DKdqo`06a?g)SjM1%fg(gJf}d_VSCd-CtOImU-$mWNNk zbv7+$>Q}o45A^+sOdLj_%l(Cxv`0?=Z&?G00ZbTc;ofYWlA_>|q$36>IwYHXIAhUr z)c0SrZ0oo|;rDWn+;BJ@@PLn79iIjJZSFs}0@UH(BCR(%*(US1g2Fxd@E0s$bLJl=|;m5{E z+f(g+VhS{5Nwd)jmhN@jON8w1b8#cGW&ilB4rh_`ucv~wDrC}Y0-Va4|K8v?l?jde z7r{FC*S|D!UeE~@jl5>-q5xdKmpW&J^lkK;{RV2|F*7dw#l`kfzv^ecR8R8$vu*PhZg99uG~X_r*xP$ zN!srJn?C!^t%$x=uK%}bF(N&V$@e0Ut^X*mO7X8SqrE5h?W4A$>bGVL4Ot=@C}=bY z4V4a{8oU(}Dw7VabuN@Yc4Yq~EK=;EubdzWmRfMg848Dup!(c)dI#ZokiA z00V@P=416*6H79ip%3lF*6?wd$tp9)bJ0x4g}N}4QX(A6Ghft>yX7W=6Fss(inY2O zW&MX9c+F?QjI;OP{LkF2IjoL6cduZy=~s1=-hlv3`VUj>i^}i5SsiQ56ZFrahWxwx z`=W%vvw%_$y$RJ7>2r+-JA**Vw1xV14fjoXCn24vi&;MMjbn>+542{HlSUx&N*f3cbB%<|Ks;EQG-XQ_h=*@`n1e*Ak|2-&w-S*&9<_L$o*+(K0~`{-|Q?wU!w#D z;U~q$otHN^_Yx;pJWt)Xu@?1c7pF}P%B`Irq!2;fwh1BU3Oy3Q6yz^xtxuNTeV3!1%2Utav4?N0_Pom!ISC5oAmqLMQVP@PumvF zRoM(D5X4mfD2W0yM$~;z!jt9V(|FD~7XJRY?k7BdEz6p&7^j8BXPBAQ%OR5M#Rmet z+l^yyk-AejZMcunmh@&;gv%;Di*1V&xMNqB8nEnYId zq;D4~v5ooMpp#IFI=~A!6$8aM zj?$sAB!K=#eUYVKrlX?g(T{beR>U=4K&H*8b4EBz*6LYFME3f#wiDk)we3yL+^W0$ zXNPUYE8h$3$>;6y#;%2{9s{vGlV|G{+g~y!To?E!orIm>b9rP*+3;jrAz+z&6I(m^ z+@cikruiI$&O7o-Sn2MSH+A8uJH|)aX85PO#iEwQ--ztPlZQWe(>dkI6OBWw9~{H< z)|xoh*O2xpiWbhl4zSmG`l?>@9im-$eivXqsI!{eOgVJ?<&MQC(Y~p@bu+@VpFO;} zR69H*=oVaWf_Xhh(#35o^F>f`ogf@ZHKM3l%JeE0Oof5*N?p3x3A`{NO)OAi8rG+( z0sy5_rOXz}hUt*t&uIJgi45H*Z!kDvISvTQh)gH0&I4PFJc=^*Z;d02N(Ip^Pe32b zJmn9=oj$X&onvGaZJkROh{}QDl5_fnjaT_V$k~hvbwN!{Dh;*2L zJ6|V3inGO=(n|i@A8bXWF$^tn;By7$3W1kUKW1 zm$H6-xH)}xjL2riioOWSqc8LDMY?stxU;VD&C=I4^PP~|9!5l8Oykg>uKF6#yVTR% zU)1pRc9LBFUQVyh+wYniJ2c#$JNgY?Cx(mTw5a4KV&uaaJ{^-$ID?VzJ7;S+07^MUX%5Q)`Ul8 zR*ve9P!xu5rg9-Mc)m(kLy-N1SdaUmIT-GFxH`AXaDRU^`l2;!FhzZ8|2H(fqvnnO z?5JQ*1AOdse8++@VxjxN!&%?A z)$7{2FY@KsY-IeNLoao{;V?8PO^9lGzHZw@#wpur66ZKvTgvK6WS!*<6Hp>iSym(z z!xIl3wXm>~hZ`$;d{Hy+M39KQ^`8-jlFXJ}q;KBTxJUIrt6~;2$$-^qT{yRvdbTd= zET&ZCz9$QsrCC?Kc6@sjLOvaLf2e+F+dXx&XZ0juyRmF>5GP3xr|AK@BZ=*N97b|* zG`Eqd@9D_-r}1o-I(_w~<@S$ly82XT9aRbdgtKFOS%V`=@MWs$|BQ^%7UWPQy1B6C zLgbk{eqhS*`X>pFk;R1OY8L;HfCslP1%>%|AuyLaA4LluhM7Ycjj$AXdPGH0p#gVo z=@oMlu`f{;1Zk+LPaMx(T-nEa;v7@g0AJwpm59Q7C7y`M1Z`oGWCw9=W=m~-)yh(pKqi!1k_^ymoG+wU5urZ4?Ydd7$M(BzzR(i&1aM10ybavjdq z=J-W;a_okk8T;b2?)1?5>@}}2s+5OR4>v^@niC+cxegOU>lsZ0L@p({53<@=H|Ko@m6|YQW9%qowc7tasobRc-&AV zZp^tevyG~ZA|X$8NAC6eVQ=^9)AyURr0FuX>cN2ynQ?^-uip#y?=w0^ahA(-agVUL zXjJ!t6BS8|91BP?OLV9)EH>R{)@7}xTTX;&z4?1hEZ~@EtO&WdvwUZg%5L6LE#$`Z zrLY?pp;NA~%qkB(Do+KXj59^vGDZHUh2x`c1-4D~wM7qXU%XwU2f-u1;N5)vJ3jL+ zX?W9Q7F9o_4<_S?)7SqnWaM|F26_R3s)`N+V&^dN>{wGe)@-Trtm@~r0QAb?rWNp> zS3_-IIJNI}_RHk$iww4&NE&q^Hp0K}AK%2!Sn#T$raud3={a=z*2C;inxdtb9kUlfLL*1!qD0iau#bU)h`?)1NATnAtD5%Zi!!sO>uaqncy|tj{61)^&3AvbP z2;+UB!MTPQcq`kHwibYVCBWSyU&wC5GvCZ1*tP*~;?hA%r{T99w@>d47M1}s_vFne zz{bK;FY^5hKtdBZDApW!4)(R)A8CIIGT+k)m=vHn!LXI)_Ng#NGKM_1qrTpafc?|) zt>BHt7TXxB^UMo>A`aR3^Eb!{%9U)ft-#gZQOd(4HLY@eoi_479@3#lNiZ!#szp3y zP%3wzTVf>0zS&XJhYLiiYXo|Y0$VTcDXA5u!LSXp<0f3JxeU(l!mq)OL+o#uS6QN~ zo&WT}{xN1VQ<5DF{NW(=4g@;-JYz*=S-OtomJU*g#JJex0(8s{Ple8xEUCtQ8s_5m zYojq~aO0{**Nn|t!GD4?wgb(Je7GkL`n`__Unza;o{VMmXba0@Y7CMH6(db+vkW2G zI;!hoe}W5(Gs&ScEHRGBl+q+LU6cGl+`l3r7+LbZ@LKMs%P&-XeWaO|c8pEVa==oq zf351*mE9BCRI|KY6)PJiL>Nw8maOBQGneLS5%YM0Pkb#PBAjCAd}k-5fr3B^gXe8| zY+HU6>Pm5OO8340JXtAJUuQ);H+)F^6dwl!GX4>-vwpCJ3Ff%e)?1Ir21r?=fT*V# z)YbS?CL>Lm--a)pN=P93(M7u`AXe&5#H6e;p6xDEIVcKqyGxkkkQ?>R;nS3Gh5zpW zSv67Kri6Iag6^vb^gc{Pl=&>3uU`-G&9smf`mzFkzd(CN}- zPFFy46_5;%MJvla2Q-GCR1?fvivA<6^{Jf+Yc@!^W7qMeW2eYzKWjFD$tw_kowf+h z+dzRMJ_0hje{{QRo$5-_%mM}5Fj-9+=N}Q@sY;Gs#SS1G1ttZb8AGJVKBq>*A6&U~ zvoEUDEq83wI}m|nhf*)gAYwF7`#(pB$>+AEc%@^GXRGC3J~wc_%9?CX{`2|PC)iuY zmj|VbR%v`f*N(nlfldKzF|k||pH4|8z3f`f@!)c^HHNG~bDiR~IeQ>FO0$0Q`$qG} zYNe&{Lq_RyDP|z6f1}3a{fS`0B0d3$ILN>kh~Q)kDnB4niC>r-1zD@Y$5BuRcNa#q z;ZKF|UgfM|g2J`<+u0S7bvuGM>5Jucm~}4pVuUgcOBpBEEyoaIH3tqFpV(ci@hVHhxi6usl*}0|tW|M7Qt;U~q z-m!3NCZE?ZipG-JjY5cm*+=J=v)gl%2lg&~AiF1Lxx%FHvY!DL)PGTRfyX#+Eaj2h z+RG-2knaY;58Fmt*PdL>1T#-A-mGB7J_WJP0lL=-O7qfn>7#0%Ulzwtym48_Cz9VC zxntn+Z+fqa&>mLpqPa`?CMgQxV&T5ou?<>6{rs)zEleg+Z+&M=lCgl~eO3WB^J@3G8tL58@ zH*ZZ$wRtG5Mb;o1y-G4Of_!ShK@#RVg#hXYjVB$KwfaV7c$Qc8wYFC_$1+OE4!w%7 zC_}5nX+1{_uNaN!RxQM1hN_8VPBuSh)`z)iP#4IRQ4q5ZGXnrSosOC4#1wsbpz^aS z+bSbDIjr=PLXx26XD-BUFtD z{3#FgxEQUNSIxze02NM9aXM*WneP6Nu8o{YC))Esd7WV2l{%%jKhYb@x+T3#1fZ3h z)f4g6x#Ac-M*L_d!)?Cj`W|8@us8pDcZ$a z&-7&#P_`mg*o~MPlGT$EG)Fxg4O<_wOh=ZRiv3!HC^lbI{)kgegS8AXa^Qtaxy-y}o? zsi;*>U@_vE_Lhl)COH|Q;)LhY2$nbbz4u3zECGX)V2$pinYPK9w3arpGqVV9cByZd z>Mp*Q2S0yr8{BF6;x+k+mY%&CGP79!df8n>`@%lI;2dl4QnaRD1BCuGkPiCIl1#~s?GDT(9V?t5+)Pb2F z6n6_IvYiwFV7~b-K8PG&-V*A7KtI{molXY#7w6C=NRkxs@2b6q@oy8#GBC9vB_yzG zZ5#k>DZ$z9KAMT6WyvRTu(ZlJGMJU6m32ZSOOl z+eZqU)V> zFa!@t;%U?d@ zw%dhxl4*V+sj3t{(IyKC)W}ma^J)_tH;XtU!V{qTG3@GV^)<+0Zq#+Vyb(;wnzej%Vz(VU#GPPmw35l=L3R;BO;5PiWH8su){wy2GfD=F&b?m3 z4rqi!P#xwd!e3cv7LMYKjB3*3*&Aj8a~n*7D>u(BQ}7xhGi`h$ZiR3&`w1yvn_P)k z9Qht)JnlayOPu)r2TcLq5s+nFzlCvsk2B$eny9_?sC-u1>(qzBg+&DEmXSh)9@`!a zBsIw5bESQRv^zOlu~y&pr4dk7(60q_iq}Tm%^cS@lxUAx>pvR@<6b2Dgh1RFws|WM zm*1irZI#iPigt#K?W?R+yl3}K(&G2wNFc&}$ZG~$&vMxBb7{6pyHK0M1lg>D@E6jH zCmWyk-}|e5sw!~%{;A1fD6s%+;2v!A8rTHWQIo}iI7|9m{y|~43UI6?zNwXlB^*ba zH)V(fJzxjKY9`Cf3L~AyRuQy3ycF_;4uB9f#}s=PyD=9UiZjx%g5S6$*RM@n9x8KT zAuT-Qmy*T=`>yU?o~lG$4U)iup{8>bSaqoYMORcHJtYPP#_?xWG^GaJ!eA277uRK~ zV$+Ma`uK%&{L692SM|dS{p)fQoa&6c;{_+*#FF9bXkUR-54)^4aS|}KH5H1lxw-Y< zF^|5EIbUiEs3DRQC0vrbZ+LN5RG4zK!MEzFh#rVg zjP8Jd*iR+-1;YU%kdKtty5}EJwfhPhST6Rp8VN%;{P zhiUcRbF#8};K?i>GC&Fb-e1kKiNWcpsx@?#eL^ulQt}SJ#z9FAYXh;aK0-b}^rBO! z5HcXg+lA)aaPS&E4~DOO&|Ui7XDFLIc3zknQKAY06`!jmSRiwSnuzr~gy5&Dh+$|< zy(7qp*waWlDvb}5XZgmY1L37sp?Z^5Gie~a8;erS_&ZuTi2hyqxus5GAB02C(_C8l zIUW#yO78zr6_8aGs-A4{jV19v|1PlWQ%-R-G>Cp0DL-uVN;tS>b=2{pzI!SsH`o`) zi`yi=TK@NUSHDiW55nu}SCBq4t*4-9&+Ba8UuH>J57k3n2Lf4>2gBxOsYj@6cUdjv zUxIf$mNs4JvnD};>EvH*|G8l%xz9u(wTMV8Ru8#uPDT6hKIw_AUoyrt7?yK34M~FSr zKbHZf%Aw$Z!=CDdu1mvaY>pVT`NeA;=}WZB_DSkVAmn|GOmH-vSx)QOVmr-WwJ^)d zS}g<47x*~XJr1b8f@PCScgy|QWRg2c5&J?DgIteVVAq0?Dz}r(|Q)j_^t8b<3SoApKshKAUynI}TAJ$j5hiWYs|*!)0>bMvfB;-*_+0aZ^o`A$S3OSLk*WJA}kSQNvD zI``(%G#Msay0Fr__{jm;RvUmV)t}5z{O2bcRPwVNRWPmouXQw!`Y%FISK|uy;Y1RF z!GbsR`s88G8=cw&=&CyC5_-P9LM+}t;+=^!p>?>bmXk1(ZCR#)czKh~6JmQ*Phew5 zT;JoK+T>g1Oto>hHHVabqTa{X1tH185%^N_<8RfF3qKHRU>c}pdi|=?J8Py-k|{Vp z>lk5)p&qv@RZKKVg**j?Q#>2FXl_WhL{6o2`qqtRX|2T)g+UhpW(4HxVbCZ{xurbz zSVcdon_U*m4oOuK^RP0q8Cm)1A(F!KUp4EopCaiv=%=d3VLoHjQL&F~)Q=^sMQClC z(u8huy$Qge0mX<=EYnM4g#4m3Q~AC`Fi*S4TA7b9h0z2#`O9_`V5y@q=KwYKr=a#h zymN;OQ%zktrDC*>wUE-o%wHoPwg`w?!UuX>%`Uf-FSUd5kNrm3G*5 zeP!)o2$xs1t;!q8D^fD06PmMm6zEJP)bdW5cEL!KB0I4kjJ)e&w_=0(Aho@mDZtJn z0Ea`~2bS*N-ZvU+7Kqno_oS`+agVzm0n*P704yqeR_`_K4l&?y8$FvNX_`6kkn*Mxd%{T*F7P)ok^gIDA;h@_x zCU_VS=9e0#ho|k-L>^nDF|2k)#9az1C2#@epZ&7Q86?hf^dldDYYkIn^% zmQC%t{O{T{s_?7Q@Yw}G6}M29^r(8WRtIeRUxnyhk1940gnKHZpf;I|xma3OB>vrb zI7>&mP1{K+uNH>LD1*KaMFn-eAhA{vi;b=s?N zXI;xKN)5V~h+F$ncFReviWuhJ5$i|p_p$gf(h@_~C4g^19}gE=Ho(onq#ixG#Ero2 z=uzP4kc&|9G>X#B?c;Ry*bEo-yyUl#jnE4C_5u)F^6=5vRg1P%S(na9@ur-YmS z<)i;S1pR;bWr6?KpB`Y{`7CJLa+cV9y;DkuwR8X9HwV77OEVDHB=_fa?AKL9YZ%;B zHQ&tla>xP(qi|omN$ii{SupMb-bQ|JzG+f7w9ayz-qB*Kyy<}7k#6DfrxFwl9ts(o zYbV0dYHb&V`Hnhq2DxHT$-I=gZ5J40q$LeRc8c>(7bW|VKzY9(+49AH<|g?EZ$R3y zz80sH_zV?uYuBd9^)PWYN<`m4*zHgDz2|1#jPdlKLA03xfkj(|TGV3?M{5ony)J0D zyYUJ}d5(Q(kZpH#|GxEVl4Z<2(mtXQP(Zl)NC1)xDZVRXj<@~<2DsZ>=84GY!~+1| z8I1;PY*)Ul!dv5O+95jwsOP^$)M41kCyPAl%cHzvS`3gwJU6KQEO-^^y9g|o(OCDu zzVV&5M`6#IFa{_vudYtxfr)_u5L)130vx~Dfst0)b(nq>nm*FfVRPokwx9Tq4s=>>K+|Uu^@guz@K%-}{qn zTs%Dr0zIcnqPPZ`IO^W*qAZ*8Cm`0^@IvyaMof?q(O)$I`2`?y2n-_!JxUkeW<|`9 z57)Jx!2?h)9k%-o?yKfpW}zFz>=Rln@5kZi>y4O1*03rTvs{t4cm)w7M&+399w0yE zM}f#G;jUOFFq(UP1&^OKcq=sRx$m<$jCd|mZ6^833+vro99Lo`C3`-;tAs=}Dy=Tk z6Te4M#+CILiu*xZo5B$9Y8|^tAL?N8G8^k3n(ZxK?eaFC9HO|$zv?3#y%3pK{M%6w zX$vFH+)wdxjs|s{xO=T84~>K?$AA{X&yZv0v)~RtC|qr*E!c>y=cF%laxHe(Ho@T5 zR8-ODAq1>tUwC`)a8EgWyXWqH0)JMOe?MAv>BzOQ0JKVUBg8WC{tsVo85dRe#gC$b2uesONJ~kl zAPkL4hjfR;07D2vw*n#|-7Vb+(y7up(mkWn3=K0w4cvpz?{nkD{ht@SVovO{&)R#f zZ!9joO(YKg%;hNJ^79pF2KZiff>g>kf|NYl4?t&qqbMx_RJWFnb(16f;#{ib5Un?V z8HE^_b-Aq6$px9l!aia;Az8H0lQ-)CI~k{s@PmZRpQrb5{!u}0rb+nLH8V-W&_{LX zcui12eSesDodTZs6fvZvd-|X(Atgo}YFOBQc6Ga&_a?aJ#rf~ome?$!vyb+ami!W z^u`ckc-adtXS8%{}l%(S06MOQ4DLal( zaIev5ZEbA^n~iT>@-)^oqTfWxfchEiW)6QGwW}WJHgv`5ds1>6W>7I8R1uh7-F`gR zlsbHk@k$;1oSV&c{cbFMT`xYzX|c%bH|trfLf|v6K%e)j8FBFaG3gH9LPsnLsNfv$ z$2lz`m@rjy98vqH#qA!yoz8kO`vMqXMf~T7lK1Y-_?>^OA6T7U{Kk8H`nawuRLv3K zq%y3lZ(0;0ZaL+&Ew$abEwEjCfQ%nZw4$^x^a$yBytbA4dE89`c!tqeH)A5x=Xvc@ zljV7I0Ys+`ZK3xs_jw$-seG5OyjXr&46*h?a#*}fA)a)%1?kzzF+^gTZ$NC^+(V?At^KJ{cgjOQ^OF%TB{PS`m97Z#j7+{?ot5y>vuQ{g7xps*HV+sw zP`0! zE=myQY5igr`2ozGM7-Q=Y}3-9#~!5K6pDPk+F~YkBg+o1eX0A)2c6pSR3rJsZn`Vz1rj>d6wb|)fDKa6O z5Kpx(g$2(L%MviYrfl8&i!!czEihMlMkk(Dim7uU^pCFbD9)6=hZ`rqy zvt+`O+rIs7YmqhI+32uW_H6u4_-bWr1}OR~pdeoOlJjw#G-@m1F2wM4Z$5B73+pW_ zwxS6tudjs)PgG2QWOApQr0fZVyQS+m@IGmEko|s`J+qx3&BcVH_>-e9Zjw-pb>i19 z1?^_s;O8RvN{URUE2jb;1+FaGnsuO{R3=P%WQDOOkr&CZV^dwuFS%P+E1lSAl&$6R zllRqpWDg261YOTBmgle4R4Zrta?(|w!B=+f^P$tEq(J#m3m3k9m6lTq)1vvWn^{c} z6D55{0Oe>2r{_tyZaUzfzi1usgR>qDNaC+83=IZ!#-@8prvy40)6tNva2cRjaFE?SxS5$oxb1~ddlC2-9{G?Uh*bY@%$c6B}d3=_GQ;nC^ZM*zp z-kR1&J+eMWSMo;@9P54UZvY7#dLXB2_|=Bbjm`2XrOHFrbuFdS9xv}amz8fU zxASPd@G*p?C(r0tulku#l{Rpoq?&;n!s$x_2XVMftJRWf^k>Ms9bMp$R{1FEwixPH z@Hrd$mi$V;v2?RCRg#zA6iA#<+RBxnt(bZ<8RJDssHfm2`AcncXThM!8jjhh!{H^*;yoj zW%Tr85?xnJ~s~JJ(+gMr15L_ z<=sFJ;ZA?dx(J2c2m<3I=PUb|u^ss&@l&J31Po&RPC1EY>Y9CN`7s#EEvxZYl(#6$ z07C0xeu$XJX0(Pk<0P&_p}MUf+fDZZuJ0A?!MMTJG2T1y#IEHf`b%;E>oWU zu#IJr_MAo7OW)Dymsw-%Uv7ybtIFhvIyW@?bx^!w4MDtnRK>o5L1|wA`Bea& z#=XP5;H|G3zYqP6uT%t#$uH>}>zzN{$KATPD^W7WPjMjS_CdmDbkR&jsjMnROHjo@ zu3S1rRJ0#I)C5>fz2#(FO(gZhRo;0#EmF^b^7DDn89KbWi$evvt-Wr`sQD%?i&673 z?wo`eCk*-ZJz{8&J!qSHM&j(&*)-%jw-b9GzmvEBvYvTQs*KpB{j|$hyt}OV#2xE3 z9Fu)sQ+!*bcxtqM&DaLe0F3|G19)9f`JuVWnp`fY2Bb;syhHhwL2PTc@n{KhtSDbl z;%Z~g$|#Uki@J6nxzylkx^wuDa)hH()BUymurI+7E)n41WkiT<*)Vz5i+%=-Fr&eS z@_5+Y54WFl3^_cfSLrITk>%gO-Q9RL7$P7W=B$R!xErz|7j%gNXE-85c#+MLpAO?f#7N^>n)} z{<6e;Wf=}r#Xt}b&==jl*Hx;23?j&#lf}0VR7*52YlG)5mVLWg;jtkhbe{D24XqX$ zC#(aB8|}AJ+{u1>ewak?CYF&f)%WQ~g7#WRGFTzJBR7qigwC_2(+NGeXl=Vzo3l7c7sDgG&?kcRddVjMS1<~NaGNhr6pp!(eW|;{`^d|w<2pB{5%z)`a^^|Jf@GNXEoeCr zo-T$OaQ;EEMh5| z+uY-eSUwpK=uYjRi&yb}z}P8?7@)9h-YW=iPQU*QV|(}7G&|I6Zdc^`#9!C-^4MB= z*r#OIH~RXjnjHnx_!R(1TzEav;aD4i-``lD(bA|TJtn^3P7?S&Z(o9&C6@OwkKw|~ z7K>vwuqXseA*pG8Lz0++csA+>S*r;rPSjR^lGJt$bvtQP#iv}S=J<#7W(BKNaT7n7 zd~qvX#78*qnFb&_~MNI6|14jJM2C7{zIO6%v9UnRA5`4 zl`jz7AqK4XCd0gL35;C4aMi66j|dtTciQ`KO{BQ+5Rb~{1YDuLCN&=ME3hbW2cul) zAU<{>$$by$&QEC9uY2!CSb}3cw3Q4b;fL>y)bLccASV3cs4bC{ui3XAQ6{ln+>hp= z)1Vw|+_bBTYsDZg8RXidkyG}mLMCYQ?b;a7`JHJO+r+lzI+2|d- zg{OPOX5-sZH;9+yuCihF^vhTR(z68!kwhargFJpAYAHDcxHwL@seMa*t%7@09Mf)h zZLv-2OuWr|P{apo%^&PC2v2pspPREr*(^N;Y0C6lp4Xam z>$K^IoI8$w5-)x`R;;`4C)ttr5}?bJG>AWvac!lN2BoJ;e#h3&5-|cendc@R<;%##+~wpw5R1J&NOZEH6jomd z{V7f<=6Afo@Xx?fe)^lK)|MkJ59?M^{EmIngq?W%Q}i93eZ{&y-Ip(8-HPT42BBb+ z4+{z9Q=p3AX5vNgXlQ4U0{MZ%C#fcA*ZBci^4RfoBtRu z*v;0g*|2MC`ilA=hldM)N60?jM*l8vYQ{_Or&q?&p$&JpDB8XsSbw>9?{&jG&w5@U zkae@cb5kTvAB{NYn)8mzbHw9CzZu)et9~a+HSvQ{4M21~NlR-CgC3!UQ~DT4G<93^ z-+#$t0_7feJ0;=yL>88n$zPr2GSJWbNin96mk%fO3g-n%mzvX#iBDaUx0{2NQ%Z3Z zgnM(;*h0x(>;k@MFUXi4KG&E&R~429B~kci62h$6rvP%2`{Ys_1Fn2g_Y2uIiK^My z2A&VOFx;Tqjfolkrxp~!j&*@Zg^I&0pVk3{2HyxG0D$<_qAG!e;tOcv?ZO+SOo@!D zx)=7P(P`U&Q{tzJ`?I7J!(mYO1O+|~fSNzE1_a=r&8q+}AE&Q*%(o%-i@JE-3~`6K z$byXoS<}iP|E(o^=T@l;|Bp5x~Zma35OsfnKbq%{`V^u zR_ezH6aM;<$uO3TT4_RBHo>~Z%1>4UwX@lM$*Q6LY{HvHbFX#dHio!r62cj-$}ShX zBn2zG?~q9F+pEh?;D zcs*9PFzrE>y`0#0?uu6@u{il8%f_zCQ`crf=Tkqy)tpVIRjg2v;xv-?F>3^l-J;hc zAo_U5ZRFNSSz|Nv_#VaFSgJZ_5dbWLYGh2nGMA;yE8mTC z=i?6hyM@C-A+Keq<`a!onS(@Y+j*#|zb+_N3t zspXCO8Q|Jfgvfr&ri!kL>V$-py4BS`0@99Nvx5R|E>+lEW*<8&W&DgBlCrz#~kiH3joRM8Ai(F zcwFa3LMnyrILbOl+WXK8H_PJ$bjFr9u@J5GoM5(F;*OL!UIvvL`Lolf z|Hu;7nT^kW#3u9QQ+D*@Ae^r9-g*6spAyxWsOltBcDk|5LFUAABb*xwP_Mew=g$2| z_uuu-^MdJ>`^ir>UPSr*V(?iT{X15r*Km@)a%U{iA45vN#D)70efl_}W9!PfYmmj4 zA+O@cz7?MnuWq=NRpt>Cm~EiIX2`jU@-By&f{w%yY`1x?TAZy1{YGW`OYpha{X>%) z0zy>OJpQKSHT9PRX)X>WiHlS;T9N)&NNg1+~DA(zDy zS*FaPPpv$iYN_3w%b2;LPvBNGsc=v-*_$R0JpHZlFU+&TWMRR@JmzWVM?f{jV&@$i z!9w>|*Lf#Ty(M(bJ&XLqMA^HY9jGD_$4WN}ay3Otri}CY;RcrS#LN}0AluaDGAaK- z)Ocg)^_J3Bp)ynstf+e!x)0evduL$bs!ldE&RzJZ_o=Fw^m7E z?*xM_H*|i)=>FQKkc`B<2$s+iF8!-GPzInErq|eRhO4~m+f)I>(wFbBUOz(#&iVLf z{?7oVNU4XyNN2#sY7e=F@a#)^{{z{1!15gs@WW95&>x4^^nV%W^H<3M(QJJe%vx_2 zo=E};$76T&>$=6{G2gbxC{6+zw?_)#4$~^Ostw{lsuk7Do6!k3_*ROZX}KWF+TMuE z(y=&FF?sI6*2bQMUR0O)Z#N?{81!TQ@n6%KP+0QM#>mv4z66Qm$F~IViD`cYnFpTP zh@Gt_7R)Yt?!$R*l;WNKH%f8Lm`lT8U1nDv-^RC>xrRfXqL}|67Wq+?waX*>qXd*t z^(h6^Dut)j>a#@C3ZBmne9iX3N5}un2aJn(QmdGBfo(g^(GP~}Qw1yr3qYBq7)eIV z4wfEvh6Y*eZ13()2MrGmotRUQf)S+Np`*Es^=o zsl*Dn!nmGlVC{@5J*!PVxU9rf#CGA3YYI9+BdAuQ?|**II#KvR$WyV;bjJ5(l6qa> zI@h1!C;dLEn~j8j+db_v@uHI;DgN@?E@vP8QO1ZkNXojc!6cl?&+H<~=kSrUZ$-j(7P7Rw04Rh-pYHFlIoGYM% z?bb0Y*OoxCXxStFK}S>}Mim84=LI3vbxv<6yOnlv2B81KuOK>0IHjE7gRE?nfiX|K zxZxx38NCX}0pTxifGUNmcX90$<}yc5=dc_gY?5jgB;6ftL!Cy(eOJ-|#3=_F5hHcr zz6|R!?{EC-i&d(QowJ37$*KuZ# z_8Xts8`yTZCFzy%mfw5uxh%!Za*vsERZn$@3tkt794!H}O)mDW`BKceyFM zpW@9M0{jb#ICtFVK+}IWBM~``*En&x_l{QMbKPmVn#`|rvWWP0B_<>Q@yGx#W&J_+ zpEs+a-a1`tk6bnj3T0E$84|0e$FLzGPyQ$u{z(6HeWp8CSj~KbU*UVTxB26jfBUnGeYKtrL?@9K*u?G+ENi0yGrP;Vu;9k>+14X zcMD`=sj%&Xfyw3lA4mOUG<#{T2=dQ+@wpQ@bwQi=1&dT*5C!39tG~d%tWmQ~%g0i7 z*$dl+^2_umSxU39M$x#FjWcH!zkIbOi2^>C#ZgI~-_)RQ4l1?CyVDP8SEqoM3nN86 z^cS#|!ei-}$y8~hTJvkV^5q~2lPj<9)jh{yAWxOUE&LN3oE8Dszb~N#RL1DNWe9Jt zaf3s0i?I8wsaJLj#eOKcdR%c$koF@pV@MzFVv|d5miOO?^^5_)1>#wzs7s0>%iosH zx4nb`rfPs!Lc$&V9mE5^uFJX`YlrdwKeEQJ)MLYZ*iB~wi{{J2*r2H(#Pt>C+y1R* z{2d(~=PrhZ=~wsj-W^=Ml7cd{#rcF9k-?b;b)i@cD48$<9C^FT;# zB(MZW)5{Yby#T%ZHwwU?!LoPh7gUd{8VJ9C33(cXg~Zc(S17_4%voIaxDrIK+|n*> z_ATqK)fNCl`v2#MzN@oJeOJD0;COpDe7H)#OT(PlZLj3&Y3fvmZFO(KQxg96(wj>H zy*BuL|FiTMkTina3X7TnQ2ZOB#%oBGCD3Vs3Uu$tqVlG1MM1wE$x-`ZAIhIA8J-xG3Ll=aPAff&ZS`jz(BLu&w zs!9zXfdI_J2a`CoSNmvOlB$fGGW`B`4>EhCtFjq6DaN+daZWQu94aD8E-p1*bM-Ha z=e(j9rW+0PO7T}~<Of}^Yk0el+k$<`AQpqD=?8k5n2Tcm_gKM8jKCvFU_+~S^5rBTkp9J$rM}sr zg@y*QclTd^pVZi_VpS2TN(LTC#2fVQ?Eltv?cDRE6BJ4b0;!Nd&siPy@&&$m8vjWG zASAf~ZC#XZJobzlls$JBk{c|qudud&+1S4$n2}_n9+Ed}B6qdO>Ih`IIE>GcGgXPX z*Owbdxz}g8TKf9zCAopE{-@mxGx9z@Ete-H($g5@c5hdA|8;rCg&Qvsl>7gtoD9=| z(A{LZ%XWG}fzD>t>*blV!kvlKpSup3>^3$w#SMw5G)f_q$MX>glpb5Zl;1ZBnVf{u z7ko6%@mx0ZjPl@6tXt&KK#*nIx*tfI|MXd!W;-^CjUe}I^D*-iZ!2`l@o`49x2B4T z&)t`PxzYZ+0lSbJbboVEN0%PsRQ3Qe>uEf>#JiDut>81;h92(w zES(ZT&OTIDl2cytA8{1$kdUP>1owe$1}TvHjg*2y+;a&`lqc_QKcBb!$#$&k$C2xl zogloJ@SKxn1=o6M=RozhU`;jyJ*{$gG>rG5A9U0`tmI=K@#@Gd&y0lJ#yp((aM(UP ztS$kdX9FBQJIvm)mWhdDb%biJ)Uwc$-+sr@IkE=12tOP1>RYB4&hlAz_c>d0YeCI) zCHfo>t;K+(Sfo#XT&zy($0jhxoHl29!F}8&l-RfIZ_WrD!E$jW-?OB!Jn>JVtZKRp zt!yjG5&|nlp1V)dOL)uqV+n^sSp@oKtCQhyv-!eA>8IK$juW%fUmHE!=^syWROmS- z`apITr{66;fNH93hEMsQKy z5gX`N%9MK8P&dO}sqOU48(Owop5vEDH+59`t%1yx5_sK2tKJ)n5@Q(~y*c0GARtx4 zrgUT zIz2*Fb1p>%UEt$K1q^i6{S407vmSQh!HFW5;j$9qZP$Mz0YGZ6<4S@lasy@7`TSl< z`3y=4*%pq(E&5vhd2AZNDx1g7y4V=OJulpI5Hmc9Xyp36dGLwr)7z0|oP2ZptvwjaUtg@JST3*#$r{~1i}QEs>yVpwV3Gl{rhj5gVgn!>#sMGPb-Y!K*lXL-3|3LNcYy@f{qphr z-d^|W&bQcFXKCOQu7mwdlfuRUGvd}6;yOS(@E`69>(|A2)mHy&Ndi%$?->IZ86=%?M8qlvqdyixvH`7On&o!hi zZ?n&y{bXjggnMv=e%ui;7ALhKns*W?KIPg=lhH7;&oLFWkQ2)#dSEgdcYlXPquy!0 z`n?%e)DaXdU8CG|Wu)@&!TN+?63i9)HN+1FS0}*I7lt?F(UDwf#0@{BVb=YksvuSh z;K*J1o}p@jc%bVe0!`(MQH7mX&&nz#UgreCugWA{;O1-W((`;8QZ44ZZ96q?ORk|_ zzvno-axug{{UGN!HQNz`rsKWiO4K27%X`Xy^IQhL=pM3AWBKtx(8xDFMp}RvEpP$# zTkAXGAtbI{Rbmik~o2 zRSshFx)K-HpCF;#q32>7xW1|v)eXlsIVF^Ox7+T%tkEkeGWyPs7}I#QJ2A*W{)DhO zXnurJkUI*HZ3Tb$QvSDeTNEaBQR(jCkzU*41^8$UMN)FP#|`WQZmxoWBX7&~)j!*` zq#FMG--xtm=Y*19jftr7N25?3$IfCJHTQ2@;o#V1IuHEBg#F$Ja?b|lb3+D+ zto~TsXdkr8M|VW7=ZhcM#qo8KnHP0h5$q$;i>eK&PF$;t6b4ET`it!b z2d|oNv~SS}&6SnXW-v858Rb{}aWp>MeNgf2X0e#p2Z9@K#O2?|T~sstvE}v9{SHh9 zL?E2bGtJ%8bEqiQj8lQmBZ(Sv@rQ&Ym0Bn!zO%D?RS}7q-)&;}rRxm@ag)2=N1;-r zKh+h16Rv{DI|;=9dLy!gJ15IS&cFj|u#5^`%xG<~^pbr}b_W?h7Y+s1&m*QVS7?qU zwiI8jOQ)P|Zr0^MO`!uJkJwWW-iXeWgXdxfvyS%~uXJw{rlG{mzaS`P2hIa7taG32 zWt6$dp-EQX`BA(_ zI&IW@{4l^y&yklE^E*UgU}s)o7~b*fCxWQHu+99UHFw{Wz9ap>~Ny5>5@$c zP(`5{_EfHs%HO+&TXZ&+-9d7Mzq{S(SJ_mOFDKibz4oRUaiy|cAZ>97=Q}{di5vcbJbNiVE2*fZ`bG+3g zdSEOR4kSe_UbI1qG1rT~9~qVZ9h>r+N{0wIv_GMJe6@l>@n;Q@)h8;$yg6np6Mt(0 zp2@m1Jb|?`;|sdf^=C&k=G->h`;F>8f);NzfxH*UYqTRi)y!&m#I z;e2arR(XUssgP#yko#OOgL5{A7xu_Ay_y$}Q6$v$(Rm@k$Ot;-JzLxL(&Qb zZN!*wbupwXTHtGX!UN2>6@{>#Et0z!&^;CKHOnzAe8m3$_l6c<)Pp|JWk}BE}=`R?f zIqEGylGwcthu5RxZ`|SsGiiP#tRGD-+`CGDAirLLErh z;R%n8AS|Fe`u@)DSI@u$q^*AD$o)Affd1~T902&JQR*rdBBGzv0Rl*CzYN9PZ%)W6 zmG5(L`<6MQnIwtBeA41i{?6BL@rbP@$wF_KbHSH_+SMc#>Oz+J{yiqR{7=%9Uuc-| zk&mV&?e0({uS8S`9_^@+MX+H-lvt{};OZ?GP|sjR-GO{ku3$%?*An3iO7F{LZ(ouw zh0g0GuaO3BtuN7ab;(LItl|XGugCGLsZ*x3r z1Z(Icj_gSXq7R`@*7Ke)7qYPx@3M|Di72G!^AQuKI_uBJ5?i0tpo@{|<6FteW$#8M zTK2>f&4z$R5LU;?0D2Fkgy9MV@*J*C)w0g@Xo1?iO>bt7fWuH=QhGEPwGAhht)YS7 z-BqZ?$-_Y@6v~D3-2QlO`N`bfIZiL&3qU|jXeAJySiC1=bo6}W8x$OG;x;&bw4V92 zBuD%ijYvCdKV51G6TR+?aWaJ$$(M#JT|^Kfpo-~gZw$M>dGxoHNcQAPv}f$C2rK}; zydAxo?S}EWg%LP0OdPjQ`_mpQxR&8_wYhtEOxONtOrl3RNaxo%VRo$JF<-w=zP{-* zjQDf;4?fH8A&?C9GN0!!xQ4%VWLA_2E9pe^pR*~HEtC{NJ zQ^Hu7m`#M^HVW^H;5s2Ao+h$J^mof!%WMlF=Wq0nz405Qd~K?N!ZvrmDy85SWuHLU zjEC>zF!$Q9#`H zBoz9d9km66=DQDKX1?IHIO4I2uRo~Cyng1t^{jgV3YN&}P#XK{tU{6Um4QJT;hRG) z^$QkC_hDxC8;J_I8gqfm+yBjNlA39_#>*P7QoCa;VTVc^ww9DZVjV8uULhCOu(MS@ ztGtA6by5F)j!tU8Xilm;(iy6=Ym2(D4!e%1LY1XrGEhg>ztl1HW?=OBeSftIRMKV# z#ku%B1O4+(+5HOe+8-VBueRZKzlP0VkOZf~rkd*?+s_r#@NqQlL?qt^U70}vX7+W} zzT&o(>-jE5`L}>ScAoB}1ysNP%F}z`3jQL4*yJ{|RiZ>bykL@#(uH25Vam9sTY`96 zeAv_j4BqHI_kx|MRM@453Gf+T+@65fP#$E7+a=9heYphk7o0L>kOLL9&}yR@B@O`< zS&@T|U9ShiV6I!$#i@#Ath-0L2J1d{dcgmQI0sj1hTWZ>i2On1a(}3I*5Q>6|728V zOy<5=!Q?&v9q%&JioMj=2ffk(vvJwzqM_e;E}M`>=R?3;GSO6uJ*vF$l{C0XIBvytu*3;BFD|P&pp6!dxZb6{ z+P$!;JA-+mMlKK;TsG3p>^EenSAbPt*1S(s<=5EPbF94u-F&@>A@f}eS9H`|z@=$7 zpUdL_FOPRptt;}oJvvPwkl-@x;k)&fZm!j0aLC>_CFggZb*f#afz%z#^fQ?qg_u!- z#lhpR{$sxFOIIqem7T92*E+=_c%zQ&An?%SXQ4t@P`-s#BVEU!;k?X%9o4`Y zuSEcfpo?C?t@t<`wSRVx_vSMm{uH@QxUlHb#e zY;{Mobw8eB-CMh-+9ALDWhb3RO1f8X>~J-BZ9cXVgXds7WI9f&TeE=^4f_7a9G&i! zPG|IGambgKa)RJNWy%O?HUp>&9yN?*kgH zzdDTl)$hDMUqgAEIB{rbWnu&OiB6Yv5ga=;?CHAibr9)R_}rtv31|C$p5l-#a%8uP z&OCQ>{Y?_0^J|@0v#yShaTjaE*|T!Z9g8jIokEo2`Vblz*yO}l%>jNloAEW*OPIk~t-8#_Dv3P4R-R=^TC;e|v0?AuGKT&l(QehmY!GVIa+yoNO{$|xu`8O7f&JP~%bZ6fJ z`BcZVGAS5m4RMw2&@L20O4xz#jZo~uPcGTSVgFBp!Cp7PyHK7B+_DK0LWG`Ds!(ZB zPiVx^!vH467i0lrJ?{2S8f|`+6@P}2EPd{oC> zxdUu8qxrCQoz3L(I9!@7`+_a0!pWK-Lji0W4sA^JqZ;zWd7T5V3zME zb)mbJ~&ea`c;(jLucd-cmcUV2$6l<(;ic7>61Eeh_p zkBe1RZ8!Vau>h2^?SCQOj9`KTwmy1)*xJ4`W_X=5Q#yuG1Ff$3iyl2tZyPQ>oiQC} znkEFv6Rq5_iZ-nk-0TUPn(InmsYtqQr6q#KD{L`W!3)gKP0nG;My#EMGiu}*HJyk4 zdkNB8pGeMuJvMh)29L+NT!jvpjF-UXr@(a8dTS=igz0^PPN}AbeL+lVv$cpC=)0Da z?GU6J{s8(G?JjXx1J7JspsQ?j8M>i%5gq^kxm2zV~8x) zzAU9qw%Z34+yOryF0K{>46uPE=Y+-U`>sft1H>&$!v| zLDeSHA3q;WE@M}`;SYVC@@Osw6VZu_S*g`b8Cw>AgNFtJ{*8gEs^SYp&U`)d=!zrSa61=MLOcU0Uye${>|W;&i?$)Te?PPnVO_Ek@-*0M16 zaA(KgAeR!%z;fTt_4x-+AQZQK?tAX=_-}w9`?Sy^_OBTjRHQw<;^nC)B}Tiu04xBu znTujf5T7xX+GV}Ekm#}W&j6@Lrv6*6VZzsKt}E-5#I}!QKD)$#Yt)*O`hBhQ#xhr> z%lJ$ek-UAA#PM5DUR)&+DgV&gTXPxCiw2!x$Lo!9uK_o2uQZ_C!Tk7Y5_vSL5R{Al z1(XeQm^P&xo=IVYeb|8H`Z-{VC^=_Y-dS3ySmvCV^o%7Y zq=CgumuK%xd83nK;D^XIz+7X>0VKRT=+OdSDf0C#d&DN82}-4Kkod6lK)cC>N$1l5 z@$reG-wV+bfDrGs79vz5I6l@#}Z(Lb)Gy~&_6$a3M8Kd zi}TIL&W2w!iid13$_TWIH1r>tBX9AwwYT6lT`BX!2pBfv7yMUa)7@$bAgg`{0|Y?< zEP3Wh-wOO+I=24c-3=J^Z2_R2odcEp>|Ohgv8)-etW%xm&@!5a1Dus&IcPj2R#O08 zD?ShnbPuedZs~*q4BA*!HX1tPh2vo%0Dixbo&6TXzr4Or!^!O*nlf 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

    x}Na~LV3Xr&kHwJ%iD0LTAS$ElLs>!tv;Qr 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≧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
    |s8PC5s z>0>-by!BM%9fYFew}uXsO6AiIb-n#GVpRA*yls_uvS^_Xl40bK(ELD+NG)|Z85EEW zkS48v6t>HAZ<7QRAe4o^xWq>mSIxDp^DdCbv}pq=t4{7q9IyFy?Of6!SE3J##HVbn zMGmP^O9>6iarHE>SO7j;`~0P$@ge>i>pC>fwkI8L6dOm$weoX27*xO3x}kzgnTjF5 zRO{XpNJPSo94zs8BDi8&vyQZc9;1{yz@r>Ayq^MjvxRa(?^ti)H9?>$66FJNO9{LT z)Pu_JvZ_9D-3=Ur)?gv!-x-G!A;IjIrpfCp8-Vqew!hBB@9}0F³<-O*TO8R)1 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

    OeV-6`Me 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 B1)~4} literal 36754 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 OKX-1b-Y8TsLHvKuU~}>S diff --git a/index.html b/index.html index a9d2fd3..cb7e340 100755 --- a/index.html +++ b/index.html @@ -1 +1 @@ - WelSim Documentation

    Welcome

    WELSIM was born out of a vision to create a general-purpose simulation utility that could successfully enable a wide range of engineering and science communities to conduct simulation with more confidence. Customers use our software to help ensure the integrity of their innovations. WELSIM comes with an all-in-one user interface and self-integrated features. It is a long-term-support product that aims to accurately model engineering problems using the prestigious open source solvers.

    finite_element_analysis_welsim_exhaust_manifold_rst

    Why WELSIM

    • Support 3D structural, thermal, fluid, and electromagnetic analyses that reveal physics-based results. Convenient data interface to export mesh or result files.
    • No wait. You can download and use WELSIM immediately.
    • The secure software program and no collection of your data. No need for an internet connection to run the program.
    • The ease-of-use graphical interface requires no learning curve.
    • Friendly pricing options. Free trial. No hidden fees. No commitments.

    Where to start

    Engineers can do a thousand things with the WELSIM simulation solutions. We recommend starting with:

    • Quick start to quickly review the steps of using WELSIM.
    • Windows and Linux installation guides to install the software on your computer.

    If you already use WELSIM:

    • User's manual - learn about WELSIM user interfaces and how to use them for everything else.
    • Theory - learn about math theory and numerical algorithms used in WELSIM.

    If you are interested in our free engineering software:

    • CurveFitter - learn about the curve fitting tool.
    • MatEditor - learn about the engineering material data tool.
    • UnitConverter - learn about the engineering unit convertion tool.
    • BeamSection - learn about the beam cross-section tool.

    Last Updated: Jan. 8th, 2024

    \ No newline at end of file + WelSim Documentation

    Welcome

    WELSIM was born out of a vision to create a general-purpose simulation utility that could successfully enable a wide range of engineering and science communities to conduct simulation with more confidence. Customers use our software to help ensure the integrity of their innovations. WELSIM comes with an all-in-one user interface and self-integrated features. It is a long-term-support product that aims to accurately model engineering problems using the prestigious open source solvers.

    finite_element_analysis_welsim_exhaust_manifold_rst

    Why WELSIM

    • Support 3D structural, thermal, fluid, and electromagnetic analyses that reveal physics-based results. Convenient data interface to export mesh or result files.
    • No wait. You can download and use WELSIM immediately.
    • The secure software program and no collection of your data. No need for an internet connection to run the program.
    • The ease-of-use graphical interface requires no learning curve.
    • Friendly pricing options. Free trial. No hidden fees. No commitments.

    Where to start

    Engineers can do a thousand things with the WELSIM simulation solutions. We recommend starting with:

    • Quick start to quickly review the steps of using WELSIM.
    • Windows and Linux installation guides to install the software on your computer.

    If you already use WELSIM:

    • User's manual - learn about WELSIM user interfaces and how to use them for everything else.
    • Theory - learn about math theory and numerical algorithms used in WELSIM.

    If you are interested in our free engineering software:

    • CurveFitter - learn about the curve fitting tool.
    • MatEditor - learn about the engineering material data tool.
    • UnitConverter - learn about the engineering unit convertion tool.
    • BeamSection - learn about the beam cross-section tool.

    Last Updated: Oct. 14th, 2024

    \ No newline at end of file diff --git a/install/licensing/index.html b/install/licensing/index.html index 7e0739d..568fe0e 100755 --- a/install/licensing/index.html +++ b/install/licensing/index.html @@ -1,4 +1,4 @@ - WelSim licensing guide - WelSim Documentation

    WELSIM licensing guide

    Preface

    This document contains information for running the WELSIM License Manager with all WelSimulation LLC products.

    Supported hardware platforms

    This document details information about licensing WelSimulation LLC products on the hardware platforms listed below.

    • Linux x64 (linx64)
    • Windows x64 (winx64)

    For specific operating system requirements, contact the customer support for the product and platform you are running.

    Conventions used in this document

    Computer prompts and responses and user input are printed using this font:

    /welsim_com/shared_files/licensing/welslic_admin
    + WelSim licensing guide - WelSim Documentation      

    WELSIM licensing guide

    Preface

    This document contains information for running the WELSIM License Manager with all WelSimulation LLC products.

    Supported hardware platforms

    This document details information about licensing WelSimulation LLC products on the hardware platforms listed below.

    • Linux x64 (linx64)
    • Windows x64 (winx64)

    For specific operating system requirements, contact the customer support for the product and platform you are running.

    Conventions used in this document

    Computer prompts and responses and user input are printed using this font:

    /welsim_com/shared_files/licensing/welslic_admin
     

    Wild card arguments and variables are italicized.
    Commands appear in bold face.

    Introduction

    WelSimulation LLC uses the internal license manager for all of its licensed products. The communication between the WELSIM applications and license manager occurs through an internal process. The communication is nearly transparent; you should not see any noticeable difference in your day-to-day operation of WELSIM products.

    You do not need to run the license manager installation. The license manager is installed together with the WELSIM application package.

    The licensing process

    The licensing process for WELSIM is as follows:

    1. Install the software.
    2. Start the software and generate your unique Computer ID, send the Computer ID to info@welsim.com.
    3. After you receive your license file, run the License Manager Wizard from Toolbar of WELSIM application.
    4. Set up the licensing environment and input license. See Activating the WELSIM.

    Explanation of licensing terms

    The main components of the licensing are:

    • License file
    • Application program (WELSIM)

    These components are explained in more detail in the following sections.

    The license file

    Licensing data is stored in a text file called the license file. The license file is created by WelSimulation LLC and is installed by the end user. It contains information about the version, signature, and date.

    The default and recommended location for the WELSIM license file (wsimkey.dat) is in the %APPDATA%/WELSIM directory. The application can automatically place the license file at this location after activation. End users can manually copy the license file to that directory, although are not suggested.

    License file format

    License files usually contain eight lines. You cannot modify any these data items in the license files.

    Note

    Everything in the license key should be entered exactly as supplied. All data in the license file is case sensitive, unless otherwise indicated.

    Application line

    The application line specifies the application name. Normally a license file for WELSIM application uses the “[WELSIM]”. The example of the application line is:

    [WELSIM]
     

    License version line

    The license version line specifies the version of current license file. The example of the this line is shown below:

    license_verion = 100
     

    License signature line

    A license signature line describes the password key to use a product. The example of the signature line is:

    license_signature = Tvp919deAq5od+nCUjRF15mgeBIKCLgscLgvR8eFYAlBrqqcjETIyuY0Lu/brYbOKYrIPOXqFzWn8asLqieImA== 
    @@ -15,4 +15,4 @@
     to_sw_version = 100
     from_date = 2023-07-02
     to_date = 2024-07-02
    -

    Recognizing a WELSIM license file

    If you receive a license file and are not sure if it is a WELSIM license file, you can determine if it is by looking at the contents of the license file. If it is a WELSIM license file, then

    • In the first line of the license file, the string field is WELSIM.

    Installing the WELSIM license manager

    The WelSim License Manager is included in the WELSIM application installation. As the user installs the application, the license manager is already installed.

    Troubleshooting

    This section lists problems and error messages that you may encounter while setting up licensing. The possible error messages are:

    • LICENSE_FILE_NOT_FOUND
    • LICENSE_SERVER_NOT_FOUND
    • ENVIRONMENT_VARIABLE_NOT_DEFINED
    • FILE_FORMAT_NOT_RECOGNIZED
    • LICENSE_MALFORMED
    • PRODUCT_NOT_LICENSED
    • PRODUCT_EXPIRED
    • LICENSE_CORRUPTED
    • IDENTIFIERS_MISMATCH

    An example of the license message error message is shown in Figure [fig:ch10_license_not_found].

    finite_element_analysis_welsim_license_not_found

    \ No newline at end of file +

    Recognizing a WELSIM license file

    If you receive a license file and are not sure if it is a WELSIM license file, you can determine if it is by looking at the contents of the license file. If it is a WELSIM license file, then

    • In the first line of the license file, the string field is WELSIM.

    Installing the WELSIM license manager

    The WelSim License Manager is included in the WELSIM application installation. As the user installs the application, the license manager is already installed.

    Troubleshooting

    This section lists problems and error messages that you may encounter while setting up licensing. The possible error messages are:

    • LICENSE_FILE_NOT_FOUND
    • LICENSE_SERVER_NOT_FOUND
    • ENVIRONMENT_VARIABLE_NOT_DEFINED
    • FILE_FORMAT_NOT_RECOGNIZED
    • LICENSE_MALFORMED
    • PRODUCT_NOT_LICENSED
    • PRODUCT_EXPIRED
    • LICENSE_CORRUPTED
    • IDENTIFIERS_MISMATCH

    An example of the license message error message is shown in Figure [fig:ch10_license_not_found].

    finite_element_analysis_welsim_license_not_found

    \ No newline at end of file diff --git a/install/linux/index.html b/install/linux/index.html index df26883..e499b69 100755 --- a/install/linux/index.html +++ b/install/linux/index.html @@ -1,8 +1,8 @@ - Linux installation guide - WelSim Documentation

    Linux installation guide

    Installation prerequisites for Linux

    This document describes the steps necessary to correctly install and configure WELSIM application on Linux platforms. These products include:

    • WELSIM Application
    • License manager

    System prerequisites

    WELSIM application is supported on the Linux platforms and operating system levels listed in Table below.

    Platform Operating system Availability
    Linux x64 Ubuntu 22.04 LTS or higher Download

    Note

    1. If you run WELSIM on Ubuntu, we recommand Ubuntu 22.04 LTS or higher with the latest libstdc++ and libfortran libraries.

    Disk space and memory requirements

    You will need the disk space shown in Table below for installation and proper functioning.

    Product Disk space Memory
    WELSIM application at least 1 GB at least 4 GB

    Platform details

    For all 64-bit Linux platforms, the libraries listed below should be installed.

    • libxcb-xinerama0
    • libstdc++
    • gcc-c++
    • glibc
    • libfortran
    • openmpi-bin
    • libomp-dev

    Installing the WELSIM for a Linux system

    This section explains how to download and install WELSIM.

    You can install WELSIM as root, or non-root; however, if you are root user, you can install the application in the system directory. The application can be used by different users.

    Product download instructions

    To download the installation files from our website, you will need to agree the US Export Restrictions. You only need to download one installer file.

    1. From the website1, select the Linux version of WELSIM and click the download button on the webpage.
    2. The downloaded installer file has the name like: WelSim%version%SetupUbuntu.run. For example, the installer of 2024R1 is WelSim28SetupUbuntu.run.
    3. Begin the product installation as described in the next section.

    Production installation

    1.Navigate to the directory where you placed the installer file. Run the commands below in a terminal window. Note that we take the version of 2024R1 as an example, if you are installing a different version, replace the installer name in the command line below.

    $ chmod +x WelSim28SetupUbuntu.run
    + Linux installation guide - WelSim Documentation      

    Linux installation guide

    Installation prerequisites for Linux

    This document describes the steps necessary to correctly install and configure WELSIM application on Linux platforms. These products include:

    • WELSIM Application
    • License manager

    System prerequisites

    WELSIM application is supported on the Linux platforms and operating system levels listed in Table below.

    Platform Operating system Availability
    Linux x64 Ubuntu 22.04 LTS or higher Download

    Note

    1. If you run WELSIM on Ubuntu, we recommand Ubuntu 22.04 LTS or higher with the latest libstdc++ and libfortran libraries.

    Disk space and memory requirements

    You will need the disk space shown in Table below for installation and proper functioning.

    Product Disk space Memory
    WELSIM application at least 1 GB at least 4 GB

    Platform details

    For all 64-bit Linux platforms, the libraries listed below should be installed.

    • libxcb-xinerama0
    • libstdc++
    • gcc-c++
    • glibc
    • libfortran
    • openmpi-bin
    • libomp-dev

    Installing the WELSIM for a Linux system

    This section explains how to download and install WELSIM.

    You can install WELSIM as root, or non-root; however, if you are root user, you can install the application in the system directory. The application can be used by different users.

    Product download instructions

    To download the installation files from our website, you will need to agree the US Export Restrictions. You only need to download one installer file.

    1. From the website1, select the Linux version of WELSIM and click the download button on the webpage.
    2. The downloaded installer file has the name like: WelSim%version%SetupUbuntu.run. For example, the installer of 2024R1 is WelSim28SetupUbuntu.run.
    3. Begin the product installation as described in the next section.

    Production installation

    1.Navigate to the directory where you placed the installer file. Run the commands below in a terminal window. Note that we take the version of 2024R1 as an example, if you are installing a different version, replace the installer name in the command line below.

    $ chmod +x WelSim28SetupUbuntu.run
     $ ./WelSim28SetupUbuntu.run
     

    Note

    Running the installer requires the libxcb-xinerama0 library installed in your system.

    2.The WELSIM installation Launcher appears as shown below.

    finite_element_analysis_welsim_linux_install1

    3.Click the Next button to start the installation on your computer.

    4.The installation folder setting appears as shown below. You can input your designated directory or keep the default one. After specifying the directory, Click Next.

    finite_element_analysis_welsim_linux_install2

    5.The component selection interface appears as shown below. You can select the components that you want to install. The user can keep the default selection, and know the occupied disk space for this installation. Click Next.

    finite_element_analysis_welsim_linux_install3

    6.The license agreement appears as shown below. Read the agreement, and if you agree to the terms and conditions, select I Agree. Click Next.

    finite_element_analysis_welsim_linux_install4

    7.The installation needs your conformation to start as shown below. Click Install.

    finite_element_analysis_welsim_linux_install5

    8.The installation completed as shown below. Click Next.

    finite_element_analysis_welsim_linux_install6

    Starting the software on Linux

    After installation, starting the WELSIM software application is straightforward. Here are steps:

    1.Install the dependencies to your Ubuntu OS

    sudo apt update
     sudo apt upgrade
     sudo apt install openmpi-bin libomp-dev
     

    2.Allocate the installed WELSIM application folder, double click the executable file runWelSim.

    Note

    If the WELSIM does not start, the executable file may have no exectuable attribute on your machine. You could open a terminal window and type commends below.

    $ chmod +x runWelSim.sh
     $ ./runWelSim.sh 
    -

    3.WELSIM application starts, the GUI shows the system information in Figure below.

    finite_element_analysis_welsim_linux_run

    Uninstalling the software

    To uninstall WELSIM, you can browse file explorer into the installation folder, and double click on the Uninstaller. Following the instructions on the Uninstaller, you can remove the application from your computer.

    You also can simply delete the installation folder to uninstall the WELSIM.

    \ No newline at end of file +

    3.WELSIM application starts, the GUI shows the system information in Figure below.

    finite_element_analysis_welsim_linux_run

    Uninstalling the software

    To uninstall WELSIM, you can browse file explorer into the installation folder, and double click on the Uninstaller. Following the instructions on the Uninstaller, you can remove the application from your computer.

    You also can simply delete the installation folder to uninstall the WELSIM.

    \ No newline at end of file diff --git a/install/windows/index.html b/install/windows/index.html index b2aa2c7..d526fc1 100755 --- a/install/windows/index.html +++ b/install/windows/index.html @@ -1 +1 @@ - Windows installation guide - WelSim Documentation

    Windows installation guide

    Installation prerequisites for Windows

    This document describes the steps essential to correctly install and configure WELSIM on Windows platform.

    System prerequisites

    WELSIM is supported on the following Windows platforms and operating system levels.

    Platform Operating System Platform Architecture Availability
    x64 Windows 11 winx64 Download

    Disk space and memory requirements

    You will need the disk space shown in Table [tab:ch11_win_disk_space] for installation and proper functioning. The numbers listed here are the maximum amount of disk space you will need.

    Product Disk Space Memory
    WELSIM 1 GB at least 4GB

    Software prerequisites

    You need to have the following software installed on your system. These software prerequisites will be installed automatically when you launch the product installation. If you have finished an installation successfully, the prerequisites executable are located under the %Installed Folder%\Prerequisites directory.

    • Microsoft Visual C++ 2015-2022 Redistributable(x64)
    • Intel Visual Fortran Redistributables, 2022
    • Microsoft MPI Redistributable, 10.0

    Digital signatures

    WELSIM installer and executable files are signed with digital certificates. The signer name is: WelSimulation LLC.

    Platform details

    Compiler requirements for Windows systems

    The compiler requirements for Windows systems are listed in Table [tab:ch12_win_compiler_req].

    No. WELSIM Compilers
    1 Visual Studio 2022 (including the Microsoft C++ compiler)
    2 Intel Visual Fortran 2022 compiler

    Note

    Those compilers are not required if you only use WELSIM application.

    Installing the WELSIM for a Windows system

    This section includes the steps required for installing WELSIM and licensing configuration on one Windows machine.

    Downloading the installation file

    To download the installation files from our website, you will need to agree the US Export Restrictions.

    You only need to download one installer file.

    1. From the website, select the Windows version of WELSIM and click the download button on the webpage.
    2. The downloaded installer file has the name: WelSim28Setup.exe
    3. Begin the product installation as described in the next section.

    Installing WELSIM

    1. Navigate to the directory where you placed the installer file. Run the installer by double click.
    2. The WELSIM installation Launcher appears as shown in Figure below. finite_element_analysis_welsim_windows_install1
    3. Click the Next button to start the installation on your computer.
    4. The license agreement appears as shown in Figure below. Read the agreement, and if you agree to the terms and conditions, select I Agree. Click Next. finite_element_analysis_welsim_windows_install2
    5. The installation folder setting appears as shown in the figure below. You can input your designated directory or keep the default one. After specifying the directory, Click Next. finite_element_analysis_welsim_windows_install3
    6. The prerequesites libraries installation appears as shown in the figure below. Your system requires these libraries to run the WELSIM application. Click Yes. finite_element_analysis_welsim_windows_install4 finite_element_analysis_welsim_windows_install5 finite_element_analysis_welsim_windows_install6
    7. The installation completed as shown in the figure below. Click Finish. finite_element_analysis_welsim_windows_install7

    Note

    WELSIM relies on the latest version of Microsoft MPI. If the Microsoft MPI redistributable installation conflicts with your pre-existing MS MPI libraries, please uninstall the pre-existing MPI from the Control Panel and reinstall the WELSIM.

    Activating the WELSIM

    In this section, assuming you already received the license file wsimkey.dat. To activate WELSIM on your computer with client licensing, you can follow the steps below:

    1. Start WELSIM application on your computer.
    2. Click the License Manager from the menu: HELP -> License Manager
    3. WELSIM License Manager user interface appears. There are five buttons on the interface:
      1. Generate Computer ID: generate user's unique ID for license key generation.
      2. Evaluate: click to continue using the trial version.
      3. Exit: quit the License Manager with no software activation.
      4. Buy Now: open your default internet browser and direct your visit to the pricing page.
      5. Enter Code: If you have received the license key file, click this button to import the license file.
    4. If the user are running software at the first time, generate the Computer ID by clicking the button of “Generate Computer ID”, and send this string (format of xxxx-xxxx-xxxx-xxxx) to info@welsim.com. The user will receive the license key within 24 hours.
    5. After receiving the license file (wsimkey.dat), click “Enter Code” button to import the license. In the License Code interface, the user can paste the license content from clipboard, or directly import the license from file.
    6. Click OK button to activate the WELSIM. A successfully activated software is shown in figure below.

    finite_element_analysis_welsim_windows_install13

    Starting the software

    After installation, starting the WELSIM software is straightforward. Here are three methods:

    1. Double click the shortcut of WELSIM, if you toggle the option “Create Desktop Shortcut” during the last step of installation.
    2. Click the shortcut of WELSIM from the Start menu. From Start -> WELSIM ->WELSIM v1.8.
    3. Browse the directory of installation, double click the runWelSim.exe file.

    As shown in the figure below, WESLIM application is started successfully on the Windows operation system. finite_element_analysis_welsim_windows_install12

    Uninstalling the software

    Uninstalling the software is straightforward. The user can run the unint.exe from one of methods below:

    1. Click the shortcut of WELSIM uninstaller from the Start menu. From Start -> WELSIM ->Uninstall.
    2. Browse the directory of installation, double click the uninst.exe file.
    3. Unstall the WELSIM application from the system Control Panel.
    \ No newline at end of file + Windows installation guide - WelSim Documentation

    Windows installation guide

    Installation prerequisites for Windows

    This document describes the steps essential to correctly install and configure WELSIM on Windows platform.

    System prerequisites

    WELSIM is supported on the following Windows platforms and operating system levels.

    Platform Operating System Platform Architecture Availability
    x64 Windows 11 winx64 Download

    Disk space and memory requirements

    You will need the disk space shown in Table [tab:ch11_win_disk_space] for installation and proper functioning. The numbers listed here are the maximum amount of disk space you will need.

    Product Disk Space Memory
    WELSIM 1 GB at least 4GB

    Software prerequisites

    You need to have the following software installed on your system. These software prerequisites will be installed automatically when you launch the product installation. If you have finished an installation successfully, the prerequisites executable are located under the %Installed Folder%\Prerequisites directory.

    • Microsoft Visual C++ 2015-2022 Redistributable(x64)
    • Intel Visual Fortran Redistributables, 2022
    • Microsoft MPI Redistributable, 10.0

    Digital signatures

    WELSIM installer and executable files are signed with digital certificates. The signer name is: WelSimulation LLC.

    Platform details

    Compiler requirements for Windows systems

    The compiler requirements for Windows systems are listed in Table [tab:ch12_win_compiler_req].

    No. WELSIM Compilers
    1 Visual Studio 2022 (including the Microsoft C++ compiler)
    2 Intel Visual Fortran 2022 compiler

    Note

    Those compilers are not required if you only use WELSIM application.

    Installing the WELSIM for a Windows system

    This section includes the steps required for installing WELSIM and licensing configuration on one Windows machine.

    Downloading the installation file

    To download the installation files from our website, you will need to agree the US Export Restrictions.

    You only need to download one installer file.

    1. From the website, select the Windows version of WELSIM and click the download button on the webpage.
    2. The downloaded installer file has the name: WelSim28Setup.exe
    3. Begin the product installation as described in the next section.

    Installing WELSIM

    1. Navigate to the directory where you placed the installer file. Run the installer by double click.
    2. The WELSIM installation Launcher appears as shown in Figure below. finite_element_analysis_welsim_windows_install1
    3. Click the Next button to start the installation on your computer.
    4. The license agreement appears as shown in Figure below. Read the agreement, and if you agree to the terms and conditions, select I Agree. Click Next. finite_element_analysis_welsim_windows_install2
    5. The installation folder setting appears as shown in the figure below. You can input your designated directory or keep the default one. After specifying the directory, Click Next. finite_element_analysis_welsim_windows_install3
    6. The prerequesites libraries installation appears as shown in the figure below. Your system requires these libraries to run the WELSIM application. Click Yes. finite_element_analysis_welsim_windows_install4 finite_element_analysis_welsim_windows_install5 finite_element_analysis_welsim_windows_install6
    7. The installation completed as shown in the figure below. Click Finish. finite_element_analysis_welsim_windows_install7

    Note

    WELSIM relies on the latest version of Microsoft MPI. If the Microsoft MPI redistributable installation conflicts with your pre-existing MS MPI libraries, please uninstall the pre-existing MPI from the Control Panel and reinstall the WELSIM.

    Activating the WELSIM

    In this section, assuming you already received the license file wsimkey.dat. To activate WELSIM on your computer with client licensing, you can follow the steps below:

    1. Start WELSIM application on your computer.
    2. Click the License Manager from the menu: HELP -> License Manager
    3. WELSIM License Manager user interface appears. There are five buttons on the interface:
      1. Generate Computer ID: generate user's unique ID for license key generation.
      2. Evaluate: click to continue using the trial version.
      3. Exit: quit the License Manager with no software activation.
      4. Buy Now: open your default internet browser and direct your visit to the pricing page.
      5. Enter Code: If you have received the license key file, click this button to import the license file.
    4. If the user are running software at the first time, generate the Computer ID by clicking the button of “Generate Computer ID”, and send this string (format of xxxx-xxxx-xxxx-xxxx) to info@welsim.com. The user will receive the license key within 24 hours.
    5. After receiving the license file (wsimkey.dat), click “Enter Code” button to import the license. In the License Code interface, the user can paste the license content from clipboard, or directly import the license from file.
    6. Click OK button to activate the WELSIM. A successfully activated software is shown in figure below.

    finite_element_analysis_welsim_windows_install13

    Starting the software

    After installation, starting the WELSIM software is straightforward. Here are three methods:

    1. Double click the shortcut of WELSIM, if you toggle the option “Create Desktop Shortcut” during the last step of installation.
    2. Click the shortcut of WELSIM from the Start menu. From Start -> WELSIM ->WELSIM v1.8.
    3. Browse the directory of installation, double click the runWelSim.exe file.

    As shown in the figure below, WESLIM application is started successfully on the Windows operation system. finite_element_analysis_welsim_windows_install12

    Uninstalling the software

    Uninstalling the software is straightforward. The user can run the unint.exe from one of methods below:

    1. Click the shortcut of WELSIM uninstaller from the Start menu. From Start -> WELSIM ->Uninstall.
    2. Browse the directory of installation, double click the uninst.exe file.
    3. Unstall the WELSIM application from the system Control Panel.
    \ No newline at end of file diff --git a/legal/LGPL/index.html b/legal/LGPL/index.html index f95f81d..ec9104a 100755 --- a/legal/LGPL/index.html +++ b/legal/LGPL/index.html @@ -1 +1 @@ - GNU Lesser Genreal Public License (LGPL) - WelSim Documentation

    GNU Lesser Genreal Public License (LGPL)

    Version 3 GNU Lesser General Public License

    Version 3, 29 June 2007

    Copyright © 2007 Free Software Foundation, Inc. http://fsf.org/

    Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

    This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below.

    1. Additional Definitions. As used herein, “this License” refers to version 3 of the GNU Lesser General Public License, and the “GNU GPL” refers to version 3 of the GNU General Public License.

      “The Library” refers to a covered work governed by this License, other than an Application or a Combined Work as defined below.

      An “Application” is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library.

      A “Combined Work” is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the “Linked Version”.

      The “Minimal Corresponding Source” for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version.

      The “Corresponding Application Code” for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work.

    2. Exception to Section 3 of the GNU GPL. You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL.

    3. Conveying Modified Versions.

      If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version:

      1. under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or

      2. under the GNU GPL, with none of the additional permissions of this License applicable to that copy.

    4. Object Code Incorporating Material from Library Header Files. The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following:

      1. Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License.

      2. Accompany the object code with a copy of the GNU GPL and this license document.

    5. Combined Works. You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following:

      1. Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License.
      2. Accompany the Combined Work with a copy of the GNU GPL and this license document.
      3. For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document.
      4. Do one of the following:

        1. Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.

        2. Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version.

      5. Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.)

    6. Combined Libraries. You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following:

      1. Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License.
      2. Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work.
    7. Revised Versions of the GNU Lesser General Public License. The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.

      Each version is given a distinguishing version number. If the Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation.

      If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library.

    Version 2.1

    GNU LESSER GENERAL PUBLIC LICENSE (LGPL) Version 2.1, February 1999 Copyright © 1991, 1999, Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

    WelSimulation LLC will provide you with a complete machine-readable copy of the source code, valid for three years. The source code can be obtained by contacting WelSimulation LLC at info@welsim.com.

    Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. NO WARRANTY BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

    GNU Lesser General Public License

    Version 2.1

    Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

    Preamble

    The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users.

    This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below.

    When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things.

    To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it.

    For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights.

    We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library.

    To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others.

    Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license.

    Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs.

    When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library.

    We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances.

    For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License.

    In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system.

    Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library.

    The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run.

    GNU LESSER GENERAL PUBLIC LICENSE

    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

    1. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you".

    A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables.

    The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".)

    "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library.

    Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does.

    1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library.

    You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.

    1. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:

      1. The modified work must itself be a software library.
      2. You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change.
      3. You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License.\
      4. If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful.

    (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.)

    These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.

    Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library.

    In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.

    1. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices.

    Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy.\noindent

    This option is useful when you wish to copy part of the code of the Library into a program that is not a library.

    1. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange.

    If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code.

    1. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License.

    However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables.

    When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law.

    If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.)

    Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself.

    1. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications.

      You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things:

      1. Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.)

      2. Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with.

      3. Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution.

      4. If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place.

      5. Verify that the user has already received a copy of these materials or that you have already sent this user a copy.

      For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.

      It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute.

    2. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things:

      1. Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above.

      2. Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work.

    3. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

    4. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it.

    5. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License.

    6. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library.

    If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances.

    It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.

    This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.

    1. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.

    2. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.

    Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation.

    1. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.

    2. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

    3. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

    END OF TERMS AND CONDITIONS

    \ No newline at end of file + GNU Lesser Genreal Public License (LGPL) - WelSim Documentation

    GNU Lesser Genreal Public License (LGPL)

    Version 3 GNU Lesser General Public License

    Version 3, 29 June 2007

    Copyright © 2007 Free Software Foundation, Inc. http://fsf.org/

    Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

    This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below.

    1. Additional Definitions. As used herein, “this License” refers to version 3 of the GNU Lesser General Public License, and the “GNU GPL” refers to version 3 of the GNU General Public License.

      “The Library” refers to a covered work governed by this License, other than an Application or a Combined Work as defined below.

      An “Application” is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library.

      A “Combined Work” is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the “Linked Version”.

      The “Minimal Corresponding Source” for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version.

      The “Corresponding Application Code” for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work.

    2. Exception to Section 3 of the GNU GPL. You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL.

    3. Conveying Modified Versions.

      If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version:

      1. under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or

      2. under the GNU GPL, with none of the additional permissions of this License applicable to that copy.

    4. Object Code Incorporating Material from Library Header Files. The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following:

      1. Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License.

      2. Accompany the object code with a copy of the GNU GPL and this license document.

    5. Combined Works. You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following:

      1. Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License.
      2. Accompany the Combined Work with a copy of the GNU GPL and this license document.
      3. For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document.
      4. Do one of the following:

        1. Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.

        2. Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version.

      5. Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.)

    6. Combined Libraries. You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following:

      1. Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License.
      2. Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work.
    7. Revised Versions of the GNU Lesser General Public License. The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.

      Each version is given a distinguishing version number. If the Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation.

      If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library.

    Version 2.1

    GNU LESSER GENERAL PUBLIC LICENSE (LGPL) Version 2.1, February 1999 Copyright © 1991, 1999, Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

    WelSimulation LLC will provide you with a complete machine-readable copy of the source code, valid for three years. The source code can be obtained by contacting WelSimulation LLC at info@welsim.com.

    Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. NO WARRANTY BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

    GNU Lesser General Public License

    Version 2.1

    Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

    Preamble

    The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users.

    This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below.

    When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things.

    To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it.

    For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights.

    We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library.

    To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others.

    Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license.

    Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs.

    When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library.

    We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances.

    For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License.

    In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system.

    Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library.

    The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run.

    GNU LESSER GENERAL PUBLIC LICENSE

    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

    1. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you".

    A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables.

    The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".)

    "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library.

    Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does.

    1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library.

    You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.

    1. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:

      1. The modified work must itself be a software library.
      2. You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change.
      3. You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License.\
      4. If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful.

    (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.)

    These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.

    Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library.

    In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.

    1. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices.

    Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy.\noindent

    This option is useful when you wish to copy part of the code of the Library into a program that is not a library.

    1. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange.

    If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code.

    1. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License.

    However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables.

    When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law.

    If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.)

    Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself.

    1. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications.

      You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things:

      1. Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.)

      2. Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with.

      3. Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution.

      4. If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place.

      5. Verify that the user has already received a copy of these materials or that you have already sent this user a copy.

      For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.

      It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute.

    2. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things:

      1. Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above.

      2. Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work.

    3. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

    4. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it.

    5. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License.

    6. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library.

    If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances.

    It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.

    This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.

    1. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.

    2. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.

    Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation.

    1. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.

    2. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

    3. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

    END OF TERMS AND CONDITIONS

    \ No newline at end of file diff --git a/legal/contact/index.html b/legal/contact/index.html index 84b9e8e..6ff768d 100755 --- a/legal/contact/index.html +++ b/legal/contact/index.html @@ -1 +1 @@ - WelSimulation LLC contact information - WelSim Documentation

    WelSimulation LLC contact information

    WelSimulation LLC

    1840 Mayview Rd. Suite 208

    Bridgeville, PA 15017

    USA

    Email: info@welsim.com

    Website: https://welsim.com

    Phone: +1 724-914-8722

    \ No newline at end of file + WelSimulation LLC contact information - WelSim Documentation

    WelSimulation LLC contact information

    WelSimulation LLC

    1840 Mayview Rd. Suite 208

    Bridgeville, PA 15017

    USA

    Email: info@welsim.com

    Website: https://welsim.com

    Phone: +1 724-914-8722

    \ No newline at end of file diff --git a/legal/index.html b/legal/index.html index 536f64a..b2b0b9e 100755 --- a/legal/index.html +++ b/legal/index.html @@ -1 +1 @@ - Legal notice - WelSim Documentation

    Legal notice

    ©2023 WelSimulation LLC. All rights reserved. Unauthorized use, distribution or duplication is prohibited.

    WELSIM and any and all WelSimulation LLC brand, product, service and feature names, logos and slogans are registered trademarks or trademarks of WelSimulation LLC. or its subsidiaries in the United States or other countries. All other brand, product, service and feature names or trademarks are the property of their respective owners.

    Disclaimer notice

    THIS WELSIM SOFTWARE PRODUCT AND PROGRAM DOCUMENTATION INCLUDE TRADE SECRETS AND ARE CONFIDENTIAL AND PROPRIETARY PRODUCTS OF WELSIMULATION LLC, ITS SUBSIDIARIES, OR LICENSORS. The software products and documentation are furnished by WelSimulation LLC, its subsidiaries, or affiliates 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.

    U.S. government rights

    For U.S. Government users, except as specifically granted by the WelSimulation LLC software license agreement, the use, duplication, or disclosure by the United States Government is subject to restrictions stated in the WelSimulation LLC software license agreement.

    Third-party software

    This product may contain the following licensed software which requires reproduction of the following notices.

    • ABAQUS is a registered trademark of ABAQUS, Inc

    • Copyright 1984-1989, 1994 Adobe Systems Incorporated. Copyright 1988, 1994 Digital Equipment Corporation. Permission to use,copy,modify,distribute and sell this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notices appear in all copies and that both those copyright notices and this permission notice appear in supporting documentation, and that the names of Adobe Systems and Digital Equipment Corporation not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Adobe Systems & Digital Equipment Corporation make no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty.

    • Adobe and Acrobat are registered trademarks of Adobe Systems Incorporated

    • Apache commons CLI, Apache Commons Compress, Apache Commons DBCP, and Apache Commons Pool ([http://commons.apache.org||http://commons.apache.org]) - Copyright 2001-2008 The Apache Software Foundation Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. See Apache License for a complete listing of the Apache License.

    • Boost C++ Libraries [http://www.boost.org] is licensed under the Boost Software License V1 [http://www.boost.org/users/license.html]

    • Coin3D is a high-level, retained-mode toolkit for effective 3D graphics development. It is API compatible with Open Inventor 2.1. Coin3D is Free Software, published under the BSD 3-clause license.

    • cpp (GCC): Copyright (C) 2003 Free Software Foundation, Inc.

    • CrashRpt is a light-weight open-source error reporting library for C++ applications running in Windows.

    • DXF is a trademark of Autodesk, Inc

    • Eigen is a high-level C++ library of template headers for linear algebra, matrix and vector operations, geometrical transformations, numerical solvers and related algorithms. Eigen is published under MPL2 license.

    • Fmt is an open-source formatting library for C++. It can be used as a safe and fast alternative to (s)printf and IOStreams.

    • FreeType2: Portions of this software are copyright 1996-2002, 2006 The FreeType Project ([http://www.freetype.org]). All rights reserved.

    • FrontISTR is an open-source large-scale parallel finite element method program for nonlinear structural analysis. It is published under MIT license.

    • GNU Fortran and Standard C++ library http://gcc.gnu.org is licensed under The GNU General Public License (GPL) Version 2 June 1991 Copyright © 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGR4AM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. See GNU GENERAL PUBLIC LICENSE (GPL) for a complete listing of the GNU GENERAL PUBLIC LICENSE.

    • gzip http://www.gzip.org is licensed under The GNU General Public License (GPL) Version 2 June 1991 Copyright © 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGR4AM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. See GNU GENERAL PUBLIC LICENSE (GPL) for a complete listing of the GNU GENERAL PUBLIC LICENSE.

    • Gzstream is a small C++ library, basically just a wrapper, that provides the functionality of the zlib C-library in a C++ iostream. It is freely available under the LGPL license.

    • HDF5 (Hierarchical Data Format 5) Software Library and Utilities Copyright 2006-2008 by The HDF Group (THG). NCSA HDF5 (Hierarchical Data Format 5) Software Library and Utilities Copyright 1998-2006 by the Board of Trustees of the University of Illinois. All rights reserved. Contributors: National Center for Supercomputing Applications (NCSA) at the University of Illinois, Fortner Software, Unidata Program Center (netCDF), The Independent JPEG Group (JPEG), Jean-loup Gailly and Mark Adler (gzip), and Digital Equipment Corporation (DEC). Redistribution and use in source and binary forms, with or without modification, are permitted for any purpose (including commercial purposes) provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the following disclaimer in the documentation and/or materials provided with the distribution. 3. In addition, redistributions of modified forms of the source or binary code must carry prominent notices stating that the original code was changed and the date of the change. 4. All publications or advertising materials mentioning features or use of this software are asked, but not required, to acknowledge that it was developed by The HDF Group and by the National Center for Supercomputing Applications at the University of Illinois at Urbana-Champaign and credit the contributors. 5. Neither the name of The HDF Group, the name of the University, nor the name of any Contributor may be used to endorse or promote products derived from this software without specific prior written permission from THG, the University, or the Contributor, respectively. DISCLAIMER: THIS SOFTWARE IS PROVIDED BY THE HDF GROUP (THG) AND THE CONTRIBUTORS "AS IS" WITH NO WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED. In no event shall THG or the Contributors be liable for any damages suffered by the users arising out of the use of this software, even if advised of the possibility of such damage. Portions of HDF5 were developed with support from the University of California, Lawrence Livermore National Laboratory (UC LLNL). The following statement applies to those portions of the product and must be retained in any redistribution of source code, binaries, documentation, and/or accompanying materials: This work was partially produced at the University of California, Lawrence Livermore National Laboratory (UC LLNL) under contract no. W-7405-ENG-48 (Contract 48) between the U.S. Department of Energy (DOE) and The Regents of the University of California (University) for the operation of UC LLNL. DISCLAIMER: This work was prepared as an account of work sponsored by an agency of the United States Government. Neither the United States Government nor the University of California nor any of their employees, makes any warranty, express or implied, or assumes any liability or responsibility for the accuracy, completeness, or usefulness of any information, apparatus, product, or process disclosed, or represents that its use would not infringe privately- owned rights. Reference herein to any specific commercial products, process, or service by trade name, trademark, manufacturer, or otherwise, does not necessarily constitute or imply its endorsement, recommendation, or favoring by the United States Government or the University of California. The views and opinions of authors expressed herein do not necessarily state or reflect those of the United States Government or the University of California, and shall not be used for advertising or product endorsement purposes.

    • IGES is a trademark of IGES Data Analysis, Inc

    • Intel is a registered trademark of Intel Corporation

    • JsonCpp is a C++ library that allows manipulating JSON values. It is freely availble under MIT license.

    • Mesa Library license requirements: Copyright (C) 1999-2005 Brian Paul All Rights Reserved. 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 BRIAN PAUL 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. Mesa Component Licenses also apply. Reference http://mesa3d.sourceforge.net/.

    • METIS 4.0.1 Copyright 1997, Regents of the University of Minnesota. METIS was written by George Karypis (karypis@cs.umn.edu). Our policy regarding the distribution of METIS with third-party applications is as follows: Non-commerical applications METIS can be freely distributed provided that proper references are included and the original documentation and copyright notice is included. Commercial applications METIS cab be freekt distributed provided that proper references are included, the original documentation and copyright notice is included and METIS is a relatively small portion of the overall application. In either case, permission to distribute/include METIS with your application must be obtained by sending email to metis@cs.umn.edu.

    • Microsoft, Windows, Windows 2000 and Windows XP are registered trademarks of Microsoft Corporation.

    • MPICH2 Copyright Notice + 2002 University of Chicago Permission is hereby granted to use, reproduce, prepare derivative works, and to redistribute to others. This software was authored by: Argonne National Laboratory Group W. Gropp: (630) 252-4318; FAX: (630) 252-5986; e-mail: gropp@mcs.anl.gov E. Lusk: (630) 252-7852; FAX: (630) 252-5986; e-mail: lusk@mcs.anl.gov Mathematics and Computer Science Division Argonne National Laboratory, Argonne IL 60439

    • MUMPS is a software application for the solution of large sparse systems of linear algebraic equations on distributed memory parallel computers. It is freely available under CeCILL-C license.

    • NASTRAN is a registered trademark of the National Aeronautics and Space Administration.

    • NetCDF is a set of software libraries and self-describing, machine-independent data formats that support the creation, access, and sharing of array-oriented scientific data.

    • NetGen is an automatic 3d tetrahedral mesh generator under GNU LGPL.

    • Open CASCADE is open source software for 3D surface and solid modeling, visualization, data exchange, and rapid application development. It is published under LGPL.

    • Open License Manager is a license manager written in C/C++ for Windows and Linux environments. It is pulished under BSD3 license.

    • OpenSSL OpenSSL is a robust, commercial-grade, and full-featured toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols. OpenSSL is licensed under an Apache-style license.

    • PETSc is a suite of data structures and routines for the scalable (parallel) solution of scientific applications modeled by partial differential equations. It is published under 2-clause BSD license.

    • Pro/ENGINEER is a registered trademark of Parametric Technology Corporation.

    • Pthread a multi-thread library. It is freely available under MIT license.

    • QT is a multiplatform C++ GUI toolkit. It is freely available under LGPL. See [http://www.qt.io] for more information.

    • Visualization Toolkit (VTK) is an open-source, freely available software system for 3D computer graphics, image processing and visualization. It is published under 3-Clause BSD license.

    • Xerces-C++ is a validating XML parser written in a portable subset of C++. Xerces-C++ is made available under the Apache Software License, Version 2.0.

    • ZLIB 1.1.3 Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler.

    \ No newline at end of file + Legal notice - WelSim Documentation

    Legal notice

    ©2023 WelSimulation LLC. All rights reserved. Unauthorized use, distribution or duplication is prohibited.

    WELSIM and any and all WelSimulation LLC brand, product, service and feature names, logos and slogans are registered trademarks or trademarks of WelSimulation LLC. or its subsidiaries in the United States or other countries. All other brand, product, service and feature names or trademarks are the property of their respective owners.

    Disclaimer notice

    THIS WELSIM SOFTWARE PRODUCT AND PROGRAM DOCUMENTATION INCLUDE TRADE SECRETS AND ARE CONFIDENTIAL AND PROPRIETARY PRODUCTS OF WELSIMULATION LLC, ITS SUBSIDIARIES, OR LICENSORS. The software products and documentation are furnished by WelSimulation LLC, its subsidiaries, or affiliates 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.

    U.S. government rights

    For U.S. Government users, except as specifically granted by the WelSimulation LLC software license agreement, the use, duplication, or disclosure by the United States Government is subject to restrictions stated in the WelSimulation LLC software license agreement.

    Third-party software

    This product may contain the following licensed software which requires reproduction of the following notices.

    • ABAQUS is a registered trademark of ABAQUS, Inc

    • Copyright 1984-1989, 1994 Adobe Systems Incorporated. Copyright 1988, 1994 Digital Equipment Corporation. Permission to use,copy,modify,distribute and sell this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notices appear in all copies and that both those copyright notices and this permission notice appear in supporting documentation, and that the names of Adobe Systems and Digital Equipment Corporation not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Adobe Systems & Digital Equipment Corporation make no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty.

    • Adobe and Acrobat are registered trademarks of Adobe Systems Incorporated

    • Apache commons CLI, Apache Commons Compress, Apache Commons DBCP, and Apache Commons Pool ([http://commons.apache.org||http://commons.apache.org]) - Copyright 2001-2008 The Apache Software Foundation Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. See Apache License for a complete listing of the Apache License.

    • Boost C++ Libraries [http://www.boost.org] is licensed under the Boost Software License V1 [http://www.boost.org/users/license.html]

    • Coin3D is a high-level, retained-mode toolkit for effective 3D graphics development. It is API compatible with Open Inventor 2.1. Coin3D is Free Software, published under the BSD 3-clause license.

    • cpp (GCC): Copyright (C) 2003 Free Software Foundation, Inc.

    • CrashRpt is a light-weight open-source error reporting library for C++ applications running in Windows.

    • DXF is a trademark of Autodesk, Inc

    • Eigen is a high-level C++ library of template headers for linear algebra, matrix and vector operations, geometrical transformations, numerical solvers and related algorithms. Eigen is published under MPL2 license.

    • Fmt is an open-source formatting library for C++. It can be used as a safe and fast alternative to (s)printf and IOStreams.

    • FreeType2: Portions of this software are copyright 1996-2002, 2006 The FreeType Project ([http://www.freetype.org]). All rights reserved.

    • FrontISTR is an open-source large-scale parallel finite element method program for nonlinear structural analysis. It is published under MIT license.

    • GNU Fortran and Standard C++ library http://gcc.gnu.org is licensed under The GNU General Public License (GPL) Version 2 June 1991 Copyright © 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGR4AM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. See GNU GENERAL PUBLIC LICENSE (GPL) for a complete listing of the GNU GENERAL PUBLIC LICENSE.

    • gzip http://www.gzip.org is licensed under The GNU General Public License (GPL) Version 2 June 1991 Copyright © 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGR4AM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. See GNU GENERAL PUBLIC LICENSE (GPL) for a complete listing of the GNU GENERAL PUBLIC LICENSE.

    • Gzstream is a small C++ library, basically just a wrapper, that provides the functionality of the zlib C-library in a C++ iostream. It is freely available under the LGPL license.

    • HDF5 (Hierarchical Data Format 5) Software Library and Utilities Copyright 2006-2008 by The HDF Group (THG). NCSA HDF5 (Hierarchical Data Format 5) Software Library and Utilities Copyright 1998-2006 by the Board of Trustees of the University of Illinois. All rights reserved. Contributors: National Center for Supercomputing Applications (NCSA) at the University of Illinois, Fortner Software, Unidata Program Center (netCDF), The Independent JPEG Group (JPEG), Jean-loup Gailly and Mark Adler (gzip), and Digital Equipment Corporation (DEC). Redistribution and use in source and binary forms, with or without modification, are permitted for any purpose (including commercial purposes) provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the following disclaimer in the documentation and/or materials provided with the distribution. 3. In addition, redistributions of modified forms of the source or binary code must carry prominent notices stating that the original code was changed and the date of the change. 4. All publications or advertising materials mentioning features or use of this software are asked, but not required, to acknowledge that it was developed by The HDF Group and by the National Center for Supercomputing Applications at the University of Illinois at Urbana-Champaign and credit the contributors. 5. Neither the name of The HDF Group, the name of the University, nor the name of any Contributor may be used to endorse or promote products derived from this software without specific prior written permission from THG, the University, or the Contributor, respectively. DISCLAIMER: THIS SOFTWARE IS PROVIDED BY THE HDF GROUP (THG) AND THE CONTRIBUTORS "AS IS" WITH NO WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED. In no event shall THG or the Contributors be liable for any damages suffered by the users arising out of the use of this software, even if advised of the possibility of such damage. Portions of HDF5 were developed with support from the University of California, Lawrence Livermore National Laboratory (UC LLNL). The following statement applies to those portions of the product and must be retained in any redistribution of source code, binaries, documentation, and/or accompanying materials: This work was partially produced at the University of California, Lawrence Livermore National Laboratory (UC LLNL) under contract no. W-7405-ENG-48 (Contract 48) between the U.S. Department of Energy (DOE) and The Regents of the University of California (University) for the operation of UC LLNL. DISCLAIMER: This work was prepared as an account of work sponsored by an agency of the United States Government. Neither the United States Government nor the University of California nor any of their employees, makes any warranty, express or implied, or assumes any liability or responsibility for the accuracy, completeness, or usefulness of any information, apparatus, product, or process disclosed, or represents that its use would not infringe privately- owned rights. Reference herein to any specific commercial products, process, or service by trade name, trademark, manufacturer, or otherwise, does not necessarily constitute or imply its endorsement, recommendation, or favoring by the United States Government or the University of California. The views and opinions of authors expressed herein do not necessarily state or reflect those of the United States Government or the University of California, and shall not be used for advertising or product endorsement purposes.

    • IGES is a trademark of IGES Data Analysis, Inc

    • Intel is a registered trademark of Intel Corporation

    • JsonCpp is a C++ library that allows manipulating JSON values. It is freely availble under MIT license.

    • Mesa Library license requirements: Copyright (C) 1999-2005 Brian Paul All Rights Reserved. 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 BRIAN PAUL 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. Mesa Component Licenses also apply. Reference http://mesa3d.sourceforge.net/.

    • METIS 4.0.1 Copyright 1997, Regents of the University of Minnesota. METIS was written by George Karypis (karypis@cs.umn.edu). Our policy regarding the distribution of METIS with third-party applications is as follows: Non-commerical applications METIS can be freely distributed provided that proper references are included and the original documentation and copyright notice is included. Commercial applications METIS cab be freekt distributed provided that proper references are included, the original documentation and copyright notice is included and METIS is a relatively small portion of the overall application. In either case, permission to distribute/include METIS with your application must be obtained by sending email to metis@cs.umn.edu.

    • Microsoft, Windows, Windows 2000 and Windows XP are registered trademarks of Microsoft Corporation.

    • MPICH2 Copyright Notice + 2002 University of Chicago Permission is hereby granted to use, reproduce, prepare derivative works, and to redistribute to others. This software was authored by: Argonne National Laboratory Group W. Gropp: (630) 252-4318; FAX: (630) 252-5986; e-mail: gropp@mcs.anl.gov E. Lusk: (630) 252-7852; FAX: (630) 252-5986; e-mail: lusk@mcs.anl.gov Mathematics and Computer Science Division Argonne National Laboratory, Argonne IL 60439

    • MUMPS is a software application for the solution of large sparse systems of linear algebraic equations on distributed memory parallel computers. It is freely available under CeCILL-C license.

    • NASTRAN is a registered trademark of the National Aeronautics and Space Administration.

    • NetCDF is a set of software libraries and self-describing, machine-independent data formats that support the creation, access, and sharing of array-oriented scientific data.

    • NetGen is an automatic 3d tetrahedral mesh generator under GNU LGPL.

    • Open CASCADE is open source software for 3D surface and solid modeling, visualization, data exchange, and rapid application development. It is published under LGPL.

    • Open License Manager is a license manager written in C/C++ for Windows and Linux environments. It is pulished under BSD3 license.

    • OpenSSL OpenSSL is a robust, commercial-grade, and full-featured toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols. OpenSSL is licensed under an Apache-style license.

    • PETSc is a suite of data structures and routines for the scalable (parallel) solution of scientific applications modeled by partial differential equations. It is published under 2-clause BSD license.

    • Pro/ENGINEER is a registered trademark of Parametric Technology Corporation.

    • Pthread a multi-thread library. It is freely available under MIT license.

    • QT is a multiplatform C++ GUI toolkit. It is freely available under LGPL. See [http://www.qt.io] for more information.

    • Visualization Toolkit (VTK) is an open-source, freely available software system for 3D computer graphics, image processing and visualization. It is published under 3-Clause BSD license.

    • Xerces-C++ is a validating XML parser written in a portable subset of C++. Xerces-C++ is made available under the Apache Software License, Version 2.0.

    • ZLIB 1.1.3 Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler.

    \ No newline at end of file diff --git a/legal/trademarks/index.html b/legal/trademarks/index.html index 09a5d37..febc21e 100755 --- a/legal/trademarks/index.html +++ b/legal/trademarks/index.html @@ -1 +1 @@ - WELSIM Trademarks List - WelSim Documentation

    WELSIM Trademarks List

    • WELSIM®
    \ No newline at end of file + WELSIM Trademarks List - WelSim Documentation

    WELSIM Trademarks List

    • WELSIM®
    \ No newline at end of file diff --git a/license/index.html b/license/index.html index 009b44b..2f2e0fa 100755 --- a/license/index.html +++ b/license/index.html @@ -1 +1 @@ - License - WelSim Documentation

    License

    WELSIM License

    WELSIM SOFTWARE LICENSE AGREEMENT Copyright (C) 2017-2024 WELSIMULATION LLC Version effective date: August 10, 2017

    READ THIS SOFTWARE LICENSE AGREEMENT CAREFULLY BEFORE PROCEEDING. THIS IS A LEGALLY BINDING CONTRACT BETWEEN LICENSEE AND LICENSOR FOR LICENSEE TO USE THE PROGRAM(S), AND IT INCLUDES DISCLAIMERS OF WARRANTY AND LIMITATIONS OF LIABILITY. WELSIMULATION LLC IS WILLING TO LICENSE THE SOFTWARE ONLY UPON THE CONDITION THAT YOU ACCEPT ALL OF THE TERMS CONTAINED IN THIS SOFTWARE LICENSE AGREEMENT. PLEASE READ THE TERMS CAREFULLY. BY CLICKING ON "I AGREE" OR BY INSTALLING THE SOFTWARE, YOU WILL INDICATE YOUR AGREEMENT WITH THEM. IF YOU ARE ENTERING INTO THIS AGREEMENT ON BEHALF OF A COMPANY OR OTHER LEGAL ENTITY, YOUR ACCEPTANCE REPRESENTS THAT YOU HAVE THE AUTHORITY TO BIND SUCH ENTITY TO THESE TERMS, IN WHICH CASE "YOU" OR "YOUR" SHALL REFER TO YOUR ENTITY. IF YOU DO NOT AGREE WITH THESE TERMS, OR IF YOU DO NOT HAVE THE AUTHORITY TO BIND YOUR ENTITY, THEN WELSIMULATION LLC IS UNWILLING TO LICENSE THE SOFTWARE, AND YOU SHOULD NOT INSTALL THE SOFTWARE.

    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

    THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.

    This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages or consequences arising from the use of this software.

    1. Parties. The parties to this Agreement are you, the licensee ("You") and WELSIMULATION LLC. If You are not acting on behalf of Yourself as an individual, then "You" means Your company or organization. A company or organization shall in either case mean a single business entity, and shall not include its affiliates or wholly owned subsidiaries.

    2. The Software. The accompanying materials including, but not limited to, source code, binary executables, documentation, images, and scripts, which are distributed by WELSIMULATION LLC, and derivatives of that collection and/or those files are referred to herein as the "Software".

    3. Restrictions. WELSIMULATION LLC encourages You to promote use of the Software. However this Agreement does not grant permission to use the trade names, trademarks, service marks, or product names of WELSIMULATION LLC, except as required for reasonable and customary use in describing the origin of the Software. In particular, You cannot use any of these marks in any way that might state or imply that WELSIMULATION LLC endorses Your work, or might state or imply that You created the Software covered by this Agreement. Except as expressly provided herein, you may not:

      1. modify or translate the Software;
      2. reverse engineer, decompile, or disassemble the Software, except to the extent this restriction is expressly prohibited by applicable law;
      3. create derivative works based on the Software;
      4. merge the Software with another product;
      5. copy the Software; or
      6. remove or obscure any proprietary rights notices or labels on the Software.
    4. Ownership. WELSIMULATION LLC and its suppliers own the Software and all intellectual property rights embodied therein, including copyrights and valuable trade secrets embodied in the Software's design and coding methodology. The Software is protected by United States copyright laws and international treaty provisions. This Agreement provides You only a limited use license, and no ownership of any intellectual property.

    5. Infringement Indemnification. You shall defend or settle, at Your expense, any action brought against WELSIMULATION LLC based upon the claim that any modifications to the Software or combination of the Software with products infringes or violates any third party right; provided, however, that: (i) WELSIMULATION LLC shall notify Licensee promptly in writing of any such claim; (ii) WELSIMULATION LLC shall not enter into any settlement or compromise any such claim without Your prior written consent; (iii) You shall have sole control of any such action and settlement negotiations; and (iv) WELSIMULATION LLC shall provide You with commercially reasonable information and assistance, at Your request and expense, necessary to settle or defend such claim. You agree to pay all damages and costs finally awarded against WELSIMULATION LLC attributable to such claim.

    6. No warranty The program is provided on an 'as is' basis, without warranties or conditions of any kind, either express or implied including, without limitation, any warranties or conditions of title, non-infringement, merchantability or fitness for a particular purpose. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.

    7. Licensee Outside The U.S. If You are located outside the U.S.,then the following provisions shall apply: (i) The parties confirm that this Agreement and all related documentation is and will be in the English language; and (ii) You are responsible for complying with any local laws in your jurisdiction which might impact your right to import, export or use the Software, and You represent that You have complied with any regulations or registration procedures required by applicable law to make this license enforceable.

    8. Assignment. Except as expressly provided herein neither this Agreement nor any rights granted hereunder, nor the use of any of the software may be assigned, or otherwise transferred, in whole or in part, by Licensee, without the prior written consent of WELSIMULATION LLC. WELSIMULATION LLC may assign this Agreement in the event of a merger or sale of all or substantially all of the stock of assets of WELSIMULATION LLC without the consent of Licensee. Any attempted assignment will be void and of no effect unless permitted by the foregoing. This Agreement shall inure to the benefit of the parties permitted successors and assigns.

    9. Miscellaneous. This Agreement constitutes the entire understanding of the parties with respect to the subject matter of this Agreement and merges all prior communications, representations, and agreements. WELSIMULATION LLC reserves the right to change this Agreement at any time, which change shall be effective immediately.

    10. General If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.

    If Recipient institutes patent litigation against a Contributor with respect to a patent applicable to software (including a cross-claim or counterclaim in a lawsuit), then any patent licenses granted by that Contributor to such Recipient under this Agreement shall terminate as of the date such litigation is filed. In addition, if Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 3(b) shall terminate as of the date such litigation is filed.

    All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.

    \ No newline at end of file + License - WelSim Documentation

    License

    WELSIM License

    WELSIM SOFTWARE LICENSE AGREEMENT Copyright (C) 2017-2024 WELSIMULATION LLC Version effective date: August 10, 2017

    READ THIS SOFTWARE LICENSE AGREEMENT CAREFULLY BEFORE PROCEEDING. THIS IS A LEGALLY BINDING CONTRACT BETWEEN LICENSEE AND LICENSOR FOR LICENSEE TO USE THE PROGRAM(S), AND IT INCLUDES DISCLAIMERS OF WARRANTY AND LIMITATIONS OF LIABILITY. WELSIMULATION LLC IS WILLING TO LICENSE THE SOFTWARE ONLY UPON THE CONDITION THAT YOU ACCEPT ALL OF THE TERMS CONTAINED IN THIS SOFTWARE LICENSE AGREEMENT. PLEASE READ THE TERMS CAREFULLY. BY CLICKING ON "I AGREE" OR BY INSTALLING THE SOFTWARE, YOU WILL INDICATE YOUR AGREEMENT WITH THEM. IF YOU ARE ENTERING INTO THIS AGREEMENT ON BEHALF OF A COMPANY OR OTHER LEGAL ENTITY, YOUR ACCEPTANCE REPRESENTS THAT YOU HAVE THE AUTHORITY TO BIND SUCH ENTITY TO THESE TERMS, IN WHICH CASE "YOU" OR "YOUR" SHALL REFER TO YOUR ENTITY. IF YOU DO NOT AGREE WITH THESE TERMS, OR IF YOU DO NOT HAVE THE AUTHORITY TO BIND YOUR ENTITY, THEN WELSIMULATION LLC IS UNWILLING TO LICENSE THE SOFTWARE, AND YOU SHOULD NOT INSTALL THE SOFTWARE.

    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

    THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.

    This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages or consequences arising from the use of this software.

    1. Parties. The parties to this Agreement are you, the licensee ("You") and WELSIMULATION LLC. If You are not acting on behalf of Yourself as an individual, then "You" means Your company or organization. A company or organization shall in either case mean a single business entity, and shall not include its affiliates or wholly owned subsidiaries.

    2. The Software. The accompanying materials including, but not limited to, source code, binary executables, documentation, images, and scripts, which are distributed by WELSIMULATION LLC, and derivatives of that collection and/or those files are referred to herein as the "Software".

    3. Restrictions. WELSIMULATION LLC encourages You to promote use of the Software. However this Agreement does not grant permission to use the trade names, trademarks, service marks, or product names of WELSIMULATION LLC, except as required for reasonable and customary use in describing the origin of the Software. In particular, You cannot use any of these marks in any way that might state or imply that WELSIMULATION LLC endorses Your work, or might state or imply that You created the Software covered by this Agreement. Except as expressly provided herein, you may not:

      1. modify or translate the Software;
      2. reverse engineer, decompile, or disassemble the Software, except to the extent this restriction is expressly prohibited by applicable law;
      3. create derivative works based on the Software;
      4. merge the Software with another product;
      5. copy the Software; or
      6. remove or obscure any proprietary rights notices or labels on the Software.
    4. Ownership. WELSIMULATION LLC and its suppliers own the Software and all intellectual property rights embodied therein, including copyrights and valuable trade secrets embodied in the Software's design and coding methodology. The Software is protected by United States copyright laws and international treaty provisions. This Agreement provides You only a limited use license, and no ownership of any intellectual property.

    5. Infringement Indemnification. You shall defend or settle, at Your expense, any action brought against WELSIMULATION LLC based upon the claim that any modifications to the Software or combination of the Software with products infringes or violates any third party right; provided, however, that: (i) WELSIMULATION LLC shall notify Licensee promptly in writing of any such claim; (ii) WELSIMULATION LLC shall not enter into any settlement or compromise any such claim without Your prior written consent; (iii) You shall have sole control of any such action and settlement negotiations; and (iv) WELSIMULATION LLC shall provide You with commercially reasonable information and assistance, at Your request and expense, necessary to settle or defend such claim. You agree to pay all damages and costs finally awarded against WELSIMULATION LLC attributable to such claim.

    6. No warranty The program is provided on an 'as is' basis, without warranties or conditions of any kind, either express or implied including, without limitation, any warranties or conditions of title, non-infringement, merchantability or fitness for a particular purpose. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.

    7. Licensee Outside The U.S. If You are located outside the U.S.,then the following provisions shall apply: (i) The parties confirm that this Agreement and all related documentation is and will be in the English language; and (ii) You are responsible for complying with any local laws in your jurisdiction which might impact your right to import, export or use the Software, and You represent that You have complied with any regulations or registration procedures required by applicable law to make this license enforceable.

    8. Assignment. Except as expressly provided herein neither this Agreement nor any rights granted hereunder, nor the use of any of the software may be assigned, or otherwise transferred, in whole or in part, by Licensee, without the prior written consent of WELSIMULATION LLC. WELSIMULATION LLC may assign this Agreement in the event of a merger or sale of all or substantially all of the stock of assets of WELSIMULATION LLC without the consent of Licensee. Any attempted assignment will be void and of no effect unless permitted by the foregoing. This Agreement shall inure to the benefit of the parties permitted successors and assigns.

    9. Miscellaneous. This Agreement constitutes the entire understanding of the parties with respect to the subject matter of this Agreement and merges all prior communications, representations, and agreements. WELSIMULATION LLC reserves the right to change this Agreement at any time, which change shall be effective immediately.

    10. General If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.

    If Recipient institutes patent litigation against a Contributor with respect to a patent applicable to software (including a cross-claim or counterclaim in a lawsuit), then any patent licenses granted by that Contributor to such Recipient under this Agreement shall terminate as of the date such litigation is filed. In addition, if Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 3(b) shall terminate as of the date such litigation is filed.

    All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.

    \ No newline at end of file diff --git a/mateditor/mat_core_loss/index.html b/mateditor/mat_core_loss/index.html index 553c6a4..542256a 100755 --- a/mateditor/mat_core_loss/index.html +++ b/mateditor/mat_core_loss/index.html @@ -1,4 +1,4 @@ - Core loss model - WelSim Documentation

    Core loss model

    The core loss combines eddy current losses and hysteresis losses for a transient solution type. It is a post-processing calculation, based on already calculated transient magnetic field quantities. It is applicable for the evaluation of core losses in steel laminations (frequently used in applications such as electric machines, transformers) or in power ferrites.

    Hysteresis loss is associated with loss density fields in 2D and 3D eddy current solutions only. Hysteresis loss is short for magnetic hysteresis loss and represents power loss in some magnetic materials (electric steels or ferrites) in alternating (sinusoidal) magnetic fields. This loss is due to a phenomenon called "magnetic viscosity" which causes the B and H fields to have a phase shift between them. In the B-H plane, for linear materials, the relationship between these two fields describes an ellipse. The hysteresis loss is proportional to the area of the ellipse.

    Core loss models for an electromagnetic material

    MatEditor provides two core loss models: electrical steel and power ferrite. The coefficients are given in the table below.

    Type Associated properties
    Electrical Steel Hystersis coefficient \(K_h\), Classcial eddy coefficient \(K_c\), Excess coefficient \(K_e\).
    Power Ferrite Steinmetz coefficients \(C_m\), \(X\), and \(Y\).
    WelSim/docs

    Core loss model

    The core loss combines eddy current losses and hysteresis losses for a transient solution type. It is a post-processing calculation, based on already calculated transient magnetic field quantities. It is applicable for the evaluation of core losses in steel laminations (frequently used in applications such as electric machines, transformers) or in power ferrites.

    Hysteresis loss is associated with loss density fields in 2D and 3D eddy current solutions only. Hysteresis loss is short for magnetic hysteresis loss and represents power loss in some magnetic materials (electric steels or ferrites) in alternating (sinusoidal) magnetic fields. This loss is due to a phenomenon called "magnetic viscosity" which causes the B and H fields to have a phase shift between them. In the B-H plane, for linear materials, the relationship between these two fields describes an ellipse. The hysteresis loss is proportional to the area of the ellipse.

    Core loss models for an electromagnetic material

    MatEditor provides two core loss models: electrical steel and power ferrite. The coefficients are given in the table below.

    Type Associated properties
    Electrical Steel Hystersis coefficient \(K_h\), Classcial eddy coefficient \(K_c\), Excess coefficient \(K_e\).
    Power Ferrite Steinmetz coefficients \(C_m\), \(X\), and \(Y\).

    Note

    In Transient Solver, X must be less than Y.

    Calculate core loss coefficients from loss curves

    This section introduces how to calculate core loss coefficients for electrical steel and power ferrite materials according to the given P-B test data.

    1. Add P-B Test Data material property, and edit the frequency-based data. You also can import the data from a plain text or Excel file. Check the data curves by clicking the row of frequency. Click the header of the frequency column displays all curves in the chart.
      finite_element_analysis_mateditor_pbtestdata

    2. Add Core Loss Model material property, and set the Core Loss Model Type of the property to Electrical Steel or Power Ferrite.
      finite_element_analysis_mateditor_core_loss_model_type

    3. Add Curve Fitting sub-property from the RMB context menu.
      finite_element_analysis_mateditor_core_loss_add_curve_fitting

    4. Solve the curve fit from the RMB context menu.
      finite_element_analysis_mateditor_core_loss_fit_context_menu

    5. If the solve succeeds. The calculated parameters will be shown in the table.
      finite_element_analysis_mateditor_core_loss_curve_fit_solved

    6. Copy the solved values to the properties from RMB context menu. You also can review the calculated curves in the chart.
      finite_element_analysis_mateditor_core_loss_fit_all_curves

    7. Display curves in the logarithmic axis (optional).
      finite_element_analysis_mateditor_core_loss_fit_all_curves_in_log

    Computation of electrical steel core loss from loss curves

    The iron-core loss without DC flux bias is expressed as the following:

    \[ p_v=P_h+P_c+P_e=K_{f} f (B_m)^2 + K_c (fB_m)^2 + K_e(fB_m)^{1.5} = K_1B_m^2+K_2B_m^{1.5} \]

    where

    • \(B_m\) is the amplitude of the AC flux component,
    • \(f\) is the frequency,
    • \(K_h\) is the hysteresis core loss coefficient,
    • \(K_c\) is the eddy-current core loss coefficient, and
    • \(K_e\) is the excess core loss coefficient,
    • \(K_1=K_ff+K_cf^2\),
    • \(K_2=K_ef^{1.5}\).

    Minimize the quadratic form to obtain \(K_h\) , \(K_c\), and \(K_e\) directly.

    \[ err(K_h,K_c,K_e)=\sum_{i=1}^m \sum_{j=1}^{n_i} \left[p_{ij}-\left(K_{h}f_{i}B_{mij}^2 +K_{c}\left(fB_{mij}\right)^{2}+ K_{e}\left(f_iB_{mij}\right)^{1.5} \right) \right]^2=min \]

    where \(m\) is the number of loss curves, \(n_i\) is the number of points of the \(i\)-th loss curve, and \(p_{ij} = f(f_i , B_{mij})\) is two dimensional lookup table for loss curves.

    Note

    Since the manufacturer-provided loss curve is obtained under sinusoidal flux conditions at a given frequency, these coefficients can be derived in the frequency domain.

    Computation of power ferrite core loss from loss curves

    The principles of the computation algorithm are summarized as follows. The iron-core loss is expressed as the Steinmetz approximation

    \[ p_v=C_m f^x B_m^y \]

    where \(p_v\) is the average power density, \(f\) is the excitation frequency, and \(B_m\) is the peak flux density, is commonly used to characterize core loss data for sinusoidal excitation, but can also be applied to square-wave data.

    To linearize the equation for curve fitting, we used base-10 logarithms. The equation above can be rewritten to

    \[ log(p_v)=c + x\cdot log(f) + y \cdot(B_m) \]

    where \(c=log(C_m)\).

    Minimize the quadratic form to obtain \(C\), \(x\) and \(y\).

    \[ err(C_m,x,y)=\sum_{i=1}^{m}\sum_{j=1}^{n_i}\left[log(p_{vij})-\left(c+xlog(f_i)+ylog(B_{mij}) \right) \right]^2=min \]

    where \(m\) is the number of loss curves, \(n_i\) is the number of points of the \(i\)-th loss curve, and \(P_{vij} = f(f_i , B_{mij})\) is two dimensional lookup table for multi-frequency loss curves. Then \(C_m\) is calculated from the equation \(c=log(C_m)\).

    \ No newline at end of file +* Ke - Excess -->

    Calculate core loss coefficients from loss curves

    This section introduces how to calculate core loss coefficients for electrical steel and power ferrite materials according to the given P-B test data.

    1. Add P-B Test Data material property, and edit the frequency-based data. You also can import the data from a plain text or Excel file. Check the data curves by clicking the row of frequency. Click the header of the frequency column displays all curves in the chart.
      finite_element_analysis_mateditor_pbtestdata

    2. Add Core Loss Model material property, and set the Core Loss Model Type of the property to Electrical Steel or Power Ferrite.
      finite_element_analysis_mateditor_core_loss_model_type

    3. Add Curve Fitting sub-property from the RMB context menu.
      finite_element_analysis_mateditor_core_loss_add_curve_fitting

    4. Solve the curve fit from the RMB context menu.
      finite_element_analysis_mateditor_core_loss_fit_context_menu

    5. If the solve succeeds. The calculated parameters will be shown in the table.
      finite_element_analysis_mateditor_core_loss_curve_fit_solved

    6. Copy the solved values to the properties from RMB context menu. You also can review the calculated curves in the chart.
      finite_element_analysis_mateditor_core_loss_fit_all_curves

    7. Display curves in the logarithmic axis (optional).
      finite_element_analysis_mateditor_core_loss_fit_all_curves_in_log

    Computation of electrical steel core loss from loss curves

    The iron-core loss without DC flux bias is expressed as the following:

    \[ p_v=P_h+P_c+P_e=K_{f} f (B_m)^2 + K_c (fB_m)^2 + K_e(fB_m)^{1.5} = K_1B_m^2+K_2B_m^{1.5} \]

    where

    • \(B_m\) is the amplitude of the AC flux component,
    • \(f\) is the frequency,
    • \(K_h\) is the hysteresis core loss coefficient,
    • \(K_c\) is the eddy-current core loss coefficient, and
    • \(K_e\) is the excess core loss coefficient,
    • \(K_1=K_ff+K_cf^2\),
    • \(K_2=K_ef^{1.5}\).

    Minimize the quadratic form to obtain \(K_h\) , \(K_c\), and \(K_e\) directly.

    \[ err(K_h,K_c,K_e)=\sum_{i=1}^m \sum_{j=1}^{n_i} \left[p_{ij}-\left(K_{h}f_{i}B_{mij}^2 +K_{c}\left(fB_{mij}\right)^{2}+ K_{e}\left(f_iB_{mij}\right)^{1.5} \right) \right]^2=min \]

    where \(m\) is the number of loss curves, \(n_i\) is the number of points of the \(i\)-th loss curve, and \(p_{ij} = f(f_i , B_{mij})\) is two dimensional lookup table for loss curves.

    Note

    Since the manufacturer-provided loss curve is obtained under sinusoidal flux conditions at a given frequency, these coefficients can be derived in the frequency domain.

    Computation of power ferrite core loss from loss curves

    The principles of the computation algorithm are summarized as follows. The iron-core loss is expressed as the Steinmetz approximation

    \[ p_v=C_m f^x B_m^y \]

    where \(p_v\) is the average power density, \(f\) is the excitation frequency, and \(B_m\) is the peak flux density, is commonly used to characterize core loss data for sinusoidal excitation, but can also be applied to square-wave data.

    To linearize the equation for curve fitting, we used base-10 logarithms. The equation above can be rewritten to

    \[ log(p_v)=c + x\cdot log(f) + y \cdot(B_m) \]

    where \(c=log(C_m)\).

    Minimize the quadratic form to obtain \(C\), \(x\) and \(y\).

    \[ err(C_m,x,y)=\sum_{i=1}^{m}\sum_{j=1}^{n_i}\left[log(p_{vij})-\left(c+xlog(f_i)+ylog(B_{mij}) \right) \right]^2=min \]

    where \(m\) is the number of loss curves, \(n_i\) is the number of points of the \(i\)-th loss curve, and \(P_{vij} = f(f_i , B_{mij})\) is two dimensional lookup table for multi-frequency loss curves. Then \(C_m\) is calculated from the equation \(c=log(C_m)\).

    \ No newline at end of file diff --git a/mateditor/mat_file_format/index.html b/mateditor/mat_file_format/index.html index 7176d57..b3ff75b 100755 --- a/mateditor/mat_file_format/index.html +++ b/mateditor/mat_file_format/index.html @@ -1 +1 @@ - Material file format - WelSim Documentation

    Material library file format

    Material library data follows the MatML 3.1 Schema for saving material data to external libraries on disk. More information about MatML can be found at http://matml.org. For an example of the format see the Export individual data item in the Perform Basic Tasks in Material section and then open the file with a text/xml editor.

    \ No newline at end of file + Material file format - WelSim Documentation

    Material library file format

    Material library data follows the MatML 3.1 Schema for saving material data to external libraries on disk. More information about MatML can be found at http://matml.org. For an example of the format see the Export individual data item in the Perform Basic Tasks in Material section and then open the file with a text/xml editor.

    \ No newline at end of file diff --git a/mateditor/mat_gui/index.html b/mateditor/mat_gui/index.html index 9d21ac9..a7ec6d7 100755 --- a/mateditor/mat_gui/index.html +++ b/mateditor/mat_gui/index.html @@ -1,3 +1,3 @@ - Graphical user interface - WelSim Documentation

    Graphical user interface

    The MatEditor workspace is an independent interface and display relavant items as you configured.

    Layout reference

    Presented below are two layout configurations for the MatEditor view. The first configuration is displayed by clicking on "Library" tab in toolbox. The second configure is shown by clicking on "Build" tab in toolbox. You can switch this two layout mode by clicking the tabs.

    finite_element_analysis_mateditor_gui1

    finite_element_analysis_mateditor_gui2

    Legend Name Description
    A Menu Bar Operations for MatEditor.
    B Toolbar Selected operations that often used for MatEditor.
    C Material Outline Pane Material items that are created in MatEditor.
    D Library Outline Pane Displays the available prebuild material sources.
    E Property Outline Pane Displays the available material property sources that can be included into a material.
    F Properties Pane Displays the properties of the current material.
    G Table Pane Shows the tabular data for the selected item in the Properties pane.
    H Chart Pane Shows the chart of the item selected in the Properties pane.

    The following items in the menu bar are provided by MatEditor:

    File

    • New: Create a new material object in the tree window.
    • Open: Retrieve material data from an external XML file. This command remove all existing material data in the system.
    • Save: Save current material data into an external XML file.
    • Save as: Save current material data into an designated folder and in a specific XML file name.
    • Export material data: Output selected material data into an exteral XML file.
    • Import material data: Input material data from an external XML file. The existing material data will not be removed.
    • Exit: Close the software.

    Edit

    • Activate: Set the selected material object as current.
    • Duplicate: Create a new material object and copy all propeties from the selected to the newly created material.
    • Delete: Remove the selected material object(s).
    • Delete all: Remove all material objects.

    Units

    This menu provides all avilable unit systems and units. Once one unit (system) is chosen, the default unit is determined. The units for the newly created material data will be automatically set to the chosen unit(system).

    Help

    • Help: Direct the user to the online user manual.
    • About: Display the software and hardware information dialog.

    Toolbar

    The following item in the toolbar is provided by MatEditor:

    Icon Name Description
    finite_element_analysis_mateditor_icon_new New Create a new material object in the tree window.
    finite_element_analysis_mateditor_icon_open Open Retrieve material data from an external XML file. This command remove all existing material data in the system.
    finite_element_analysis_mateditor_icon_save Save Save current material data into an external XML file.
    finite_element_analysis_mateditor_icon_help Help Direct the user to the online user manual.
    finite_element_analysis_mateditor_icon_about About Display the software and hardware information dialog.

    Toolbox

    MatEditor Toolbox contains two tabs: Library and Build. These two tabs function as:

    • Library: contains default material data that allows user to directly use. Clicking this tab displays the Library Outline Pane.
    • Build: contains all supported material properties that enable user to compose material data. Clicking this tab displays the Property Outline Pane.

    Material outline pane

    The Outline pane shows an outline of the contents of the created material data source. You can perform the following actions in this pane:

    • Create a new material
    • Delete a material
    • Rename a material
    • Edit a material
    • Duplicate a material

    Items status

    The itmes column shows the name of the items contained in the data source. When the name of material object is in bold, the material is activated for editing.

    Library outline pane

    The Library Outline pane shows an outline of availble predefined materials. These materials are grouped into several categories.

    finite_element_analysis_mateditor_library_outline

    Property outline pane

    The Property Outline pane shows an outline of availble material properties. These material properties are grouped into several categories.

    finite_element_analysis_mateditor_property_outline

    Properties pane

    The Properties pane shows the properties for the item selected in the Property Outline pane. You can perform the following actions in this pane:

    • Add additional properties, tabular data (from the Property Outline and Table panes)
    • Delete a property
    • Modify constant data
    • Suppress a property

    Property column

    The property column lists the properties for the item selected in the Property Outline pane. Clicking a property will change the contents of the Table pane and Chart pane.

    Material property

    The status of the material property is indicated as follows:

    • finite_element_analysis_mateditor_icon_property: The material property is described in a single property data (see the Material Definitions topic).
    WelSim/docs

    Graphical user interface

    The MatEditor workspace is an independent interface and display relavant items as you configured.

    Layout reference

    Presented below are two layout configurations for the MatEditor view. The first configuration is displayed by clicking on "Library" tab in toolbox. The second configure is shown by clicking on "Build" tab in toolbox. You can switch this two layout mode by clicking the tabs.

    finite_element_analysis_mateditor_gui1

    finite_element_analysis_mateditor_gui2

    Legend Name Description
    A Menu Bar Operations for MatEditor.
    B Toolbar Selected operations that often used for MatEditor.
    C Material Outline Pane Material items that are created in MatEditor.
    D Library Outline Pane Displays the available prebuild material sources.
    E Property Outline Pane Displays the available material property sources that can be included into a material.
    F Properties Pane Displays the properties of the current material.
    G Table Pane Shows the tabular data for the selected item in the Properties pane.
    H Chart Pane Shows the chart of the item selected in the Properties pane.

    The following items in the menu bar are provided by MatEditor:

    File

    • New: Create a new material object in the tree window.
    • Open: Retrieve material data from an external XML file. This command remove all existing material data in the system.
    • Save: Save current material data into an external XML file.
    • Save as: Save current material data into an designated folder and in a specific XML file name.
    • Export material data: Output selected material data into an exteral XML file.
    • Import material data: Input material data from an external XML file. The existing material data will not be removed.
    • Exit: Close the software.

    Edit

    • Activate: Set the selected material object as current.
    • Duplicate: Create a new material object and copy all propeties from the selected to the newly created material.
    • Delete: Remove the selected material object(s).
    • Delete all: Remove all material objects.

    Units

    This menu provides all avilable unit systems and units. Once one unit (system) is chosen, the default unit is determined. The units for the newly created material data will be automatically set to the chosen unit(system).

    Help

    • Help: Direct the user to the online user manual.
    • About: Display the software and hardware information dialog.

    Toolbar

    The following item in the toolbar is provided by MatEditor:

    Icon Name Description
    finite_element_analysis_mateditor_icon_new New Create a new material object in the tree window.
    finite_element_analysis_mateditor_icon_open Open Retrieve material data from an external XML file. This command remove all existing material data in the system.
    finite_element_analysis_mateditor_icon_save Save Save current material data into an external XML file.
    finite_element_analysis_mateditor_icon_help Help Direct the user to the online user manual.
    finite_element_analysis_mateditor_icon_about About Display the software and hardware information dialog.

    Toolbox

    MatEditor Toolbox contains two tabs: Library and Build. These two tabs function as:

    • Library: contains default material data that allows user to directly use. Clicking this tab displays the Library Outline Pane.
    • Build: contains all supported material properties that enable user to compose material data. Clicking this tab displays the Property Outline Pane.

    Material outline pane

    The Outline pane shows an outline of the contents of the created material data source. You can perform the following actions in this pane:

    • Create a new material
    • Delete a material
    • Rename a material
    • Edit a material
    • Duplicate a material

    Items status

    The itmes column shows the name of the items contained in the data source. When the name of material object is in bold, the material is activated for editing.

    Library outline pane

    The Library Outline pane shows an outline of availble predefined materials. These materials are grouped into several categories.

    finite_element_analysis_mateditor_library_outline

    Property outline pane

    The Property Outline pane shows an outline of availble material properties. These material properties are grouped into several categories.

    finite_element_analysis_mateditor_property_outline

    Properties pane

    The Properties pane shows the properties for the item selected in the Property Outline pane. You can perform the following actions in this pane:

    • Add additional properties, tabular data (from the Property Outline and Table panes)
    • Delete a property
    • Modify constant data
    • Suppress a property

    Property column

    The property column lists the properties for the item selected in the Property Outline pane. Clicking a property will change the contents of the Table pane and Chart pane.

    Material property

    The status of the material property is indicated as follows:

    • finite_element_analysis_mateditor_icon_property: The material property is described in a single property data (see the Material Definitions topic).

    Value column

    The value column is used to change data for a property or indicates that the data for the property is tabular (finite_element_analysis_mateditor_icon_tabular).

    Unit column

    The unit column displays the unit of the data shown in the value column . If the column is editable (see Units Menu), changing the unit will convert the value into the selected unit (there is no net change in the data, so the solution is still valid).

    Suppression column

    The suppression column shows the suppression status of the item and may also be used to switch the status (see Suppression).

    Table pane

    The Table pane shows the tabular data for the item selected in the Properties pane. If there are independent variables (for instance, Temperature) for the selected item and the item is constant, you may change it to a table by entering a value into the independent variables data cell. If a row is shown with an index of *, you may add additional rows of data.

    finite_element_analysis_mateditor_table

    Note

    You also can change the unit by clicking the header of table

    Chart pane

    The Chart pane shows the chart of the selected item in the Properties pane. The chart data is idenital to the table data.

    \ No newline at end of file + Indicates that the collection of property data requires attention (see the Validation and Filtering topics). -->

  • Value column

    The value column is used to change data for a property or indicates that the data for the property is tabular (finite_element_analysis_mateditor_icon_tabular).

    Unit column

    The unit column displays the unit of the data shown in the value column . If the column is editable (see Units Menu), changing the unit will convert the value into the selected unit (there is no net change in the data, so the solution is still valid).

    Suppression column

    The suppression column shows the suppression status of the item and may also be used to switch the status (see Suppression).

    Table pane

    The Table pane shows the tabular data for the item selected in the Properties pane. If there are independent variables (for instance, Temperature) for the selected item and the item is constant, you may change it to a table by entering a value into the independent variables data cell. If a row is shown with an index of *, you may add additional rows of data.

    finite_element_analysis_mateditor_table

    Note

    You also can change the unit by clicking the header of table

    Chart pane

    The Chart pane shows the chart of the selected item in the Properties pane. The chart data is idenital to the table data.

    \ No newline at end of file diff --git a/mateditor/mat_hyperelasticity_curvefit/index.html b/mateditor/mat_hyperelasticity_curvefit/index.html index ea9e515..cd65028 100755 --- a/mateditor/mat_hyperelasticity_curvefit/index.html +++ b/mateditor/mat_hyperelasticity_curvefit/index.html @@ -1 +1 @@ - Curve fitting - WelSim Documentation

    Curve Fitting

    Calculate material constants from test data

    This section introduces how to calculate material coefficients for the selected hyperelastic models according to the given uniaxial, biaxial, shear, and volumetric test data. Enginering strain and stress pair is used for input data.

    1. Add Uniaxial Test Data, Biaxial Test Data, or Shear Test Data material property, and edit the strain-stress data. You also can import the data from a plain text or Excel file. Set the temperature value if it is available. Check the data points by clicking the row of temperature.
      finite_element_analysis_mateditor_hyperelastic_testdata

    2. Add one of hyperelastic material properties from the toolbox, the supported hyperelastic models include Neo-Hookean, Mooney-Rivlin, Arruda-Boyce, Blatz-Ko, Gent, Ogden, Polynomial, and Yeoh. An example of Mooney-Rivlin 9 is given here.
      finite_element_analysis_mateditor_hyperelastic_mooneyrivlin9_properties

    3. Add Curve Fitting sub-property from the RMB context menu.
      finite_element_analysis_mateditor_mooneyrivlin9_add_curvefit

    4. Solve the curve fit from the RMB context menu.
      finite_element_analysis_mateditor_mooneyrivlin9_solve_curvefit

    5. If the solve succeeds. The calculated parameters will be shown in the table.
      finite_element_analysis_mateditor_mooneyrivlin9_curvefit_solved

    6. Copy the solved values to the properties from RMB context menu. You also can review the calculated curves in the chart.
      finite_element_analysis_mateditor_mooneyrivlin9_curves

    Note

    1. The test data should cover the entire strain range in the following simulation.
    2. It is recommended to input all uniaxial, biaxial, and shear test data if those data are available from the experiments.
    \ No newline at end of file + Curve fitting - WelSim Documentation

    Curve Fitting

    Calculate material constants from test data

    This section introduces how to calculate material coefficients for the selected hyperelastic models according to the given uniaxial, biaxial, shear, and volumetric test data. Enginering strain and stress pair is used for input data.

    1. Add Uniaxial Test Data, Biaxial Test Data, or Shear Test Data material property, and edit the strain-stress data. You also can import the data from a plain text or Excel file. Set the temperature value if it is available. Check the data points by clicking the row of temperature.
      finite_element_analysis_mateditor_hyperelastic_testdata

    2. Add one of hyperelastic material properties from the toolbox, the supported hyperelastic models include Neo-Hookean, Mooney-Rivlin, Arruda-Boyce, Blatz-Ko, Gent, Ogden, Polynomial, and Yeoh. An example of Mooney-Rivlin 9 is given here.
      finite_element_analysis_mateditor_hyperelastic_mooneyrivlin9_properties

    3. Add Curve Fitting sub-property from the RMB context menu.
      finite_element_analysis_mateditor_mooneyrivlin9_add_curvefit

    4. Solve the curve fit from the RMB context menu.
      finite_element_analysis_mateditor_mooneyrivlin9_solve_curvefit

    5. If the solve succeeds. The calculated parameters will be shown in the table.
      finite_element_analysis_mateditor_mooneyrivlin9_curvefit_solved

    6. Copy the solved values to the properties from RMB context menu. You also can review the calculated curves in the chart.
      finite_element_analysis_mateditor_mooneyrivlin9_curves

    Note

    1. The test data should cover the entire strain range in the following simulation.
    2. It is recommended to input all uniaxial, biaxial, and shear test data if those data are available from the experiments.
    \ No newline at end of file diff --git a/mateditor/mat_io/index.html b/mateditor/mat_io/index.html index 4f4bce7..4442c80 100644 --- a/mateditor/mat_io/index.html +++ b/mateditor/mat_io/index.html @@ -1 +1 @@ - Mutually exclusive properties 1 - WelSim Documentation

    Mutually exclusive properties 1

    Some properties are mutually exclusive of each other and require that only one property in the mutually exclusive set be unsuppressed. The addition or removing of the suppression for one of these properties automatically suppresses the other mutually exclusive properties.

    For example, defining Isotropic Elasticity and Orthotropic Elasticity for the same material represents redundant elasticity behavior. Only one behavior can be active for the material. When such a conflict occurs, the property defined last is used and the previously defined, conflicting property is automatically suppressed.

    The properties that are mutually exclusive are grouped in the following table.

    Group Material Property
    Elastic properties Isotropic Elasticity, Orthotropic Elasticity, Anisotropic Elasticity, Mooney-Rivlin, Neo-Hookean, Polynomial, Yeoh, Ogden, Arruda-Boyce, Gent, Blatz-Ko, Ogden Foam, Extended Tube, Mullins Effect
    Plastic properties Bilinear Isotropic Hardening, Multilinear Isotropic Hardening, Bilinear Kinematic Hardening, Multilinear Kinematic Hardening
    Thermal conductivity properties Thermal Conductivity Isotropic, Thermal Conductivity Orthotropic
    Resistivity properties Isotropic Resistivity, Orthotropic Resistivity
    Electric permittivity properties Isotropic Relative Permittivity, Orthotropic Relative Permittivity
    Dielectric loss properties Isotropic Dielectric Loss Tangent, Orthotropic Dielectric Loss Tangent
    Magnetic permeability properties Isotropic Relative Permeability, Orthotropic Relative Permeability
    Magnetic loss properties Isotropic Relative Imaginary Permeability, Isotropic Magnetic Loss Tangent, Orthotropic Magnetic Loss Tangent
    \ No newline at end of file + Mutually exclusive properties 1 - WelSim Documentation

    Mutually exclusive properties 1

    Some properties are mutually exclusive of each other and require that only one property in the mutually exclusive set be unsuppressed. The addition or removing of the suppression for one of these properties automatically suppresses the other mutually exclusive properties.

    For example, defining Isotropic Elasticity and Orthotropic Elasticity for the same material represents redundant elasticity behavior. Only one behavior can be active for the material. When such a conflict occurs, the property defined last is used and the previously defined, conflicting property is automatically suppressed.

    The properties that are mutually exclusive are grouped in the following table.

    Group Material Property
    Elastic properties Isotropic Elasticity, Orthotropic Elasticity, Anisotropic Elasticity, Mooney-Rivlin, Neo-Hookean, Polynomial, Yeoh, Ogden, Arruda-Boyce, Gent, Blatz-Ko, Ogden Foam, Extended Tube, Mullins Effect
    Plastic properties Bilinear Isotropic Hardening, Multilinear Isotropic Hardening, Bilinear Kinematic Hardening, Multilinear Kinematic Hardening
    Thermal conductivity properties Thermal Conductivity Isotropic, Thermal Conductivity Orthotropic
    Resistivity properties Isotropic Resistivity, Orthotropic Resistivity
    Electric permittivity properties Isotropic Relative Permittivity, Orthotropic Relative Permittivity
    Dielectric loss properties Isotropic Dielectric Loss Tangent, Orthotropic Dielectric Loss Tangent
    Magnetic permeability properties Isotropic Relative Permeability, Orthotropic Relative Permeability
    Magnetic loss properties Isotropic Relative Imaginary Permeability, Isotropic Magnetic Loss Tangent, Orthotropic Magnetic Loss Tangent
    \ No newline at end of file diff --git a/mateditor/mat_io_openradioss/index.html b/mateditor/mat_io_openradioss/index.html index d2bfd18..cd4bd28 100644 --- a/mateditor/mat_io_openradioss/index.html +++ b/mateditor/mat_io_openradioss/index.html @@ -1 +1 @@ - OpenRadioss format - WelSim Documentation

    OpenRadioss format

    The format of exported material scripts is based on the OpenRadioss version 2022, more details please refer to the OpenRadioss user reference manual.

    The import of OpenRadioss scripts is not supported yet in MatEditor/WELSIM.

    Supported OpenRadioss units

    At present, MatEditor supports eight types of unit systems commonly used in engineering simulation, which are as follows.

    • Metric kg-m-s
    • Metric g-cm-s
    • Metrickg-mm-s
    • Metric tonne-mm-s
    • Metric decatonne-mm-s
    • Metric kg-um-s
    • US Customary lbm-ft-s
    • US Customary lbm-in-s
    • Metric g-cm-us

    Supported OpenRadioss materials

    Basic

    • Density
    • Linear Elasticity

    Hyperelasticity and Viscoelasticity

    • LAW34 — Boltzmann
    • LAW35 — Maxwell-Kelvin-Voigt
    • LAW40 — Maxwell-Kelvin
    • LAW42 — Odgen ½/3
    • LAW92 — Arruda-Boyce
    • LAW94 — Yeoh ½/3
    • LAW100 — Polynomial, Neo-Hookean, Mooney-Rivlin2

    Plasticity

    • LAW2 — Johnson-Cook
    • PLAS_ZERIL — Zerilli-Armstrng
    • LAW32 — Hill
    • LAW36 — Rate-Dependent Multilinear Hardening
    • LAW44 — Cowper-Symonds
    • LAW93 — Orthotropic Hill
    • LAW48 — Zhao
    • LAW49 — Steinberg-Guinan
    • LAW52 — Gurson
    • LAW57 — Barlet3
    • LAW78 — Yoshida-Uemori
    • LAW79 — Johnson-Holmquist
    • LAW84 — Swift-Voce
    • LAW103 — Hensel-Spittel
    • LAW110 — Vegter

    Failure Models

    • ALTER — Glass Failure
    • BIQUD — BiQuadratic
    • COCKCROFT — Cockcroft
    • CONNECT-Connect
    • EMC — ExtendedMohr-Coulomb
    • ENERGY-Energy
    • FABRIC — Fabric
    • FLD — Forming Limit Diagram
    • GURSON — Gurson
    • HASHIN — Hashin
    • HC_DSSE — Ladeveze Delamination
    • JOHNSON-Johnson-Cook
    • MULLINS_OR — Mullins Effect
    • NXT — NXT
    • ORTHBIQUAD — Orthotropic Biquad
    • ORTHSTRAIN — Orthotropic Strain
    • PUCK — Puck
    • TBUTCHER — Tuler-Butcher
    • TENSSTRAIN — Tensile Strain
    • WILKINS — Wilkins
    • WIERZBICKI — Wierzbicki

    Equation of State (EOS)

    • Compaction EOS
    • Gruneisen EOS
    • Ideal Gas EOS
    • Linear EOS
    • LSZK EOS
    • Murnaghan EOS
    • NASG EOS
    • Nobel-Abel EOS
    • Osborne EOS
    • Polynomial EOS
    • Puff EOS
    • Stiff-Gas EOS

    Fluids

    • LAW06 - Kinematic Viscosity
    • ALE - ALE

    More materials will be added upon user request.


    \ No newline at end of file + OpenRadioss format - WelSim Documentation

    OpenRadioss format

    The format of exported material scripts is based on the OpenRadioss version 2022, more details please refer to the OpenRadioss user reference manual.

    The import of OpenRadioss scripts is not supported yet in MatEditor/WELSIM.

    Supported OpenRadioss units

    At present, MatEditor supports eight types of unit systems commonly used in engineering simulation, which are as follows.

    • Metric kg-m-s
    • Metric g-cm-s
    • Metrickg-mm-s
    • Metric tonne-mm-s
    • Metric decatonne-mm-s
    • Metric kg-um-s
    • US Customary lbm-ft-s
    • US Customary lbm-in-s
    • Metric g-cm-us

    Supported OpenRadioss materials

    Basic

    • Density
    • Linear Elasticity

    Hyperelasticity and Viscoelasticity

    • LAW34 — Boltzmann
    • LAW35 — Maxwell-Kelvin-Voigt
    • LAW40 — Maxwell-Kelvin
    • LAW42 — Odgen ½/3
    • LAW92 — Arruda-Boyce
    • LAW94 — Yeoh ½/3
    • LAW100 — Polynomial, Neo-Hookean, Mooney-Rivlin2

    Plasticity

    • LAW2 — Johnson-Cook
    • PLAS_ZERIL — Zerilli-Armstrng
    • LAW32 — Hill
    • LAW36 — Rate-Dependent Multilinear Hardening
    • LAW44 — Cowper-Symonds
    • LAW93 — Orthotropic Hill
    • LAW48 — Zhao
    • LAW49 — Steinberg-Guinan
    • LAW52 — Gurson
    • LAW57 — Barlet3
    • LAW78 — Yoshida-Uemori
    • LAW79 — Johnson-Holmquist
    • LAW84 — Swift-Voce
    • LAW103 — Hensel-Spittel
    • LAW110 — Vegter

    Failure Models

    • ALTER — Glass Failure
    • BIQUD — BiQuadratic
    • COCKCROFT — Cockcroft
    • CONNECT-Connect
    • EMC — ExtendedMohr-Coulomb
    • ENERGY-Energy
    • FABRIC — Fabric
    • FLD — Forming Limit Diagram
    • GURSON — Gurson
    • HASHIN — Hashin
    • HC_DSSE — Ladeveze Delamination
    • JOHNSON-Johnson-Cook
    • MULLINS_OR — Mullins Effect
    • NXT — NXT
    • ORTHBIQUAD — Orthotropic Biquad
    • ORTHSTRAIN — Orthotropic Strain
    • PUCK — Puck
    • TBUTCHER — Tuler-Butcher
    • TENSSTRAIN — Tensile Strain
    • WILKINS — Wilkins
    • WIERZBICKI — Wierzbicki

    Equation of State (EOS)

    • Compaction EOS
    • Gruneisen EOS
    • Ideal Gas EOS
    • Linear EOS
    • LSZK EOS
    • Murnaghan EOS
    • NASG EOS
    • Nobel-Abel EOS
    • Osborne EOS
    • Polynomial EOS
    • Puff EOS
    • Stiff-Gas EOS

    Fluids

    • LAW06 - Kinematic Viscosity
    • ALE - ALE

    More materials will be added upon user request.


    \ No newline at end of file diff --git a/mateditor/mat_mutually_exclusive/index.html b/mateditor/mat_mutually_exclusive/index.html index ad7d2a6..59a91b5 100755 --- a/mateditor/mat_mutually_exclusive/index.html +++ b/mateditor/mat_mutually_exclusive/index.html @@ -1 +1 @@ - Mutually exclusive properties - WelSim Documentation

    Mutually exclusive properties

    Some properties are mutually exclusive of each other and require that only one property in the mutually exclusive set be unsuppressed. The addition or removing of the suppression for one of these properties automatically suppresses the other mutually exclusive properties.

    For example, defining Isotropic Elasticity and Orthotropic Elasticity for the same material represents redundant elasticity behavior. Only one behavior can be active for the material. When such a conflict occurs, the property defined last is used and the previously defined, conflicting property is automatically suppressed.

    The properties that are mutually exclusive are grouped in the following table.

    Group Material Property
    Elastic properties Isotropic Elasticity, Orthotropic Elasticity, Anisotropic Elasticity, Mooney-Rivlin, Neo-Hookean, Polynomial, Yeoh, Ogden, Arruda-Boyce, Gent, Blatz-Ko, Ogden Foam, Extended Tube, Mullins Effect
    Plastic properties Bilinear Isotropic Hardening, Multilinear Isotropic Hardening, Bilinear Kinematic Hardening, Multilinear Kinematic Hardening
    Thermal conductivity properties Thermal Conductivity Isotropic, Thermal Conductivity Orthotropic
    Resistivity properties Isotropic Resistivity, Orthotropic Resistivity
    Electric permittivity properties Isotropic Relative Permittivity, Orthotropic Relative Permittivity
    Dielectric loss properties Isotropic Dielectric Loss Tangent, Orthotropic Dielectric Loss Tangent
    Magnetic permeability properties Isotropic Relative Permeability, Orthotropic Relative Permeability
    Magnetic loss properties Isotropic Relative Imaginary Permeability, Isotropic Magnetic Loss Tangent, Orthotropic Magnetic Loss Tangent
    \ No newline at end of file + Mutually exclusive properties - WelSim Documentation

    Mutually exclusive properties

    Some properties are mutually exclusive of each other and require that only one property in the mutually exclusive set be unsuppressed. The addition or removing of the suppression for one of these properties automatically suppresses the other mutually exclusive properties.

    For example, defining Isotropic Elasticity and Orthotropic Elasticity for the same material represents redundant elasticity behavior. Only one behavior can be active for the material. When such a conflict occurs, the property defined last is used and the previously defined, conflicting property is automatically suppressed.

    The properties that are mutually exclusive are grouped in the following table.

    Group Material Property
    Elastic properties Isotropic Elasticity, Orthotropic Elasticity, Anisotropic Elasticity, Mooney-Rivlin, Neo-Hookean, Polynomial, Yeoh, Ogden, Arruda-Boyce, Gent, Blatz-Ko, Ogden Foam, Extended Tube, Mullins Effect
    Plastic properties Bilinear Isotropic Hardening, Multilinear Isotropic Hardening, Bilinear Kinematic Hardening, Multilinear Kinematic Hardening
    Thermal conductivity properties Thermal Conductivity Isotropic, Thermal Conductivity Orthotropic
    Resistivity properties Isotropic Resistivity, Orthotropic Resistivity
    Electric permittivity properties Isotropic Relative Permittivity, Orthotropic Relative Permittivity
    Dielectric loss properties Isotropic Dielectric Loss Tangent, Orthotropic Dielectric Loss Tangent
    Magnetic permeability properties Isotropic Relative Permeability, Orthotropic Relative Permeability
    Magnetic loss properties Isotropic Relative Imaginary Permeability, Isotropic Magnetic Loss Tangent, Orthotropic Magnetic Loss Tangent
    \ No newline at end of file diff --git a/mateditor/mat_overview/index.html b/mateditor/mat_overview/index.html index 1ec17e7..589ef97 100644 --- a/mateditor/mat_overview/index.html +++ b/mateditor/mat_overview/index.html @@ -1,5 +1,5 @@ - Overview - WelSim Documentation

    Overview

    Material Module serves as a database for material properties used in analysis projects. The module not only provides a material library but allow you to create a material using the given properties. The properties view of a Material object is the primary user interface designed to let you create, save, and retrieve material models. The well-defined material object can be saved and used in the subsequent projects.

    finite_element_analysis_material_suppression

    Note

    The WELSIM Material module and MatEditor share the same features. For the completed and latest content, you can refer to the manual of MatEditor.

    Graphical user interface

    The ease-of-use Material Module contains the following graphical user interface components:

    • Toolbox: provdies two options (Library and Build tabs) for you to edit material data.
    • Library outline pane: lists predefined materials for you to quickly add material data.
    • Property outline pane: shows an outline of the contents of the togglable material properties. You can add a property data entry to the material by toggling on the property entry or remove property by toggling off the property entry.
    • Properties view pane: displays all properties that are going to be added to the Material Object. You can tune the property values at this pane.
    • Table pane: allows you to define and review tabular data for material properies.
    • Chart pane: displays the property tabular data in vivid.

    Predefined materials

    WELSIM also provide predefined materials, which covers most of commonly used materials. Users can choose these materials and apply to the successive finite element analysis.

    Category Materials
    General Materials Structural Steel, Stainless Steel, Aluminum Alloy, Concrete, Copper Alloy, Gray Cast Iron, Titanium Alloy
    Nonlinear Materials Aluminum Alloy NL, Concrete NL, Copper Alloy NL, Stainless Steel NL, Structural Steel NL, Titanium Alloy NL
    Hyperelastic Materials Elastomer Mooney-Rivlin, Elastomer Neo-Hookean, Elastomer Ogden, Elastomer Yeoh, Neoprene Rubber
    Thermal Materials Brass, Bronze, Copper, Diamond, Ferrite, Nodular Cast Iron, Solder, Teflon, Tungsten, Wood
    Electromagnetic Materials SS416, Supermendure
    Other Materials Water Liquid, Argon, Ash

    Material properties

    The supported material properties are listed in the table below.

    Category Materials
    Basic Density, Isotropic Thermal Expansion, Isotropic Instantaneous Thermal Expansion, Orthotropic Thermal Expansion, Orthotropic Instantaneous Thermal Expansion, Constant Damping Coefficient
    Linear Elastic Isotropic Elasticity, Orthotropic Elasticity, Viscoelastic
    Hyperelastic Test Data Uniaxial Test Data, Biaxial Test Data, Shear Test Data, Volumetric Test Data, SimpleShear Test Data, Uniaxial Tension Test Data, Uniaxial Compression Test Data
    Hyperelastic Arruda-Boyce, Blatz-Ko, Gent, Mooney-Rivlin 2, Mooney-Rivlin 3, Mooney-Rivlin 5, Mooney-Rivlin 9, Neo-Hookean, Ogden 1st Order, Ogden 2nd Order, Ogden 3rd Order, Polynomial 1st Order, Polynomial 2nd Order, Polynomial 3rd Order, Yeoh 1st Order, Yeoh 2nd Order, Yeoh 3rd Order
    Plasticity Bilinear Isotropic Hardening, Multilinear Isotropic Hardening, Bilinear Kinematic Hardening, Multilinear Kinematic Hardening, Anand Viscoplasticity
    Creep Strain Hardening, Time Hardening, Generalized Exponential, Generalized Graham, Generalized Blackburn, Modified Time Hardening, Modified Strain Hardening, Generalized Garofalo, Exponential Form, Norton, Combined Time Hardening, Rational Polynomial, Generalized Time Hardening
    Visco-elastic Prony Shear Relaxation, Prony Volumetric Relaxation
    Other Mechanical Strain Life Parameters, Compressive Ultimate Strength, Compressive Yield Strength, LaRc0304 Constants, Orthotropic Strain Limits, Orthotropic Stress Limits, Puck Constants, Tensile Ultimate Strength, Tensile Yield Strength, Tsai-Wu Constants, Shape Memory Effect, Drucker-Prager Strength Piecewise, Drucker-Prager Strength Linear, Ideal Gas EOS, Crushable Foam, Nonlinear Elastic Model Damage, Plakin Special Hardening, Tensile Pressure Failure, Crack Softening Failure
    Thermal Enthalpy, Isotropic Thermal Conductivity, Orthotropic Thermal Conductivity, Specific Heat
    Electromagnetics B-H Curve, Isotropic Relative Permeability, Orthotropic Relative Permeability, Isotropic Resistivity, Orthotropic Resistivity

    Working with material data

    Exporting

    You can export the complete material data to an external XML file. The following format is supported for export:

    • XML in WELSIM Material (MatML 3.1) schema.
    • JSON in WELSIM Material schema.
    • OpenRadioss input script
    WelSim/docs

    Overview

    Material Module serves as a database for material properties used in analysis projects. The module not only provides a material library but allow you to create a material using the given properties. The properties view of a Material object is the primary user interface designed to let you create, save, and retrieve material models. The well-defined material object can be saved and used in the subsequent projects.

    finite_element_analysis_material_suppression

    Note

    The WELSIM Material module and MatEditor share the same features. For the completed and latest content, you can refer to the manual of MatEditor.

    Graphical user interface

    The ease-of-use Material Module contains the following graphical user interface components:

    • Toolbox: provdies two options (Library and Build tabs) for you to edit material data.
    • Library outline pane: lists predefined materials for you to quickly add material data.
    • Property outline pane: shows an outline of the contents of the togglable material properties. You can add a property data entry to the material by toggling on the property entry or remove property by toggling off the property entry.
    • Properties view pane: displays all properties that are going to be added to the Material Object. You can tune the property values at this pane.
    • Table pane: allows you to define and review tabular data for material properies.
    • Chart pane: displays the property tabular data in vivid.

    Predefined materials

    WELSIM also provide predefined materials, which covers most of commonly used materials. Users can choose these materials and apply to the successive finite element analysis.

    Category Materials
    General Materials Structural Steel, Stainless Steel, Aluminum Alloy, Concrete, Copper Alloy, Gray Cast Iron, Titanium Alloy
    Nonlinear Materials Aluminum Alloy NL, Concrete NL, Copper Alloy NL, Stainless Steel NL, Structural Steel NL, Titanium Alloy NL
    Hyperelastic Materials Elastomer Mooney-Rivlin, Elastomer Neo-Hookean, Elastomer Ogden, Elastomer Yeoh, Neoprene Rubber
    Thermal Materials Brass, Bronze, Copper, Diamond, Ferrite, Nodular Cast Iron, Solder, Teflon, Tungsten, Wood
    Electromagnetic Materials SS416, Supermendure
    Other Materials Water Liquid, Argon, Ash

    Material properties

    The supported material properties are listed in the table below.

    Category Materials
    Basic Density, Isotropic Thermal Expansion, Isotropic Instantaneous Thermal Expansion, Orthotropic Thermal Expansion, Orthotropic Instantaneous Thermal Expansion, Constant Damping Coefficient
    Linear Elastic Isotropic Elasticity, Orthotropic Elasticity, Viscoelastic
    Hyperelastic Test Data Uniaxial Test Data, Biaxial Test Data, Shear Test Data, Volumetric Test Data, SimpleShear Test Data, Uniaxial Tension Test Data, Uniaxial Compression Test Data
    Hyperelastic Arruda-Boyce, Blatz-Ko, Gent, Mooney-Rivlin 2, Mooney-Rivlin 3, Mooney-Rivlin 5, Mooney-Rivlin 9, Neo-Hookean, Ogden 1st Order, Ogden 2nd Order, Ogden 3rd Order, Polynomial 1st Order, Polynomial 2nd Order, Polynomial 3rd Order, Yeoh 1st Order, Yeoh 2nd Order, Yeoh 3rd Order
    Plasticity Bilinear Isotropic Hardening, Multilinear Isotropic Hardening, Bilinear Kinematic Hardening, Multilinear Kinematic Hardening, Anand Viscoplasticity
    Creep Strain Hardening, Time Hardening, Generalized Exponential, Generalized Graham, Generalized Blackburn, Modified Time Hardening, Modified Strain Hardening, Generalized Garofalo, Exponential Form, Norton, Combined Time Hardening, Rational Polynomial, Generalized Time Hardening
    Visco-elastic Prony Shear Relaxation, Prony Volumetric Relaxation
    Other Mechanical Strain Life Parameters, Compressive Ultimate Strength, Compressive Yield Strength, LaRc0304 Constants, Orthotropic Strain Limits, Orthotropic Stress Limits, Puck Constants, Tensile Ultimate Strength, Tensile Yield Strength, Tsai-Wu Constants, Shape Memory Effect, Drucker-Prager Strength Piecewise, Drucker-Prager Strength Linear, Ideal Gas EOS, Crushable Foam, Nonlinear Elastic Model Damage, Plakin Special Hardening, Tensile Pressure Failure, Crack Softening Failure
    Thermal Enthalpy, Isotropic Thermal Conductivity, Orthotropic Thermal Conductivity, Specific Heat
    Electromagnetics B-H Curve, Isotropic Relative Permeability, Orthotropic Relative Permeability, Isotropic Resistivity, Orthotropic Resistivity

    Working with material data

    Exporting

    You can export the complete material data to an external XML file. The following format is supported for export:

    • XML in WELSIM Material (MatML 3.1) schema.
    • JSON in WELSIM Material schema.
    • OpenRadioss input script
    \ No newline at end of file +* Right-click the **Material Project** and select the **Export Materials** item from the context menu. -->
    \ No newline at end of file diff --git a/mateditor/mat_properties/index.html b/mateditor/mat_properties/index.html index 1d8ff1f..50ad15a 100755 --- a/mateditor/mat_properties/index.html +++ b/mateditor/mat_properties/index.html @@ -1 +1 @@ - Libraries and properties - WelSim Documentation

    Libraries and properties

    Definitions

    We make use of the following terminology for materials:

    Term Definition
    Material An identifier that contains a property or multiple properties
    Property An identifier the singular information (for example, Density)
    Property data An identifier for tabular data (for example, Thermal Conductivity)

    Sample libraries

    MatEditor provides sample material data categorized into several libraries. However, you still need to validate that the data is consistent with the material you are using in your analysis.

    The following materials are included:

    • General Materials: A library of general use materials and consists mostly of metals.
    • General Nonlinear Materials: A library of general use nonlinear materials for performing nonlinear analyses.
    • Hyperelastic Materials: A library of materials containing test data which can be used to represent hyperelastic materails. The data doesn't correspond to any particular material.
    • Thermal Materials: A library of materials containing thermal data.
    • Electromagnetic Materials: A library of materials containing electromagnetic data, specific for use in an electromagnetic analysis.

    Supported properties

    The supported material properties are listed by category here.

    Basics

    • Density
    • Isotropic Thermal Expansion
    • Isotropic Instantaneous Thermal Expansion
    • Orthotropic Thermal Expansion
    • Orthotopic Instantaneous Thermal Expansion
    • Constant Damping Coefficient

    Linear Elastic

    • Isotropic Elasticity
    • Orthotropic Elasticity
    • Viscoelastic

    Hyperelastic Test Data

    • Uniaxial Test Data
    • Biaxial Test Data
    • Shear Test Data
    • Volumetric Test Data
    • Simple Shear Test Data
    • Uniaxial Tension Test Data
    • Uniaxial Compression Test Data

    Hyperelastic

    • Arruda-Boyce
    • Blatz-Ko
    • Gent
    • Mooney-Rivlin 2
    • Mooney-Rivlin 3
    • Mooney-Rivlin 5
    • Mooney-Rivlin 9
    • Neo-Hookean
    • Ogden 1st Order
    • Ogden 2nd Order
    • Ogden 3rd Order
    • Polynomial 1st Order
    • Polynomial 2nd Order
    • Polynomial 3rd Order
    • Yeoh 1st Order
    • Yeoh 2nd Order
    • Yeoh 3rd Order

    Plasticity

    • Bilinear Isotropic Hardening
    • Multilinear Isotropic Hardening
    • Bilinear Kinematic Hardening
    • Multilinear Kinematic Hardening
    • Anand Viscoplasticity

    Creep

    • Strain Hardening
    • Time Hardening
    • Generalized Exponential
    • Generalized Graham
    • Generalized Blackburn
    • Modified Time Hardening
    • Modified Strain Hardening
    • Generalized Garofalo
    • Exponential Form
    • Norton
    • Combined Time Hardening
    • Rational Polynomial
    • Generalized Time Hardening

    Visco-elastic

    • Prony Shear Relaxation
    • Prony Volumetric Relaxation

    Thermal

    • Enthalpy
    • Isotropic Thermal Conductivity
    • Orthotropic Thermal Conductivity
    • Specific Heat

    Electromagnetics

    • B-H Curve
    • Isotropic Relative Permeability
    • Orthotropic Relative Permeability
    • Isotropic Resistivity
    • Orthotropic Resistivity
    • Isotropic Relative Permittivity
    • Orthotropic Relative Permittivity
    • Isotropic Dielectric Loss Tangent
    • Isotropic Magnetic Loss Tangent
    • Isotropic Relative Imaginary Permeability
    • Orthotropic Dielectric Loss Tangent
    • Orthotropic Magnetic Loss Tangent
    \ No newline at end of file + Libraries and properties - WelSim Documentation

    Libraries and properties

    Definitions

    We make use of the following terminology for materials:

    Term Definition
    Material An identifier that contains a property or multiple properties
    Property An identifier the singular information (for example, Density)
    Property data An identifier for tabular data (for example, Thermal Conductivity)

    Sample libraries

    MatEditor provides sample material data categorized into several libraries. However, you still need to validate that the data is consistent with the material you are using in your analysis.

    The following materials are included:

    • General Materials: A library of general use materials and consists mostly of metals.
    • General Nonlinear Materials: A library of general use nonlinear materials for performing nonlinear analyses.
    • Hyperelastic Materials: A library of materials containing test data which can be used to represent hyperelastic materails. The data doesn't correspond to any particular material.
    • Thermal Materials: A library of materials containing thermal data.
    • Electromagnetic Materials: A library of materials containing electromagnetic data, specific for use in an electromagnetic analysis.

    Supported properties

    The supported material properties are listed by category here.

    Basics

    • Density
    • Isotropic Thermal Expansion
    • Isotropic Instantaneous Thermal Expansion
    • Orthotropic Thermal Expansion
    • Orthotopic Instantaneous Thermal Expansion
    • Constant Damping Coefficient

    Linear Elastic

    • Isotropic Elasticity
    • Orthotropic Elasticity
    • Viscoelastic

    Hyperelastic Test Data

    • Uniaxial Test Data
    • Biaxial Test Data
    • Shear Test Data
    • Volumetric Test Data
    • Simple Shear Test Data
    • Uniaxial Tension Test Data
    • Uniaxial Compression Test Data

    Hyperelastic

    • Arruda-Boyce
    • Blatz-Ko
    • Gent
    • Mooney-Rivlin 2
    • Mooney-Rivlin 3
    • Mooney-Rivlin 5
    • Mooney-Rivlin 9
    • Neo-Hookean
    • Ogden 1st Order
    • Ogden 2nd Order
    • Ogden 3rd Order
    • Polynomial 1st Order
    • Polynomial 2nd Order
    • Polynomial 3rd Order
    • Yeoh 1st Order
    • Yeoh 2nd Order
    • Yeoh 3rd Order

    Plasticity

    • Bilinear Isotropic Hardening
    • Multilinear Isotropic Hardening
    • Bilinear Kinematic Hardening
    • Multilinear Kinematic Hardening
    • Anand Viscoplasticity

    Creep

    • Strain Hardening
    • Time Hardening
    • Generalized Exponential
    • Generalized Graham
    • Generalized Blackburn
    • Modified Time Hardening
    • Modified Strain Hardening
    • Generalized Garofalo
    • Exponential Form
    • Norton
    • Combined Time Hardening
    • Rational Polynomial
    • Generalized Time Hardening

    Visco-elastic

    • Prony Shear Relaxation
    • Prony Volumetric Relaxation

    Thermal

    • Enthalpy
    • Isotropic Thermal Conductivity
    • Orthotropic Thermal Conductivity
    • Specific Heat

    Electromagnetics

    • B-H Curve
    • Isotropic Relative Permeability
    • Orthotropic Relative Permeability
    • Isotropic Resistivity
    • Orthotropic Resistivity
    • Isotropic Relative Permittivity
    • Orthotropic Relative Permittivity
    • Isotropic Dielectric Loss Tangent
    • Isotropic Magnetic Loss Tangent
    • Isotropic Relative Imaginary Permeability
    • Orthotropic Dielectric Loss Tangent
    • Orthotropic Magnetic Loss Tangent
    \ No newline at end of file diff --git a/mateditor/mat_table_data/index.html b/mateditor/mat_table_data/index.html index 64830fd..3e2e0d1 100755 --- a/mateditor/mat_table_data/index.html +++ b/mateditor/mat_table_data/index.html @@ -1 +1 @@ - Import/Export tabular data - WelSim Documentation

    Import/Export Tabular Data

    Import and export tabular data is supported in MatEditor, CurveFitter and WELSIM, this feature facilitates you to input and output massive tabular data with no need to manually input and output data, specifically test data for the hyperelastic and magnetic core loss materials.

    The import and export buttons are allocated on the top of the Tabular Data Window, as shown in the figure below:
    finite_element_analysis_mateditor_test_data_in_plain_text

    Default file format

    The default file format used in MatEditor/CurveFitter/WELSIM contains a header block that gives the quantity name, unit, and dependency. This header data allows you to define the units from the external file. The latest version supports both plain text and Excel formats. Both formats share a similar schema. The details of each format are discussed below.

    • The comment line starts with ### symbol and will be ignored by the reader.
    • The first row lists the quantity names.
    • The second row shows the units. For the dimensionless quantity, dash symbol - is used.
    • The third row gives the dependency of the quantity, which could be independent, dependent, subindependent, or subdependent.
    • The kernel test data start from the fourth row.

    Note

    The number of columns of import data must match the pre-defined headers.

    The plain text data file looks like below:
    finite_element_analysis_mateditor_test_data_in_plain_text

    An example of Excel file is shown below:
    finite_element_analysis_mateditor_test_data_in_excel

    Format with no header data

    MatEditor/CurveFitter/WELSIM also supports the external data that contains no header information (pure value data). You need to ensure unit consistency when importing such data files. Both plain text and Excel file formats are supported.

    The plain text file with no header dat looks like below:
    finite_element_analysis_mateditor_test_data_in_excel

    Note

    Due to the lack of the header information, the units of the imported data is determined by the current units of the Table. In addition, the pivoting column may not be set if the file does not contain such data. The number of columns must be identicial to that of the pre-defined table quantities.

    Examples

    The examples of the import/export tabular data are available at our GitHub page.

    \ No newline at end of file + Import/Export tabular data - WelSim Documentation

    Import/Export Tabular Data

    Import and export tabular data is supported in MatEditor, CurveFitter and WELSIM, this feature facilitates you to input and output massive tabular data with no need to manually input and output data, specifically test data for the hyperelastic and magnetic core loss materials.

    The import and export buttons are allocated on the top of the Tabular Data Window, as shown in the figure below:
    finite_element_analysis_mateditor_test_data_in_plain_text

    Default file format

    The default file format used in MatEditor/CurveFitter/WELSIM contains a header block that gives the quantity name, unit, and dependency. This header data allows you to define the units from the external file. The latest version supports both plain text and Excel formats. Both formats share a similar schema. The details of each format are discussed below.

    • The comment line starts with ### symbol and will be ignored by the reader.
    • The first row lists the quantity names.
    • The second row shows the units. For the dimensionless quantity, dash symbol - is used.
    • The third row gives the dependency of the quantity, which could be independent, dependent, subindependent, or subdependent.
    • The kernel test data start from the fourth row.

    Note

    The number of columns of import data must match the pre-defined headers.

    The plain text data file looks like below:
    finite_element_analysis_mateditor_test_data_in_plain_text

    An example of Excel file is shown below:
    finite_element_analysis_mateditor_test_data_in_excel

    Format with no header data

    MatEditor/CurveFitter/WELSIM also supports the external data that contains no header information (pure value data). You need to ensure unit consistency when importing such data files. Both plain text and Excel file formats are supported.

    The plain text file with no header dat looks like below:
    finite_element_analysis_mateditor_test_data_in_excel

    Note

    Due to the lack of the header information, the units of the imported data is determined by the current units of the Table. In addition, the pivoting column may not be set if the file does not contain such data. The number of columns must be identicial to that of the pre-defined table quantities.

    Examples

    The examples of the import/export tabular data are available at our GitHub page.

    \ No newline at end of file diff --git a/mateditor/mat_theory/index.html b/mateditor/mat_theory/index.html index 30f1ba3..729cbee 100644 --- a/mateditor/mat_theory/index.html +++ b/mateditor/mat_theory/index.html @@ -1 +1 @@ - Material Theory - WelSim Documentation

    Material Theory

    Some properties are mutually exclusive of each other and require that only one property in the mutually exclusive set be unsuppressed. The addition or removing of the suppression for one of these properties automatically suppresses the other mutually exclusive properties.

    For example, defining Isotropic Elasticity and Orthotropic Elasticity for the same material represents redundant elasticity behavior. Only one behavior can be active for the material. When such a conflict occurs, the property defined last is used and the previously defined, conflicting property is automatically suppressed.

    The properties that are mutually exclusive are grouped in the following table.

    Group Material Property
    Elastic properties Isotropic Elasticity, Orthotropic Elasticity, Anisotropic Elasticity, Mooney-Rivlin, Neo-Hookean, Polynomial, Yeoh, Ogden, Arruda-Boyce, Gent, Blatz-Ko, Ogden Foam, Extended Tube, Mullins Effect
    Plastic properties Bilinear Isotropic Hardening, Multilinear Isotropic Hardening, Bilinear Kinematic Hardening, Multilinear Kinematic Hardening
    Thermal conductivity properties Thermal Conductivity Isotropic, Thermal Conductivity Orthotropic
    Resistivity properties Isotropic Resistivity, Orthotropic Resistivity
    Electric permittivity properties Isotropic Relative Permittivity, Orthotropic Relative Permittivity
    Dielectric loss properties Isotropic Dielectric Loss Tangent, Orthotropic Dielectric Loss Tangent
    Magnetic permeability properties Isotropic Relative Permeability, Orthotropic Relative Permeability
    Magnetic loss properties Isotropic Relative Imaginary Permeability, Isotropic Magnetic Loss Tangent, Orthotropic Magnetic Loss Tangent
    \ No newline at end of file + Material Theory - WelSim Documentation

    Material Theory

    Some properties are mutually exclusive of each other and require that only one property in the mutually exclusive set be unsuppressed. The addition or removing of the suppression for one of these properties automatically suppresses the other mutually exclusive properties.

    For example, defining Isotropic Elasticity and Orthotropic Elasticity for the same material represents redundant elasticity behavior. Only one behavior can be active for the material. When such a conflict occurs, the property defined last is used and the previously defined, conflicting property is automatically suppressed.

    The properties that are mutually exclusive are grouped in the following table.

    Group Material Property
    Elastic properties Isotropic Elasticity, Orthotropic Elasticity, Anisotropic Elasticity, Mooney-Rivlin, Neo-Hookean, Polynomial, Yeoh, Ogden, Arruda-Boyce, Gent, Blatz-Ko, Ogden Foam, Extended Tube, Mullins Effect
    Plastic properties Bilinear Isotropic Hardening, Multilinear Isotropic Hardening, Bilinear Kinematic Hardening, Multilinear Kinematic Hardening
    Thermal conductivity properties Thermal Conductivity Isotropic, Thermal Conductivity Orthotropic
    Resistivity properties Isotropic Resistivity, Orthotropic Resistivity
    Electric permittivity properties Isotropic Relative Permittivity, Orthotropic Relative Permittivity
    Dielectric loss properties Isotropic Dielectric Loss Tangent, Orthotropic Dielectric Loss Tangent
    Magnetic permeability properties Isotropic Relative Permeability, Orthotropic Relative Permeability
    Magnetic loss properties Isotropic Relative Imaginary Permeability, Isotropic Magnetic Loss Tangent, Orthotropic Magnetic Loss Tangent
    \ No newline at end of file diff --git a/mateditor/mat_theory_eos/index.html b/mateditor/mat_theory_eos/index.html index e531332..fea81f6 100644 --- a/mateditor/mat_theory_eos/index.html +++ b/mateditor/mat_theory_eos/index.html @@ -1 +1 @@ - Equations of state (EOS) - WelSim Documentation

    Equations of State (EOS)

    MatEditor allows you to define the EOS material properties. The supported properties are listed below.

    • Compaction
    • Gruneisen
    • Ideal Gas
    • Linear
    • LSZK (Landau-Stanyukovich-Zeldovich-Kompaneets)
    • Murnaghan
    • NASG (Noble-Abel Stiffened Gas)
    • Noble-Abel
    • Osborne
    • Polynomial
    • Puff
    • Stiff Gas
    • Tillotson

    Compaction EOS

    Plastic compaction is along path defined by equation:

    \[ p=C_0 + C_1 \mu +C_2 \mu^2 + C_3 \mu^3 \]

    where \(P\) is the hydrodynamic pressure in material. \(\mu\) is the volumetric strain that can be obtained by \(\mu=\dfrac{\rho}{\rho_0}-1\).

    Unloading bulk modulus \(B\) is the bulk modules for the unloading process.

    Pressure Shift \(P_{sh}\) is used to model the relative pressure formulation.

    Gruneisen EOS

    In the Gruneisen EOS model, the hydrodynamic pressure is described by the following equations:

    For the compressed material, \(\mu\)>0

    \[ p = \dfrac{\rho_0C^2\mu[1+(1-\dfrac{\gamma_0}{2})\mu-\dfrac{\alpha}{2}\mu^2]}{[1-(S_1-1)\mu-S_2\dfrac{\mu^2}{\mu+1}-S_3\dfrac{\mu^3}{(\mu+1)^2}]^2} + (\gamma_0+\alpha\mu)E \]

    For the expanding material, \(\mu\)<0 $$ p = \rho_0C^2\mu + (\gamma_0+\alpha\mu)E $$

    where the \(\mu=\dfrac{\rho}{\rho_0}-1\).

    Ideal Gas EOS

    The pressure in the Ideal Gas model can be represented by the function:

    \[ p = (\gamma-1)(1+\mu)E \]

    where unitless parameter \(\gamma\) is determined by the heat capacity \(C_v\) and \(C_p\), \(\gamma=\dfrac{C_p}{C_v}\). The initial heat capacity \(C_v\) is calculated from the initial conditions:

    \[ C_v=\dfrac{E_0}{\rho_0T_0} \]

    Linear EOS

    The pressure in linear EOS is given by

    \[ p = p_0 + B\mu \]

    where \(p_0\) i initial pressure and \(B\) is the initial bulk modulus. Linear EOS is a simplified form of polynomial EOS:

    \[ p=C_0+C_1\mu + C_2\mu + C_3\mu + (C_4+C_5)E_0 \]

    where, \(C_0=p_0\), \(C_1=B\), \(C_2=C_3 = C_4 = C_5 = 0\).

    Bulk modulus is usually treated as \(B=\rho_0c_0^2\), where \(c_0\) is the initial sound speed.

    LSZK (Landau-Stanyukovich-Zeldovich-Kompaneets) EOS

    This EOS model is the short for the Landau-Stanyukovich-Zeldovich-Kompaneets EOS, used for the detonation modeling. The pressure is given by

    \[ p = (\gamma-1)\rho e + a \rho^b \]

    where \(\rho\) is the mass density, \(e\) is the internal energy density by mass, \(b\) is the material parameter.

    Murnaghan EOS

    This EOS is also known as Tait EOS. The pressure is defined by

    \[ p = \dfrac{K_0}{K_1}[(\dfrac{V}{V_0})^{-K_1}-1] \]

    where \(K_0\), \(K_1\) are material parameters, \(V\) is the volume.

    This model is also expressed in terms of the compressibility \(\mu\):

    \[ p = p_0 + \dfrac{K_0}{K_1}[(1+\mu)^{K_1}-1] \]

    Note

    Murnaghan EOS is independent to the energy.

    NASG (Noble-Abel Stiffened Gas) EOS

    The pressure can be computing by

    \[ p = \dfrac{(\gamma-1)(1+\mu)(E-\rho_0q)}{1-b\rho_0(1+\mu)} - \gamma p_{\infty} \]

    where \(p_{\infty}\) is the stiffness parameter.

    Noble-Abel EOS

    This EOS can apply to dense gases at high pressure, as the volume occupied by the moledules is no longer negligible.

    \[ p = \dfrac{(\gamma-1)(1+\mu)E}{1-b\rho_0(1+\mu)} \]

    where \(\gamma=\dfrac{C_p}{C_v}\)

    Note

    Covolume parameter b is usually in the range between [0.9e-3, 1.1e-3] \(m^3/kg\).

    Osborne EOS

    This EOS is also called quadratic EOS.

    $$ p = \dfrac{A_1\mu+A_2\mu |\mu| + (B_0+B_1\mu+B_2\mu^2)E + (C_0 + C_1\mu)E^2 }{E+D_0} $$ where \(E\) is the internal energy by initial volume.

    Polynomial EOS

    The pressure for the linear polynomial EOS can be calculated by

    \[ p=C_0+C_1\mu + C_2\mu + C_3\mu + (C_4+C_5)E \]

    where \(E\) is the internal energy density by volume.

    Note

    For the expanding status (\(\mu\)<0), the term \(C_2\mu^2\)=0.

    Puff EOS

    This EOS model describes pressure accroding to the compressibility \(\mu\) and sublimation energy density by volume \(E_s\).

    When \(\mu\geq\) 0:

    \[ p = (C_1\mu+C_2\mu^2+C_3\mu^3)(1-\dfrac{\gamma\mu}{2})+\gamma(1+\mu)E \]

    when \(\mu\)<0 and \(E\geq E_s\):

    \[ p = (T_1\mu+T_2\mu^2)(1-\dfrac{\gamma\mu}{2})+\gamma(1+\mu)E \]

    when \(\mu\)<0 and \(E<E_s\):

    \[ p = \eta[H+(\gamma_0-H)\sqrt{\eta}][E-E_s(1-exp(\dfrac{N(\eta-1)}{\eta^2}))] \]

    with \(N=\dfrac{C_1\eta}{\gamma_0E_s}\).

    Stiffened Gas EOS

    This EOS was originally designed to simulate water for underwater explosions.

    The pressure can be calculated by $$ p = (\gamma-1)(1+\mu)E - \gamma p_{\star} $$

    where \(E=\dfrac{E_{int}}{V_0}\), \(\mu=\dfrac{\rho}{\rho_0}-1\). The additional pressure term \(p^{\star}\) is introduced here.

    This EOS can be derived from the Polynomial EOS: $$ p=C_0+C_1\mu + C_2\mu + C_3\mu + (C_4+C_5)E $$ when \(C_0 = -\gamma p^{\star}\), \(C_1=C_2=C3=0\), \(C_4=C_5=\gamma-1\), \(E_0=\dfrac{P_0-C_0}{C_4}\).

    Tillotson EOS

    The pressure is defined by

    $$ p = C_1\mu + C_2\mu^2 +(a+\dfrac{b}{\omega})\eta E $$ with \(\omega=1+\dfrac{E}{E_r}\eta^2\) for the region \(\mu \geq\) 0.

    $$ p = C_1\mu+(a+\dfrac{b}{\omega})\eta E $$ for the region \(\mu<0\), \(\dfrac{V}{V_0}<V_s\), and \(E<E_s\).

    and $$ p = C_1 e^{\beta x} e^{-\alpha x^2}\mu + (a + \dfrac{be^{-\alpha x^2}}{\omega}) \eta E $$

    \ No newline at end of file + Equations of state (EOS) - WelSim Documentation

    Equations of State (EOS)

    MatEditor allows you to define the EOS material properties. The supported properties are listed below.

    • Compaction
    • Gruneisen
    • Ideal Gas
    • Linear
    • LSZK (Landau-Stanyukovich-Zeldovich-Kompaneets)
    • Murnaghan
    • NASG (Noble-Abel Stiffened Gas)
    • Noble-Abel
    • Osborne
    • Polynomial
    • Puff
    • Stiff Gas
    • Tillotson

    Compaction EOS

    Plastic compaction is along path defined by equation:

    \[ p=C_0 + C_1 \mu +C_2 \mu^2 + C_3 \mu^3 \]

    where \(P\) is the hydrodynamic pressure in material. \(\mu\) is the volumetric strain that can be obtained by \(\mu=\dfrac{\rho}{\rho_0}-1\).

    Unloading bulk modulus \(B\) is the bulk modules for the unloading process.

    Pressure Shift \(P_{sh}\) is used to model the relative pressure formulation.

    Gruneisen EOS

    In the Gruneisen EOS model, the hydrodynamic pressure is described by the following equations:

    For the compressed material, \(\mu\)>0

    \[ p = \dfrac{\rho_0C^2\mu[1+(1-\dfrac{\gamma_0}{2})\mu-\dfrac{\alpha}{2}\mu^2]}{[1-(S_1-1)\mu-S_2\dfrac{\mu^2}{\mu+1}-S_3\dfrac{\mu^3}{(\mu+1)^2}]^2} + (\gamma_0+\alpha\mu)E \]

    For the expanding material, \(\mu\)<0 $$ p = \rho_0C^2\mu + (\gamma_0+\alpha\mu)E $$

    where the \(\mu=\dfrac{\rho}{\rho_0}-1\).

    Ideal Gas EOS

    The pressure in the Ideal Gas model can be represented by the function:

    \[ p = (\gamma-1)(1+\mu)E \]

    where unitless parameter \(\gamma\) is determined by the heat capacity \(C_v\) and \(C_p\), \(\gamma=\dfrac{C_p}{C_v}\). The initial heat capacity \(C_v\) is calculated from the initial conditions:

    \[ C_v=\dfrac{E_0}{\rho_0T_0} \]

    Linear EOS

    The pressure in linear EOS is given by

    \[ p = p_0 + B\mu \]

    where \(p_0\) i initial pressure and \(B\) is the initial bulk modulus. Linear EOS is a simplified form of polynomial EOS:

    \[ p=C_0+C_1\mu + C_2\mu + C_3\mu + (C_4+C_5)E_0 \]

    where, \(C_0=p_0\), \(C_1=B\), \(C_2=C_3 = C_4 = C_5 = 0\).

    Bulk modulus is usually treated as \(B=\rho_0c_0^2\), where \(c_0\) is the initial sound speed.

    LSZK (Landau-Stanyukovich-Zeldovich-Kompaneets) EOS

    This EOS model is the short for the Landau-Stanyukovich-Zeldovich-Kompaneets EOS, used for the detonation modeling. The pressure is given by

    \[ p = (\gamma-1)\rho e + a \rho^b \]

    where \(\rho\) is the mass density, \(e\) is the internal energy density by mass, \(b\) is the material parameter.

    Murnaghan EOS

    This EOS is also known as Tait EOS. The pressure is defined by

    \[ p = \dfrac{K_0}{K_1}[(\dfrac{V}{V_0})^{-K_1}-1] \]

    where \(K_0\), \(K_1\) are material parameters, \(V\) is the volume.

    This model is also expressed in terms of the compressibility \(\mu\):

    \[ p = p_0 + \dfrac{K_0}{K_1}[(1+\mu)^{K_1}-1] \]

    Note

    Murnaghan EOS is independent to the energy.

    NASG (Noble-Abel Stiffened Gas) EOS

    The pressure can be computing by

    \[ p = \dfrac{(\gamma-1)(1+\mu)(E-\rho_0q)}{1-b\rho_0(1+\mu)} - \gamma p_{\infty} \]

    where \(p_{\infty}\) is the stiffness parameter.

    Noble-Abel EOS

    This EOS can apply to dense gases at high pressure, as the volume occupied by the moledules is no longer negligible.

    \[ p = \dfrac{(\gamma-1)(1+\mu)E}{1-b\rho_0(1+\mu)} \]

    where \(\gamma=\dfrac{C_p}{C_v}\)

    Note

    Covolume parameter b is usually in the range between [0.9e-3, 1.1e-3] \(m^3/kg\).

    Osborne EOS

    This EOS is also called quadratic EOS.

    $$ p = \dfrac{A_1\mu+A_2\mu |\mu| + (B_0+B_1\mu+B_2\mu^2)E + (C_0 + C_1\mu)E^2 }{E+D_0} $$ where \(E\) is the internal energy by initial volume.

    Polynomial EOS

    The pressure for the linear polynomial EOS can be calculated by

    \[ p=C_0+C_1\mu + C_2\mu + C_3\mu + (C_4+C_5)E \]

    where \(E\) is the internal energy density by volume.

    Note

    For the expanding status (\(\mu\)<0), the term \(C_2\mu^2\)=0.

    Puff EOS

    This EOS model describes pressure accroding to the compressibility \(\mu\) and sublimation energy density by volume \(E_s\).

    When \(\mu\geq\) 0:

    \[ p = (C_1\mu+C_2\mu^2+C_3\mu^3)(1-\dfrac{\gamma\mu}{2})+\gamma(1+\mu)E \]

    when \(\mu\)<0 and \(E\geq E_s\):

    \[ p = (T_1\mu+T_2\mu^2)(1-\dfrac{\gamma\mu}{2})+\gamma(1+\mu)E \]

    when \(\mu\)<0 and \(E<E_s\):

    \[ p = \eta[H+(\gamma_0-H)\sqrt{\eta}][E-E_s(1-exp(\dfrac{N(\eta-1)}{\eta^2}))] \]

    with \(N=\dfrac{C_1\eta}{\gamma_0E_s}\).

    Stiffened Gas EOS

    This EOS was originally designed to simulate water for underwater explosions.

    The pressure can be calculated by $$ p = (\gamma-1)(1+\mu)E - \gamma p_{\star} $$

    where \(E=\dfrac{E_{int}}{V_0}\), \(\mu=\dfrac{\rho}{\rho_0}-1\). The additional pressure term \(p^{\star}\) is introduced here.

    This EOS can be derived from the Polynomial EOS: $$ p=C_0+C_1\mu + C_2\mu + C_3\mu + (C_4+C_5)E $$ when \(C_0 = -\gamma p^{\star}\), \(C_1=C_2=C3=0\), \(C_4=C_5=\gamma-1\), \(E_0=\dfrac{P_0-C_0}{C_4}\).

    Tillotson EOS

    The pressure is defined by

    $$ p = C_1\mu + C_2\mu^2 +(a+\dfrac{b}{\omega})\eta E $$ with \(\omega=1+\dfrac{E}{E_r}\eta^2\) for the region \(\mu \geq\) 0.

    $$ p = C_1\mu+(a+\dfrac{b}{\omega})\eta E $$ for the region \(\mu<0\), \(\dfrac{V}{V_0}<V_s\), and \(E<E_s\).

    and $$ p = C_1 e^{\beta x} e^{-\alpha x^2}\mu + (a + \dfrac{be^{-\alpha x^2}}{\omega}) \eta E $$

    \ No newline at end of file diff --git a/mateditor/mat_theory_failure/index.html b/mateditor/mat_theory_failure/index.html index f2971f1..2cf61de 100644 --- a/mateditor/mat_theory_failure/index.html +++ b/mateditor/mat_theory_failure/index.html @@ -1 +1 @@ - Failure models - WelSim Documentation

    Failure Models

    MatEditor allows you to define the failure material properties. The supported properties are listed below.

    • Glass
    • Bi-Quadratic
    • Cockcroft
    • Connect
    • Extended Mohr-Coulomb
    • Energy
    • Fabric
    • Forming Limit Diagram
    • Hashin
    • Hosford-Coulomb
    • Johnson-Cook
    • Ladeveze delamination
    • Mullins Effect
    • NXT
    • Orthotropic Bi-Quadratic
    • Orthotropic Strain
    • Puck
    • Tuler-Butcher
    • Tensile Strain
    • Wierzbicki
    • Wilkins

    Bi-Quadratic

    The failure strain is described by two parabolic functions that user input.

    Cockcroft

    A nonlinear stress-strain based failure criterion with linear damage accumulation.

    \[ C_0 = \int _0 ^{\bar{\epsilon}_f} max(\sigma_1, 0) \cdot d\bar{\epsilon} \]

    where \(\epsilon_1\) is the first principal tension stress, \(\bar{\epsilon}\) is the equivalent strain.

    Extended Mohr-Coulomb

    The failure criteria is calculated as:

    \[ D = \sum \dfrac{\Delta \bar{\epsilon}_p}{\bar{\epsilon}_{p,fail}} \]

    where effective failure strain is

    \[ \bar{\epsilon}_{p,fail} = b \cdot (1+c)^{\frac{1}{n}} \cdot \{[\dfrac{1}{2}((f_1-f_2)^a + (f_2-f_3)^a + (f_1 - f_3)^a )]^{\frac{1}{a}} + c(2\eta+f_1+f_3) \}^{-\frac{1}{n}} \]

    the coefficient b is computed as

    \[ b = b_0[1+\gamma ln(\dfrac{\dot{\bar{\epsilon}}_p}{\dot{\bar{\epsilon}}_0})] \quad if\, \dot{\bar{\epsilon}}_p > \dot{\bar{\epsilon}}_0 \]

    or

    \[ b = b_0 \quad if\, \dot{\bar{\epsilon}}_p \le \dot{\bar{\epsilon}}_0 \]

    Energy

    The damage is defined as

    \[ D = \dfrac{E-E_1}{E_2 - E_1} \]

    where the energy density is the current internal energy of the element divided by the current element volume.

    Fabric

    The failure and damage is defined independently in each direction (\(i\)=1,2)

    \[ D_i = \dfrac{\epsilon_i - \epsilon_{fi}}{\epsilon_{ri} - \epsilon_{fi}} \]

    where \(\epsilon_i \ge \epsilon_{fi}\).

    Hashin

    This model can be used for the composite materials.

    The damage factor is calculated as

    \[ D = Max(F_1,F_2,F_3, F_4, F_5) \quad for\quad uni-directional\, lamina\, model \]
    \[ D = Max(F_1,F_2,F_3, F_4, F_5, F_6, F_7) \quad for\quad fabric\, lamina\, model \]

    For the uni-directional lamina model:

    Tensile/shear fiber mode:

    \[ F_1 = (\dfrac{\langle\sigma_{11}\rangle}{\sigma_1^t})^2 + (\dfrac{\sigma_{12}^2 + \sigma_{13}^2}{{\sigma_{12}^f}^2}) \]

    Compression fiber mode:

    \[ F_2 = (\dfrac{\langle \sigma_a \rangle}{ \sigma_1^c})^2 \]

    with \(\sigma_{\alpha} = -\sigma_{11}+\langle -\dfrac{\sigma_{22}+\sigma_{33}}{2} \rangle\).

    Crush mode:

    \[ F_3 = (\dfrac{\langle p \rangle}{\sigma_c})^2 \]

    with \(p=-\dfrac{\sigma_{11}+\sigma_{22}+\sigma_{33}}{3}\).

    Failure matrix mode:

    \[ F_4 = (\dfrac{\langle \sigma_{22} \rangle}{\sigma_2^t})^2 + (\dfrac{\sigma_{23}}{S_{23}})^2 + (\dfrac{\sigma_{12}}{S_{12}})^2 \]

    Delamination mode:

    \[ F_5 = S^2_{del}[(\dfrac{\langle \sigma_{33} \rangle}{\sigma^t_2})^2 + (\dfrac{\sigma_{23}}{\tilde{S}_{23}})^2 + (\dfrac{\sigma_{12}}{S_{12}})^2 ] \]

    For the fabirc lamina model:

    Tensile/shear fiber mode

    \[ F_1 = (\dfrac{\langle\sigma_{11}\rangle}{\sigma_1^t})^2 + (\dfrac{\sigma_{12}^2 + \sigma_{13}^2}{{\sigma_{a}^f}^2}) \]
    \[ F_2 = (\dfrac{\langle\sigma_{22}\rangle}{\sigma_2^t})^2 + (\dfrac{\sigma_{12}^2 + \sigma_{23}^2}{{\sigma_{b}^f}^2}) \]

    Compression fiber mode:

    \[ F_3 = (\dfrac{\langle \sigma_a \rangle}{ \sigma_1^c})^2 \]
    \[ F_4 = (\dfrac{\langle \sigma_b \rangle}{ \sigma_2^c})^2 \]

    Crush mode:

    \[ F_5 = (\dfrac{\langle p \rangle}{\sigma_c})^2 \]

    Shear failure matrix mode:

    \[ F_6 = (\dfrac{\sigma_12}{\sigma_12^m})^2 \]

    Matrix failure mode:

    \[ F_7 = S^2_{del}[(\dfrac{\langle \sigma_{33} \rangle}{\sigma^t_3})^2 + (\dfrac{\sigma_{23}}{\tilde{S}_{23}})^2 + (\dfrac{\sigma_{12}}{S_{12}})^2 ] \]

    Hosford-Coulomb

    The failure strain is described y the Hosford-Coulomb function.

    The damage is defined as

    \[ D = \sum \dfrac{\Delta \bar{\epsilon}_p} {\bar{\epsilon}^{pr}_{HC}(\eta) } \]

    where the strain is calcualted as

    \[ \bar{\epsilon}^{pr}_{HC}(\eta, \theta) = b(1+c)^{\frac{1}{n_f}} \{[\dfrac{1}{2}((f_1-f_2)^a + (f_2-f_3)^a + (f_1-f_3)^a)]^{\frac{1}{a}} + c(a\eta + f_1 +f_2) \}^{\frac{1}{n_f}} \]

    Johnson-Cook

    The failure strain is calculated by the constutitive relation:

    \[ \epsilon_f = [D_1+D_2exp(D_3\sigma^*)] [1+D_4 ln(\dot{\epsilon}^*)] (1 + D_5 T^*) \]

    The damage factor is defined as

    \[ D = \sum \dfrac{\Delta \epsilon_p}{\epsilon_f} \]

    Ladeveze Delamination

    This is the Ladeveze failure model for delamination (interlaminar fracture). The damage parameters are defined as

    \[ Y_{d_3} = \dfrac{\partial E_D}{\partial d_3} \vert _{\sigma=cst}=\dfrac{1}{2} \dfrac{\langle\sigma_{33}\rangle^2}{K_3(1-d_3)^2} \quad Mode\,I \]
    \[ Y_{d_2} = \dfrac{\partial E_D}{\partial d_2} \vert _{\sigma=cst}=\dfrac{1}{2} \dfrac{\langle\sigma_{32}\rangle^2}{K_2(1-d_2)^2} \quad Mode\,II \]
    \[ Y_{d_1} = \dfrac{\partial E_D}{\partial d_1} \vert _{\sigma=cst}=\dfrac{1}{2} \dfrac{\langle\sigma_{31}\rangle^2}{K_1(1-d_1)^2} \quad Mode\,III \]

    The damage value can be

    \[ D = \dfrac{k}{a}[1- exp(-a\langle w(Y)-d\rangle)] \]

    Mullins Effect

    This failure model is used with the hyperelastic materials. The stress during the first loading process is equal to the undamaged stress. Upon unloading and reloading the strss is multiplied by a positive softening factor as

    \[ \sigma = \eta dev(\sigma) - pI \]

    where dev(\(\sigma\)) is the deviatoric part of the stress, \(p\) is the hydrostatic pressure. The damage factor \(\eta\) is given as

    \[ \eta = 1 - \dfrac{1}{R} erf(\dfrac{W_{max}-W}{m+\beta W_{max}}) \]

    where \(erf\) is the Gauss error function.

    NXT

    This model describes the forming limit baed on stresses. This failure is used for shell elements only.

    An instability factor is defined as:

    \[ \lambda_f=\dfrac{\sigma/h - (\sigma/h)_{SR}}{(\sigma/h)_{3D}-(\sigma/h)_{SR}} + 1 \]

    The material is defined as free if \(0<\lambda_f<1\), warning if \(1<\lambda_f<2\), failure if \(\lambda_f \ge 2\).

    Orthotropic Bi-Quadratic

    The failure strain is described by two parabolicfunctions calculated using curve fitting from user input failure strains.

    Orthotropic Strain

    A damage factor is the maximum over time and is calculated for each direction and stress state via:

    \[ d_ijl = \dfrac{\epsilon_{ijf\_l}}{\epsilon_{ijl}} \cdot \dfrac{\epsilon_{ijl}-\alpha\cdot\epsilon_{ijd\_l}}{\epsilon_{ijf\_l}-\epsilon_{ijd\_l}} \]

    where the direction is indicated by using the common \(ij\) notation and loading state is either compression (\(l=c\)) or tension (\(l=t\)). The parameter \(\alpha=factor_{el}\cdot factor_{rate}\).

    The element size correction factor is :

    \[ factor_{el} = Fscale_{el} \cdot f_{el} \dfrac{Size_{el}}{El_ref} \]

    where \(f_{el}\) is the element size correction factor function, \(Size_{el}\) is the characteristic element size.

    The strain rate factor is

    \[ factor_{rate} = f_{ijl}(\dfrac{\dot{\epsilon}_{ijl}}{\dot{\epsilon}_0}) \]

    where \(f_ijl\) is strain rate factor function, \(\dot{\epsilon}_{ijl}\) is the current strain rate in direction ij and load case l, and \(\dot\epsilon_0\) is the reference strate rate.

    Generally, the damange for this model is

    \[ D = Max(d_{ijl}) = Max(\dfrac{\epsilon_{ijf\_l}}{\epsilon_{ijl}} \cdot \dfrac{\epsilon_{ijl}-\alpha\cdot\epsilon_{ijd\_l}}{\epsilon_{ijf\_l}-\epsilon_{ijd\_l}}) \]

    Puck

    This failure model can be applied for both solid and shell elements.

    For the fiber fraction failure, the damage parameter \(e_f\) is defined by

    \[ e_f=\dfrac{\sigma_{11}}{\sigma_{1}^t} \quad for\, tensile \]

    or

    \[ e_f=\dfrac{|\sigma_{11}|}{\sigma_{1}^c} \quad for\, compression \]

    For the inter fiber failure: the damage parameter \(e_f\) is

    \[ e_f=\dfrac{1}{\bar{\sigma}_{12}} [ \sqrt{(\dfrac{\bar{\sigma}_{12}}{\sigma_2^t} -p^+_{12})^2\sigma_{22}^2 + \sigma_{12}^2}+p^+_{12}\sigma_{22}] \quad for\, Mode\, A \]

    or

    \[ e_f=[(\dfrac{\sigma_{12}}{2(1+p^-_{22})\bar{\sigma}_{12}})^2 + (\dfrac{\sigma_{22}}{\sigma_2^c})^2](\dfrac{\sigma^c_2}{-\sigma_{22}}) \quad for\, Mode\, C \]

    or

    \[ e_f=\dfrac{1}{\bar{\sigma}_{12}} ( \sqrt{\sigma_{12}^2+(p^-_{12}\sigma_{22})^2}+p^-_{12}\sigma_{22}) \quad for\, Mode\, B \]

    when the damage parameter \(e_f \ge 1.0\), the stresses are decreased by using an exponential function to avoid numerical instabilities.

    The damage is defined by

    \[ D = Max(e_f(tensile),e_f(compression), e_f(ModaA), e_f(ModeB), e_f(ModeC) ) \]

    Tuler-Butcher

    An element fails once the damage is greater than specified critical damage value K. For ductile materials, the cumulative damage parameter is:

    \[ D=\int_0^t{max(0, \sigma-\sigma_r)^{\lambda})dt}>K \]

    where \(\sigma_r\) is initial fracture stress, \(\sigma\) maximum principal stress, \(\lambda\) is material constant, \(t\) is the time when the element cracks, \(D\) is the damage integral, \(K\) is the critical value of the damage integral.

    For brittle materials (shells only), the damage parameter is: $$ \dot{D} = \dfrac{1}{K}(\sigma - \sigma_r)^a $$ $$ \sigma_r=\sigma_0(1-D)^b $$ $$ D=D+\dot{D}\Delta t $$

    Tensile Strain

    This is a strain-based failure model that is compatible with both solid and shell elements. The damage is calculated by:

    \[ D = \dfrac{\epsilon - \epsilon_{t1}}{\epsilon_{t2} - \epsilon_{t1}} \]

    where \(\epsilon\) is either the quivlent strain or maximum principal tensile strain.

    Wierzbicki model

    This model describes the Bao-Xue-Wierzbicki failure model. The damage is defined by

    \[ D=\sum{\dfrac{\Delta\epsilon_{p}}{\bar{\epsilon}_f}} \]

    where the effective failure strain is

    \[ \bar{\epsilon}_f =\{ \bar{\epsilon}_{max}n-[\bar{\epsilon}_{max}n - \bar{\epsilon}_{min}n](1-\bar{\xi}^m)^{\dfrac{1}{m}} \}^{\dfrac{1}{n}} \]

    where \(\bar{\epsilon}_{max} = C_1 e^{-1C_{2}\eta}\), and \(\bar{\epsilon}_{min} = C_{3} e^{-1C_{4}\eta}\).

    For solid element, the parameters \(\bar{\xi}\) and \(\bar{\eta}\) are defined by the two options.

    The option 1 (default) is : $$ \bar{\xi}=\dfrac{\sigma_m}{\sigma_{VM}} \quad \bar{\eta}=\dfrac{27J_3}{2\sigma^3_{VM}} $$

    The option 2 is: $$ \bar{\xi}=\dfrac{\int_0^{\epsilon_p}\dfrac{\sigma_m}{\sigma_{VM}}d\epsilon_p}{\epsilon_p} \quad \bar{\eta}=\dfrac{\int_0^{\epsilon_p} \dfrac{27J_3}{2\sigma^3_{VM}} d\epsilon_p}{\epsilon_p} $$

    For shell element, the parameters \(\bar{\xi}\) and \(\bar{\eta}\) are $$ \bar{\xi}=\dfrac{\sigma_m}{\sigma_{VM}} \quad \bar{\eta}=-\dfrac{27}{2}\bar{\eta}(\bar{\eta}^2-\dfrac{1}{3}) $$

    where \(\sigma_m\) is Hydrostatic stress, \(\sigma_{VM}\) is von Mises stress, and \(J_3\) is the third invariant deviatoric stress.

    Wilkins model

    The cumulative damage is given by:

    \[ D_c = \int W_1 W_2 d \bar{\epsilon_p} \]

    where \(W_1=(\dfrac{1}{1-\dfrac{P}{P_{lim}}})^{\alpha}\), \(W_2=(2-A)^{\beta}\), and hydro-pressure \(P=-\dfrac{1}{3}\sum_{j=1}^{3}\sigma_{jj}\), \(A=max(\dfrac{s_2}{s_1}, \dfrac{s_2}{s_3})\). \(s_1\), \(s_2\), \(s_3\) are the deviatoric stresses, and \(s_1 \ge s_2 \ge s_3\).

    \ No newline at end of file + Failure models - WelSim Documentation

    Failure Models

    MatEditor allows you to define the failure material properties. The supported properties are listed below.

    • Glass
    • Bi-Quadratic
    • Cockcroft
    • Connect
    • Extended Mohr-Coulomb
    • Energy
    • Fabric
    • Forming Limit Diagram
    • Hashin
    • Hosford-Coulomb
    • Johnson-Cook
    • Ladeveze delamination
    • Mullins Effect
    • NXT
    • Orthotropic Bi-Quadratic
    • Orthotropic Strain
    • Puck
    • Tuler-Butcher
    • Tensile Strain
    • Wierzbicki
    • Wilkins

    Bi-Quadratic

    The failure strain is described by two parabolic functions that user input.

    Cockcroft

    A nonlinear stress-strain based failure criterion with linear damage accumulation.

    \[ C_0 = \int _0 ^{\bar{\epsilon}_f} max(\sigma_1, 0) \cdot d\bar{\epsilon} \]

    where \(\epsilon_1\) is the first principal tension stress, \(\bar{\epsilon}\) is the equivalent strain.

    Extended Mohr-Coulomb

    The failure criteria is calculated as:

    \[ D = \sum \dfrac{\Delta \bar{\epsilon}_p}{\bar{\epsilon}_{p,fail}} \]

    where effective failure strain is

    \[ \bar{\epsilon}_{p,fail} = b \cdot (1+c)^{\frac{1}{n}} \cdot \{[\dfrac{1}{2}((f_1-f_2)^a + (f_2-f_3)^a + (f_1 - f_3)^a )]^{\frac{1}{a}} + c(2\eta+f_1+f_3) \}^{-\frac{1}{n}} \]

    the coefficient b is computed as

    \[ b = b_0[1+\gamma ln(\dfrac{\dot{\bar{\epsilon}}_p}{\dot{\bar{\epsilon}}_0})] \quad if\, \dot{\bar{\epsilon}}_p > \dot{\bar{\epsilon}}_0 \]

    or

    \[ b = b_0 \quad if\, \dot{\bar{\epsilon}}_p \le \dot{\bar{\epsilon}}_0 \]

    Energy

    The damage is defined as

    \[ D = \dfrac{E-E_1}{E_2 - E_1} \]

    where the energy density is the current internal energy of the element divided by the current element volume.

    Fabric

    The failure and damage is defined independently in each direction (\(i\)=1,2)

    \[ D_i = \dfrac{\epsilon_i - \epsilon_{fi}}{\epsilon_{ri} - \epsilon_{fi}} \]

    where \(\epsilon_i \ge \epsilon_{fi}\).

    Hashin

    This model can be used for the composite materials.

    The damage factor is calculated as

    \[ D = Max(F_1,F_2,F_3, F_4, F_5) \quad for\quad uni-directional\, lamina\, model \]
    \[ D = Max(F_1,F_2,F_3, F_4, F_5, F_6, F_7) \quad for\quad fabric\, lamina\, model \]

    For the uni-directional lamina model:

    Tensile/shear fiber mode:

    \[ F_1 = (\dfrac{\langle\sigma_{11}\rangle}{\sigma_1^t})^2 + (\dfrac{\sigma_{12}^2 + \sigma_{13}^2}{{\sigma_{12}^f}^2}) \]

    Compression fiber mode:

    \[ F_2 = (\dfrac{\langle \sigma_a \rangle}{ \sigma_1^c})^2 \]

    with \(\sigma_{\alpha} = -\sigma_{11}+\langle -\dfrac{\sigma_{22}+\sigma_{33}}{2} \rangle\).

    Crush mode:

    \[ F_3 = (\dfrac{\langle p \rangle}{\sigma_c})^2 \]

    with \(p=-\dfrac{\sigma_{11}+\sigma_{22}+\sigma_{33}}{3}\).

    Failure matrix mode:

    \[ F_4 = (\dfrac{\langle \sigma_{22} \rangle}{\sigma_2^t})^2 + (\dfrac{\sigma_{23}}{S_{23}})^2 + (\dfrac{\sigma_{12}}{S_{12}})^2 \]

    Delamination mode:

    \[ F_5 = S^2_{del}[(\dfrac{\langle \sigma_{33} \rangle}{\sigma^t_2})^2 + (\dfrac{\sigma_{23}}{\tilde{S}_{23}})^2 + (\dfrac{\sigma_{12}}{S_{12}})^2 ] \]

    For the fabirc lamina model:

    Tensile/shear fiber mode

    \[ F_1 = (\dfrac{\langle\sigma_{11}\rangle}{\sigma_1^t})^2 + (\dfrac{\sigma_{12}^2 + \sigma_{13}^2}{{\sigma_{a}^f}^2}) \]
    \[ F_2 = (\dfrac{\langle\sigma_{22}\rangle}{\sigma_2^t})^2 + (\dfrac{\sigma_{12}^2 + \sigma_{23}^2}{{\sigma_{b}^f}^2}) \]

    Compression fiber mode:

    \[ F_3 = (\dfrac{\langle \sigma_a \rangle}{ \sigma_1^c})^2 \]
    \[ F_4 = (\dfrac{\langle \sigma_b \rangle}{ \sigma_2^c})^2 \]

    Crush mode:

    \[ F_5 = (\dfrac{\langle p \rangle}{\sigma_c})^2 \]

    Shear failure matrix mode:

    \[ F_6 = (\dfrac{\sigma_12}{\sigma_12^m})^2 \]

    Matrix failure mode:

    \[ F_7 = S^2_{del}[(\dfrac{\langle \sigma_{33} \rangle}{\sigma^t_3})^2 + (\dfrac{\sigma_{23}}{\tilde{S}_{23}})^2 + (\dfrac{\sigma_{12}}{S_{12}})^2 ] \]

    Hosford-Coulomb

    The failure strain is described y the Hosford-Coulomb function.

    The damage is defined as

    \[ D = \sum \dfrac{\Delta \bar{\epsilon}_p} {\bar{\epsilon}^{pr}_{HC}(\eta) } \]

    where the strain is calcualted as

    \[ \bar{\epsilon}^{pr}_{HC}(\eta, \theta) = b(1+c)^{\frac{1}{n_f}} \{[\dfrac{1}{2}((f_1-f_2)^a + (f_2-f_3)^a + (f_1-f_3)^a)]^{\frac{1}{a}} + c(a\eta + f_1 +f_2) \}^{\frac{1}{n_f}} \]

    Johnson-Cook

    The failure strain is calculated by the constutitive relation:

    \[ \epsilon_f = [D_1+D_2exp(D_3\sigma^*)] [1+D_4 ln(\dot{\epsilon}^*)] (1 + D_5 T^*) \]

    The damage factor is defined as

    \[ D = \sum \dfrac{\Delta \epsilon_p}{\epsilon_f} \]

    Ladeveze Delamination

    This is the Ladeveze failure model for delamination (interlaminar fracture). The damage parameters are defined as

    \[ Y_{d_3} = \dfrac{\partial E_D}{\partial d_3} \vert _{\sigma=cst}=\dfrac{1}{2} \dfrac{\langle\sigma_{33}\rangle^2}{K_3(1-d_3)^2} \quad Mode\,I \]
    \[ Y_{d_2} = \dfrac{\partial E_D}{\partial d_2} \vert _{\sigma=cst}=\dfrac{1}{2} \dfrac{\langle\sigma_{32}\rangle^2}{K_2(1-d_2)^2} \quad Mode\,II \]
    \[ Y_{d_1} = \dfrac{\partial E_D}{\partial d_1} \vert _{\sigma=cst}=\dfrac{1}{2} \dfrac{\langle\sigma_{31}\rangle^2}{K_1(1-d_1)^2} \quad Mode\,III \]

    The damage value can be

    \[ D = \dfrac{k}{a}[1- exp(-a\langle w(Y)-d\rangle)] \]

    Mullins Effect

    This failure model is used with the hyperelastic materials. The stress during the first loading process is equal to the undamaged stress. Upon unloading and reloading the strss is multiplied by a positive softening factor as

    \[ \sigma = \eta dev(\sigma) - pI \]

    where dev(\(\sigma\)) is the deviatoric part of the stress, \(p\) is the hydrostatic pressure. The damage factor \(\eta\) is given as

    \[ \eta = 1 - \dfrac{1}{R} erf(\dfrac{W_{max}-W}{m+\beta W_{max}}) \]

    where \(erf\) is the Gauss error function.

    NXT

    This model describes the forming limit baed on stresses. This failure is used for shell elements only.

    An instability factor is defined as:

    \[ \lambda_f=\dfrac{\sigma/h - (\sigma/h)_{SR}}{(\sigma/h)_{3D}-(\sigma/h)_{SR}} + 1 \]

    The material is defined as free if \(0<\lambda_f<1\), warning if \(1<\lambda_f<2\), failure if \(\lambda_f \ge 2\).

    Orthotropic Bi-Quadratic

    The failure strain is described by two parabolicfunctions calculated using curve fitting from user input failure strains.

    Orthotropic Strain

    A damage factor is the maximum over time and is calculated for each direction and stress state via:

    \[ d_ijl = \dfrac{\epsilon_{ijf\_l}}{\epsilon_{ijl}} \cdot \dfrac{\epsilon_{ijl}-\alpha\cdot\epsilon_{ijd\_l}}{\epsilon_{ijf\_l}-\epsilon_{ijd\_l}} \]

    where the direction is indicated by using the common \(ij\) notation and loading state is either compression (\(l=c\)) or tension (\(l=t\)). The parameter \(\alpha=factor_{el}\cdot factor_{rate}\).

    The element size correction factor is :

    \[ factor_{el} = Fscale_{el} \cdot f_{el} \dfrac{Size_{el}}{El_ref} \]

    where \(f_{el}\) is the element size correction factor function, \(Size_{el}\) is the characteristic element size.

    The strain rate factor is

    \[ factor_{rate} = f_{ijl}(\dfrac{\dot{\epsilon}_{ijl}}{\dot{\epsilon}_0}) \]

    where \(f_ijl\) is strain rate factor function, \(\dot{\epsilon}_{ijl}\) is the current strain rate in direction ij and load case l, and \(\dot\epsilon_0\) is the reference strate rate.

    Generally, the damange for this model is

    \[ D = Max(d_{ijl}) = Max(\dfrac{\epsilon_{ijf\_l}}{\epsilon_{ijl}} \cdot \dfrac{\epsilon_{ijl}-\alpha\cdot\epsilon_{ijd\_l}}{\epsilon_{ijf\_l}-\epsilon_{ijd\_l}}) \]

    Puck

    This failure model can be applied for both solid and shell elements.

    For the fiber fraction failure, the damage parameter \(e_f\) is defined by

    \[ e_f=\dfrac{\sigma_{11}}{\sigma_{1}^t} \quad for\, tensile \]

    or

    \[ e_f=\dfrac{|\sigma_{11}|}{\sigma_{1}^c} \quad for\, compression \]

    For the inter fiber failure: the damage parameter \(e_f\) is

    \[ e_f=\dfrac{1}{\bar{\sigma}_{12}} [ \sqrt{(\dfrac{\bar{\sigma}_{12}}{\sigma_2^t} -p^+_{12})^2\sigma_{22}^2 + \sigma_{12}^2}+p^+_{12}\sigma_{22}] \quad for\, Mode\, A \]

    or

    \[ e_f=[(\dfrac{\sigma_{12}}{2(1+p^-_{22})\bar{\sigma}_{12}})^2 + (\dfrac{\sigma_{22}}{\sigma_2^c})^2](\dfrac{\sigma^c_2}{-\sigma_{22}}) \quad for\, Mode\, C \]

    or

    \[ e_f=\dfrac{1}{\bar{\sigma}_{12}} ( \sqrt{\sigma_{12}^2+(p^-_{12}\sigma_{22})^2}+p^-_{12}\sigma_{22}) \quad for\, Mode\, B \]

    when the damage parameter \(e_f \ge 1.0\), the stresses are decreased by using an exponential function to avoid numerical instabilities.

    The damage is defined by

    \[ D = Max(e_f(tensile),e_f(compression), e_f(ModaA), e_f(ModeB), e_f(ModeC) ) \]

    Tuler-Butcher

    An element fails once the damage is greater than specified critical damage value K. For ductile materials, the cumulative damage parameter is:

    \[ D=\int_0^t{max(0, \sigma-\sigma_r)^{\lambda})dt}>K \]

    where \(\sigma_r\) is initial fracture stress, \(\sigma\) maximum principal stress, \(\lambda\) is material constant, \(t\) is the time when the element cracks, \(D\) is the damage integral, \(K\) is the critical value of the damage integral.

    For brittle materials (shells only), the damage parameter is: $$ \dot{D} = \dfrac{1}{K}(\sigma - \sigma_r)^a $$ $$ \sigma_r=\sigma_0(1-D)^b $$ $$ D=D+\dot{D}\Delta t $$

    Tensile Strain

    This is a strain-based failure model that is compatible with both solid and shell elements. The damage is calculated by:

    \[ D = \dfrac{\epsilon - \epsilon_{t1}}{\epsilon_{t2} - \epsilon_{t1}} \]

    where \(\epsilon\) is either the quivlent strain or maximum principal tensile strain.

    Wierzbicki model

    This model describes the Bao-Xue-Wierzbicki failure model. The damage is defined by

    \[ D=\sum{\dfrac{\Delta\epsilon_{p}}{\bar{\epsilon}_f}} \]

    where the effective failure strain is

    \[ \bar{\epsilon}_f =\{ \bar{\epsilon}_{max}n-[\bar{\epsilon}_{max}n - \bar{\epsilon}_{min}n](1-\bar{\xi}^m)^{\dfrac{1}{m}} \}^{\dfrac{1}{n}} \]

    where \(\bar{\epsilon}_{max} = C_1 e^{-1C_{2}\eta}\), and \(\bar{\epsilon}_{min} = C_{3} e^{-1C_{4}\eta}\).

    For solid element, the parameters \(\bar{\xi}\) and \(\bar{\eta}\) are defined by the two options.

    The option 1 (default) is : $$ \bar{\xi}=\dfrac{\sigma_m}{\sigma_{VM}} \quad \bar{\eta}=\dfrac{27J_3}{2\sigma^3_{VM}} $$

    The option 2 is: $$ \bar{\xi}=\dfrac{\int_0^{\epsilon_p}\dfrac{\sigma_m}{\sigma_{VM}}d\epsilon_p}{\epsilon_p} \quad \bar{\eta}=\dfrac{\int_0^{\epsilon_p} \dfrac{27J_3}{2\sigma^3_{VM}} d\epsilon_p}{\epsilon_p} $$

    For shell element, the parameters \(\bar{\xi}\) and \(\bar{\eta}\) are $$ \bar{\xi}=\dfrac{\sigma_m}{\sigma_{VM}} \quad \bar{\eta}=-\dfrac{27}{2}\bar{\eta}(\bar{\eta}^2-\dfrac{1}{3}) $$

    where \(\sigma_m\) is Hydrostatic stress, \(\sigma_{VM}\) is von Mises stress, and \(J_3\) is the third invariant deviatoric stress.

    Wilkins model

    The cumulative damage is given by:

    \[ D_c = \int W_1 W_2 d \bar{\epsilon_p} \]

    where \(W_1=(\dfrac{1}{1-\dfrac{P}{P_{lim}}})^{\alpha}\), \(W_2=(2-A)^{\beta}\), and hydro-pressure \(P=-\dfrac{1}{3}\sum_{j=1}^{3}\sigma_{jj}\), \(A=max(\dfrac{s_2}{s_1}, \dfrac{s_2}{s_3})\). \(s_1\), \(s_2\), \(s_3\) are the deviatoric stresses, and \(s_1 \ge s_2 \ge s_3\).

    \ No newline at end of file diff --git a/mateditor/mat_theory_hyper-elasticity/index.html b/mateditor/mat_theory_hyper-elasticity/index.html index c142aeb..b5e30c0 100644 --- a/mateditor/mat_theory_hyper-elasticity/index.html +++ b/mateditor/mat_theory_hyper-elasticity/index.html @@ -1,4 +1,4 @@ - Hyper-elasticity - WelSim Documentation

    Hyperelasticity and Curve Fitting

    Isotropic hyperelasticity

    The elastic potential energy in hyperelastic material can be obtained from the initial state with no stress activation. Therefore, we have the main invariable terms of the right Cauchy-Green deformation tensor C(\(I_{1}\), \(I_{2}\), \(I_{3}\)), or the main invariable of the deformation tensor excluding the volume changes (\(\bar{I}_{1}\), \(\bar{I}_{2}\), \(\bar{I}_{3}\)). The potential can be expressed as \(\mathbf{W}=\mathbf{W}(I_{1},I_{2},I_{3})\), or \(\mathbf{W}=\mathbf{W}(\bar{I}_{1},\bar{I}_{2},\bar{I}_{3})\).

    The nonlinear constitutive relation of a hyperelastic material is defined by the relation between the second-order Piola-Kirchhoff stress and the Green-Lagrange strain, the total Lagrange method is more efficient in solving such models.

    When the elastic potential energy \(W\) of the hyperelasticity is known, the second Piola-Kirchhoff stress and strain-stress relationship can be calculated as follows

    \[ S=2\dfrac{\partial W}{\partial C} \]
    \[ C=4\dfrac{\partial^{2}W}{\partial C\partial C} \]

    The following are several forms of strain-energy potential (W) provided for the modeling of incompressible or nearly incompressible hyperelastic materials.

    Arruda-Boyce model

    The form of the strain-energy potential for Arruda-Boyce model is

    \[ \begin{array}{ccl} W & = & \mu[\dfrac{1}{2}(\bar{I}_{1}-3)+\dfrac{1}{20\lambda_{m}^{2}}(\bar{I_{1}^{2}}-9)+\dfrac{11}{1050\lambda_{m}^{4}}(\bar{I_{1}^{3}}-27)\\ & + & \dfrac{19}{7000\lambda_{m}^{6}}(\bar{I_{1}^{4}}-81) + \dfrac{519}{673750\lambda_{m}^{8}}(\bar{I_{1}^{5}}-243)]\\ & + & \dfrac{1}{D_1}(\dfrac{J^{2}-1}{2}-\mathrm{ln}J) \end{array} \]

    where \(\mu\) is the initial shear modulus of the material, \(\lambda_{m}\) is limiting network stretch, and \(D_1\) is the material incompressibility parameter.

    The initial shear modulus is

    \[ \mu=\dfrac{\mu_{0}}{1+\dfrac{3}{5\lambda_{m}^{2}}+\dfrac{99}{175\lambda_{m}^{4}}+\dfrac{513}{875\lambda_{m}^{6}}+\dfrac{42039}{67375\lambda_{m}^{8}}} \]

    The initial bulk modulus is

    \[ K=\dfrac{2}{D_1} \]

    As the parameter \(\lambda_L\) goes to infinity, the model is equivalent to neo-Hookean form.

    WelSim/docs

    Hyperelasticity and Curve Fitting

    Isotropic hyperelasticity

    The elastic potential energy in hyperelastic material can be obtained from the initial state with no stress activation. Therefore, we have the main invariable terms of the right Cauchy-Green deformation tensor C(\(I_{1}\), \(I_{2}\), \(I_{3}\)), or the main invariable of the deformation tensor excluding the volume changes (\(\bar{I}_{1}\), \(\bar{I}_{2}\), \(\bar{I}_{3}\)). The potential can be expressed as \(\mathbf{W}=\mathbf{W}(I_{1},I_{2},I_{3})\), or \(\mathbf{W}=\mathbf{W}(\bar{I}_{1},\bar{I}_{2},\bar{I}_{3})\).

    The nonlinear constitutive relation of a hyperelastic material is defined by the relation between the second-order Piola-Kirchhoff stress and the Green-Lagrange strain, the total Lagrange method is more efficient in solving such models.

    When the elastic potential energy \(W\) of the hyperelasticity is known, the second Piola-Kirchhoff stress and strain-stress relationship can be calculated as follows

    \[ S=2\dfrac{\partial W}{\partial C} \]
    \[ C=4\dfrac{\partial^{2}W}{\partial C\partial C} \]

    The following are several forms of strain-energy potential (W) provided for the modeling of incompressible or nearly incompressible hyperelastic materials.

    Arruda-Boyce model

    The form of the strain-energy potential for Arruda-Boyce model is

    \[ \begin{array}{ccl} W & = & \mu[\dfrac{1}{2}(\bar{I}_{1}-3)+\dfrac{1}{20\lambda_{m}^{2}}(\bar{I_{1}^{2}}-9)+\dfrac{11}{1050\lambda_{m}^{4}}(\bar{I_{1}^{3}}-27)\\ & + & \dfrac{19}{7000\lambda_{m}^{6}}(\bar{I_{1}^{4}}-81) + \dfrac{519}{673750\lambda_{m}^{8}}(\bar{I_{1}^{5}}-243)]\\ & + & \dfrac{1}{D_1}(\dfrac{J^{2}-1}{2}-\mathrm{ln}J) \end{array} \]

    where \(\mu\) is the initial shear modulus of the material, \(\lambda_{m}\) is limiting network stretch, and \(D_1\) is the material incompressibility parameter.

    The initial shear modulus is

    \[ \mu=\dfrac{\mu_{0}}{1+\dfrac{3}{5\lambda_{m}^{2}}+\dfrac{99}{175\lambda_{m}^{4}}+\dfrac{513}{875\lambda_{m}^{6}}+\dfrac{42039}{67375\lambda_{m}^{8}}} \]

    The initial bulk modulus is

    \[ K=\dfrac{2}{D_1} \]

    As the parameter \(\lambda_L\) goes to infinity, the model is equivalent to neo-Hookean form.

    Neo-Hookean model

    The Neo-Hookean model is a well-known hyperelastic model with an expanded linear rule (Hooke rule) having isotropy so that it can respond to finite deformation problems. The elastic potential is as follows.

    \[ W=\frac{\mu}{2}(\bar{I}_{1}-3)+\dfrac{1}{D_{1}}(J-1)^{2} \]

    where \(\mu\) is initial shear modulus of materials, \(D_{1}\) is the material constant.

    The initial bulk modulus is given by:

    \[ K=\dfrac{2}{D_1} \]

    Ogden compressible foam model

    The strain-energy potential of the Ogden compressible foam model is based on the principal stretches of left Cauchy strain tensor, which has the form:

    \[ W=\sum_{i=1}^{N}\frac{\mu_{i}}{\alpha_{i}}\left(J^{\alpha_{i}/3}\left(\bar{\lambda}_{1}^{\alpha_{i}}+\bar{\lambda}_{2}^{\alpha_{i}}+\bar{\lambda}_{3}^{\alpha_{i}}\right)-3\right)+\sum_{i=1}^{N}\frac{\mu_{i}}{\alpha_{i}\beta_{i}}\left(J^{-\alpha_{i}\beta_{i}}-1\right) \]

    where N determines the order of the polynomial, \(\mu_i\), \(\alpha_i\) are material constants, \(D_k\) is incompressiblity parameter. The reduced principal strench is defined by:

    \[ \bar{\lambda}_{p}=J^{-\frac{1}{3}}\lambda_p,\; J=(\lambda_{1}\lambda_{2}\lambda_{3})^{\frac{1}{2}} \]

    The initial shear modulus is given by:

    \[ \mu=\dfrac{\sum_{i=1}^{N}\mu_{i}\alpha_{i}}{2} \]

    The initial bulk modulus K is defined by

    \[ K = \sum_{i=1}^{N}\mu_{i}\alpha_{i}\left(\dfrac{1}{3}+\beta_{i}\right) \]

    When parameters N=1, \(\alpha_1\)=-2, \(\mu_1\)=-\(\mu\), and \(\beta\)=0.5, the Ogden compressible model is converted to the Blatz-Ko model.

    Ogden model

    The strain-energy potential of the Ogden compressible foam model is based on the principal stretches of left Cauchy strain tensor, which has the form:

    \[ W=\sum_{i=1}^{N}\frac{\mu_{i}}{\alpha_{i}}\left(\bar{\lambda}_{1}^{\alpha_{i}}+\bar{\lambda}_{2}^{\alpha_{i}}+\bar{\lambda}_{3}^{\alpha_{i}}-3\right)+\sum_{k=1}^{N}\frac{1}{D_{k}}\left(J-1\right)^{2k} \]

    where N determines the order of the polynomial, \(\mu_i\), \(\alpha_i\) are material constants, \(D_k\) is incompressiblity parameter. The reduced principal strench is defined by:

    \[ \bar{\lambda}_{p}=J^{-\frac{1}{3}}\lambda_p,\; J=(\lambda_{1}\lambda_{2}\lambda_{3})^{\frac{1}{2}} \]

    The initial shear modulus is given by:

    \[ \mu=\dfrac{\sum_{i=1}^{N}\mu_{i}\alpha_{i}}{2} \]

    The initial bulk modulus K is defined by

    \[ K = \dfrac{2}{D_1} \]

    When parameters N=1, \(\alpha_1\)=2, the Ogden model is converted to the neo-Hookean model. When parameters N=2, \(\alpha_1\)=2 and \(\alpha_2\)=-2, the Ogden model is converted to the 2-parameter Mooney-Rivlin model.

    Polynomial form

    The polynomial form of strain-energy potential is:

    \[ W=\sum_{i+j=1}^{N}c_{ij}\left(\bar{I}_{1}-3\right)^{i}\left(\bar{I_{2}}-3\right)^{j}+\sum_{k=1}^{N}\frac{1}{D_{k}}\left(J-1\right)^{2k} \]

    where \(N\) determines the order of polynomial, \(c_{ij}\), \(D_k\) are material constants.

    The initial shear modulus is given by:

    \[ \mu=2\left(C_{10}+C_{01}\right) \]

    The initial bulk modulus K is defined by

    \[ K = \dfrac{2}{D_1} \]

    The Polynomial model is converted to following models with specific parameters:

    Parameters of Polynomial model Equivalent model
    N=1, \(C_{01}\)=0 neo-Hookean
    N=1 2-parameter Mooney-Rivlin
    N=2 5-parameter Mooney-Rivlin
    N=3 9-parameter Mooney-Rivlin

    Yeoh model

    The Yeoh model is also called the reduced polynomial form. The strain-energy potential is

    \[ W=\sum_{i=1}^{N}c_{i0}\left(\bar{I}_{1}-3\right)^{i}+\sum_{k=1}^{N}\frac{1}{D_{k}}\left(J-1\right)^{2k} \]

    where N denotes the order of the polynomial, \(C_{i0}\) and \(D_k\) are material constants. When N=1, Yeoh becomes neo-Hookean model.

    The initial shear modulus is defined:

    \[ \mu=2c_{10} \]

    The initial bulk modulus is:

    \[ K=\frac{2}{D_1} \]

    Hyperelasticity Material Curve Fitting

    The mechanical response of hyperelastic materials is determined by the hyperelastic constants in the strain energy density function of a model. To get correct results during a hyperelastic analysis, it is required to precisely assess the material constants of the materials being tested. These constants are usually derived for a material based on the experimental strain-stress data. The test data are generally taken from several modes of deformation over a wide range of strain values. The material constants could be fit using test data in at least as many deformation states as will be experienced in the finite element analysis.

    For hyperelastic materials, simple deformation tests can be used to characterize the material constants. The six different deformation modes are graphically illustrated in the figure below. Combinations of data from multiple tests will enhance the characterization of the hyperelastic behavior of a material.

    finite_element_analysis_mateditor_deformation_modes

    Although these six different deformation states are accepted, we find that upon the addition of hydrostatic stresses, the following modes of deformation are the same:

    1. Uniaxial Tension and Equibiaxial Compression.
    2. Uniaxial Compression and Equibiaxial Tension.
    3. Planar Tension and Planar Compression.

    With these equivalent modes of testing, we now have only three independent deformation modes for which one can get experimental data.

    In the analysis, when the coordinate system is chosen to consistent with the principal directions of deformation, the right Cauchy-Green strain tensor can be written in matrix form by:

    \[ [C] = \begin{bmatrix} \lambda_1^2 & 0 & 0\\ 0 & \lambda_2^2 & 0\\ 0 & 0 & \lambda_3^2 \end{bmatrix} \]

    where \(\lambda_i\)=1+\(\epsilon_i\) is principal stretch ratio in the i-th direction, \(epsilon_i\) is principal value of the engineering strain tensor in the i-th direction. The principal invariants of right Cauchy-Green strain tensor \(C_{ij}\) are:

    \[ I_1 = \lambda_1^2+\lambda_2^2+\lambda_3^2 \]
    \[ I_2 = \lambda_1^2\lambda_2^2 + \lambda_1^2\lambda_3^2 + \lambda_2^2\lambda_3^2 \]
    \[ I_3 = \lambda_1^2\lambda_2^2\lambda_3^2 \]

    For the fully incompressible material, the principal invariant \(I_3\) is one:

    \[ \lambda_1^2\lambda_2^2\lambda_3^2=1 \]

    Uniaxial tension (Equibiaxial compression)

    For the uniaxial tension deformation, the principal stretch ratios in the directions orthogonal to the 'pulling' axis is identical. Thus, the principal stretches during uniaxial tension \(\lambda_i\) are given by:

    • \(\lambda_1=\)stretch in direction being loaded
    • \(\lambda_2=\lambda_3=\)stretch in directions not being loaded

    Due to incompressibility:

    \[ \lambda_2\lambda_3=\lambda^{-1} \]

    and with

    \[ \lambda_2=\lambda_3=\lambda_1^{-1/2} \]

    For uniaxial tension, the first and second strain invariants then become:

    \[ I_1= \lambda_1^2+2\lambda_1^{-1}\\ I_2=2\lambda_1+\lambda_1^{-2} \]

    The corresponding engineering stress can be expressed using principal stretch ratio:

    \[ T_1=2(\lambda_1-\lambda_1^{-2})[\dfrac{\partial W}{\partial I_1}+\lambda_1^{-1}\dfrac{\partial W}{\partial I_2}] \]

    Equibiaxial tension (Uniaxial compression)

    During an equibiaxial tension test, the principal stretch ratios in the directions being loaded are identical. Therefore, for quibiaxial tension, the principal stretches, \(\lambda_i\) are given by:

    • \(\lambda_1=\lambda_2=\)stretch ratio in direction being loaded
    • \(\lambda_3=\)stretch in directions not being loaded

    According to incompressibility, we have

    \[ \lambda_3=\lambda_1^{-2} \]

    For equibiaxial tension, the first and second strain invariants then become:

    \[ I_1=2\lambda_1^2+\lambda_1^{-4} \\ I_2=\lambda_1^4+2\lambda_1^{-2} \]

    The corresponding engineering stress can be expressed using principal stretch ratio:

    \[ T_1=2(\lambda_1-\lambda_1^{-5})[\dfrac{\partial W}{\partial I_1} + \lambda_1^2\dfrac{\partial W}{\partial I_2}] \]

    Pure Shear (Uniaxial tension and uniaxial compression in orthogonal directions)

    For pure shear deformation mode, plane strain is generally assumed so that there is no deformation in the 'wide' direction of the specimen. Including the incompressibility, we have

    \[ \lambda_2=1 \\ \lambda_3 = \lambda_1^{-1} \]

    For pure shear, the first and second strain invariants are:

    \[ I_1=I_2=\lambda_1^2+\lambda_1^{-2}+1 \]

    The corresponding engineering stress can be expressed using principal stretch ratio:

    \[ T_1=2(\lambda_1 - \lambda_1^{-3})[\dfrac{\partial W}{\partial I_1} + \dfrac{\partial W}{\partial I_2}] \]

    Volumetric Deformation

    The volumetric deformation is given as:

    \[ \lambda_1=\lambda_2=\lambda_3=\lambda\\ J=\lambda^3 \]

    As nearly incompressible is assumed, we have:

    \[ \lambda \approx 1 \]

    The pressure P is directly related to the volume ratio J:

    \[ P=\dfrac{\partial W}{\partial J} \]

    Deformations for principal stretches based models

    For the models based on the principal stretches, such Ogden model, the strain-stress relation can be obtained by deriving the strain energy with respect to the stretch.

    \[ \sigma(\lambda)=\dfrac{\partial W(\lambda)}{\partial \lambda} \]

    The corresponding engineering stress is:

    \[ T_1 = \dfrac{\partial W(\lambda_1)}{\partial \lambda_1} \lambda_1^{-1} \]

    Material stability check

    Stability checks are critical for the following analysis. A nonlinear material is stable if the secondary work required for an arbitrary change in the deformation is always positive. We usually use the Drucker stability criterion to determine the stability of the hyperelastic materials. Mathematically, this is:

    \[ d\sigma_{ij}d\epsilon_{ij}>0 \]

    where \(d\sigma\) is the change in the Cauchy stress tensor corresponding to a change in the logarithmic strain.

    The material stability checks can be done at the end of preprocessing but before an analysis actually begins. Checking for the stability of a material can be more conveniently accomplished by checking for the positive definiteness of the material stiffness. The program checks for the loss of stability of six typical stress paths including uniaxial tension and compression, equibiaxial tension and compression, and planar tension and compression. the range of the stretch ratio over which the stability is checked is chosen from 0.1 to 10.

    \ No newline at end of file +$$ -->

    Neo-Hookean model

    The Neo-Hookean model is a well-known hyperelastic model with an expanded linear rule (Hooke rule) having isotropy so that it can respond to finite deformation problems. The elastic potential is as follows.

    \[ W=\frac{\mu}{2}(\bar{I}_{1}-3)+\dfrac{1}{D_{1}}(J-1)^{2} \]

    where \(\mu\) is initial shear modulus of materials, \(D_{1}\) is the material constant.

    The initial bulk modulus is given by:

    \[ K=\dfrac{2}{D_1} \]

    Ogden compressible foam model

    The strain-energy potential of the Ogden compressible foam model is based on the principal stretches of left Cauchy strain tensor, which has the form:

    \[ W=\sum_{i=1}^{N}\frac{\mu_{i}}{\alpha_{i}}\left(J^{\alpha_{i}/3}\left(\bar{\lambda}_{1}^{\alpha_{i}}+\bar{\lambda}_{2}^{\alpha_{i}}+\bar{\lambda}_{3}^{\alpha_{i}}\right)-3\right)+\sum_{i=1}^{N}\frac{\mu_{i}}{\alpha_{i}\beta_{i}}\left(J^{-\alpha_{i}\beta_{i}}-1\right) \]

    where N determines the order of the polynomial, \(\mu_i\), \(\alpha_i\) are material constants, \(D_k\) is incompressiblity parameter. The reduced principal strench is defined by:

    \[ \bar{\lambda}_{p}=J^{-\frac{1}{3}}\lambda_p,\; J=(\lambda_{1}\lambda_{2}\lambda_{3})^{\frac{1}{2}} \]

    The initial shear modulus is given by:

    \[ \mu=\dfrac{\sum_{i=1}^{N}\mu_{i}\alpha_{i}}{2} \]

    The initial bulk modulus K is defined by

    \[ K = \sum_{i=1}^{N}\mu_{i}\alpha_{i}\left(\dfrac{1}{3}+\beta_{i}\right) \]

    When parameters N=1, \(\alpha_1\)=-2, \(\mu_1\)=-\(\mu\), and \(\beta\)=0.5, the Ogden compressible model is converted to the Blatz-Ko model.

    Ogden model

    The strain-energy potential of the Ogden compressible foam model is based on the principal stretches of left Cauchy strain tensor, which has the form:

    \[ W=\sum_{i=1}^{N}\frac{\mu_{i}}{\alpha_{i}}\left(\bar{\lambda}_{1}^{\alpha_{i}}+\bar{\lambda}_{2}^{\alpha_{i}}+\bar{\lambda}_{3}^{\alpha_{i}}-3\right)+\sum_{k=1}^{N}\frac{1}{D_{k}}\left(J-1\right)^{2k} \]

    where N determines the order of the polynomial, \(\mu_i\), \(\alpha_i\) are material constants, \(D_k\) is incompressiblity parameter. The reduced principal strench is defined by:

    \[ \bar{\lambda}_{p}=J^{-\frac{1}{3}}\lambda_p,\; J=(\lambda_{1}\lambda_{2}\lambda_{3})^{\frac{1}{2}} \]

    The initial shear modulus is given by:

    \[ \mu=\dfrac{\sum_{i=1}^{N}\mu_{i}\alpha_{i}}{2} \]

    The initial bulk modulus K is defined by

    \[ K = \dfrac{2}{D_1} \]

    When parameters N=1, \(\alpha_1\)=2, the Ogden model is converted to the neo-Hookean model. When parameters N=2, \(\alpha_1\)=2 and \(\alpha_2\)=-2, the Ogden model is converted to the 2-parameter Mooney-Rivlin model.

    Polynomial form

    The polynomial form of strain-energy potential is:

    \[ W=\sum_{i+j=1}^{N}c_{ij}\left(\bar{I}_{1}-3\right)^{i}\left(\bar{I_{2}}-3\right)^{j}+\sum_{k=1}^{N}\frac{1}{D_{k}}\left(J-1\right)^{2k} \]

    where \(N\) determines the order of polynomial, \(c_{ij}\), \(D_k\) are material constants.

    The initial shear modulus is given by:

    \[ \mu=2\left(C_{10}+C_{01}\right) \]

    The initial bulk modulus K is defined by

    \[ K = \dfrac{2}{D_1} \]

    The Polynomial model is converted to following models with specific parameters:

    Parameters of Polynomial model Equivalent model
    N=1, \(C_{01}\)=0 neo-Hookean
    N=1 2-parameter Mooney-Rivlin
    N=2 5-parameter Mooney-Rivlin
    N=3 9-parameter Mooney-Rivlin

    Yeoh model

    The Yeoh model is also called the reduced polynomial form. The strain-energy potential is

    \[ W=\sum_{i=1}^{N}c_{i0}\left(\bar{I}_{1}-3\right)^{i}+\sum_{k=1}^{N}\frac{1}{D_{k}}\left(J-1\right)^{2k} \]

    where N denotes the order of the polynomial, \(C_{i0}\) and \(D_k\) are material constants. When N=1, Yeoh becomes neo-Hookean model.

    The initial shear modulus is defined:

    \[ \mu=2c_{10} \]

    The initial bulk modulus is:

    \[ K=\frac{2}{D_1} \]

    Hyperelasticity Material Curve Fitting

    The mechanical response of hyperelastic materials is determined by the hyperelastic constants in the strain energy density function of a model. To get correct results during a hyperelastic analysis, it is required to precisely assess the material constants of the materials being tested. These constants are usually derived for a material based on the experimental strain-stress data. The test data are generally taken from several modes of deformation over a wide range of strain values. The material constants could be fit using test data in at least as many deformation states as will be experienced in the finite element analysis.

    For hyperelastic materials, simple deformation tests can be used to characterize the material constants. The six different deformation modes are graphically illustrated in the figure below. Combinations of data from multiple tests will enhance the characterization of the hyperelastic behavior of a material.

    finite_element_analysis_mateditor_deformation_modes

    Although these six different deformation states are accepted, we find that upon the addition of hydrostatic stresses, the following modes of deformation are the same:

    1. Uniaxial Tension and Equibiaxial Compression.
    2. Uniaxial Compression and Equibiaxial Tension.
    3. Planar Tension and Planar Compression.

    With these equivalent modes of testing, we now have only three independent deformation modes for which one can get experimental data.

    In the analysis, when the coordinate system is chosen to consistent with the principal directions of deformation, the right Cauchy-Green strain tensor can be written in matrix form by:

    \[ [C] = \begin{bmatrix} \lambda_1^2 & 0 & 0\\ 0 & \lambda_2^2 & 0\\ 0 & 0 & \lambda_3^2 \end{bmatrix} \]

    where \(\lambda_i\)=1+\(\epsilon_i\) is principal stretch ratio in the i-th direction, \(epsilon_i\) is principal value of the engineering strain tensor in the i-th direction. The principal invariants of right Cauchy-Green strain tensor \(C_{ij}\) are:

    \[ I_1 = \lambda_1^2+\lambda_2^2+\lambda_3^2 \]
    \[ I_2 = \lambda_1^2\lambda_2^2 + \lambda_1^2\lambda_3^2 + \lambda_2^2\lambda_3^2 \]
    \[ I_3 = \lambda_1^2\lambda_2^2\lambda_3^2 \]

    For the fully incompressible material, the principal invariant \(I_3\) is one:

    \[ \lambda_1^2\lambda_2^2\lambda_3^2=1 \]

    Uniaxial tension (Equibiaxial compression)

    For the uniaxial tension deformation, the principal stretch ratios in the directions orthogonal to the 'pulling' axis is identical. Thus, the principal stretches during uniaxial tension \(\lambda_i\) are given by:

    • \(\lambda_1=\)stretch in direction being loaded
    • \(\lambda_2=\lambda_3=\)stretch in directions not being loaded

    Due to incompressibility:

    \[ \lambda_2\lambda_3=\lambda^{-1} \]

    and with

    \[ \lambda_2=\lambda_3=\lambda_1^{-1/2} \]

    For uniaxial tension, the first and second strain invariants then become:

    \[ I_1= \lambda_1^2+2\lambda_1^{-1}\\ I_2=2\lambda_1+\lambda_1^{-2} \]

    The corresponding engineering stress can be expressed using principal stretch ratio:

    \[ T_1=2(\lambda_1-\lambda_1^{-2})[\dfrac{\partial W}{\partial I_1}+\lambda_1^{-1}\dfrac{\partial W}{\partial I_2}] \]

    Equibiaxial tension (Uniaxial compression)

    During an equibiaxial tension test, the principal stretch ratios in the directions being loaded are identical. Therefore, for quibiaxial tension, the principal stretches, \(\lambda_i\) are given by:

    • \(\lambda_1=\lambda_2=\)stretch ratio in direction being loaded
    • \(\lambda_3=\)stretch in directions not being loaded

    According to incompressibility, we have

    \[ \lambda_3=\lambda_1^{-2} \]

    For equibiaxial tension, the first and second strain invariants then become:

    \[ I_1=2\lambda_1^2+\lambda_1^{-4} \\ I_2=\lambda_1^4+2\lambda_1^{-2} \]

    The corresponding engineering stress can be expressed using principal stretch ratio:

    \[ T_1=2(\lambda_1-\lambda_1^{-5})[\dfrac{\partial W}{\partial I_1} + \lambda_1^2\dfrac{\partial W}{\partial I_2}] \]

    Pure Shear (Uniaxial tension and uniaxial compression in orthogonal directions)

    For pure shear deformation mode, plane strain is generally assumed so that there is no deformation in the 'wide' direction of the specimen. Including the incompressibility, we have

    \[ \lambda_2=1 \\ \lambda_3 = \lambda_1^{-1} \]

    For pure shear, the first and second strain invariants are:

    \[ I_1=I_2=\lambda_1^2+\lambda_1^{-2}+1 \]

    The corresponding engineering stress can be expressed using principal stretch ratio:

    \[ T_1=2(\lambda_1 - \lambda_1^{-3})[\dfrac{\partial W}{\partial I_1} + \dfrac{\partial W}{\partial I_2}] \]

    Volumetric Deformation

    The volumetric deformation is given as:

    \[ \lambda_1=\lambda_2=\lambda_3=\lambda\\ J=\lambda^3 \]

    As nearly incompressible is assumed, we have:

    \[ \lambda \approx 1 \]

    The pressure P is directly related to the volume ratio J:

    \[ P=\dfrac{\partial W}{\partial J} \]

    Deformations for principal stretches based models

    For the models based on the principal stretches, such Ogden model, the strain-stress relation can be obtained by deriving the strain energy with respect to the stretch.

    \[ \sigma(\lambda)=\dfrac{\partial W(\lambda)}{\partial \lambda} \]

    The corresponding engineering stress is:

    \[ T_1 = \dfrac{\partial W(\lambda_1)}{\partial \lambda_1} \lambda_1^{-1} \]

    Material stability check

    Stability checks are critical for the following analysis. A nonlinear material is stable if the secondary work required for an arbitrary change in the deformation is always positive. We usually use the Drucker stability criterion to determine the stability of the hyperelastic materials. Mathematically, this is:

    \[ d\sigma_{ij}d\epsilon_{ij}>0 \]

    where \(d\sigma\) is the change in the Cauchy stress tensor corresponding to a change in the logarithmic strain.

    The material stability checks can be done at the end of preprocessing but before an analysis actually begins. Checking for the stability of a material can be more conveniently accomplished by checking for the positive definiteness of the material stiffness. The program checks for the loss of stability of six typical stress paths including uniaxial tension and compression, equibiaxial tension and compression, and planar tension and compression. the range of the stretch ratio over which the stability is checked is chosen from 0.1 to 10.

    \ No newline at end of file diff --git a/mateditor/mat_theory_io/index.html b/mateditor/mat_theory_io/index.html index 3e74252..b651615 100644 --- a/mateditor/mat_theory_io/index.html +++ b/mateditor/mat_theory_io/index.html @@ -1 +1 @@ - Theory IO - WelSim Documentation

    Theory IO

    Some properties are mutually exclusive of each other and require that only one property in the mutually exclusive set be unsuppressed. The addition or removing of the suppression for one of these properties automatically suppresses the other mutually exclusive properties.

    For example, defining Isotropic Elasticity and Orthotropic Elasticity for the same material represents redundant elasticity behavior. Only one behavior can be active for the material. When such a conflict occurs, the property defined last is used and the previously defined, conflicting property is automatically suppressed.

    The properties that are mutually exclusive are grouped in the following table.

    Group Material Property
    Elastic properties Isotropic Elasticity, Orthotropic Elasticity, Anisotropic Elasticity, Mooney-Rivlin, Neo-Hookean, Polynomial, Yeoh, Ogden, Arruda-Boyce, Gent, Blatz-Ko, Ogden Foam, Extended Tube, Mullins Effect
    Plastic properties Bilinear Isotropic Hardening, Multilinear Isotropic Hardening, Bilinear Kinematic Hardening, Multilinear Kinematic Hardening
    Thermal conductivity properties Thermal Conductivity Isotropic, Thermal Conductivity Orthotropic
    Resistivity properties Isotropic Resistivity, Orthotropic Resistivity
    Electric permittivity properties Isotropic Relative Permittivity, Orthotropic Relative Permittivity
    Dielectric loss properties Isotropic Dielectric Loss Tangent, Orthotropic Dielectric Loss Tangent
    Magnetic permeability properties Isotropic Relative Permeability, Orthotropic Relative Permeability
    Magnetic loss properties Isotropic Relative Imaginary Permeability, Isotropic Magnetic Loss Tangent, Orthotropic Magnetic Loss Tangent
    \ No newline at end of file + Theory IO - WelSim Documentation

    Theory IO

    Some properties are mutually exclusive of each other and require that only one property in the mutually exclusive set be unsuppressed. The addition or removing of the suppression for one of these properties automatically suppresses the other mutually exclusive properties.

    For example, defining Isotropic Elasticity and Orthotropic Elasticity for the same material represents redundant elasticity behavior. Only one behavior can be active for the material. When such a conflict occurs, the property defined last is used and the previously defined, conflicting property is automatically suppressed.

    The properties that are mutually exclusive are grouped in the following table.

    Group Material Property
    Elastic properties Isotropic Elasticity, Orthotropic Elasticity, Anisotropic Elasticity, Mooney-Rivlin, Neo-Hookean, Polynomial, Yeoh, Ogden, Arruda-Boyce, Gent, Blatz-Ko, Ogden Foam, Extended Tube, Mullins Effect
    Plastic properties Bilinear Isotropic Hardening, Multilinear Isotropic Hardening, Bilinear Kinematic Hardening, Multilinear Kinematic Hardening
    Thermal conductivity properties Thermal Conductivity Isotropic, Thermal Conductivity Orthotropic
    Resistivity properties Isotropic Resistivity, Orthotropic Resistivity
    Electric permittivity properties Isotropic Relative Permittivity, Orthotropic Relative Permittivity
    Dielectric loss properties Isotropic Dielectric Loss Tangent, Orthotropic Dielectric Loss Tangent
    Magnetic permeability properties Isotropic Relative Permeability, Orthotropic Relative Permeability
    Magnetic loss properties Isotropic Relative Imaginary Permeability, Isotropic Magnetic Loss Tangent, Orthotropic Magnetic Loss Tangent
    \ No newline at end of file diff --git a/mateditor/mat_theory_plasticity/index.html b/mateditor/mat_theory_plasticity/index.html index e971f5a..bc4df1e 100644 --- a/mateditor/mat_theory_plasticity/index.html +++ b/mateditor/mat_theory_plasticity/index.html @@ -1 +1 @@ - Plasticity - WelSim Documentation

    Plasticity

    This section describes the plastic laws in details.

    Johnson-Cook Model

    In this model the material behaves as a linear-elastic material when the quivalent stress is lower than the plastic yield stress. For higher stress values, the material behavior is plastic, and the true stress is calculated as:

    \[ \sigma = (a+b\epsilon_p^n)(1+c\cdot ln\dfrac{\dot{\epsilon}}{\dot{\epsilon}_0})(1-(\dfrac{T-T_r}{T_{melt}-T_r})^m) \]

    where \(\epsilon_p\) is the plastic strain, \(\dot{\epsilon}\) is strain rate, \(T\) is the temperature, \(T_r\) is the ambient temperature, \(T_{melt}\) is the melting temperature. The plastic yield stress \(a\) should always be greater than zero. The plastic hardening exponent \(n\) must be less than or equal to 1.

    Zerilli-Armstrong Model

    The stress during plastic deformation is defined by

    \[ \sigma = C_0 + C_1 exp(-C_3 T + C_4 T ln \dfrac{\dot{\epsilon}}{\dot{\epsilon}_0} ) + C_5 \epsilon_p ^n \]

    where the yield stress \(C_0\) should be positive, plastic hardening exponent \(n\) must be less than 1.

    Hill Model

    The Hill model describes the orthotropic plastic material. The yield stress can be input by parameters or tabular data. The yield stress is defined as:

    \[ \sigma_y = a(\epsilon_0+\epsilon_p)^n \mathrm{max}(\dot{\epsilon}, \dot{\epsilon}_0)^m \]

    The maximum elastic stress is given by

    \[ \sigma_0 = a(\epsilon_0)^n (\dot{\epsilon}_0)^m \]

    The yield stress is compresed to the equivalent stress: $$ \sigma_{eq} = \sqrt{A_1 \sigma_1^2 + A_2 \sigma_2^2 -A_3 \sigma_1 \sigma_2 +A_{12} \sigma_{12}^2} $$

    where parameters \(A_1\), \(A_2\), \(A_3\), and \(A_{12}\) are defined by the Lankford constants.

    Orthotropic Hill Model

    This model describes the orthotropic elastic behavior material with Hill plasticity. The yield stress is compared to an equivalent stress for the orthotropic materials. The equivalent stress for solid elements is defined as:

    \[ \sigma_{eq} = \sqrt{F(\sigma_{22}^2 - \sigma_{33}^2) + G(\sigma_{33}^2 - \sigma_{11}^2) + H(\sigma_{11} - \sigma_{22}^2) + 2L\sigma_{23}^2 + 2M\sigma_{31}^2 + 2N\sigma_{12}^2} \]

    For the shell element, the equivalent yield stress is :

    \[ \sigma_{eq} = \sqrt{(G+H)\sigma_{11}^2 +(F+H) \sigma_{22}^2 - 2H \sigma_{11} \sigma_{22} + 2N\sigma_{12}^2} \]

    Rate-Dependent MultiLinear Hardening

    This model describes an isotropic elasto-plastic material using user-input funcitons for the strain-stress curves at the different strain rates. No yield stress equations are needed because constitutive relations are given by the tabular data.

    Cowper-Symonds Model

    Similar to the Johnson-Cook model, Cowper-Symonds law models isotropic elasto-plastic materials. The yield stress is defined by the stress constants, tabular data, or a combination of both. The pure constant formulation is given here:

    \[ \sigma = (a+b\epsilon_p^n)(1+(\dfrac{\dot{\epsilon}}{c})^{\frac{1}{p}}) \]

    where the yield stress \(a\) should be positive, plastic hardening exponent \(n\) must be less than 1.

    Zhao Model

    Zhao model describes the isotropic plastic strain rate-dependent materials. The strain-stress relation is based on the formula below:

    \[ \sigma = (A + B \epsilon_p^n) + (C-D\epsilon_p^m)\cdot \mathrm{ln}\dfrac{\dot{\epsilon}}{\dot{\epsilon}_0}+E_1 \dot{\epsilon}^k \]

    where the yield stress \(A\) should be positive, plastic hardening exponent \(n\) must be less than 1. If \(\dot{\epsilon} \le \dot{\epsilon}_0\), the term \((C-D\epsilon_p^m)\cdot \mathrm{ln}\dfrac{\dot{\epsilon}}{\dot{\epsilon}_0}=0\), the stress becomes:

    \[ \sigma = (A + B \epsilon_p^n) + E_1 \dot{\epsilon}^k \]

    Steinberg-Guinan Model

    This model defines an isotropic elasto-plastic mateial with thermal softening. When the material approaches melting temperature, the yield strength and shear modulus decrease to zeero. The melting energy is given as

    \[ E_m = E_c + \rho_0 C_p T_m \]

    where \(E_c\) is the cold compression energy.

    When the internal energy \(E\) is less than \(Em\), the shear modulus and the yield stress are :

    \[ G = G_0 [1 + b_1 p V^{\frac{1}{3}} - h(T-T_0)] e^{-\frac{fE}{E-E_m}} \]
    \[ \sigma_y = \sigma_0(1+\beta \epsilon_p^{\mathrm{(max)}})^n [1 + b_2 p V^{\frac{1}{3}} -h(T-T_0)]e^{-\frac{fE}{E-E_m}} \]

    where initial shear modulus \(G_0 = \dfrac{E_0}{2(1+\nu)}\).

    Gurson Model

    The Gurson law can be used to model visco-elasto-plastic strain rate-depdent porous materials. The yield stress can be obtained from the tabular data or the Cowper-Symond's law, the latter formulation is defined as:

    \[ \sigma_M = (A + B \epsilon_M^n) (1 + (\dfrac{\dot{\epsilon}}{c})^{\frac{1}{p}}) \]

    The von Mises critera for the viscoplastic flow are given as

    \[ \Omega_{vm} = \sigma_{qt} - \sigma_{M}\sqrt{1 + q_3 f^{*2} - 2q_1 f^{*2} \mathrm{cosh}(\dfrac{3q_2\sigma_m}{2\sigma_M})} \]

    or

    \[ \Omega_{vm} =\dfrac{\sigma^2_{qe}}{\sigma^2_M} + 2q_1 f^* \mathrm{cosh}(\dfrac{3}{2}q_2 \dfrac{\sigma_m}{\sigma_M}) - (1 + q_3 f^{*2}) \]

    where \(\sigma_M\) is the admissible stress, \(\sigma_m\) is the trace, \(\sigma_eq\) is the von Mises stress, \(q_1\), \(q_2\), and \(q_3\) are the Gurson material constants. The specific coalescence function \(f*\) is defined as

    \[ f^* = f_c + \dfrac{f_u - f_c}{f_F - f_c}(f - f_c) \quad \mathrm{if}\, f \gt f_c \]

    Barlat3 Model

    This is an orthotropic elastoplastic law for modeling anisotropic materials in metal forming process. Thus it is widely applied in the shell elements. The plastic hardening is described by the input parameters or user-defined tabular data. The anisotropic yield criteria F for plane stress is given by:

    \[ F = a |K_1 + K_2|^m + a |K_1 - K_2|^m + c |2K_2|^m - 2\sigma_y^m = 0 \]

    where coefficient \(K_1 = \frac{\sigma_{xx} + h \sigma_{yy}}{2}\) and \(K_2 = \sqrt{(\frac{\sigma_{xx} - h \sigma_{yy}}{2})^2 + p^2 \sigma_{xy}^2}\). The constants \(a\), \(c\), and \(h\) can be obtained from the Lankford constants.

    When the Young's modulus is based on the input parameters. The expression is

    \[ E(t) = E - (E_0-E_{inf})[1-\mathrm{exp}(-C_E \bar{\epsilon}_p)] \]

    where \(E_0\) is the initial Youngs' modulus, \(E_{inf}\) is the asymptotic Young's modulus, and \(\bar{\epsilon}_p\) is the accumulated equivalent plastic strain.

    Yoshida-Uemori Model

    This model can describe the large strain cyclic plasticity of metals. The law is based on the yielding and bounding surfaces.

    For solid elements, von Mises yield criterion is used as:

    \[ f = \dfrac{3}{2} (\mathbf{s} - \mathbf{\alpha}) \colon (\mathbf{s} - \mathbf{\alpha}) - Y^2 \]

    For shell elements, Hill or Barlat3 yield criterion is used. The Hill law is expressed as:

    \[ f_{Hill} = \varphi(\mathbf{\sigma} - \mathbf{\alpha})- Y^2 \]

    where \(Y\) is yield stress, and \(\mathbf{\alpha}\) is total back stress. Let \(\mathbf{A}=\mathbf{\sigma}-\mathbf{\alpha}\), the function \(\varphi\) becomes

    \[ \varphi(A) = A_{xx}^2 - \dfrac{2r_0}{1+r_0}A_{xx}A_{yy} + \dfrac{r_0(1+r_{90})}{r_{90}(1+r_0)}A_{yy}^2 + \frac{r_0 + r_{90}}{r_{90}(1+r_0)}(2r_{45}+1)A_{xy}^2 \]

    The Barlat law is defined as:

    \[ f_{Barlat} = \phi(\sigma - \alpha) - 2Y^M \]

    where \(M\) is the exponent in Barlat's yield criterion.

    Hohnson-Holmquist Model

    This law describes the behaivor of brittle materials, such as glass and ceramics.

    \[ \sigma^* = (1-D)\sigma^*_i + D \sigma_f^* \]

    where the equivalent stress of the intact materials \(\sigma_i^*\) can be expressed as

    \[ \sigma_i^* = a (P^* + T^*)^n (1 + c\mathrm{ln}\dfrac{\dot{\epsilon}}{\dot{\epsilon}_0}) \]

    and the equivalent stress of the failed materials \(\sigma_f^*\) is

    \[ \sigma_f^* = b(P^*)^m (1+c\mathrm{ln}\dfrac{\dot{\epsilon}}{\dot{\epsilon}_0}) \]

    Swift-Voce Model

    Swift-Voce elastoplastic model can combine the Johnson-Cook strain rate hardening and temperature softening. This model can be applied for the orthotropic materials and allows a quadratic non-assoicated flow rule. The yield stress can be calculated using a combination of Swift and Voce models as shown below.

    \(\sigma_y = \{ \alpha [A(\bar{\epsilon}_p + \epsilon_0)^n] + (1+\alpha)[K_0 + Q(1-\mathrm{exp}(-B\bar{\epsilon }_p))]\} (1+C \mathrm{ln}\dfrac{\dot{\bar{\epsilon}}_p}{\dot{\epsilon}_0}) [1 - (\dfrac{T-T_{ref}}{T_{melt} - T_{ref}})^m]\)

    The plastic non-associated flow rule is computed as:

    \[ \Delta \epsilon_p = \Delta \bar{\epsilon}_p \dfrac{\partial g(\sigma)}{\partial \sigma} \]

    where \(g(\sigma) = \sqrt{\sigma^TG\sigma}\).

    Hensel-Spittel Model

    The hensel-Spittel yield stress is a function of strain, strain rate, and temperature. This model is often used in hot forging simulations. The yield stress is defined as :

    \[ \sigma_y = A_0 e^{m_1 T} \epsilon^{m_2} \dot{\epsilon}^{m_3} e^{\frac{m_4}{\epsilon}} (1+\epsilon)^{m_5T} e^{m_7\epsilon} \]

    where true strain \(\epsilon = \epsilon_0 + \bar{\epsilon}_p\), \(\dot{\epsilon}\) is the true strain rate.

    Vegter Model

    The yield function is defined as

    \[ \phi = \bar{\sigma} - \sigma_Y \]

    where \(\bar{\sigma}\) is the interpolated Vegter equivalent stress.

    \ No newline at end of file + Plasticity - WelSim Documentation

    Plasticity

    This section describes the plastic laws in details.

    Johnson-Cook Model

    In this model the material behaves as a linear-elastic material when the quivalent stress is lower than the plastic yield stress. For higher stress values, the material behavior is plastic, and the true stress is calculated as:

    \[ \sigma = (a+b\epsilon_p^n)(1+c\cdot ln\dfrac{\dot{\epsilon}}{\dot{\epsilon}_0})(1-(\dfrac{T-T_r}{T_{melt}-T_r})^m) \]

    where \(\epsilon_p\) is the plastic strain, \(\dot{\epsilon}\) is strain rate, \(T\) is the temperature, \(T_r\) is the ambient temperature, \(T_{melt}\) is the melting temperature. The plastic yield stress \(a\) should always be greater than zero. The plastic hardening exponent \(n\) must be less than or equal to 1.

    Zerilli-Armstrong Model

    The stress during plastic deformation is defined by

    \[ \sigma = C_0 + C_1 exp(-C_3 T + C_4 T ln \dfrac{\dot{\epsilon}}{\dot{\epsilon}_0} ) + C_5 \epsilon_p ^n \]

    where the yield stress \(C_0\) should be positive, plastic hardening exponent \(n\) must be less than 1.

    Hill Model

    The Hill model describes the orthotropic plastic material. The yield stress can be input by parameters or tabular data. The yield stress is defined as:

    \[ \sigma_y = a(\epsilon_0+\epsilon_p)^n \mathrm{max}(\dot{\epsilon}, \dot{\epsilon}_0)^m \]

    The maximum elastic stress is given by

    \[ \sigma_0 = a(\epsilon_0)^n (\dot{\epsilon}_0)^m \]

    The yield stress is compresed to the equivalent stress: $$ \sigma_{eq} = \sqrt{A_1 \sigma_1^2 + A_2 \sigma_2^2 -A_3 \sigma_1 \sigma_2 +A_{12} \sigma_{12}^2} $$

    where parameters \(A_1\), \(A_2\), \(A_3\), and \(A_{12}\) are defined by the Lankford constants.

    Orthotropic Hill Model

    This model describes the orthotropic elastic behavior material with Hill plasticity. The yield stress is compared to an equivalent stress for the orthotropic materials. The equivalent stress for solid elements is defined as:

    \[ \sigma_{eq} = \sqrt{F(\sigma_{22}^2 - \sigma_{33}^2) + G(\sigma_{33}^2 - \sigma_{11}^2) + H(\sigma_{11} - \sigma_{22}^2) + 2L\sigma_{23}^2 + 2M\sigma_{31}^2 + 2N\sigma_{12}^2} \]

    For the shell element, the equivalent yield stress is :

    \[ \sigma_{eq} = \sqrt{(G+H)\sigma_{11}^2 +(F+H) \sigma_{22}^2 - 2H \sigma_{11} \sigma_{22} + 2N\sigma_{12}^2} \]

    Rate-Dependent MultiLinear Hardening

    This model describes an isotropic elasto-plastic material using user-input funcitons for the strain-stress curves at the different strain rates. No yield stress equations are needed because constitutive relations are given by the tabular data.

    Cowper-Symonds Model

    Similar to the Johnson-Cook model, Cowper-Symonds law models isotropic elasto-plastic materials. The yield stress is defined by the stress constants, tabular data, or a combination of both. The pure constant formulation is given here:

    \[ \sigma = (a+b\epsilon_p^n)(1+(\dfrac{\dot{\epsilon}}{c})^{\frac{1}{p}}) \]

    where the yield stress \(a\) should be positive, plastic hardening exponent \(n\) must be less than 1.

    Zhao Model

    Zhao model describes the isotropic plastic strain rate-dependent materials. The strain-stress relation is based on the formula below:

    \[ \sigma = (A + B \epsilon_p^n) + (C-D\epsilon_p^m)\cdot \mathrm{ln}\dfrac{\dot{\epsilon}}{\dot{\epsilon}_0}+E_1 \dot{\epsilon}^k \]

    where the yield stress \(A\) should be positive, plastic hardening exponent \(n\) must be less than 1. If \(\dot{\epsilon} \le \dot{\epsilon}_0\), the term \((C-D\epsilon_p^m)\cdot \mathrm{ln}\dfrac{\dot{\epsilon}}{\dot{\epsilon}_0}=0\), the stress becomes:

    \[ \sigma = (A + B \epsilon_p^n) + E_1 \dot{\epsilon}^k \]

    Steinberg-Guinan Model

    This model defines an isotropic elasto-plastic mateial with thermal softening. When the material approaches melting temperature, the yield strength and shear modulus decrease to zeero. The melting energy is given as

    \[ E_m = E_c + \rho_0 C_p T_m \]

    where \(E_c\) is the cold compression energy.

    When the internal energy \(E\) is less than \(Em\), the shear modulus and the yield stress are :

    \[ G = G_0 [1 + b_1 p V^{\frac{1}{3}} - h(T-T_0)] e^{-\frac{fE}{E-E_m}} \]
    \[ \sigma_y = \sigma_0(1+\beta \epsilon_p^{\mathrm{(max)}})^n [1 + b_2 p V^{\frac{1}{3}} -h(T-T_0)]e^{-\frac{fE}{E-E_m}} \]

    where initial shear modulus \(G_0 = \dfrac{E_0}{2(1+\nu)}\).

    Gurson Model

    The Gurson law can be used to model visco-elasto-plastic strain rate-depdent porous materials. The yield stress can be obtained from the tabular data or the Cowper-Symond's law, the latter formulation is defined as:

    \[ \sigma_M = (A + B \epsilon_M^n) (1 + (\dfrac{\dot{\epsilon}}{c})^{\frac{1}{p}}) \]

    The von Mises critera for the viscoplastic flow are given as

    \[ \Omega_{vm} = \sigma_{qt} - \sigma_{M}\sqrt{1 + q_3 f^{*2} - 2q_1 f^{*2} \mathrm{cosh}(\dfrac{3q_2\sigma_m}{2\sigma_M})} \]

    or

    \[ \Omega_{vm} =\dfrac{\sigma^2_{qe}}{\sigma^2_M} + 2q_1 f^* \mathrm{cosh}(\dfrac{3}{2}q_2 \dfrac{\sigma_m}{\sigma_M}) - (1 + q_3 f^{*2}) \]

    where \(\sigma_M\) is the admissible stress, \(\sigma_m\) is the trace, \(\sigma_eq\) is the von Mises stress, \(q_1\), \(q_2\), and \(q_3\) are the Gurson material constants. The specific coalescence function \(f*\) is defined as

    \[ f^* = f_c + \dfrac{f_u - f_c}{f_F - f_c}(f - f_c) \quad \mathrm{if}\, f \gt f_c \]

    Barlat3 Model

    This is an orthotropic elastoplastic law for modeling anisotropic materials in metal forming process. Thus it is widely applied in the shell elements. The plastic hardening is described by the input parameters or user-defined tabular data. The anisotropic yield criteria F for plane stress is given by:

    \[ F = a |K_1 + K_2|^m + a |K_1 - K_2|^m + c |2K_2|^m - 2\sigma_y^m = 0 \]

    where coefficient \(K_1 = \frac{\sigma_{xx} + h \sigma_{yy}}{2}\) and \(K_2 = \sqrt{(\frac{\sigma_{xx} - h \sigma_{yy}}{2})^2 + p^2 \sigma_{xy}^2}\). The constants \(a\), \(c\), and \(h\) can be obtained from the Lankford constants.

    When the Young's modulus is based on the input parameters. The expression is

    \[ E(t) = E - (E_0-E_{inf})[1-\mathrm{exp}(-C_E \bar{\epsilon}_p)] \]

    where \(E_0\) is the initial Youngs' modulus, \(E_{inf}\) is the asymptotic Young's modulus, and \(\bar{\epsilon}_p\) is the accumulated equivalent plastic strain.

    Yoshida-Uemori Model

    This model can describe the large strain cyclic plasticity of metals. The law is based on the yielding and bounding surfaces.

    For solid elements, von Mises yield criterion is used as:

    \[ f = \dfrac{3}{2} (\mathbf{s} - \mathbf{\alpha}) \colon (\mathbf{s} - \mathbf{\alpha}) - Y^2 \]

    For shell elements, Hill or Barlat3 yield criterion is used. The Hill law is expressed as:

    \[ f_{Hill} = \varphi(\mathbf{\sigma} - \mathbf{\alpha})- Y^2 \]

    where \(Y\) is yield stress, and \(\mathbf{\alpha}\) is total back stress. Let \(\mathbf{A}=\mathbf{\sigma}-\mathbf{\alpha}\), the function \(\varphi\) becomes

    \[ \varphi(A) = A_{xx}^2 - \dfrac{2r_0}{1+r_0}A_{xx}A_{yy} + \dfrac{r_0(1+r_{90})}{r_{90}(1+r_0)}A_{yy}^2 + \frac{r_0 + r_{90}}{r_{90}(1+r_0)}(2r_{45}+1)A_{xy}^2 \]

    The Barlat law is defined as:

    \[ f_{Barlat} = \phi(\sigma - \alpha) - 2Y^M \]

    where \(M\) is the exponent in Barlat's yield criterion.

    Hohnson-Holmquist Model

    This law describes the behaivor of brittle materials, such as glass and ceramics.

    \[ \sigma^* = (1-D)\sigma^*_i + D \sigma_f^* \]

    where the equivalent stress of the intact materials \(\sigma_i^*\) can be expressed as

    \[ \sigma_i^* = a (P^* + T^*)^n (1 + c\mathrm{ln}\dfrac{\dot{\epsilon}}{\dot{\epsilon}_0}) \]

    and the equivalent stress of the failed materials \(\sigma_f^*\) is

    \[ \sigma_f^* = b(P^*)^m (1+c\mathrm{ln}\dfrac{\dot{\epsilon}}{\dot{\epsilon}_0}) \]

    Swift-Voce Model

    Swift-Voce elastoplastic model can combine the Johnson-Cook strain rate hardening and temperature softening. This model can be applied for the orthotropic materials and allows a quadratic non-assoicated flow rule. The yield stress can be calculated using a combination of Swift and Voce models as shown below.

    \(\sigma_y = \{ \alpha [A(\bar{\epsilon}_p + \epsilon_0)^n] + (1+\alpha)[K_0 + Q(1-\mathrm{exp}(-B\bar{\epsilon }_p))]\} (1+C \mathrm{ln}\dfrac{\dot{\bar{\epsilon}}_p}{\dot{\epsilon}_0}) [1 - (\dfrac{T-T_{ref}}{T_{melt} - T_{ref}})^m]\)

    The plastic non-associated flow rule is computed as:

    \[ \Delta \epsilon_p = \Delta \bar{\epsilon}_p \dfrac{\partial g(\sigma)}{\partial \sigma} \]

    where \(g(\sigma) = \sqrt{\sigma^TG\sigma}\).

    Hensel-Spittel Model

    The hensel-Spittel yield stress is a function of strain, strain rate, and temperature. This model is often used in hot forging simulations. The yield stress is defined as :

    \[ \sigma_y = A_0 e^{m_1 T} \epsilon^{m_2} \dot{\epsilon}^{m_3} e^{\frac{m_4}{\epsilon}} (1+\epsilon)^{m_5T} e^{m_7\epsilon} \]

    where true strain \(\epsilon = \epsilon_0 + \bar{\epsilon}_p\), \(\dot{\epsilon}\) is the true strain rate.

    Vegter Model

    The yield function is defined as

    \[ \phi = \bar{\sigma} - \sigma_Y \]

    where \(\bar{\sigma}\) is the interpolated Vegter equivalent stress.

    \ No newline at end of file diff --git a/mateditor/mat_workflow/index.html b/mateditor/mat_workflow/index.html index 797ca20..d1aa7a4 100755 --- a/mateditor/mat_workflow/index.html +++ b/mateditor/mat_workflow/index.html @@ -1 +1 @@ - Workflow - WelSim Documentation

    Material workflow

    This section discusses about the material data, and precedures for working with MatEditor.

    Material data

    Material data is the source of the material information that is used for the analysis of the system it is contained in. The information in a material data component system is used if shared to an analysis system. MatEditor allows you to view, edit, and add data for use in your analysis system.

    Importing

    You can import data into an system as a new material. The following types of files are supported for import:

    • WELSIM material data format
    • Material(s) file following the MatML 3.1 schema

    Note

    When you import material data, the materials contained in that source will be added to the material outline.

    Editing

    Property and Table panes provide constant and tabular data input. You can edit both constant and tabular data.

    Constant data

    You edit constant data by changing the value and/or unit of that data in the Properties pane. The value is modified by clicking the cell in the Value column and typing in the new value. If available, changing the unit will convert the value to correspond to the new unit. If the value entered is invalid or not acceptable it will be indicated in yellow or red to gain users' attention.

    Tabular data

    If Value cell shows a tabular format indication. This data is edited in the Table pane and each datum is a value and unit as one integral piece. If the value entered is invalid or not acceptable it will be indicated in yellow or red to gain users' attention. The unit is shown in the header, and you can change unit if necessary. The units between table header and Property pane column are connnected. Modifying either one of them changes units on both areas.

    Suppression

    A material property may be defined but suppressed to prevent it from being sent to analysis process in the system. A data item may be suppressed by selecting the dropdown in the suppression column. Suppressed items and its children are shown by a strike through the name (for example, ) and the dropdown being set to True in the suppression column.

    finite_element_analysis_mateditor_suppression

    Perform material tasks in MatEditor

    All material related tasks require that you perform the following basic tasks:

    Task Procedure
    Create new material. In the Menu or Toolbar, click New Material to add a new material.
    Add material properties.
    1. Activate the material in the Material Outline pane that is to receive the additional property.
    2. Toggle the property in the Property Outline pane that you want to add.
    Delete material properties.
    1. Activate the material in the Material Outline pane whose property is to be deleted.
    2. Select the material property in the Properties pane.
    3. Right-click and choose Delete or on the menu bar, choose Delete.
    Modify material properties.
    1. Activate the material in the Material Outline pane that contains the property you want to modify.
    2. In the Properties pane change the value or unit for constant data.
    3. Perform one of the following:
      • For constant data, change the value or unit in the Properties pane.
      • For tabular data, change the value or unit(s) in the Table pane.
    Suppress material properties.
    1. Activate the material in the Material Outline pane that contains the property you want to suppress.
    2. Select the dropdown in the suppression column for the property you want to suppress.
    \ No newline at end of file + Workflow - WelSim Documentation

    Material workflow

    This section discusses about the material data, and precedures for working with MatEditor.

    Material data

    Material data is the source of the material information that is used for the analysis of the system it is contained in. The information in a material data component system is used if shared to an analysis system. MatEditor allows you to view, edit, and add data for use in your analysis system.

    Importing

    You can import data into an system as a new material. The following types of files are supported for import:

    • WELSIM material data format
    • Material(s) file following the MatML 3.1 schema

    Note

    When you import material data, the materials contained in that source will be added to the material outline.

    Editing

    Property and Table panes provide constant and tabular data input. You can edit both constant and tabular data.

    Constant data

    You edit constant data by changing the value and/or unit of that data in the Properties pane. The value is modified by clicking the cell in the Value column and typing in the new value. If available, changing the unit will convert the value to correspond to the new unit. If the value entered is invalid or not acceptable it will be indicated in yellow or red to gain users' attention.

    Tabular data

    If Value cell shows a tabular format indication. This data is edited in the Table pane and each datum is a value and unit as one integral piece. If the value entered is invalid or not acceptable it will be indicated in yellow or red to gain users' attention. The unit is shown in the header, and you can change unit if necessary. The units between table header and Property pane column are connnected. Modifying either one of them changes units on both areas.

    Suppression

    A material property may be defined but suppressed to prevent it from being sent to analysis process in the system. A data item may be suppressed by selecting the dropdown in the suppression column. Suppressed items and its children are shown by a strike through the name (for example, ) and the dropdown being set to True in the suppression column.

    finite_element_analysis_mateditor_suppression

    Perform material tasks in MatEditor

    All material related tasks require that you perform the following basic tasks:

    Task Procedure
    Create new material. In the Menu or Toolbar, click New Material to add a new material.
    Add material properties.
    1. Activate the material in the Material Outline pane that is to receive the additional property.
    2. Toggle the property in the Property Outline pane that you want to add.
    Delete material properties.
    1. Activate the material in the Material Outline pane whose property is to be deleted.
    2. Select the material property in the Properties pane.
    3. Right-click and choose Delete or on the menu bar, choose Delete.
    Modify material properties.
    1. Activate the material in the Material Outline pane that contains the property you want to modify.
    2. In the Properties pane change the value or unit for constant data.
    3. Perform one of the following:
      • For constant data, change the value or unit in the Properties pane.
      • For tabular data, change the value or unit(s) in the Table pane.
    Suppress material properties.
    1. Activate the material in the Material Outline pane that contains the property you want to suppress.
    2. Select the dropdown in the suppression column for the property you want to suppress.
    \ No newline at end of file diff --git a/mateditor/mateditor_overview/index.html b/mateditor/mateditor_overview/index.html index 2259c5c..32e90be 100755 --- a/mateditor/mateditor_overview/index.html +++ b/mateditor/mateditor_overview/index.html @@ -1,4 +1,4 @@ - Overview - WelSim Documentation

    Overview

    MatEditor is a free material editor software program for engineers. This tool provides you comprehensive material properties those are often used in engineering simulation and finite element analysis.

    finite_element_analysis_mateditor_gui

    Specification

    Specification Description
    Operation system Microsoft Windows 7 to 10; 64-bit
    Physical memory At least 4 GB

    Supported unit systems :

    • SI: (kg, m, s, K, A, N, V)
    • MKS Standard: (kg, m, s, °C, A, N, V)
    • NMMTON Standard: (tonne, mm, s, °C, A, N, mV)
    • BIN Standard: (lbm, in, s, °F, A, lbf, V)
    • US Engineering: (lb, in, s, R, A, lbf, V)
    • CGS Standard: (g, cm, s, °C, A, dyne, V)
    • NMM Standard: (kg, mm, s, °C, mA, N, mV)
    • UMKS Standard: (kg, µm, s, °C, mA, µN, V)
    • NMMDAT Standard: (decatonne, mm, s, °C, mA, N, mV)
    • BFT Standard: (lbm, ft, s, °F, A, lbf, V)
    • CGS Consistent: (g, m, s, °C, A, dyne, V)
    • NMM Consistent: (tonne, m, s, °C, mA, t⋅mm/s2, mV)
    • UMKS Consistent: (kg, m, s, °C, pA, µN, pV)
    • BIN Consistent: (slinch, in, s, °C, A, slinch⋅in/s2, V)
    • BFT Consistent: (slug, ft, s, °C, A, slug⋅ft/s2, V)
    • CGuS Standard: (g, cm, \(\mu\)s, °C, A, dyne, V)

    Material properties

    The supported material properties are listed in the table below.

    Category Materials
    Basic Density, Isotropic Thermal Expansion, Isotropic Instantaneous Thermal Expansion, Orthotropic Thermal Expansion, Orthotropic Instantaneous Thermal Expansion, Constant Damping Coefficient
    Linear Elastic Isotropic Elasticity, Orthotropic Elasticity, Viscoelastic
    Hyperelastic Test Data Uniaxial Test Data, Biaxial Test Data, Shear Test Data, Volumetric Test Data, SimpleShear Test Data, Uniaxial Tension Test Data, Uniaxial Compression Test Data
    Hyperelastic Arruda-Boyce, Blatz-Ko, Gent, Mooney-Rivlin 2, Mooney-Rivlin 3, Mooney-Rivlin 5, Mooney-Rivlin 9, Neo-Hookean, Ogden 1st Order, Ogden 2nd Order, Ogden 3rd Order, Polynomial 1st Order, Polynomial 2nd Order, Polynomial 3rd Order, Yeoh 1st Order, Yeoh 2nd Order, Yeoh 3rd Order
    Plasticity Bilinear Isotropic Hardening, Multilinear Isotropic Hardening, Bilinear Kinematic Hardening, Multilinear Kinematic Hardening, Anand Viscoplasticity, Johnson-Cook, Zerilli-Armstrong
    Creep Strain Hardening, Time Hardening, Generalized Exponential, Generalized Graham, Generalized Blackburn, Modified Time Hardening, Modified Strain Hardening, Generalized Garofalo, Exponential Form, Norton, Combined Time Hardening, Rational Polynomial, Generalized Time Hardening
    Visco-elastic Prony Shear Relaxation, Prony Volumetric Relaxation
    Equations of State (EOS) Compaction, Gruneisen, Ideal Gas, Linear, LSZK, Murnaghan, NASG, Noble-Abel, Osborne, Polynomial, Puff, Stiff Gas, Tillotson
    Failure Johnson
    Other Mechanical Strain Life Parameters, Compressive Ultimate Strength, Compressive Yield Strength, LaRc0304 Constants, Orthotropic Strain Limits, Orthotropic Stress Limits, Puck Constants, Tensile Ultimate Strength, Tensile Yield Strength, Tsai-Wu Constants, Shape Memory Effect, Drucker-Prager Strength Piecewise, Drucker-Prager Strength Linear, Ideal Gas EOS, Crushable Foam, Nonlinear Elastic Model Damage, Plakin Special Hardening, Tensile Pressure Failure, Crack Softening Failure
    Thermal Enthalpy, Isotropic Thermal Conductivity, Orthotropic Thermal Conductivity, Specific Heat
    Electromagnetics B-H Curve, Isotropic Relative Permeability, Orthotropic Relative Permeability, Isotropic Resistivity, Orthotropic Resistivity, Isotropic Relative Permittivity, Orthotropic Relative Permittivity, Isotropic Dielectric Loss Tangent, Isotropic Magnetic Loss Tangent, Isotropic Relative Imaginary Permeability, Orthotropic Dielectric Loss Tangent, Orthotropic Magnetic Loss Tangent
    Fluid Dynamic Viscosity, Kinematic Viscosity, Lemalar Prandtl Number, Turbulent Prandtl Number, ALE
    WelSim/docs

    Overview

    MatEditor is a free material editor software program for engineers. This tool provides you comprehensive material properties those are often used in engineering simulation and finite element analysis.

    finite_element_analysis_mateditor_gui

    Specification

    Specification Description
    Operation system Microsoft Windows 7 to 10; 64-bit
    Physical memory At least 4 GB

    Supported unit systems :

    • SI: (kg, m, s, K, A, N, V)
    • MKS Standard: (kg, m, s, °C, A, N, V)
    • NMMTON Standard: (tonne, mm, s, °C, A, N, mV)
    • BIN Standard: (lbm, in, s, °F, A, lbf, V)
    • US Engineering: (lb, in, s, R, A, lbf, V)
    • CGS Standard: (g, cm, s, °C, A, dyne, V)
    • NMM Standard: (kg, mm, s, °C, mA, N, mV)
    • UMKS Standard: (kg, µm, s, °C, mA, µN, V)
    • NMMDAT Standard: (decatonne, mm, s, °C, mA, N, mV)
    • BFT Standard: (lbm, ft, s, °F, A, lbf, V)
    • CGS Consistent: (g, m, s, °C, A, dyne, V)
    • NMM Consistent: (tonne, m, s, °C, mA, t⋅mm/s2, mV)
    • UMKS Consistent: (kg, m, s, °C, pA, µN, pV)
    • BIN Consistent: (slinch, in, s, °C, A, slinch⋅in/s2, V)
    • BFT Consistent: (slug, ft, s, °C, A, slug⋅ft/s2, V)
    • CGuS Standard: (g, cm, \(\mu\)s, °C, A, dyne, V)

    Material properties

    The supported material properties are listed in the table below.

    Category Materials
    Basic Density, Isotropic Thermal Expansion, Isotropic Instantaneous Thermal Expansion, Orthotropic Thermal Expansion, Orthotropic Instantaneous Thermal Expansion, Constant Damping Coefficient
    Linear Elastic Isotropic Elasticity, Orthotropic Elasticity, Viscoelastic
    Hyperelastic Test Data Uniaxial Test Data, Biaxial Test Data, Shear Test Data, Volumetric Test Data, SimpleShear Test Data, Uniaxial Tension Test Data, Uniaxial Compression Test Data
    Hyperelastic Arruda-Boyce, Blatz-Ko, Gent, Mooney-Rivlin 2, Mooney-Rivlin 3, Mooney-Rivlin 5, Mooney-Rivlin 9, Neo-Hookean, Ogden 1st Order, Ogden 2nd Order, Ogden 3rd Order, Polynomial 1st Order, Polynomial 2nd Order, Polynomial 3rd Order, Yeoh 1st Order, Yeoh 2nd Order, Yeoh 3rd Order
    Plasticity Bilinear Isotropic Hardening, Multilinear Isotropic Hardening, Bilinear Kinematic Hardening, Multilinear Kinematic Hardening, Anand Viscoplasticity, Johnson-Cook, Zerilli-Armstrong
    Creep Strain Hardening, Time Hardening, Generalized Exponential, Generalized Graham, Generalized Blackburn, Modified Time Hardening, Modified Strain Hardening, Generalized Garofalo, Exponential Form, Norton, Combined Time Hardening, Rational Polynomial, Generalized Time Hardening
    Visco-elastic Prony Shear Relaxation, Prony Volumetric Relaxation
    Equations of State (EOS) Compaction, Gruneisen, Ideal Gas, Linear, LSZK, Murnaghan, NASG, Noble-Abel, Osborne, Polynomial, Puff, Stiff Gas, Tillotson
    Failure Johnson
    Other Mechanical Strain Life Parameters, Compressive Ultimate Strength, Compressive Yield Strength, LaRc0304 Constants, Orthotropic Strain Limits, Orthotropic Stress Limits, Puck Constants, Tensile Ultimate Strength, Tensile Yield Strength, Tsai-Wu Constants, Shape Memory Effect, Drucker-Prager Strength Piecewise, Drucker-Prager Strength Linear, Ideal Gas EOS, Crushable Foam, Nonlinear Elastic Model Damage, Plakin Special Hardening, Tensile Pressure Failure, Crack Softening Failure
    Thermal Enthalpy, Isotropic Thermal Conductivity, Orthotropic Thermal Conductivity, Specific Heat
    Electromagnetics B-H Curve, Isotropic Relative Permeability, Orthotropic Relative Permeability, Isotropic Resistivity, Orthotropic Resistivity, Isotropic Relative Permittivity, Orthotropic Relative Permittivity, Isotropic Dielectric Loss Tangent, Isotropic Magnetic Loss Tangent, Isotropic Relative Imaginary Permeability, Orthotropic Dielectric Loss Tangent, Orthotropic Magnetic Loss Tangent
    Fluid Dynamic Viscosity, Kinematic Viscosity, Lemalar Prandtl Number, Turbulent Prandtl Number, ALE

    Predefined materials

    WELSIM also provide predefined materials, which covers most of commonly used materials. Users can choose these materials and apply to the successive finite element analysis.

    Category Materials
    General Materials Structural Steel, Stainless Steel, Aluminum Alloy, Concrete, Copper Alloy, Gray Cast Iron, Titanium Alloy
    Nonlinear Materials Aluminum Alloy NL, Concrete NL, Copper Alloy NL, Stainless Steel NL, Structural Steel NL, Titanium Alloy NL
    Hyperelastic Materials Elastomer Mooney-Rivlin, Elastomer Neo-Hookean, Elastomer Ogden, Elastomer Yeoh, Neoprene Rubber
    Thermal Materials Brass, Bronze, Copper, Diamond, Ferrite, Nodular Cast Iron, Solder, Teflon, Tungsten, Wood
    Electromagnetic Materials SS416, Supermendure, TDK-K1, TDK-M33, TDK-N30, TDK-N41, TDK-N45, TDK-N48, TDK-N49, TDK-N87, TDK-N97, TDK-T38, TDK-T66
    Other Materials Water Liquid, Argon, Ash

    Download

    MatEditor software is available at our official website.

    \ No newline at end of file +* [x] Orthotropic Resistivity -->

    Predefined materials

    WELSIM also provide predefined materials, which covers most of commonly used materials. Users can choose these materials and apply to the successive finite element analysis.

    Category Materials
    General Materials Structural Steel, Stainless Steel, Aluminum Alloy, Concrete, Copper Alloy, Gray Cast Iron, Titanium Alloy
    Nonlinear Materials Aluminum Alloy NL, Concrete NL, Copper Alloy NL, Stainless Steel NL, Structural Steel NL, Titanium Alloy NL
    Hyperelastic Materials Elastomer Mooney-Rivlin, Elastomer Neo-Hookean, Elastomer Ogden, Elastomer Yeoh, Neoprene Rubber
    Thermal Materials Brass, Bronze, Copper, Diamond, Ferrite, Nodular Cast Iron, Solder, Teflon, Tungsten, Wood
    Electromagnetic Materials SS416, Supermendure, TDK-K1, TDK-M33, TDK-N30, TDK-N41, TDK-N45, TDK-N48, TDK-N49, TDK-N87, TDK-N97, TDK-T38, TDK-T66
    Other Materials Water Liquid, Argon, Ash

    Download

    MatEditor software is available at our official website.

    \ No newline at end of file diff --git a/mateditor/material_data/index.html b/mateditor/material_data/index.html index dff39d9..9e69da0 100755 --- a/mateditor/material_data/index.html +++ b/mateditor/material_data/index.html @@ -1 +1 @@ - Defining materials - WelSim Documentation

    Defining materials

    This section describes how to create material objects and define material properties in the WELSIM application.

    Overview

    Material Module serves as a database for material properties used in a modeling project. The module not only provides a material library but also allow you to create a material using the given properties. The spreadsheet of a Material object is the primary user interface designed to let you create, save, and retrieve material models. The well-defined material object can be saved and used in the subsequent projects.

    Material Module is shown as a Material Project and Material Objects in the Project Explorer (tree) window. The solution system contains only one Material Project, which acts as a material repository in the modeling system. The Material Project may include multiple Material Objects, where the properties can be added or edited by users.

    To access Material Object properties, you can choose one of the following methods: * Double click on the Material Object. * Right click on a Material Object, and select Edit item from the context menu.

    Modes of operation

    • Material for subsequent analysis: You can create a material that can be consumed in the subsequent analysis. For example, a defined material can be assigned to the specific geometry bodies.
    • Material Data for files: You can create a material and export the material data into an external file.

    The data included in the Material Module is automatically saved as you save the project.

    User interface

    The Material Editor spreadsheet is an essential portion of the WELSIM user interface, and it displays material-related components that allow users to edit material data easily.

    Editing mode

    Presented in this section are two configurations for the material property editing. The first configuration method is based on the library as shown in Figure [fig:ch3_guide_mat_ui_lib], and the second configuration is designed to manually combine the properties for the material object as shown in Figure [fig:ch3_guide_mat_ui_build]. You can click on the Library or Build tab to switch these two editing modes.

    Note

    1. You can click on category tabs to browse different materials.
    2. Loading a material dataset from the library removes all pre-existing properties.

    Build outline tab

    The Build Outline Tab shows an outline of the contents of the togglable material properties. You can add a property data entry to the material by toggling on the property entry or remove property by toggling off the property entry.

    Properties pane

    The Properties pane displays all properties that are going to be added to the Material Object. You can tune the property values at this pane. The columns in this spreadsheet pane are:

    • Name: A read-only text field to display the property name.
    • Value: A number field to display and input the value.
    • Description: A read-only text field to display the attribute of this property.

    You can delete a property by right-clicking on a row and select Remove Rows from the pop-up context menu.

    The Material Properties pane provides the following command buttons to the bottom of the window:

    • OK: Save the properties and exit the material editor.
    • Apply: Save the current properties to the material database.
    • Cancel: Exit the material editor without Saving.
    • Clear: Remove all properties.

    Working with material data

    Exporting

    You can export the complete material data to an external file. The following format is supported for export:

    • XML in WELSIM Material (MatML 3.1) schema.
    • JSON in WELSIM Material schema.
    • OpenRadioss input script

    To implement the exporting, you can use one of the following methods:

    • Click the Export Materials button from the standard Toolbar.
    • Click the Export Materials item from the Material Menu.
    • Right-click the Material Project and select the Export Materials item from the context menu.

    MatEditor applicaiton

    MatEditor is a free application allow you to create and edit material data for the computer aided engineering. It is a smaller and concise application but has most of features that material module of WELSIM has. More details about MatEditor, please visit MatEditor page.

    \ No newline at end of file + Defining materials - WelSim Documentation

    Defining materials

    This section describes how to create material objects and define material properties in the WELSIM application.

    Overview

    Material Module serves as a database for material properties used in a modeling project. The module not only provides a material library but also allow you to create a material using the given properties. The spreadsheet of a Material object is the primary user interface designed to let you create, save, and retrieve material models. The well-defined material object can be saved and used in the subsequent projects.

    Material Module is shown as a Material Project and Material Objects in the Project Explorer (tree) window. The solution system contains only one Material Project, which acts as a material repository in the modeling system. The Material Project may include multiple Material Objects, where the properties can be added or edited by users.

    To access Material Object properties, you can choose one of the following methods: * Double click on the Material Object. * Right click on a Material Object, and select Edit item from the context menu.

    Modes of operation

    • Material for subsequent analysis: You can create a material that can be consumed in the subsequent analysis. For example, a defined material can be assigned to the specific geometry bodies.
    • Material Data for files: You can create a material and export the material data into an external file.

    The data included in the Material Module is automatically saved as you save the project.

    User interface

    The Material Editor spreadsheet is an essential portion of the WELSIM user interface, and it displays material-related components that allow users to edit material data easily.

    Editing mode

    Presented in this section are two configurations for the material property editing. The first configuration method is based on the library as shown in Figure [fig:ch3_guide_mat_ui_lib], and the second configuration is designed to manually combine the properties for the material object as shown in Figure [fig:ch3_guide_mat_ui_build]. You can click on the Library or Build tab to switch these two editing modes.

    Note

    1. You can click on category tabs to browse different materials.
    2. Loading a material dataset from the library removes all pre-existing properties.

    Build outline tab

    The Build Outline Tab shows an outline of the contents of the togglable material properties. You can add a property data entry to the material by toggling on the property entry or remove property by toggling off the property entry.

    Properties pane

    The Properties pane displays all properties that are going to be added to the Material Object. You can tune the property values at this pane. The columns in this spreadsheet pane are:

    • Name: A read-only text field to display the property name.
    • Value: A number field to display and input the value.
    • Description: A read-only text field to display the attribute of this property.

    You can delete a property by right-clicking on a row and select Remove Rows from the pop-up context menu.

    The Material Properties pane provides the following command buttons to the bottom of the window:

    • OK: Save the properties and exit the material editor.
    • Apply: Save the current properties to the material database.
    • Cancel: Exit the material editor without Saving.
    • Clear: Remove all properties.

    Working with material data

    Exporting

    You can export the complete material data to an external file. The following format is supported for export:

    • XML in WELSIM Material (MatML 3.1) schema.
    • JSON in WELSIM Material schema.
    • OpenRadioss input script

    To implement the exporting, you can use one of the following methods:

    • Click the Export Materials button from the standard Toolbar.
    • Click the Export Materials item from the Material Menu.
    • Right-click the Material Project and select the Export Materials item from the context menu.

    MatEditor applicaiton

    MatEditor is a free application allow you to create and edit material data for the computer aided engineering. It is a smaller and concise application but has most of features that material module of WELSIM has. More details about MatEditor, please visit MatEditor page.

    \ No newline at end of file diff --git a/misc/index.html b/misc/index.html index dfec93c..91ccb9a 100755 --- a/misc/index.html +++ b/misc/index.html @@ -1 +1 @@ - MISC - WelSim Documentation

    MISC

    Comparison explicit and implicit time integrations

    显式算法 隐式算法
    适用问题 动力学(动态) 静力学(静态)和动力学(动态)
    阻尼 人工阻尼 数值阻尼
    时间步求解方法 矩阵乘法 线性方程组
    组装刚度矩阵
    数据存储需求
    每步计算速度
    迭代收敛性
    确定性 有确定解 可能是病态无确定解
    时间稳定性 有条件 无条件
    时间步
    计算精度
    Explicit method Implicit method
    Target problems Dynamic(transient) Static and dynamic(transient)
    Damping Artificial damping Numerical damping
    Time stepping method Matrix multiplication Linear algebra equations
    Assemble stiffness matrix No Yes
    Data storage requirement Small Large
    Solving speed each step Quick Mediate
    Iteration convergence No Yes
    Solution Certain solution Could be uncertain solution
    Stability Conditionally stable Unconditionally stable
    Time step Small Large
    Accuracy Low High
    应力-应变曲线含有 适用的Mooney-Rivlin函数 参数正定性要求
    没有拐点(单曲率) 2-或3-参数 C10 + C01 > 0
    1个拐点(双曲率) 5-参数

    C10 + C01 > 0
    C20 > 0
    C02 < 0
    C20 + C11 + C02 > 0

    2个拐点 9-参数

    C10 + C01 > 0
    C30>0
    C03 < 0
    C30 + C21 + C12 + C03 > 0

    Strain-stress curve Suitable Mooney-Rivlin model Parameter requirement for positive definiteness
    No inflection point (single curvature) 2- or 3-parameter C10 + C01 > 0
    One inflection point (double curvature) 5-parameter

    C10 + C01 > 0
    C20 > 0
    C02 < 0
    C20 + C11 + C02 > 0

    Two inflection points 9-parameter

    C10 + C01 > 0
    C30>0
    C03 < 0
    C30 + C21 + C12 + C03 > 0

    \ No newline at end of file + MISC - WelSim Documentation

    MISC

    Comparison explicit and implicit time integrations

    显式算法 隐式算法
    适用问题 动力学(动态) 静力学(静态)和动力学(动态)
    阻尼 人工阻尼 数值阻尼
    时间步求解方法 矩阵乘法 线性方程组
    组装刚度矩阵
    数据存储需求
    每步计算速度
    迭代收敛性
    确定性 有确定解 可能是病态无确定解
    时间稳定性 有条件 无条件
    时间步
    计算精度
    Explicit method Implicit method
    Target problems Dynamic(transient) Static and dynamic(transient)
    Damping Artificial damping Numerical damping
    Time stepping method Matrix multiplication Linear algebra equations
    Assemble stiffness matrix No Yes
    Data storage requirement Small Large
    Solving speed each step Quick Mediate
    Iteration convergence No Yes
    Solution Certain solution Could be uncertain solution
    Stability Conditionally stable Unconditionally stable
    Time step Small Large
    Accuracy Low High
    应力-应变曲线含有 适用的Mooney-Rivlin函数 参数正定性要求
    没有拐点(单曲率) 2-或3-参数 C10 + C01 > 0
    1个拐点(双曲率) 5-参数

    C10 + C01 > 0
    C20 > 0
    C02 < 0
    C20 + C11 + C02 > 0

    2个拐点 9-参数

    C10 + C01 > 0
    C30>0
    C03 < 0
    C30 + C21 + C12 + C03 > 0

    Strain-stress curve Suitable Mooney-Rivlin model Parameter requirement for positive definiteness
    No inflection point (single curvature) 2- or 3-parameter C10 + C01 > 0
    One inflection point (double curvature) 5-parameter

    C10 + C01 > 0
    C20 > 0
    C02 < 0
    C20 + C11 + C02 > 0

    Two inflection points 9-parameter

    C10 + C01 > 0
    C30>0
    C03 < 0
    C30 + C21 + C12 + C03 > 0

    \ No newline at end of file diff --git a/search/search_index.json b/search/search_index.json index fdb6c9a..a44bc27 100755 --- a/search/search_index.json +++ b/search/search_index.json @@ -1 +1 @@ -{"config":{"lang":["en"],"separator":"[\\s\\-\\.]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Welcome","text":"

    WELSIM was born out of a vision to create a general-purpose simulation utility that could successfully enable a wide range of engineering and science communities to conduct simulation with more confidence. Customers use our software to help ensure the integrity of their innovations. WELSIM comes with an all-in-one user interface and self-integrated features. It is a long-term-support product that aims to accurately model engineering problems using the prestigious open source solvers.

    "},{"location":"#why-welsim","title":"Why WELSIM","text":"
    • Support 3D structural, thermal, fluid, and electromagnetic analyses that reveal physics-based results. Convenient data interface to export mesh or result files.
    • No wait. You can download and use WELSIM immediately.
    • The secure software program and no collection of your data. No need for an internet connection to run the program.
    • The ease-of-use graphical interface requires no learning curve.
    • Friendly pricing options. Free trial. No hidden fees. No commitments.
    "},{"location":"#where-to-start","title":"Where to start","text":"

    Engineers can do a thousand things with the WELSIM simulation solutions. We recommend starting with:

    • Quick start to quickly review the steps of using WELSIM.
    • Windows and Linux installation guides to install the software on your computer.

    If you already use WELSIM:

    • User's manual - learn about WELSIM user interfaces and how to use them for everything else.
    • Theory - learn about math theory and numerical algorithms used in WELSIM.

    If you are interested in our free engineering software:

    • CurveFitter - learn about the curve fitting tool.
    • MatEditor - learn about the engineering material data tool.
    • UnitConverter - learn about the engineering unit convertion tool.
    • BeamSection - learn about the beam cross-section tool.

    Last Updated: Jan. 8th, 2024

    "},{"location":"features/","title":"Features","text":"

    As a general-purpose engineering simulation software program, WELSIM contains tons of features those allow you to conduct various simulation studies.

    "},{"location":"features/#specification","title":"Specification","text":"Specification Description Operaton system Microsoft Windows 10/11, 64-bit; Linux: Ubuntu 22.04 LTS and higher versions, 64-bit; 3D rendering driver: OpenGL 3.2 or higher Physical memory At least 4 GB, and 32 GB and higher is recommended Geometry modules Imported geometry formats: STEP, IGES, STL, GDS Built-in geometry generation: Box, Cylinder, Sphere, Plane, Line, Circle, Vertex Boolean operations: Union, Intersection, Cut Supported automatic mesh Tet10, Tet4, Tri6, Tri3
    • Project data: file with suffix \"wsdb\" and the associated folder (same file name).
    • Export mesh formats: UNV, MFEM, SU2, VTK.
    • Export result formats: VTK, Tecplot, Plain Text.
    • Export solver scripts: FrontISTR, OpenRadioss, MFEM, SU2, Palace, etc.
    "},{"location":"features/#structural","title":"Structural","text":"Structural analysis Description Types Static, transient, and modal Materials Isotropic elastic, hyper-elastic, plastic, visco-elastic, and creep Deformation types Small, and finite Contact types bonded, frictionless, and frictional; small and finite sliding Boundary conditions constraints, displacement, force, pressure, velocity, acceleration Body conditions body force, acceleration, standard earth gravity, rotational velocity Results deformations, stresses, strains, velocity, acceleration Probe results reaction force (total, x, y, z)
    • Nonlinear materials.
    • Contact analysis.
    • Multi-body analysis.
    • Multi-step quasi-static analysis.
    • Implicit dynamics.
    "},{"location":"features/#explicit-structural-dynamics-using-openradioss","title":"Explicit Structural Dynamics (using OpenRadioss)","text":"Structural analysis Description Materials Isotropic elasto-plastic (Johnson-Cook, Zerillii-Armstrong, Gray, Cowper-Symonds, Yoshida-Uemori, Hensel-Spittel, voce), Isotropic linear elastic (Hooke's law, Johnson-Cook), hyper-elastic (Ogden, Neo-Hookean, Mooney\u2013Rivlin), visco-elastic (Boltamann, Generalized Maxwell-Kelvin), creep, explosive (JWL), Rock (Drucker-Prager), Hill orthotropic Equation of state Compaction, Gruneisen, ideal gas, linear, LSZK, Murnaghan, NASG, Noble, Polynomial, Puff, Sesame, Tillotson Failure models Alter, Biquad, Chang, Cockcroft, EMC, Energy, Fabric, forming limit diagram, Gurson, Hashin, Johnson, Ladeveze, Mullins effect with Ogden and Roxburgh criteria, NXT, orthotropic biquad, Puck, Spalling, Wierzbicki Element type Solid, shell Contact types bonded, frictionless, and frictional; small and finite sliding Boundary conditions constraints, displacement, force, pressure, velocity, acceleration, etc. Body conditions rigid body, body force, acceleration, standard earth gravity, rotational velocity, etc. Results deformations, stresses, strains, velocity, acceleration, etc"},{"location":"features/#thermal","title":"Thermal","text":"Thermal analysis Description Types Static, and transient Materials linear and nonlinear Initial conditions Initial temperature Boundary conditions temperature, convection, radiation, heat flux, heat flow, perfectly insulated Body conditions Internal heat generation Results temperature
    • Multi-body analysis.
    • Temperature-dependent nonlinear material.
    • Implicit transient analysis.
    • Orthotropic thermal conductivity material.
    • Heat flux results.
    "},{"location":"features/#computational-fluid-dynamics-through-su2","title":"Computational Fluid Dynamics (through SU2)","text":"Fluid analysis Description Types Steady-state, and transient Governing equation Euler, Navier-Stokes, RANS Boundary conditions wall, inlet, outlet, pressure, velocity, temperature, convection, heat flux Results velocity, pressure, mass density, pressure coefficient, mach number, energy
    • incompressible fluids.
    • compressible fluids.
    "},{"location":"features/#electromangetic","title":"Electromangetic","text":"Electromagnetic analysis Description Types Electrostatic, magnetostatic, eigenmode, driven, full-wave transient Materials linear Boundary conditions ground, voltage, symmetry, zero charge, surface charge density, electric displacement, insulting, magnetic vector potential, magnetic flux density Results voltage, electric field, electric displacement, magnetic vector potential, magnetic flux density, magnetic field, energy density
    • Vector result display.
    • Parallel computing.
    • Multi-body analysis.
    • Nonlinear materials.
    "},{"location":"features/#need-new-features","title":"Need new features?","text":"

    Feel free to send questions, comments, requests, bug reports, and success stories. Asking for a new feature usually results in adding the request to the TODO list or, if it already is in the list, in assigning higher priority to it.

    "},{"location":"glossary/","title":"Glossary","text":""},{"location":"glossary/#a","title":"A","text":"
    • ACCELERATION\uff1a The second time derivative of the displacement (the first time derivative of the velocity).
    • ADAPTIVE FINITE ELEMENT METHOD/ADAPTIVE MESHING\uff1a An adaptive finite element solver iteratively performs finite element analysis, determines the areas of the mesh where the solution is not sufficiently accurate and refines the mesh in those areas until the solution obtains the prescribed degree of accuracy. Adaptive Meshing involves automatically improving the mesh where necessary to meet specified convergence criteria.
    • ASPECT RATIO: The ratio of the longest to shortest side lengths on an element.
    • ASSEMBLY: Geometric:Two or more parts mated together. FEA: The process of assembling the element matrices together to form the global matrix. Typically element stiffness matrices are assembled to form the complete stiffness matrix of the structure.
    • AUTOMATIC MESH GENERATION: The process of generating a mesh of elements over the volume that is being analyzed. There are two forms of automatic mesh generation: Free Meshing -Where the mesh has no structure to it. Free meshing generally uses triangular and tetrahedral elements. Mapped Meshing -Where large regions, if not all, of the volume is covered with regular meshes. This can use any form of element. Free meshing can be used to fill any shape. Mapped meshing can only be used on some shapes without elements being excessively distorted.
    • AXISYMMETRY: If a shape can be defined by rotating a cross- section about a line (e.g. a cone) then it is said to be axisymmetric. This can be used to simplify the analysis of the system. Such models are sometimes called two and a half dimensional since a 2D cross- section represents a 3D body.
    "},{"location":"glossary/#b","title":"B","text":"
    • BARLOW POINTS\uff1a The set of Gauss integration points that give the best estimates of the stress for an element. For triangles and tetrahedra these are the full Gauss integration points. For quadrilateral and brick elements they are the reduced Gauss points.
    • BASIS SPACE\uff1a When an element is being constructed it is derived from a simple regular shape in non-dimensional coordinates. The coordinates used to define the simple shape form the basis space. In its basis space a general quadrilateral is a 2\u00d72 square and a general triangle is an isosceles triangle with unit side lengths.
    • BEAM ELEMENT: A line element that has both translational and rotational degrees of freedom. It represents both membrane and bending actions.
    • BENDING: Bending behavior is where the strains vary linearly from the centerline of a beam or center surface of a plate or shell.There is zero strain on the centerline for pure bending. Plane sections are assumed to remain plane. If the stresses are constant normal to the centerline then this is called membrane behavior.
    • BENDING STRESS: A compressive and/or tensile stress resulting from the application of a nonaxial force to a structural member.
    • BODY FORCE VECTOR: Mechanical loadings within the interior of the volume, typically inertia loadings in a stiffness analysis.
    • BOUNDARY CONDITIONS: The boundary conditions of a function are values of the function at the edge of the range of some of its variables. Knowledge of some of the boundary conditions is needed to solve an engineering problem or to find an unknown function.
    • BOUNDARY ELEMENT/INTEGRAL: A method of solving differential equations by taking exact solutions to the field equations loaded by a point source and then finding the strengths of sources distributed around the boundary of the body required to satisfy the boundary conditions on the body.
    • BUBBLE FUNCTIONS: Element shape functions that are zero along the edges of the element. They are non-zero within the interior of the element.
    • BUCKLING (SNAP THROUGH): The situation where the elastic stiffness of the structure is cancelled by the effects of compressive stress within the structure. If the effect of this causes the structure to suddenly displace a large amount in a direction normal to the load direction then it is classical bifurcation buckling. If there is a sudden large movement in the direction of the loading it is snap through buckling.
    "},{"location":"glossary/#c","title":"C","text":"
    • CAE: computer aided engineering.
    • CENTRAL DIFFERENCE METHOD: A method for numerically integrating second order dynamic equations of motion. It is widely used as a technique for solving non-linear dynamic problems.
    • CHARACTERISTIC VALUE: Same as the eigenvalue.
    • CHARACTERISTIC VECTOR: Same as the eigenvector.
    • CHOLESKY FACTORISATION (SKYLINE): A method of solving a set of simultaneous equations that is especially well suited to the finite element method. It is sometimes called a skyline solution. Choose to optimize the profile o f the matrix if a renumbering scheme is used.
    • COEFFICIENT OF VISCOUS DAMPING: The system parameter relating force to velocity.
    • COMPATIBILITY OF STRAINS: Compatibility of strain is satisfied if strains that are continuous before loading are continuous after.
    • COMPLETE DISPLACEMENT FIELD: When the functions interpolating the field variable (typically the displacements) form a complete nth order polynomial in all directions.
    • COMPLEX EIGENVALUES: The eigenvectors of a damped system. For proportionally damped systems they are the same as the undamped eigenvectors. For non-proportionally damped systems with damping in all modes less th an critical they are complex numbers and occur as complex conjugate pairs.
    • COMPLEX EIGENVECTORS: The eigenvalues of any damped system. If the damping is less than critical they will occur as complex conjugate pairs even for proportionally damped systems. The real part of the complex eigenvalue is a measure of the damping in the mode and should always be negative. The imaginary part is a measure of the resonant frequency.
    • COMPOSITE MATERIAL: A material that is made up of discrete components, typically a carbon-epoxy composite material or a glass-fiber material. Layered material and foam materials are also forms of composite materials.
    • COMPUTATIONAL FLUID DYNAMICS (CFD): A computer-based numerical study of turbulent fluid flow using approximate methods such as the finite element method, the fine difference method, the boundary element method, the finite volume methods, and so on.
    • CONDITION NUMBER: The ratio of the highest eigenvalue to the lowest eigenvalue of a matrix. The exponent of this number gives a measure of the number of digits required in the computation to maintain numerical accuracy. The higher the condition number the more chance of numerical error and the slower the rate of convergence for iterative solutions.
    • CONDITIONAL/UNCONDITIONAL STABILITY: Any scheme for numerically integrating dynamic equations of motion in a step-by- step form is conditionally stable if there is a maximum time step value that can be used. It is unconditionally stable (but not necessarily accurate) if any length of time step can be used.
    • CONJUGATE GRADIENT METHOD: A method for solving simultaneous equations iteratively. It is closely related to the Lanczos method for finding the first few eigenvalues and eigenvectors of a set of equations.
    • CONSISTENT DISPLACEMENTS AND FORCES: The displacements and forces act at the same point and in the same direction so that the sum of their products give a work quantity. If consistent displacements and forces are used the resulting stiffness and mass matrices are symmetric.
    • CONSTANT STRAIN CONSTANTSTRESS: For structural analysis an element must be able to reproduce a state of constant stress and strain under a suitable loading to ensure that it will converge to the correct solution. This is tested for using the patch test.
    • CONSTITUTIVE RELATIONSHIPS: The equations defining the material behavior for an infinitesimal volume of material. For structures these are the stress -strain laws and include Hookes law for elasticity and the Prandle-Reuss equations for plasticity.
    • CONSTRAINT EQUATIONS (MULTI POINT CONSTRAINTS): If one group of variables can be defined in terms of another group then the relationship between the two are constraint equations. Typically the displacements on the face of an element can be constrained to remain plane but the plane itself can move.
    • CONSTRAINTS: Known values of, or relationships between, the displacements in the coordinate system.
    • CONTACT PROBLEMS: A contact problem occurs when two bodies that are originally apart can come together, or two bodies that are originally connected can separate.
    • CONTINUOUS MASS MODELS: The system mass is distributed between the degrees of freedom. The mass matrix is not diagonal.
    • CONTOUR PLOTTING: A graphical representation of the variation of a field variable over a surface, such as stress, displacement, or temperature. A contour line is a line of constant value for the variable. A contour band is an area of a single color for values of the variable within two limit values.
    • CONVERGENCE REQUIREMENTS: For a structural finite element to converge as the mesh is refined it must be able to represent a state of constant stress and strain free rigid body movements exactly. There are equivalent requirements for other problem types.
    • CRANK-NICHOLSON SCHEME: A method for numerically integrating first order dynamic equations of motion. It is widely used as a technique for solving thermal transient problems.
    • CRITICAL ENERGY RELEASE: This is a material property defining the minimum energy that a propagating crack must release in order for it to propagate. Three critical energies, or modes of crack propagation, have been identified. Mode 1 is the two surfaces of the crack moving apart. Mode 2 is where the two surfaces slide from front to back. Mode 3 is where the to surfaces slide sideways.
    • CRITICALLY DAMPED SYSTEM CRITICAL DAMPING: The dividing line between under damped and over damped systems where the equation of motion has a damping value that is equal to the critical damping.
    • CYCLIC SYMMETRY: A generalization of axisymmetry. The structure is composed of a series of identical sectors that are arranged circumferentially to form a ring. A turbine disc with blades attached is atypical example.
    "},{"location":"glossary/#d","title":"D","text":"
    • DAMPED EIGENVALUES: Same as complex eigenvalues.
    • DAMPED EIGENVECTORS: Same as complex eigenvectors.
    • DAMPED NATURAL FREQUENCY: The frequency at which the damped system vibrates naturally when only an initial disturbance is applied.
    • DAMPING: Any mechanism that dissipates energy in a vibrating system.
    • DAMPING FACTOR (DECAY FACTOR): The damping factor is the ratio of the actual damping to the critical damping. It is often specified as a percentage. If the damping factor is less than one then the system can undergo free vibrations. The free vibrations will decay to zero with time. If the damping factor is greater than one then the decay is exponential and no vibrations occur. For most structures the damping factor is very small.
    • DEGENERATE ELEMENTS: Elements that are defined as one shape in the basis space but they are a simpler shape in the real space. A quadrilateral can degenerate into a triangle. A brick element can degenerate into a wedge, a pyramid or a tetrahedron. Degenerate elements should be avoided in practice.
    • DEGREES OF FREEDOM: The number of equations of equilibrium for the system. In dynamics, the number of displacement quantities which must be considered in order to represent the effects of all of the significant inertia forces. Degrees of freedom define the ability of a given node to move in any direction in space. There are six types of DOF for any given node: 3 possible translations (one each in the X,Y and Z directions) and 3 possible rotations (one rotation about each of the X,Y, and X axes). DOF are defined and restricted by the elements and constraints associated with each node.
    • DET(J) DET J: The Jacobian matrix is used to relate derivatives in the basis space to the real space. The determinant of the Jacobian \u2013 det(j) -is a measure of the distortion of the element when mapping from the basis to the real space.
    • DEVIATORIC STRESS STRESS DEVIATORS: A measure of stress where the hydrostatic stress has been subtracted from the actual stress. Material failures that are flow failures (plasticity and creep) fail independently of the hydrostatic stress. The failure is a function of the deviatoric stress.
    • DIAGONAL GENERALIZED MATRIX: The eigenvectors of a system can be used to define a coordinate transformation such that, in these generalized coordinates the coefficient matrices (typically mass and stiffness) are diagonal.
    • DIE-AWAY LENGTH: If there is a stress concentration in a structure the high stress will reduce rapidly with distance from the peak value. The distance over which it drops to some small value is called the die-away length. A fine mesh is required over this die-away length for accurate stress results.
    • DIRECT INTEGRATION: The name for various techniques for numerically integrating equations of motion. These are either implicit or explicit methods and include central difference, Crank-Nicholson, Runge-Kutta, Newmark beta and Wilson theta.
    • DISCRETE PARAMETER MODELS (DISCRETISED APPROACH): The model is defined in terms of an ordinary differential equation and the system has a finite number of degrees of freedom.
    • DISCRETIZATION: The process of dividing geometry into smaller pieces (finite elements) to prepare for analysis, i.e. Meshing.
    • DISPLACEMENT METHOD (DISPLACEMENT SOLUTION) :A form of discrete parameter model where the displacements of the system are the basic unknowns.
    • DISPLACEMENT: The distance, translational and rotational, that a node travels from its initial position to its post-analysis position. The total displacement is represented by components in each of the 3 translational directions and the 3 rotational directions.
    • DISPLACEMENT PLOTS: Plots showing the deformed shape of the structure. For linear small deflection problems the displacements are usually multiplied by a magnifying factor before plotting the deformed shape.
    • DISPLACEMENT VECTOR: The nodal displacements written as a column vector.
    • DOMAIN: In mathematics, a domain is the set of independent variables for which a function is defined. In finite element analysis, a domain is a continuous system (region) over which the laws of physics govern. In structural engineering, a domain could be a beam or a complete building frame. In mechanical engineering, a domain could be a piece of machine parts or a thermal field.

    • DRUCKER-PRAGER EQUIVALENT STRESSES: An equivalent stress measure for friction materials (typically sand). The effect of hydrostatic stress is included in the equivalent stress.

    • DYNAMIC ANALYSIS: An analysis that includes the effect of the variables changing with time as well as space.

    • DYNAMIC FLEXIBILITY MATRIX: The factor relating the steady state displacement response of a system to a sinusoidal force input. It is the same as the recep tance.

    • DYNAMIC MODELLING: A modeling process where consideration as to time effects in addition to spatial effects are included. A dynamic model can be the same as a static model or it can differ significantly depending upon the nature of the problem.
    • DYNAMIC RESPONSE: The time dependent response of a dynamic system in terms of its displacement, velocity or acceleration at any given point of the system.
    • DYNAMIC STIFFNESS MATRIX: If the structure is vibrating steadily at a frequency w then the dynamic stiffness is (K+iwC w2M) It is the inverse of the dynamic flexibility matrix.
    • DYNAMIC STRESSES\uff1aStresses that vary with time and space.
    • DYNAMIC SUBSTRUCTURING\uff1a Special forms of substructuring used within a dynamic analysis. Dynamic substructuring is always approximate and causes some loss of accuracy in the dynamic solution.
    "},{"location":"glossary/#e","title":"E","text":"
    • EIGENVALUE PROBLEM\uff1a Problems that require calculation of eigenvalues and eigenvectors for their solution. Typically solving free vibration problems or finding buckling loads.
    • ELASTIC FOUNDATION\uff1a If a structure is sitting on a flexible foundation the supports are treated as a continuous elastic foundation. The elastic foundation can have a significant effect upon the structural response.
    • ELASTIC STIFFNESS\uff1a If the relationship between loads and displacements is linear then the problem is elastic. For a multi-degree of freedom system the forces and displacements are related by the elastic stiffness matrix.
    • ELECTRIC FIELDS\uff1a Electro-magnetic and electro-static problems form electric field problems.
    • ELEMENT\uff1a An element is a portion of the problem domain, and is typically some simple shape like a triangle or quadrilateral in 2D, or tetrahedron or hex solid in 3D.

    • ELEMENT ASSEMBLY\uff1a Individual element matrices have to be assembled into the complete stiffness matrix. This is basically a process of summing the element matrices. This summation has to be of the correct form. For the stiffness method the summation is based upon the fact that element displacements at common nodes must be the same.

    • ELEMENT STRAINS/STRESSES\uff1a Stresses and strains within elements are usually defined at the Gauss points (ideally at the Barlow points) and the node points. The most accurate estimates are at the reduced Gauss points (more specifically the Barlow points). Stresses and strains are usually calculated here and extrapolated to the node points.
    • ENERGY METHODS HAMILTONS PRINCIPLE\uff1a Methods for defining equations of equilibrium and compatibility through consideration of possible variations of the energies of the system. The general form is Hamiltons principle and sub-sets of this are the principle of virtual work including the principle of virtual displacements (PVD) and the principle of virtual forces (PVF).
    • ENGINEERING/MATHEMATICAL NORMALIZATION\uff1a Each eigenvector (mode shape or normal mode) can be multiplied by an arbitrary constant and still satisfy the eigenvalue equation. Various methods of scaling the eigenvector are used Engineering normalization -The vector is scaled so that the largest absolute value of any term in the eigenvector is unity. This is useful for inspecting printed tables of eigenvectors. Mathematical normalization -The vector is scaled so that the diagonal modal mass matrix is the unit matrix. The diagonal modal stiffness matrix is the system eigenvalues. This is useful for response calculations.
    • EQUILIBRIUM EQUATIONS\uff1aInternal forces and external forces must balance. At the infinitesimal level the stresses and the body forces must balance. The equations of equilibrium define these force balance conditions.
    • EQUILIBRIUM FINITE ELEMENTS\uff1a Most of the current finite elements used for structural analysis are defined by assuming displacement variations over the element. An alternative approach assumes the stress variation over the element. This leads to equilibrium finite elements.
    • EQUIVALENT MATERIAL PROPERTIES\uff1a Equivalent material properties are defined where real material properties are smeared over the volume of the element. Typically, for composite materials the discrete fiber and matrix material properties are smeared to give average equivalent material properties.
    • EQUIVALENT STRESS\uff1a A three dimensional solid has six stress components. If material properties have been found experimentally by a uniaxial stress test then the real stress system is related to this by combining the six stress components to a single equivalent stress. There are various forms of equivalent stress for different situations. Common ones are Tresca, Von-Mises, Mohr-Coulomb and Drucker-Prager.
    • EULERIAN/LAGRANGIAN METHOD\uff1a For non-linear large deflection problems the equations can be defined in various ways. If the material is flowing though a fixed grid the equations are defined in Eulerian coordinates. Here the volume of the element is constant but the mass in the element can change. If the grid moves with the body then the equations are defined in Lagrangian coordinates. Here the mass in the element is fixed but the volume changes.
    • EXACT SOLUTIONS\uff1a Solutions that satisfy the differential equations and the associated boundary conditions exactly. There are very few such solutions and they are for relatively simple geometries and loadings.
    • EXPLICIT/IMPLICIT METHOD\uff1a These are methods for integrating equations of motion. Explicit methods can deal with highly non-linear systems but need small steps. Implicit methods can deal with mildly nonlinear problems but with large steps.
    • EXTRAPOLATION INTERPOLATION\uff1a The process of estimating a value of a variable from a tabulated set of values. For interpolation values inside the table are estimated. For extrapolation values outside the table are estimated. Interpolation is generally accurate and extrapolation is only accurate for values slightly outside the table. It becomes very inaccurate for other cases.
    "},{"location":"glossary/#f","title":"F","text":"
    • FACETED GEOMETRY\uff1a If a curved line or surface is modeled by straight lines or flat surfaces then the modeling is said to produce a faceted geometry.
    • FAST FOURIER TRANSFORM\uff1a A method for calculating Fourier transforms that is computationally very efficient.
    • FIELD PROBLEMS\uff1a Problems that can be defined by a set of partial differential equations are field problems. Any such problem can be solved approximately by the finite element method.
    • FINITE DIFFERENCES\uff1a A numerical method for solving partial differential equations by expressing them in a difference form rather than an integral form. Finite difference methods are very similar to finite element methods and in some cases are identical.
    • FINITE ELEMENT MODELING (FEM)\uff1a The process of setting up a model for analysis, typically involving graphical generation of the model geometry, meshing it into finite elements, defining material properties, and applying loads and boundary conditions.
    • FINITE VOLUME METHODS\uff1a A technique related to the finite element method. The equations are integrated approximately using t he weighted residual method, but a different form of weighting function is used from that in the finite element method. For the finite element method the Galerkin form of the weighted residual method is used.
    • FIXED BOUNDARY CONDITIONS\uff1a All degrees of freedom are restrained for this condition. The nodes on the fixed boundary can not move: translation or rotation.
    • FLEXIBILITY MATRIX FORCE METHOD\uff1a The conventional form of the finite element treats the displacements as unknowns, which leads to a stiffness matrix form. Alternative methods treating the stresses (internal forces) as unknowns lead to force methods with an associated flexibility matrix. The inverse of the stiffness matrix is the flexibility matrix.
    • FORCED RESPONSE\uff1a The dynamic motion results from a time varying forcing function.
    • FORCING FUNCTIONS\uff1a The dynamic forces that are applied to the system.
    • FOURIER EXPANSIONS FOURIER SERIES\uff1a Functions that repeat themselves in a regular manner can be expanded in terms of a Fourier series.
    • FOURIER TRANSFORM\uff1a A method for finding the frequency content of a time varying signal. If the signal is periodic it gives the same result as the Fourier series.
    • FOURIER TRANSFORM PAIR\uff1aThe Fourier transform and its inverse which, together, allow the complete system to be transformed freely in either direction between the time domain and the frequency domain.
    • FRAMEWORK ANALYSIS\uff1a If a structure is idealized as a series interconnected line elements then this forms a framework analysis model. If the connections between the line elements a re pins then it is a pin-jointed framework analysis. If the joints are rigid then the lines must be beam elements.
    • FREE VIBRATION\uff1a The dynamic motion which results from specified initial conditions. The forcing function is zero.
    • FREQUENCY DOMAIN\uff1a The structures forcing function and the consequent response is defined in terms of their frequency content. The inverse Fourier transform of the frequency domain gives the corresponding quantity in the time domain.
    • FRONTAL SOLUTION WAVEFRONT SOLUTION\uff1a A form of solving the finite element equations using Gauss elimination that is very efficient for the finite element form of equations.
    "},{"location":"glossary/#g","title":"G","text":"
    • GAP/CONTACT ELEMENT: These are special forms of non-linear element that have a very high stiffness in compression and a low stiffness in tension. They are used to model contact conditions between surfaces. Most of these elements also contain a model for sliding friction between the contacting surfaces. Some gap elements are just line springs between points and others are more general forms of quadrilateral or brick element elements. The line spring elements should only be used in meshes of first order finite elements.
    • GAUSS POINT EXTRAPOLATION GAUSS POINT STRESSES: Stresses calculated internally within the element at the Gauss integration points are called the Gauss point stresses. These stresses are usually more accurate at these points than the nodal points.

    • GAUSS POINTS GAUSS WEIGHTS: The Gauss points are the sample points used within the elements for the numerical integration of the matrices and loadings. They are also the points at which the stresses can be recovered. The Gauss weights are associated factors used in the numerical integration process. They represent the volume of influence of the Gauss points. The positions of the Gauss points, together with the associated Gauss weights, are available in tables for integrations of polynomials of various orders.

    • GAUSSIAN ELIMINATION: A form of solving a large set of simultaneous equations. Within most finite element systems a form of Gaussian elimination forms the basic solution process.
    • GAUSSIAN INTEGRATION GAUSSIAN QUADRATURE: A form of numerically integrating functions that is especially efficient for integrating polynomials. The functions are evaluated at the Gauss points, multiplied by the Gauss weights and summed to give the integral.
    • GENERALIZED COORDINATES: A set of linearly independent displacement coordinates which are consistent with the constraints and are just sufficient to describe any arbitrary configuration of the system. Generalized coordinates are usually patterns of displacements, typically the system eigenvectors.
    • GENERALIZED MASS: The mass associated with a generalized displacement.
    • GENERALIZED STIFFNESS: The stiffness associated with a generalized displacement.
    • GEOMETRIC PROPERTIES: Various shape dependent properties of real structures, such as thickness, cross sectional area, sectional moments of inertia, centroid location and others that are applied as properties of finite elements.
    • GEOMETRIC/STRESS STIFFNESS: The component of the stiffness matrix that arises from the rotation of the internal stresses in a large deflection problem. This stiffness is positive for tensile stresses and negative for compressive stresses. If the compressive stresses are sufficiently high then the structure will buckle when the geometric stiffness cancels the elastic stiffness.
    • GEOMETRICAL ERRORS: Errors in the geometrical representation of the model. These generally arise from the approximations inherent in the finite element approximation.
    • GLOBAL STIFFNESS MATRIX: The assembled stiffness matrix of the complete structure.

    • GROSS DEFORMATIONS: Deformations sufficiently high to make it necessary to include their effect in the solution process. The problem requires a large deflection non-linear analysis.

    • GOVERNING EQUATIONS: The governing equations for a system are the equations derived from the physics of the system. Many engineering systems can be described by governing equations, which determine the system's characteristics and behaviors.
    • GUARD VECTORS: The subspace iteration (simultaneous vector iteration) method uses extra guard vectors in addition to the number of vectors requested by the user. These guard the desired vectors from being contaminated by the higher mode vectors and speed up convergence.
    • GUI: GUI stands for graphical user interface, which provides a visual tool to build a finite element model for a domain with complex geometry and boundary conditions.
    "},{"location":"glossary/#h","title":"H","text":"
    • HARDENING STRUCTURE: A structure where the stiffness increases with load.
    • HARMONIC LOADING: A dynamic loading that is periodic and can be represented by a Fourier series.
    • HEAT CONDUCTION: The analysis of the steady state heat flow within solids and fluids. The equilibrium balance between internal and external heat flows.
    • HERMITIAN SHAPE FUNCTIONS: Shape functions that provide both variable and variable first derivative continuity (displacement and slope continuity in structural terms) across element boundaries.
    • HEXAHEDRON ELEMENTS: Type of 3D element which has six quadrilateral faces.
    • HIGH/LOW ASPECT RATIO: The ratio of the longest side length of a body to the shortest is termed its aspect ratio. Generally bodies with high aspect ratios (long and thin) are more ill conditioned for numerical solution than bodies with an aspect ratio of one.
    • HOOKES LAW: The material property equations relating stress to strain for linear elasticity. They involve the material properties of Young\u2019s modulus and Poisson ratio.
    • HOURGLASS MODE: Zero energy modes of low order quadrilateral and brick elements that arise from using reduced integration. These modes can propagate through the complete body.
    • H-CONVERGENCE: Convergence towards a more accurate solution by subdividing the elements into a number of smaller elements. This approach is referred to as H-convergence because of improved discretization due to reduced element size.
    • H-METHOD: A finite element method which requires an increasing number of elements to improve the solution.
    • H/P-REFINEMENT: Making the mesh finer over parts or all of the body is termed h-refinement. Making the element order higher is termed p-refinement.
    • HYBRID ELEMENTS: Elements that use stress interpolation within their volume and displacement interpolation around their boundary.
    • HYDROSTATIC STRESS: The stress arising from a uniform pressure load on a cube of material. It is the average value of the direct stress components at any point in the body.
    • HYSTERETIC DAMPING: A damping model representing internal material loss damping. The energy loss per unit cycle is independent of frequency. It is only valid for harmonic response.
    "},{"location":"glossary/#i","title":"I","text":"
    • ILL-CONDITIONING ERRORS: Numerical (rounding) errors that arise when using ill-conditioned equations.
    • ILL-CONDITIONING ILL-CONDITIONED EQUATIONS: Equations that are sensitive to rounding errors in a numerical operation. The numerical operation must also be defined. Equations can be ill conditioned for solving simultaneous equations but not for finding eigenvalues.
    • IMPULSE RESPONSE FUNCTION: The response of the system to an applied impulse.
    • IMPULSE RESPONSE MATRIX: The matrix of all system responses to all possible impulses. It is always symmetric for linear systems. It is the inverse Fourier transform of the dynamic flexibility matrix.
    • INCREMENTAL SOLUTION: A solutions process that involves applying the loading in small increments and finding the equilibrium conditions at the end of each step. Such solutions are generally used for solving non-linear problems.
    • INELASTIC MATERIAL BEHAVIOR: A material behavior where residual stresses or strains can remain in the body after a loading cycle, typically plasticity and creep.
    • INERTANCE (ACCELERANCE): The ratio of the steady state acceleration response to the value of the forcing function for a sinusoidal excitation.
    • INERTIA FORCE: The force that is equal to the mass times the acceleration.
    • INITIAL BUCKLING: The load at which a structure first buckles.
    • INITIAL STRAINS: The components of the strains that are non-elastic. Typically thermal strain and plastic strain.
    • INTEGRATION BY PARTS: A method of integrating a function where high order derivative terms are partially integrated to reduce their order.
    • INTERPOLATION FUNCTIONS SHAPE FUNCTIONS: The polynomial functions used to define the form of interpolation within an element. When these are expressed as interpolations associated with each node they become the element shape functions.
    • ISOPARAMETRIC ELEMENT: Elements that use the same shape functions (interpolations) to define the geometry as were used to define the displacements. If these elements satisfy the convergence requirements of constant stress representation and strain free rigid body motions for one geometry then it will satisfy the conditions for any geometry.
    • ISOTROPIC MATERIAL: Materials where the material properties are independent of the co-ordinate system.
    "},{"location":"glossary/#j","title":"J","text":"
    • JACOBI METHOD: A method for finding eigenvalues and eigenvectors of a symmetric matrix.
    • JACOBIAN MATRIX: A square matrix relating derivatives of a variable in one coordinate system to the derivatives of the same variable in a second coordinate system. It arises when the chain rule for differentiation is written in matrix form.
    • J-INTEGRAL METHODS: A method for finding the stress intensity factor for fracture mechanics problems.
    • JOINTS: The interconnections between components. Joints can be difficult to model in finite element terms but they can significantly affect dynamic behavior.
    "},{"location":"glossary/#k","title":"K","text":"
    • KINEMATIC BOUNDARY CONDITIONS: The necessary displacement boundary conditions for a structural analysis. These are the essential boundary conditions in a finite element analysis.
    • KINEMATICALLY EQUIVALENT FORCES (LOADS): A method for finding equivalent nodal loads when the actual load is distributed over a surface of a volume. The element shape functions are used so that the virtual work done by the equivalent loads is equal to the virtual work done by the real loads over the same virtual displacements. This gives the most accurate load representation for the finite element model. These are the non-essential stress boundary conditions in a finite element analysis.
    • KINEMATICALLY EQUIVALENT MASS: If the mass and stiffness are defined by the same displacement assumptions then a kinematically equivalent mass matrix is produced. This is not a diagonal (lumped) mass matrix.
    • KINETIC ENERGY: The energy stored in the system arising from its velocity. In some cases it can also be a function of the structural displacements.
    "},{"location":"glossary/#l","title":"L","text":"
    • LAGRANGE INTERPOLATION LAGRANGE SHAPE FUNCTIONS\uff1a A method of interpolation over a volume by means of simple polynomials. This is the basis of most of the shape function definitions for elements.
    • LAGRANGE MULTIPLIER TECHNIQUE\uff1a A method for introducing constraints into an analysis where the effects of the constraint are represented in terms of the unknown Lagrange multiplying factors.
    • LANCZOS METHOD\uff1a A method for finding the first few eigenvalues and eigenvectors of a set of equations. It is very well suited to the form of equations generated by the finite element method. It is closely related to the method of conjugate gradients used for solving simultaneous equations iteratively.
    • LEAST SQUARES FIT\uff1a Minimization of the sum of the squares of the distances between a set of sample points and a smooth surface . The finite element method gives a solution that is a least squares fit to the equilibrium equations.
    • LINEAR DEPENDENCE\uff1a One or more rows (columns) of a matrix are linear combinations of the other rows (columns). This means that the matrix is singular.
    • LINEAR ANALYSIS\uff1a Linear Finite Element Analysis is based on the following assumptions: (1) Static; (2) Small displacements; (3) Material is linearly elastic.
    • LINEAR SYSTEM\uff1a When the coefficients of stiffness, mass and damping are all constant then the system is linear. Superposition can be used to solve the response equation.
    • LOADINGS\uff1aThe loads applied to a structure that result in deflections and consequent strains and stresses.
    • LOCAL STRESSES\uff1a Areas of stress that are significantly different from (usually higher than) the general stress level.
    • LOWER BOUND SOLUTION UPPER BOUND SOLUTION\uff1a The assumed displacement form of the finite element solution gives a lower bound on the maximum displacements and strain energy (i.e. these are under estimated) for a given set of forces. This is the usual form of the finite element method. The assumed stress form of the finite element solution gives an upper bound on the maximum stresses and strain energy (i.e. these are over estimated) for a given set of displacements.
    • LUMPED MASS MODEL: When the coefficients of the mass matrix are combined to produce a diagonal matrix. The total mass and the position of the structures center of gravity are preserved.
    "},{"location":"glossary/#m","title":"M","text":"
    • MASS: The constant(s) of proportionality relating the acceleration(s) to the force(s). For a discrete parameter multi degree of freedom model this is usually given as a mass matrix.
    • MASS ELEMENT: An element lumped at a node representing the effect of a concentrated mass in different coordinate directions.
    • MASS MATRIX: The matrix relating acceleration to forces in a dynamic analysis. This can often be approximated as a diagonal matrix with no significant loss of accuracy.
    • MASTER FREEDOMS: The freedoms chosen to control the structural response when using a Guyan reduction or sub structuring methods.
    • MATERIAL LOSS FACTOR: A measure of the damping inherent within a material when it is dynamically loaded.
    • MATERIAL PROPERTIES: The physical properties required to define the material behavior for analysis purposes. For stress analysis typical required material properties are Young\u2019s modulus, Poisson\u2019s ratio, density and coefficient of linear expansion. The material properties must have been obtained by experiment.
    • MATERIAL STIFFNESS MATRIX MATERIAL FLEXIBILITY MATRIX: The material stiffness matrix allows the stresses to be found from a given set of strains at a point. The material flexibility is the inverse of this, allowing the strains to be found from a given set of stresses. Both of these matrices must be symmetric and positive definite.
    • MATRIX DISPLACEMENT METHOD: A form (the standard form) of the finite element method where displacements are assumed over the element. This gives a lower bound solution.
    • MATRIX FORCE METHOD: A form of the finite element method where stresses (internal forces) are assumed over the element. This gives an upper bound solution.
    • MATRIX INVERSE: If matrix A times matrix B gives the unit matrix then A is the inverse of B (B is the inverse of A). A matrix has no inverse if it is singular.
    • MATRIX NOTATION MATRIX ALGEBRA: A form of notation for writing sets of equations in a compact manner. Matrix notation highlights the generality of various classes of problem formulation and solution. Matrix algebra can be easily programmed on a digital computer.
    • MATRIX PRODUCTS: Two matrices A and B can be multiplied together if A is of size (j*k) and B is of size (k*l). The resulting matrix is of size (j*l).
    • MATRIX TRANSPOSE: The process of interchanging rows and columns of a matrix so that the j\u2019th column becomes the j\u2019th row.
    • MEAN SQUARE CONVERGENCE: A measure of the rate of convergence of a solution process. A mean square convergence indicates a rapid rate of convergence.
    • MEMBRANE: Membrane behavior is where the strains are constant from the center line of a beam or center surface of a plate or shell. Plane sections are assumed to remain plane. A membrane line element only has stiffness along the line, it has zero stiffness normal to the line. A membrane plate has zero stiffness normal to the plate. This can cause zero energy (no force required) displacements in these normal directions. If the stresses vary linearly along the normal to the centerline then this is called bending behavior.

    • Mesh (Grid): The elements and nodes, together, form a mesh (grid), which is the central data structure in FEA.

    • MESH DENSITY MESH REFINEMENT: The mesh density indicates the size of the elements in relation to the size of the body being analyzed. The mesh density need not be uniform all over the body There can be areas of mesh refinement (more dense meshes) in some parts of the body. Making the mesh finer is generally referred to as h -refinement. Making the element order higher is referred to as p -refinement.
    • MESH GENERATION ELEMENT GENERATION: The process of generating a mesh of elements over the structure. This is normally done automatically or semi-automatically.
    • MESH SPECIFICATION: The process of choosing and specifying a suitable mesh of elements for an analysis.
    • MESH SUITABILITY: The appropriate choice of element types and mesh density to give a solution to the required degree of accuracy.
    • MINDLIN ELEMENTS: A form of thick shell element.
    • MOBILITY: The ratio of the steady state velocity response to the value of the forcing function for a sinusoidal excitation.
    • MODAL DAMPING: The damping associated with the generalized displacements defined by the eigenvectors. Its value has no physical significance since the eigenvector contains an arbitrary normalizing factor.
    • MODAL MASS: The mass associated with the generalized displacements defined by the eigenvectors. Its value has no physical significance since the eigenvector contains an arbitrary normalizing factor but the ratio of modal stiffness to modal mass is always the eigenvalue.
    • MODAL STIFFNESS: The stiffness associated with the generalized displacements defined by the eigenvectors. Its value has no physical significance since the eigenvector contains an arbitrary normalizing factor but the ratio of modal stiffness to modal mass is always the eigenvalue.
    • MODAL TESTING: The experimental technique for measuring resonant frequencies (eigenvalues) and mode shapes (eigenvectors).
    • MODE PARTICIPATION FACTOR: The generalized force in each modal equation of a dynamic system.
    • MODE SHAPE: Same as the e igenvector. The mode shape often refers to the measure mode, found from a modal test.
    • MODELLING: The process of idealizing a system and its loading to produce a numerical (finite element) model.
    • MODIFIED NEWTON-RAPHSON: A form of the Newton-Raphson process f or solving non-linear equations where the tangent stiffness matrix is held constant for some steps. It is suitable for mildly non-linear problems.
    • MOHR COULOMB EQUIVALENT STRESS: A form of equivalent stress that includes the effects of friction in granular (e.g. sand) materials.
    • MULTI DEGREE OF FREEDOM: The system is defined by more than one force/displacement equation.
    • MULTI-POINT CONSTRAINTS: Where the constraint is defined by a relationship between more than one displacement at different node points.
    "},{"location":"glossary/#n","title":"N","text":"
    • NATURAL FREQUENCY: The frequency at which a structure will vibrate in the absence of any external forcing. If a model has n degrees of freedom then it has n natural frequencies. The eigenvalues of a dynamic system are the squares of the natural frequencies.
    • NATURAL MODE: Same as the eigenvector.
    • NEWMARK METHOD NEWMARK BETA METHOD: An implicit solution method for integrating second order equations of motion. It can be made unconditionally stable.
    • NEWTON COTES FORMULAE: A family of methods for numerically integrating a function.
    • NEWTON-RAPHSON NON-LINEAR SOLUTION: A general technique for solving non-linear equations. If the function and its derivative are known at any point then the Newton-Raphson method is second order convergent.
    • NODAL VALUES: The value of variables at the node points. For a structure typical possible nodal values are force, displacement, temperature, velocity, x, y, and z.
    • NODE: A node is a point in the domain, and is often the vertex of several elements. A node is also called a nodal point. computers to generate finite element mesh automatically. There are many different algorithms for automatic mesh generation. Click here to see some automatically generated mesh samples.
    • NON-CONFORMING ELEMENTS: Elements that do not satisfy compatibility either within the element or across element boundaries or both. Such elements are not generally reliable although they might give very good solutions in some circumstances.
    • NON-HOLONOMIC CONSTRAINTS: Constraints that can only be defined at the level of infinitesimal displacements. They cannot be integrated to give global constraints.
    • NON-LINEAR SYSTEM/ANALYSIS: Nonlinear Finite Element Analysis considers material nonlinearity and/or geometric nonlinearity of an engineering system. Geometric nonlinear analysis is also called large deformation analysis.
    • NON-STATIONARY RANDOM: A force or response that is random and its statistical properties vary with time.
    • NON-STRUCTURAL MASS: Mass that is present in the system and will affect the dynamic response but it is not a part of the structural mass (e.g. the payload).
    • NORM: A scalar measure of the magnitude of a vector or a matrix.
    • NUMERICAL INTEGRATION: The process of finding the approximate integral of a function by numerical sampling and summing. In the finite element method the element matrices are usually formed by the Gaussian quadrature form of numerical integration.
    "},{"location":"glossary/#o","title":"O","text":"
    • OPTIMAL SAMPLING POINTS: The minimum number of Gauss points required to integrate an element matrix. Also the Gauss points at which the stresses are most accurate (see reduced Gauss points).
    • OVER DAMPED SYSTEM: A system which has an equation of motion where the damping is greater than critical. It has an exponentially decaying, non-oscillatory impulse response.
    • OVERSTIFF SOLUTIONS: Lower bound solutions. These are associated with the assumed displacement method.
    "},{"location":"glossary/#p","title":"P","text":"
    • PARTICIPATION FACTOR: The fraction of the mass that is active for a given mode with a given distribution of dynamic loads. Often this is only defined for the specific load case of inertia (seismic) loads.
    • PATCH TEST: A test to prove that a mesh of distorted elements can represent constant stress situations and strain free rigid body motions (i.e. the mesh convergence requirements) exactly.
    • PDEs: partial differential equations.
    • PERIODIC RESPONSE FORCE: A response (force) that regularly repeats itself exactly.
    • PHASE ANGLE: The ratio of the in phase component of a signal to its out of phase component gives the tangent of the phase angle of the signal relative to some reference.
    • PLANE STRAIN/STRESS: A two dimensional analysis is plane stress if the stress in the third direction is assumed zero. This is valid if the dimension of the body in this direction is very small, e.g. a thin plate. A two dimensional analysis is plane strain if the strain in the third direction is assumed zero. This is valid if the dimension of the body in this direction is very large, e.g. a cross- sectional slice of a long body.
    • PLATE BENDING ELEMENTS: Two-dimensional shell elements where the in plane behavior of the element is ignored. Only the out of plane bending is considered.
    • POISSONS RATIO: The material property in Hooke s law relating strain in one direction arising from a stress in a perpendicular direction to this. Poissons' ratio can be defined in WELSIM material module.
    • POST-PROCESSING: The interrogation of the results after the analysis phase. This is usually done with a combination of graphics and numerics.
    • POTENTIAL ENERGY: The energy associated with the static behavior of a system. For a structure this is the strain energy.
    • POWER METHOD: A method for finding the lowest or the highest eigenvalue of a system.
    • PRANDTL-REUSS EQUATIONS: The equations relating an increment of stress to an increment of plastic strain for a metal undergoing plastic flow.
    • PREPROCESSING: The process of preparing finite element input data involving model creation, mesh generation,material definition, and load and boundary condition application.
    • PRIMARY COMPONENT: Those parts of the structure that are of direct interest for the analysis. Other parts are secondary components.
    • PRINCIPAL CURVATURE: The maximum and minimum radii of curvature at a point.
    • PRINCIPAL STRESSES: The maximum direct stress values at a point. They are the eigenvalues of the stress tensor.
    • PROPORTIONAL DAMPING: A damping matrix that is a linear combination of the mass and stiffness matrices. The eigenvectors of a proportionally damped system are identical to those of the undamped system.
    • P-METHOD: A method of finite element analysis that uses P- convergence to iteratively minimize the error of analysis.
    • QR METHOD: A technique for finding eigenvalues. This is currently the most stable method for finding eigenvalues but it is restricted in the size of problem that it can solve.
    • RANDOM VIBRATIONS: The applied loading is only known in terms of its statistical properties. The loading is nondeterministic in that its value is not known exactly at any time but its mean, mean square, variance and other statistical quantities are known.
    "},{"location":"glossary/#r","title":"R","text":"
    • RANK DEFICIENCY: A measure of how singular a matrix is.
    • RAYLEIGH DAMPING: Damping that is proportional to a linear combination of the stiffness and mass. This assumption has no physical basis but it is mathematically convenient to approximate low damping in this way when exact damping values are not known.
    • RAYLELGH QUOTIENT: The ratio of stiffness times displacement squared (2*strain energy) to mass times displacement squared. The minimum values of the Rayleigh quotient are the eigenvalues.
    • REACTION FORCES: The forces generated at support points when a structure is loaded. Reaction force is supported in WELSIM.
    • REFERENCE TEMPERATURE: The reference temperature defines the temperature at which strain in the design does not result from thermal expansion or contraction. For many situations, reference temperature is adequately defined as room temperature. Define reference temperature in the properties of an environment.
    • REDUCED INTEGRATION: If an element requires an l*m*n Gauss rule to integrate the element matrix exactly then (l-1)(m-1)(n-1) is the reduced integration rule. For many elements the stresses are most accurate at the reduced integration points. For some elements the matrices are best evaluated by use of the reduced integration points. Use of reduced integration for integrating the elements can lead to zero energy and hour glassing modes.
    • RESPONSE SPECTRUM METHOD: A method for characterizing a dynamic transient forcing function and the associated solution technique. It is used for seismic and shock type loads.
    • RIGID BODY DEFORMATIONS: A non-zero displacement pattern that h as zero strain energy associate with it.
    • RIGID BODY DISPLACEMENT: A non-zero displacement pattern that has zero strain energy associate with it.
    • RIGID BODY MODES: If a displaced shape does not give rise to any strain energy in the structure then this a rigid body mode. A general three-dimensional unsupported structure has 6 rigid body modes, 3 translation and 3 rotation.
    • RIGID LINKS/OFFSETS: This is a connection between two non-coincident nodes assuming that the connection is infinitely stiff. This allows the degrees of freedom at one of the nodes (the slave node) to be deleted from the system. It is a form of multi-point constraint.
    • ROUNDOFF ERROR: Computers have a fixed word length and hence only hold numbers to a certain number of significant figures. If two close numbers are subtracted one from another then the result loses the first set of significant figures and hence loses accuracy. This is round off error.
    "},{"location":"glossary/#s","title":"S","text":"
    • SECANT STIFFNESS: The stiffness defined by the slope of the line from the origin to the current point of interest on a load/deflection curve.
    • SECONDARY COMPONENTS: Components of a structure not of direct interest but they may have some influence of the behavior of the part of the structure that is of interest (the primary component) and have to be included in the analysis in some approximate form.
    • SEEPAGE FLOW: Flows in porous materials
    • SEISMIC ANALYSIS: The calculation of the dynamic displacement and stress response arising from earthquake excitations.
    • SELECTED REDUCED INTEGRATION: A form of Gaussian quadrature where different sets of Gauss points are used for different strain components.
    • SELF ADJOINT EQUATIONS: A form of matrix products that preserves symmetry of equations. The product A*B*A(transpose) is self -adjoint if the matrix B is symmetric. The result of the product will be symmetric for any form of A that is of a size compatible with B. This form o f equation occurs regularly within the finite element method. Typically it means that for a structural analysis the stiffness (and mass) matrices for any element or element assembly will be symmetric.
    • SELF EQUILIBRATING LOADS: A load set is self -equilibrating if all of its resultants are zero. Both translation and moment resultants are zero.
    • SEMI-LOOF ELEMENT: A form of thick shell element.
    • SHAKEDOWN: If a structure is loaded cyclically and initially undergoes some plastic deformation then it is said to shakedown if the behavior is entirely elastic after a small number of load cycles.
    • SIMULTANEOUS VECTOR ITERATION: A method for finding the first few eigenvalues and eigenvectors of a finite element system. This is also known as subspace vector iteration.
    • SINGLE DEGREE OF FREEDOM: The system is defined by a single force/displacement equation.
    • SINGLE POINT CONSTRAINT: Where the constraint is unique to a single node point.
    • SINGULAR MATRIX: A square matrix that cannot be inverted.
    • SKEW DISTORTION (ANGULAR DISTORTION): A measure of the angular distortion arising between two vectors that are at right angles in the basis space when these are mapped to the real coordinate space. If this angle approaches zero the element becomes ill-conditioned.
    • SOLUTION DIAGNOSTICS: Messages that are generated as the finite element solution progresses. These should always be checked for relevance but the are often only provided for information purposes
    • SOLUTION EFFICIENCY: A comparative measure between two solutions of a given problem defining which is the \u2018best\u2019. The measures can include accuracy, time of solution, memory requirements and disc storage space.
    • SPARSE MATRIX METHODS: Solution methods that exploit the sparse nature of finite element equations. Such methods include the frontal solution and Cholesky (skyline) factorization for direct solutions, conjugate gradient methods for iterative solutions and the Lanczos method and subspace iteration (simultaneous vector iteration) for eigenvalue solutions.
    • SPECTRAL DENSITY: The Fourier transform of the correlation function. In random vibrations it gives a measure of the significant frequency content in a system. White noise has a constant spectral density for all frequencies.
    • SPLINE CURVES: A curve fitting technique that preserves zero, first and second derivative continuity across segment boundaries.
    • STATIC ANALYSIS: Analysis of stresses and displacements in a structure when the applied loads do not vary with time.
    • STATICALLY DETERMINATE STRUCTURE: A structure where all of the unknowns can be found from equilibrium considerations alone.
    • STATICALLY EQUIVALENT LOADS: Equivalent nodal loads that have the same equilibrium resultants as the applied loads but do not necessarily do the same work as the applied loads.
    • STATICALLY INDETERMINATE STRUCTURE REDUNDANT: A structure where all of the unknowns can not be found from equilibrium considerations alone. The compatibility equations must also be used. In this case the structure is said to be redundant.
    • STATIONARY RANDOM EXCITATION: A force or response that is random but its statistical characteristics do not vary with time.
    • STEADY-STATE HEAT TRANSFER: Determination of the temperature distribution of a mechanical part having reached thermal equilibrium with the environmental conditions. There are no time varying changes in the resulting temperatures.
    • STIFFNESS: A set of values which represent the rigidity or softness of a particular element. Stiffness is determined by material type and geometry.
    • STIFFNESS MATRIX: The parameter(s) that relate the displacement(s) to the force(s). For a discrete parameter multi degree of freedom model this is usually given as a stiffness matrix.
    • STRAIN: A dimensionless quantity calculated as the ratio of deformation to the original size of the body.
    • STRAIN ENERGY: The energy stored in the system by the stiffness when it is displaced from its equilibrium position.
    • STRESS: The intensity of internal forces in a body (force per unit area) acting on a plane within the material of the body is called the stress on that plane.
    • STRESS ANALYSIS: The computation of stresses and displacements due to applied loads. The analysis may be elastic, inelastic, time dependent or dynamic.
    • STRESS AVERAGING STRESS SMOOTHING: The process of filtering the raw finite element stress results to obtain the most realistic estimates of the true state of stress.
    • STRESS CONCENTRATION: A local area of the structure where the stresses are significantly higher than the general stress level. A fine mesh of elements is required in such regions if accurate estimates of the stress concentration values are required.
    • STRESS CONTOUR PLOT: A plot of a stress component by a series of color filled contours representing regions of equal stress. WELSIM can plot stress contour.
    • STRESS DISCONTINUITIES/ERROR ESTIMATES: Lines along which the stresses are discontinuous. If the geometry or loading changes abruptly along a line then the true stress can be discontinuous. In a finite element solution the element assumptions means that the stresses will generally be discontinuous across element boundaries. The degree of discontinuity can then be used to form an estimate of the error in the stress within the finite element calculation.
    • STRESS EXTRAPOLATION: The process of taking the stress results at the optimum sampling points for an element and extrapolating these to the element node points.
    • STRESS INTENSITY FACTORS: A measure of the importance of the stress at a sharp crack tip (where the actual stress values will be infinite) used to estimate if the crack will propagate.
    • STRESS/STRAIN VECTOR/TENSOR: The stress (strain) vector is the components of stress (strain) written as a column vector. For a general three dimensional body this is a (6\u00d71) matrix. The components of stress (strain) written in tensor form. For a general three dimensional body this forms a (3\u00d73) matrix with the direct terms down the diagonal and the shear terms as the off-diagonals.
    • STRESS-STRAIN LAW: The material property behavior relating stress to strain. For a linear behavior this is Hookes law (linear elasticity). For elastic plastic behavior it is a combination of Hookes law and the Prandtl-Reuss equations.
    • SUBSPACE VECTOR ITERATION: A method for finding the first few eigenvalues and eigenvectors of a finite element system. This is also known as simultaneous vector iteration.
    • SUBSTRUCTURING: An efficient way of solving large finite element analysis problems by breaking the model into several parts or substructures, analyzing each one individually, and then combining them for the final results.
    • SUBSTRUCTURING SUPER ELEMENT METHOD: Substructuring is a form of equation solution method where the structure is split into a series of smaller structures -the substructures. These are solved to eliminate the internal freedoms and the complete problem solved by only assembling the freedoms on the common boundaries between the substructures. The intermediate solution where the internal freedoms of a substructure have been eliminated gives the super element matrix for the substructure.
    • SURFACE MODELING: The geometric modeling technique in which the model is created in terms of its surfaces only without any volume definition.
    "},{"location":"glossary/#t","title":"T","text":"
    • TEMPERATURE CONTOUR PLOTS: A plot showing contour lines connecting points of equal temperature.
    • TETRAHEDRON/TETRAHEDRAL ELEMENT: A three dimensional four sided solid element with triangular faces.
    • THERMAL CAPACITY: The material property defining the thermal inertia of a material. It relates the rate of change of temperature with time to heat flux.
    • THERMAL CONDUCTIVITY: The material property relating temperature gradient to heat flux. Temperature-dependent thermal conductivity is supported in WELSIM.
    • THERMAL LOADS: The equivalent loads on a structure arising from thermal strains. These in turn arise from a temperature change.
    • THERMAL STRAINS: The components of strain arising from a change in temperature.
    • THERMAL STRESS ANALYSIS: The computation of stresses and displacements due to change in temperature.
    • THIN/THICK SHELL ELEMENT: In a shell element the geometry is very much thinner in one direction than the other two. It can then be assumed stresses can only vary linearly at most in the thickness direction. If the through thickness shear strains can be taken as zero then a thin shell model is formed. This uses the Kirchoff shell theory If the transverse shear strains are not ignored then a thick shell model is formed. This uses the Mindlin shell theory. For the finite element method the thick shell theory generates the most reliable form of shell elements. There are two forms of such elements, the Mindlin shell and the Semi-Loof shell.
    • TIME DOMAIN: The structures forcing function and the consequent response is defined in terms of time histories. The Fourier transform of the time domain gives the corresponding quantity in the frequency domain.
    • TRANSIENT FORCE: A forcing function that varies for a short period of time and then settles to a constant value.
    • TRANSIENT RESPONSE: The component of the system response that does not repeat itself regularly with time.
    • TRANSITION ELEMENT: Special elements that have sides with different numbers of nodes. They are used to couple elements with different orders of interpolation, typically a transition element with two nodes on one edge and three on another is used to couple a 4-node quad to an 8-node quad.
    • TRANSIENT HEAT TRANSFER: Heat transfer problems in which temperature distribution varies as a function of time.
    • TRIANGULAR ELEMENTS: Two dimensional or surface elements that have three edges.
    • TRUSS ELEMENT: A one dimensional line element defined by two nodes resisting only axial loads.
    "},{"location":"glossary/#u","title":"U","text":"
    • ULTIMATE STRESS: The failure stress (or equivalent stress) for the material.
    • UNDAMPED NATURAL FREQUENCY: The square root of the ratio of the stiffness to the mass (the square root of the eigenvalue). It is the frequency at which an undamped system vibrates naturally. A system with n degrees of freedom has n natural frequencies.
    • UNDER DAMPED SYSTEM: A system which has an equation of motion where the damping is less than critical. It has an oscillatory impulse response.
    • UPDATED/TOTAL LAGRANGIAN: The updated Lagrangian coordinate system is one where the stress directions are referred to the last known equilibrium state. The total Lagrangian coordinate system is one where the stress directions are referred to the initial geometry. Both algorithms are supported in WELSIM.
    "},{"location":"glossary/#v","title":"V","text":"
    • VARIABLE BANDWIDTH (SKYLINE): A sparse matrix where the bandwidth is not constant. Some times called a skyline matrix.
    • VIRTUAL DISPLACEMENTS: An arbitrary imaginary change of the system configuration consistent with its constraints.
    • VIRTUAL WORK/DISPLACEMENTS/FORCES: Techniques for using work arguments to establish equilibrium equations from compatibility equations (virtual displacements) and to establish compatibility equations from equilibrium (virtual forces).
    • VISCOUS DAMPING: The damping is viscous when the damping force is proportional to the velocity.
    • VOLUME/VOLUMETRIC DISTORTION: The distortion measured by the determinant of the Jacobian matrix, det J.
    • VON MISES STRESS: An \u201caveraged\u201d stress value calculated by adding the squares of the 3 component stresses (X, Y and Z directions) and taking the square root of their sums. This value allows for a quick method to locate probable problem areas with one plot.
    • VON MISES/TRESCA EQUIVALENT STRESS: Equivalent stress measures to represent the maximum shear stress in a material. These are used to characterize flow failures (e.g. plasticity and creep) in WELSIM. From test results the VonMises form seems more accurate but the Tresca form is easier to handle.
    "},{"location":"glossary/#w","title":"W","text":"
    • WHIRLING STABILITY: The stability of rotating systems where centrifugal and Coriolis are also present.
    • WILSON THETA METHOD: An implicit solution method for integrating second order equations of motion. It can be made unconditionally stable.
    "},{"location":"glossary/#y","title":"Y","text":"
    • YOUNG\u2019S MODULUS: The material property relating a uniaxial stress to the corresponding strain.
    "},{"location":"glossary/#z","title":"Z","text":"
    • ZERO ENERGY/STIFFNESS MODES: Non-zero patterns of displacements that have no energy associated with them. No forces are required to generate such modes, Rigid body motions are zero energy modes. Buckling modes at their buckling loads are zero energy modes. If the elements are not fully integrated they will have zero energy displacement modes. If a structure has one or more zero energy modes then the matrix is singular.
    "},{"location":"license/","title":"License","text":""},{"location":"license/#welsim-license","title":"WELSIM License","text":"

    WELSIM SOFTWARE LICENSE AGREEMENT Copyright (C) 2017-2024 WELSIMULATION LLC Version effective date: August 10, 2017

    READ THIS SOFTWARE LICENSE AGREEMENT CAREFULLY BEFORE PROCEEDING. THIS IS A LEGALLY BINDING CONTRACT BETWEEN LICENSEE AND LICENSOR FOR LICENSEE TO USE THE PROGRAM(S), AND IT INCLUDES DISCLAIMERS OF WARRANTY AND LIMITATIONS OF LIABILITY. WELSIMULATION LLC IS WILLING TO LICENSE THE SOFTWARE ONLY UPON THE CONDITION THAT YOU ACCEPT ALL OF THE TERMS CONTAINED IN THIS SOFTWARE LICENSE AGREEMENT. PLEASE READ THE TERMS CAREFULLY. BY CLICKING ON \"I AGREE\" OR BY INSTALLING THE SOFTWARE, YOU WILL INDICATE YOUR AGREEMENT WITH THEM. IF YOU ARE ENTERING INTO THIS AGREEMENT ON BEHALF OF A COMPANY OR OTHER LEGAL ENTITY, YOUR ACCEPTANCE REPRESENTS THAT YOU HAVE THE AUTHORITY TO BIND SUCH ENTITY TO THESE TERMS, IN WHICH CASE \"YOU\" OR \"YOUR\" SHALL REFER TO YOUR ENTITY. IF YOU DO NOT AGREE WITH THESE TERMS, OR IF YOU DO NOT HAVE THE AUTHORITY TO BIND YOUR ENTITY, THEN WELSIMULATION LLC IS UNWILLING TO LICENSE THE SOFTWARE, AND YOU SHOULD NOT INSTALL THE SOFTWARE.

    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

    THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC LICENSE (\"AGREEMENT\"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.

    This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages or consequences arising from the use of this software.

    1. Parties. The parties to this Agreement are you, the licensee (\"You\") and WELSIMULATION LLC. If You are not acting on behalf of Yourself as an individual, then \"You\" means Your company or organization. A company or organization shall in either case mean a single business entity, and shall not include its affiliates or wholly owned subsidiaries.

    2. The Software. The accompanying materials including, but not limited to, source code, binary executables, documentation, images, and scripts, which are distributed by WELSIMULATION LLC, and derivatives of that collection and/or those files are referred to herein as the \"Software\".

    3. Restrictions. WELSIMULATION LLC encourages You to promote use of the Software. However this Agreement does not grant permission to use the trade names, trademarks, service marks, or product names of WELSIMULATION LLC, except as required for reasonable and customary use in describing the origin of the Software. In particular, You cannot use any of these marks in any way that might state or imply that WELSIMULATION LLC endorses Your work, or might state or imply that You created the Software covered by this Agreement. Except as expressly provided herein, you may not:

      1. modify or translate the Software;
      2. reverse engineer, decompile, or disassemble the Software, except to the extent this restriction is expressly prohibited by applicable law;
      3. create derivative works based on the Software;
      4. merge the Software with another product;
      5. copy the Software; or
      6. remove or obscure any proprietary rights notices or labels on the Software.
    4. Ownership. WELSIMULATION LLC and its suppliers own the Software and all intellectual property rights embodied therein, including copyrights and valuable trade secrets embodied in the Software's design and coding methodology. The Software is protected by United States copyright laws and international treaty provisions. This Agreement provides You only a limited use license, and no ownership of any intellectual property.

    5. Infringement Indemnification. You shall defend or settle, at Your expense, any action brought against WELSIMULATION LLC based upon the claim that any modifications to the Software or combination of the Software with products infringes or violates any third party right; provided, however, that: (i) WELSIMULATION LLC shall notify Licensee promptly in writing of any such claim; (ii) WELSIMULATION LLC shall not enter into any settlement or compromise any such claim without Your prior written consent; (iii) You shall have sole control of any such action and settlement negotiations; and (iv) WELSIMULATION LLC shall provide You with commercially reasonable information and assistance, at Your request and expense, necessary to settle or defend such claim. You agree to pay all damages and costs finally awarded against WELSIMULATION LLC attributable to such claim.

    6. No warranty The program is provided on an 'as is' basis, without warranties or conditions of any kind, either express or implied including, without limitation, any warranties or conditions of title, non-infringement, merchantability or fitness for a particular purpose. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.

    7. Licensee Outside The U.S. If You are located outside the U.S.,then the following provisions shall apply: (i) The parties confirm that this Agreement and all related documentation is and will be in the English language; and (ii) You are responsible for complying with any local laws in your jurisdiction which might impact your right to import, export or use the Software, and You represent that You have complied with any regulations or registration procedures required by applicable law to make this license enforceable.

    8. Assignment. Except as expressly provided herein neither this Agreement nor any rights granted hereunder, nor the use of any of the software may be assigned, or otherwise transferred, in whole or in part, by Licensee, without the prior written consent of WELSIMULATION LLC. WELSIMULATION LLC may assign this Agreement in the event of a merger or sale of all or substantially all of the stock of assets of WELSIMULATION LLC without the consent of Licensee. Any attempted assignment will be void and of no effect unless permitted by the foregoing. This Agreement shall inure to the benefit of the parties permitted successors and assigns.

    9. Miscellaneous. This Agreement constitutes the entire understanding of the parties with respect to the subject matter of this Agreement and merges all prior communications, representations, and agreements. WELSIMULATION LLC reserves the right to change this Agreement at any time, which change shall be effective immediately.

    10. General If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.

    If Recipient institutes patent litigation against a Contributor with respect to a patent applicable to software (including a cross-claim or counterclaim in a lawsuit), then any patent licenses granted by that Contributor to such Recipient under this Agreement shall terminate as of the date such litigation is filed. In addition, if Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 3(b) shall terminate as of the date such litigation is filed.

    All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.

    "},{"location":"misc/","title":"MISC","text":""},{"location":"misc/#comparison-explicit-and-implicit-time-integrations","title":"Comparison explicit and implicit time integrations","text":"\u663e\u5f0f\u7b97\u6cd5 \u9690\u5f0f\u7b97\u6cd5 \u9002\u7528\u95ee\u9898 \u52a8\u529b\u5b66\uff08\u52a8\u6001\uff09 \u9759\u529b\u5b66\uff08\u9759\u6001\uff09\u548c\u52a8\u529b\u5b66\uff08\u52a8\u6001\uff09 \u963b\u5c3c \u4eba\u5de5\u963b\u5c3c \u6570\u503c\u963b\u5c3c \u65f6\u95f4\u6b65\u6c42\u89e3\u65b9\u6cd5 \u77e9\u9635\u4e58\u6cd5 \u7ebf\u6027\u65b9\u7a0b\u7ec4 \u7ec4\u88c5\u521a\u5ea6\u77e9\u9635 \u5426 \u662f \u6570\u636e\u5b58\u50a8\u9700\u6c42 \u5c0f \u5927 \u6bcf\u6b65\u8ba1\u7b97\u901f\u5ea6 \u5feb \u4e2d \u8fed\u4ee3\u6536\u655b\u6027 \u65e0 \u6709 \u786e\u5b9a\u6027 \u6709\u786e\u5b9a\u89e3 \u53ef\u80fd\u662f\u75c5\u6001\u65e0\u786e\u5b9a\u89e3 \u65f6\u95f4\u7a33\u5b9a\u6027 \u6709\u6761\u4ef6 \u65e0\u6761\u4ef6 \u65f6\u95f4\u6b65 \u5c0f \u5927 \u8ba1\u7b97\u7cbe\u5ea6 \u4f4e \u9ad8 Explicit method Implicit method Target problems Dynamic(transient) Static and dynamic(transient) Damping Artificial damping Numerical damping Time stepping method Matrix multiplication Linear algebra equations Assemble stiffness matrix No Yes Data storage requirement Small Large Solving speed each step Quick Mediate Iteration convergence No Yes Solution Certain solution Could be uncertain solution Stability Conditionally stable Unconditionally stable Time step Small Large Accuracy Low High \u5e94\u529b-\u5e94\u53d8\u66f2\u7ebf\u542b\u6709 \u9002\u7528\u7684Mooney-Rivlin\u51fd\u6570 \u53c2\u6570\u6b63\u5b9a\u6027\u8981\u6c42 \u6ca1\u6709\u62d0\u70b9(\u5355\u66f2\u7387) 2-\u62163-\u53c2\u6570 C10 + C01 > 0 1\u4e2a\u62d0\u70b9(\u53cc\u66f2\u7387) 5-\u53c2\u6570

    C10 + C01 > 0C20 > 0C02 < 0C20 + C11 + C02 > 0

    2\u4e2a\u62d0\u70b9 9-\u53c2\u6570

    C10 + C01 > 0C30>0C03 < 0C30 + C21 + C12 + C03 > 0

    Strain-stress curve Suitable Mooney-Rivlin model Parameter requirement for positive definiteness No inflection point (single curvature) 2- or 3-parameter C10 + C01 > 0 One inflection point (double curvature) 5-parameter

    C10 + C01 > 0C20 > 0C02 < 0C20 + C11 + C02 > 0

    Two inflection points 9-parameter

    C10 + C01 > 0C30>0C03 < 0C30 + C21 + C12 + C03 > 0

    "},{"location":"support/","title":"Support","text":"

    Thanks so much for choosing WELSIM! At WELSIM, we want all engineers and scientists to excel. We believe that given the right tools and guidance, all engineers can be highly productive. We strive to provide tools that give their users super powers and we\u2019re happy to provide any guidance we can to help you use them most effectively. If you have any questions or need any help of any kind, don\u2019t hesitate to contact us in whatever way is most convenient for you.

    • Contact form at https://welsim.com/contact
    • info@welsim.com

    We exist to help you be as productive you can be. Let us know how we can help you. Happy simulation!

    "},{"location":"beamsection/beamsection_getstart/","title":"Getting Started","text":"

    Using BeamSection is straightforward, this section shows you how to calculate the beam properties step by step.

    "},{"location":"beamsection/beamsection_getstart/#graphical-interface","title":"Graphical Interface","text":"

    An overview of the Graphical User Interface (GUI) with notation is shown in the figure below.

    "},{"location":"beamsection/beamsection_getstart/#menu","title":"Menu","text":"

    This section provides you basic actions in using CurveFitter. The actions include:

    • Exit: Quits the program.
    • Help: Runs your default web browser and visits official website welsim.com/curvefit.
    • About: Displays About dialog and shows software and hardware information.
    "},{"location":"beamsection/beamsection_getstart/#toolbox","title":"Toolbox","text":"

    This section lists all available curves for you to choose from. The default curve is the straight line (first-order polynomial). The curves are grouped by the characteristics as follows.

    "},{"location":"beamsection/beamsection_getstart/#basic-curves","title":"Basic Curves","text":"

    Straight line, Natural logarithm, Exponential, Power, Gaussian

    "},{"location":"beamsection/beamsection_getstart/#polynomial-curves","title":"Polynomial Curves","text":"

    2nd Order Polynomial, 3rd Order Polynomial, 4th Order Polynomial, 5th Order Polynomial

    "},{"location":"beamsection/beamsection_getstart/#nonlinear-curves","title":"Nonlinear Curves","text":"

    Symmetrical Sigmoidal, Asymmetrical Sigmoidal, Rectangular Hyperbola, Basic Exponential, Half-Life Exponential, Proportional Rate Growth or Decrease

    "},{"location":"beamsection/beamsection_getstart/#hyperelastic-material-model-curves","title":"Hyperelastic Material Model Curves","text":"

    Arruda-Boyce, Gent, Mooney-Rivlin 2, 3, 5, and 9 Parameters, Neo-Hookean, Ogden 1st-3rd Orders, Polynomial 1st-3rd Orders, Yeoh 1st-3rd Orders

    "},{"location":"beamsection/beamsection_getstart/#electromagnetic-model-curves","title":"Electromagnetic Model Curves","text":"

    Electrical Steel, Power Ferrite

    "},{"location":"beamsection/beamsection_getstart/#curve-description","title":"Curve Description","text":"

    This section contains details about the selected curve, such as the function or energy functional, parameters to fit, variable descriptions.

    For the hyperelastic model curves, additional Hyperelastic Test Data checkboxes shows in this seciton. It allows users to set/edit the test data at different deformations.

    "},{"location":"beamsection/beamsection_getstart/#fitted-parameters","title":"Fitted Parameters","text":"

    This section outputs the fitted parameters for users. You also can edit the constants in the line edit widget and review the curves in the Chart window.

    "},{"location":"beamsection/beamsection_getstart/#actions","title":"Actions","text":"

    There are three actions provided for users to analyze or fit the test data.

    • Check button: examines the input data in the tabular data window.
    • Solve button: solves the curve fitting based on the input tabular data. The check process is implemented before the solution. If the curve fitting succeeded, the fitted constants will be set in the Fitted Parameters section, the curves will be plotted in the Chart window as well.
    • Update Chart button: allows you to update the curves in the Chart window with the current constants.
    "},{"location":"beamsection/beamsection_getstart/#chart-windows","title":"Chart Windows","text":"

    This section displays the test data dots and fitted curves in the same window, these dots and curves can be differentiated by legends and colors. Zoom in and out showing area are supported. You also can set the logarithmic axis for the curve display.

    "},{"location":"beamsection/beamsection_getstart/#workflow","title":"Workflow","text":"

    This section demonstrates the procedures in applying curve fitting. The steps are followed:

    1. Select the designated curve type from the toolbox.

    2. Edit table data or import data from an external file.

    3. Review the test data in the Chart.

    4. Check the input data (Optional). A pop-up message box indicates the status of the input data.

    5. Solve the curves with the input tabular data. If it succeeded, the Constants line edits are filled with fitted parameters, and the Chart window displays the fitted curves along with the test data. These fitted parameters are the answers that we want.

    6. Adjust parameters to evaluate the similar curves (Optional). You can change the parameters and hit the Update Chart button to see the new curves with modified parameters.

    Note

    Your test data is critical for your fitted constants, please ensure that the test data cover the entire range of your curve expreience.

    "},{"location":"beamsection/beamsection_overview/","title":"Beam Cross-Section Overview","text":"

    BeamSection is a free beam cross-section software program for engineers. This tool provides you comprehensive beam property calculations those are often used in engineering simulation and practice.

    "},{"location":"beamsection/beamsection_overview/#questions-or-comments","title":"Questions or Comments?","text":"
    • Fill Contact Form
    • or email us at info@welsim.com

    Feel free to send questions, comments, requests, bug reports, and success stories. Asking for a new feature usually results in adding the request to the TODO list or, if it already is in the list, in assigning higher priority to it.

    "},{"location":"curvefitter/curvefit_getstart/","title":"Getting Started","text":"

    Using CurveFitter is straightforward, this section shows you how to conduct the curve fitting step by step.

    "},{"location":"curvefitter/curvefit_getstart/#graphical-interface","title":"Graphical Interface","text":"

    An overview of the Graphical User Interface (GUI) with notation is shown in the figure below.

    "},{"location":"curvefitter/curvefit_getstart/#menu","title":"Menu","text":"

    This section provides you basic actions in using CurveFitter. The actions include:

    • Exit: Quits the program.
    • Help: Runs your default web browser and visits official website welsim.com/curvefit.
    • About: Displays About dialog and shows software and hardware information.
    "},{"location":"curvefitter/curvefit_getstart/#toolbox","title":"Toolbox","text":"

    This section lists all available curves for you to choose from. The default curve is the straight line (first-order polynomial). The curves are grouped by the characteristics as follows.

    "},{"location":"curvefitter/curvefit_getstart/#basic-curves","title":"Basic Curves","text":"

    Straight line, Natural logarithm, Exponential, Power, Gaussian

    "},{"location":"curvefitter/curvefit_getstart/#polynomial-curves","title":"Polynomial Curves","text":"

    2nd Order Polynomial, 3rd Order Polynomial, 4th Order Polynomial, 5th Order Polynomial

    "},{"location":"curvefitter/curvefit_getstart/#nonlinear-curves","title":"Nonlinear Curves","text":"

    Symmetrical Sigmoidal, Asymmetrical Sigmoidal, Rectangular Hyperbola, Basic Exponential, Half-Life Exponential, Proportional Rate Growth or Decrease

    "},{"location":"curvefitter/curvefit_getstart/#hyperelastic-material-model-curves","title":"Hyperelastic Material Model Curves","text":"

    Arruda-Boyce, Gent, Mooney-Rivlin 2, 3, 5, and 9 Parameters, Neo-Hookean, Ogden 1st-3rd Orders, Polynomial 1st-3rd Orders, Yeoh 1st-3rd Orders

    "},{"location":"curvefitter/curvefit_getstart/#electromagnetic-model-curves","title":"Electromagnetic Model Curves","text":"

    Electrical Steel, Power Ferrite

    "},{"location":"curvefitter/curvefit_getstart/#curve-description","title":"Curve Description","text":"

    This section contains details about the selected curve, such as the function or energy functional, parameters to fit, variable descriptions.

    For the hyperelastic model curves, additional Hyperelastic Test Data checkboxes shows in this seciton. It allows users to set/edit the test data at different deformations.

    "},{"location":"curvefitter/curvefit_getstart/#fitted-parameters","title":"Fitted Parameters","text":"

    This section outputs the fitted parameters for users. You also can edit the constants in the line edit widget and review the curves in the Chart window.

    "},{"location":"curvefitter/curvefit_getstart/#actions","title":"Actions","text":"

    There are three actions provided for users to analyze or fit the test data.

    • Check button: examines the input data in the tabular data window.
    • Solve button: solves the curve fitting based on the input tabular data. The check process is implemented before the solution. If the curve fitting succeeded, the fitted constants will be set in the Fitted Parameters section, the curves will be plotted in the Chart window as well.
    • Update Chart button: allows you to update the curves in the Chart window with the current constants.
    "},{"location":"curvefitter/curvefit_getstart/#tabular-data-windows","title":"Tabular Data Windows","text":"

    This section enables you to edit and review the table data. For most of curves, the tables have two columns. The frequency-dependent curves have a sub-table for each frequency row. You can input tabular values cell by cell, or import a plain text or Excel file to input massive data. The external file formats are depicted here.

    You also can export the tabular data to an external file in plain text or Excel format.

    "},{"location":"curvefitter/curvefit_getstart/#chart-windows","title":"Chart Windows","text":"

    This section displays the test data dots and fitted curves in the same window, these dots and curves can be differentiated by legends and colors. Zoom in and out showing area are supported. You also can set the logarithmic axis for the curve display.

    "},{"location":"curvefitter/curvefit_getstart/#workflow","title":"Workflow","text":"

    This section demonstrates the procedures in applying curve fitting. The steps are followed:

    1. Select the designated curve type from the toolbox.

    2. Edit table data or import data from an external file.

    3. Review the test data in the Chart.

    4. Check the input data (Optional). A pop-up message box indicates the status of the input data.

    5. Solve the curves with the input tabular data. If it succeeded, the Constants line edits are filled with fitted parameters, and the Chart window displays the fitted curves along with the test data. These fitted parameters are the answers that we want.

    6. Adjust parameters to evaluate the similar curves (Optional). You can change the parameters and hit the Update Chart button to see the new curves with modified parameters.

    Note

    Your test data is critical for your fitted constants, please ensure that the test data cover the entire range of your curve expreience.

    "},{"location":"curvefitter/curvefit_io/","title":"I/O File Format","text":"

    The I/O file format is consistent to the Import/Export format in MatEditor module. For more details please refer to the Import/Export Tabular Data

    "},{"location":"curvefitter/curvefit_overview/","title":"Curve Fitter Overview","text":"

    CurveFitter is a free software program for nonlinear curve fitting of analytical functions to experimental data. It provides tools for linear, polynomial, exponential, power, Schulz-Flory, nonlinear, hyperelastic materials, magnetic core loss curve fitting along with validation, and goodness-of-fit tests. The easy-to-use graphical user interface enables you to start fitting projects with no learning curves. You can summarize and present your results with customized fitting reports. There are many time-saving options such as an import-export feature which allows you to quickly input/output massive tabular data from/to external files.

    Curve fitting is one of the most widely used analysis methods in science and technology. Curve fitting examines the relationship between one or more predictors (independent variables) and a response variable (dependent variable), with the goal of defining a \"best fit\" model of the relationship. It is reportedly used in crystallography, chromatography, photoluminescence and photoelectron spectroscopy, infrared, Raman spectroscopy, and finite element analysis.

    "},{"location":"curvefitter/curvefit_overview/#specification","title":"Specification","text":"

    The system requirements for running CurveFitter are given in the table below.

    Specification Description Operation system Microsoft Windows 10 to 11; 64-bit Physical memory At least 4 GB Import/Export file format Plain text, Excel

    The supported functions/curves are listed in the table below.

    Category Materials Basic Straight line, Natural logarithm, Exponential, Power, Gaussian Polynomial 2nd-5th Order Polynomial Schulz-Flory 1nd-6th Order Schulz-Flory Nonlinear Symmetrical Sigmoidal, Asymmetrical Sigmoidal, Rectangular Hyperbola, Basic Exponential, Half-Life Exponential, Proportional Rate Growth or Decrease Hyperelastic material model Arruda-Boyce, Gent, Mooney-Rivlin 2 3 5 and 9 Parameters, Neo-Hookean, 1st-3rd Order Ogden, 1st-3rd Order Polynomial, 1st-3rd Order Yeoh Electromagnetic Core loss Model Electrical Steel, Power Ferrite (Steinmetz)"},{"location":"curvefitter/curvefit_overview/#linear-polynomial-regression","title":"Linear, Polynomial Regression","text":"

    Linear and Polynomial regressions in CurveFitter make use of the least-square method to fit a linear model function or a polynomial model function to data, respectively.

    "},{"location":"curvefitter/curvefit_overview/#nonlinear-curve-fitting","title":"Nonlinear Curve Fitting","text":"

    CurveFitter's nonlinear fit tool is powerful, flexible, and easy to use. This tool includes more than 10 built-in fitting functions, selected from a wide range of categories and disciplines.

    "},{"location":"curvefitter/curvefit_overview/#hyperelastic-material-model-fitting","title":"Hyperelastic Material Model Fitting","text":"

    CurveFitter's hyperelastic model fitting tool allows you to obtain material constants from the uniaxial, biaxial, or shear test data. You can choose the available test data type by toggling the corresponding checkbox. The supported hyperelastic models are: Arruda-Boyce, Gent, Mooney-Rivlin, Neo-Hookean, Ogden, Polynomial, and Yeoh. The input test data is engineering strain and engineering stress.

    "},{"location":"curvefitter/curvefit_overview/#magnetic-core-loss-model-fitting","title":"Magnetic Core Loss Model Fitting","text":"

    Core Loss Model fitting tool enables you to fit the parameters in estimating energy loss analysis. The tabular data window contains both regular tables and sub-tables for you to input multiple frequency-based data. The chart supports the logarithmic axis to better review the frequency-based curves.

    "},{"location":"curvefitter/curvefit_overview/#questions-or-comments","title":"Questions or Comments?","text":"
    • Fill Contact Form
    • or email us at info@welsim.com

    Feel free to send questions, comments, requests, bug reports, and success stories. Asking for a new feature usually results in adding the request to the TODO list or, if it already is in the list, in assigning higher priority to it.

    "},{"location":"curvefitter/curvefit_theory/","title":"Curve Fitting Theory","text":"

    The section shows you the theoretical details of each curve or function.

    "},{"location":"curvefitter/curvefit_theory/#basic-curves","title":"Basic Curves","text":"

    The group of Basic contains all commonly used curves.

    "},{"location":"curvefitter/curvefit_theory/#straight-line","title":"Straight line","text":"

    The function of this curve is given by

    \\[ y(x)=a+bx \\]

    where \\(a\\) and \\(b\\) are constants to fit, \\(x\\) and \\(y\\) are the test data pair. This function is also called 1st order polynomial.

    "},{"location":"curvefitter/curvefit_theory/#natural-logarithm","title":"Natural logarithm","text":"

    The function of this curve is given by

    \\[ y(x)=a+b \\cdot ln(x) \\]

    where \\(a\\) and \\(b\\) are constants to fit, \\(x\\) and \\(y\\) are the test data pair.

    Note

    Independent variable \\(x\\) must be larger than zero.

    "},{"location":"curvefitter/curvefit_theory/#exponential","title":"Exponential","text":"

    The function of this curve is given by

    \\[ y(x)=ae^{bx} \\]

    where \\(a\\) and \\(b\\) are constants to fit, \\(x\\) and \\(y\\) are the test data pair.

    Note

    Dependent variable \\(y\\) must be larger than zero.

    "},{"location":"curvefitter/curvefit_theory/#power","title":"Power","text":"

    The function of this curve is given by

    \\[ y(x)=ax^{b} \\]

    where \\(a\\) and \\(b\\) are constants to fit, \\(x\\) and \\(y\\) are the test data pair.

    Note

    Variables \\(x\\) and \\(y\\) must be larger than zero.

    "},{"location":"curvefitter/curvefit_theory/#gaussian","title":"Gaussian","text":"

    The function of this curve is given by

    \\[ y(x)=a \\exp{(-\\dfrac{(x-b)^2}{2c^2})} \\]

    where \\(a\\), \\(b\\), and \\(c\\) are constants to fit, \\(x\\) and \\(y\\) are the test data pair.

    Note

    Dependent variables \\(y\\) must be larger than zero.

    "},{"location":"curvefitter/curvefit_theory/#polynomial-curves","title":"Polynomial Curves","text":"

    The group of Polynomial contains polynomial curves. The first-order polynomial is located in the Basic group as Straight Line.

    "},{"location":"curvefitter/curvefit_theory/#2nd-order-polynomial","title":"2nd Order Polynomial","text":"

    The function of this curve is given by

    \\[ y(x)=a+bx+cx^2 \\]

    where \\(a\\), \\(b\\), and \\(c\\) are constants to fit, \\(x\\) and \\(y\\) are the test data pair.

    "},{"location":"curvefitter/curvefit_theory/#3rd-order-polynomial","title":"3rd Order Polynomial","text":"

    The function of this curve is given by

    \\[ y(x)=a+bx+cx^2+dx^3 \\]

    where \\(a\\), \\(b\\), \\(c\\), and \\(d\\) are constants to fit, \\(x\\) and \\(y\\) are the test data pair.

    "},{"location":"curvefitter/curvefit_theory/#4th-order-polynomial","title":"4th Order Polynomial","text":"

    The function of this curve is given by

    \\[ y(x)=a+bx+cx^2+dx^3+ex^4 \\]

    where \\(a\\), \\(b\\), \\(c\\), \\(d\\), and \\(e\\) are constants to fit, \\(x\\) and \\(y\\) are the test data pair.

    "},{"location":"curvefitter/curvefit_theory/#5th-order-polynomial","title":"5th Order Polynomial","text":"

    The function of this curve is given by

    \\[ y(x)=a+bx+cx^2+dx^3+ex^4+ex^5 \\]

    where \\(a\\), \\(b\\), \\(c\\), \\(d\\), \\(e\\), and \\(f\\) are constants to fit, \\(x\\) and \\(y\\) are the test data pair.

    "},{"location":"curvefitter/curvefit_theory/#schulz-flory-functions","title":"Schulz-Flory functions","text":"

    Schulz Flory distribution function to describe relative ratios of polymers after a polymerization process. The function of this curve is given by

    \\[ y(x) = \\sum_{i=1}^{n} ln(10) \\dfrac{a_i}{b_i^2} \\exp{(4.6x-\\dfrac{\\exp{(2.3x)}}{b_i})} \\]

    where \\(a_i\\) and \\(b_i\\) are constants to fit, \\(x\\) and \\(y\\) are the test data pair. The parameter must satisfy the condition: \\(0<a_i<1\\).

    "},{"location":"curvefitter/curvefit_theory/#nonlinear-curves","title":"Nonlinear Curves","text":"

    The group of Nonlinear curves contains nonlinear curves that do not belong to the polynomial.

    "},{"location":"curvefitter/curvefit_theory/#symmetrical-sigmoidal","title":"Symmetrical Sigmoidal","text":"

    The function of this curve is given by

    \\[ y(x)=d + \\dfrac{a-d}{1+(\\dfrac{x}{c})^b} \\]

    where \\(a\\), \\(b\\), \\(c\\), and \\(d\\) are constants to fit, \\(x\\) and \\(y\\) are the test data pair.

    "},{"location":"curvefitter/curvefit_theory/#asymmetrical-sigmoidal","title":"Asymmetrical Sigmoidal","text":"

    The function of this curve is given by

    \\[ y(x)=d + \\dfrac{a-d}{ (1+(\\dfrac{x}{c})^b)^m } \\]

    where \\(a\\), \\(b\\), \\(c\\), \\(d\\), and \\(m\\) are constants to fit, \\(x\\) and \\(y\\) are the test data pair.

    "},{"location":"curvefitter/curvefit_theory/#rectangular-hyperbola","title":"Rectangular Hyperbola","text":"

    The function of this curve is given by

    \\[ y(x)=\\dfrac{V_{max}x}{ K_m + x} \\]

    where \\(V_{max}\\) and \\(K_m\\) are constants to fit, \\(x\\) and \\(y\\) are the test data pair.

    "},{"location":"curvefitter/curvefit_theory/#basic-exponential","title":"Basic Exponential","text":"

    The function of this curve is given by

    \\[ y(x)=a + be^{-cx} \\]

    where \\(a\\), \\(b\\), and \\(c\\) are constants to fit, \\(x\\) and \\(y\\) are the test data pair.

    "},{"location":"curvefitter/curvefit_theory/#half-life-exponential","title":"Half-Life Exponential","text":"

    The function of this curve is given by

    \\[ y(x)=a + \\dfrac{b}{2^{(\\dfrac{x}{c})}} \\]

    where \\(a\\), \\(b\\), and \\(c\\) are constants to fit, \\(x\\) and \\(y\\) are the test data pair.

    "},{"location":"curvefitter/curvefit_theory/#proportional-rate-growth-or-decrease","title":"Proportional Rate Growth or Decrease","text":"

    The function of this curve is given by

    \\[ y(x)=Y_0 + \\dfrac{V_0}{K}(1-e^{-Kx}) \\]

    where \\(Y_0\\), \\(V_0\\), and \\(K\\) are constants to fit, \\(x\\) and \\(y\\) are the test data pair.

    "},{"location":"curvefitter/curvefit_theory/#log-normal-particle-size-distribution","title":"Log-Normal Particle Size Distribution","text":"

    The function of this curve is given by

    \\[ \\dfrac{dy(x)}{d\\ln{x}}=\\dfrac{C_t}{\\sigma_g\\sqrt{2}\\pi} \\exp{(-\\dfrac{(\\ln{x}-\\ln{D_m})^2}{2\\ln{\\sigma_g}^2})} \\]

    where \\(D_m\\), \\(\\sigma_g\\), and \\(C_t\\) are constants to fit, x and y are test data pair. In the computation, the Left-Hand-Side term (\\(dy(x)/d\\ln{x}\\)) is calculated using finite difference scheme.

    Note

    Independent variables \\(x\\) must be larger than zero. The number of input x-y pairs must be large than 3.

    "},{"location":"curvefitter/curvefit_theory/#hyperelastic-material-model-curves","title":"Hyperelastic Material Model Curves","text":"

    The group of hyperelastic material models contains the commonly used hyperelastic models in the finite element analysis. The test data pair is engineering strain and stress.

    "},{"location":"curvefitter/curvefit_theory/#arruda-boyce","title":"Arruda-Boyce","text":"

    The form of the strain-energy potential for Arruda-Boyce model is

    \\[ \\begin{array}{ccl} W & = & \\mu[\\dfrac{1}{2}(\\bar{I}_{1}-3)+\\dfrac{1}{20\\lambda_{m}^{2}}(\\bar{I_{1}^{2}}-9)+\\dfrac{11}{1050\\lambda_{m}^{4}}(\\bar{I_{1}^{3}}-27)\\\\ & + & \\dfrac{19}{7000\\lambda_{m}^{6}}(\\bar{I_{1}^{4}}-81) + \\dfrac{519}{673750\\lambda_{m}^{8}}(\\bar{I_{1}^{5}}-243)] \\end{array} \\]

    where \\(\\mu\\) is the initial shear modulus of the material, \\(\\lambda_{m}\\) is limiting network stretch.

    "},{"location":"curvefitter/curvefit_theory/#gent","title":"Gent","text":"

    The form of the strain-energy potential for the Gent model is:

    \\[ W=-\\frac{\\mu J_{m}}{2}\\mathrm{ln}\\left(1-\\frac{\\bar{I}_{1}-3}{J_{m}}\\right) \\]

    where \\(\\mu\\) is the initial shear modulus of the material, \\(J_m\\) is limiting value of \\(\\bar{I}_1-3\\).

    "},{"location":"curvefitter/curvefit_theory/#mooney-rivlin-2-3-5-and-9-parameters","title":"Mooney-Rivlin 2 3 5 and 9 Parameters","text":"

    This model includes two-, three-, five-, and nine-terma Mooney-Rivlin models. The form of the strain-energy potential for a two-parameter Mooney-Rivlin model is

    \\[ W=C_{10}\\left(\\bar{I}_{1}-3\\right)+C_{01}\\left(\\bar{I}_{2}-3\\right) \\]

    where \\(C_{10}\\), \\(C_{01}\\), and \\(D_{1}\\) are the material constants.

    The form of strain-energy potential for a three-parameter Mooney-Rivlin model is

    \\[ W=C_{10}\\left(\\bar{I}_{1}-3\\right)+C_{01}\\left(\\bar{I}_{2}-3\\right)+C_{11}\\left(\\bar{I}_{1}-3\\right)\\left(\\bar{I}_{2}-3\\right) \\]

    where \\(C_{10}\\), \\(C_{01}\\), and \\(C_{11}\\) are material constants.

    The form of strain-energy potential for a five-parameter Mooney-Rivlin model is

    \\[ \\begin{array}{ccl} W & = & C_{10}\\left(\\bar{I}_{1}-3\\right)+C_{01}\\left(\\bar{I}_{2}-3\\right)+C_{20}\\left(\\bar{I}_{1}-3\\right)^{2}\\\\ & + & C_{11}\\left(\\bar{I}_{1}-3\\right)\\left(\\bar{I}_{2}-3\\right)+C_{02}\\left(\\bar{I}_{2}-3\\right)^{2} \\end{array} \\]

    where \\(C_{10}\\), \\(C_{01}\\), \\(C_{20}\\), \\(C_{11}\\), and \\(C_{02}\\) are material constants.

    The form of strain-energy potential for a nine-parameter Mooney-Rivlin model is

    \\[ \\begin{array}{ccl} W & = & C_{10}\\left(\\bar{I}_{1}-3\\right)+C_{01}\\left(\\bar{I}_{2}-3\\right)+C_{20}\\left(\\bar{I}_{1}-3\\right)^{2}\\\\ & + & C_{11}\\left(\\bar{I}_{1}-3\\right)\\left(\\bar{I}_{2}-3\\right)+C_{02}\\left(\\bar{I}_{2}-3\\right)^{2}+C_{30}\\left(\\bar{I}_{1}-3\\right)^{3}\\\\ & + & C_{21}\\left(\\bar{I}_{1}-3\\right)^{2}\\left(\\bar{I}_{2}-3\\right)+C_{12}\\left(\\bar{I}_{1}-3\\right)\\left(\\bar{I}_{2}-3\\right)^{2}+C_{03}\\left(\\bar{I}_{2}-3\\right)^{3} \\end{array} \\]

    where \\(C_{10}\\), \\(C_{01}\\), \\(C_{20}\\), \\(C_{11}\\), \\(C_{02}\\), \\(C_{30}\\), \\(C_{21}\\), \\(C_{12}\\), and \\(C_{03}\\) are material constants.

    "},{"location":"curvefitter/curvefit_theory/#neo-hookean","title":"Neo-Hookean","text":"

    The Neo-Hookean model is a well-known hyperelastic model with an expanded linear rule (Hooke rule) having isotropy so that it can respond to finite deformation problems. The elastic potential is as follows.

    \\[ W=\\frac{\\mu}{2}(\\bar{I}_{1}-3) \\]

    where \\(\\mu\\) is initial shear modulus of materials.

    "},{"location":"curvefitter/curvefit_theory/#ogden","title":"Ogden","text":"

    The strain-energy potential of the Ogden compressible foam model is based on the principal stretches of left Cauchy strain tensor, which has the form:

    \\[ W=\\sum_{i=1}^{N}\\frac{\\mu_{i}}{\\alpha_{i}}\\left(\\bar{\\lambda}_{1}^{\\alpha_{i}}+\\bar{\\lambda}_{2}^{\\alpha_{i}}+\\bar{\\lambda}_{3}^{\\alpha_{i}}-3\\right)+\\sum_{k=1}^{N}\\frac{1}{D_{k}}\\left(J-1\\right)^{2k} \\]

    where N determines the order of the polynomial, \\(\\mu_i\\), \\(\\alpha_i\\) are material constants. The reduced principal strench is defined by:

    \\[ \\bar{\\lambda}_{p}=J^{-\\frac{1}{3}}\\lambda_p,\\; J=(\\lambda_{1}\\lambda_{2}\\lambda_{3})^{\\frac{1}{2}} \\]

    When parameters N=1, \\(\\alpha_1\\)=2, the Ogden model is converted to the neo-Hookean model. When parameters N=2, \\(\\alpha_1\\)=2 and \\(\\alpha_2\\)=-2, the Ogden model is converted to the 2-parameter Mooney-Rivlin model.

    "},{"location":"curvefitter/curvefit_theory/#polynomial","title":"Polynomial","text":"

    The polynomial form of strain-energy potential is:

    \\[ W=\\sum_{i+j=1}^{N}c_{ij}\\left(\\bar{I}_{1}-3\\right)^{i}\\left(\\bar{I_{2}}-3\\right)^{j} \\]

    where \\(N\\) determines the order of the polynomial, \\(c_{ij}\\) are material constants.

    The Polynomial model is converted to following models with specific parameters:

    Parameters of Polynomial model Equivalent model N=1, \\(C_{01}\\)=0 neo-Hookean N=1 2-parameter Mooney-Rivlin N=2 5-parameter Mooney-Rivlin N=3 9-parameter Mooney-Rivlin"},{"location":"curvefitter/curvefit_theory/#yeoh","title":"Yeoh","text":"

    The Yeoh model is also called the reduced polynomial form. The strain-energy potential is

    \\[ W=\\sum_{i=1}^{N}c_{i0}\\left(\\bar{I}_{1}-3\\right)^{i} \\]

    where N denotes the order of the polynomial, \\(C_{i0}\\) are material constants. When N=1, Yeoh becomes neo-Hookean model.

    "},{"location":"curvefitter/curvefit_theory/#electromagnetic-model-curves","title":"Electromagnetic Model Curves","text":"

    This group includes the commonly used fitting curves in the electromagnetic analysis.

    "},{"location":"curvefitter/curvefit_theory/#electrical-steel","title":"Electrical Steel","text":"

    The iron-core loss without DC flux bias is expressed as the following:

    \\[ p_v=P_h+P_c+P_e=K_{f} f (B_m)^2 + K_c (fB_m)^2 + K_e(fB_m)^{1.5} \\]

    where

    • \\(B_m\\) is the amplitude of the AC flux component,
    • \\(f\\) is the frequency,
    • \\(K_h\\) is the hysteresis core loss coefficient,
    • \\(K_c\\) is the eddy-current core loss coefficient, and
    • \\(K_e\\) is the excess core loss coefficient,
    "},{"location":"curvefitter/curvefit_theory/#power-ferrite","title":"Power Ferrite","text":"

    The iron-core loss is expressed as the Steinmetz approximation

    \\[ p_v=C_m f^x B_m^y \\]

    where \\(p_v\\) is the average power density, \\(f\\) is the excitation frequency, and \\(B_m\\) is the peak flux density, is commonly used to characterize core loss data for sinusoidal excitation, but can also be applied to square-wave data.

    To linearize the equation for curve fitting, we used base-10 logarithms. The equation above can be rewritten to

    \\[ log(p_v)=c + x\\cdot log(f) + y \\cdot(B_m) \\]

    where \\(c=log(C_m)\\).

    "},{"location":"install/licensing/","title":"WELSIM licensing guide","text":""},{"location":"install/licensing/#preface","title":"Preface","text":"

    This document contains information for running the WELSIM License Manager with all WelSimulation LLC products.

    "},{"location":"install/licensing/#supported-hardware-platforms","title":"Supported hardware platforms","text":"

    This document details information about licensing WelSimulation LLC products on the hardware platforms listed below.

    • Linux x64 (linx64)
    • Windows x64 (winx64)

    For specific operating system requirements, contact the customer support for the product and platform you are running.

    "},{"location":"install/licensing/#conventions-used-in-this-document","title":"Conventions used in this document","text":"

    Computer prompts and responses and user input are printed using this font:

    /welsim_com/shared_files/licensing/welslic_admin\n

    Wild card arguments and variables are italicized. Commands appear in bold face.

    "},{"location":"install/licensing/#introduction","title":"Introduction","text":"

    WelSimulation LLC uses the internal license manager for all of its licensed products. The communication between the WELSIM applications and license manager occurs through an internal process. The communication is nearly transparent; you should not see any noticeable difference in your day-to-day operation of WELSIM products.

    You do not need to run the license manager installation. The license manager is installed together with the WELSIM application package.

    "},{"location":"install/licensing/#the-licensing-process","title":"The licensing process","text":"

    The licensing process for WELSIM is as follows:

    1. Install the software.
    2. Start the software and generate your unique Computer ID, send the Computer ID to info@welsim.com.
    3. After you receive your license file, run the License Manager Wizard from Toolbar of WELSIM application.
    4. Set up the licensing environment and input license. See Activating the WELSIM.
    "},{"location":"install/licensing/#explanation-of-licensing-terms","title":"Explanation of licensing terms","text":"

    The main components of the licensing are:

    • License file
    • Application program (WELSIM)

    These components are explained in more detail in the following sections.

    "},{"location":"install/licensing/#the-license-file","title":"The license file","text":"

    Licensing data is stored in a text file called the license file. The license file is created by WelSimulation LLC and is installed by the end user. It contains information about the version, signature, and date.

    The default and recommended location for the WELSIM license file (wsimkey.dat) is in the %APPDATA%/WELSIM directory. The application can automatically place the license file at this location after activation. End users can manually copy the license file to that directory, although are not suggested.

    "},{"location":"install/licensing/#license-file-format","title":"License file format","text":"

    License files usually contain eight lines. You cannot modify any these data items in the license files.

    Note

    Everything in the license key should be entered exactly as supplied. All data in the license file is case sensitive, unless otherwise indicated.

    "},{"location":"install/licensing/#application-line","title":"Application line","text":"

    The application line specifies the application name. Normally a license file for WELSIM application uses the \u201c[WELSIM]\u201d. The example of the application line is:

    [WELSIM]\n

    "},{"location":"install/licensing/#license-version-line","title":"License version line","text":"

    The license version line specifies the version of current license file. The example of the this line is shown below:

    license_verion = 100\n

    "},{"location":"install/licensing/#license-signature-line","title":"License signature line","text":"

    A license signature line describes the password key to use a product. The example of the signature line is:

    license_signature = Tvp919deAq5od+nCUjRF15mgeBIKCLgscLgvR8eFYAlBrqqcjETIyuY0Lu/brYbOKYrIPOXqFzWn8asLqieImA== \n

    "},{"location":"install/licensing/#computer-id-line","title":"Computer ID line","text":"

    The computer ID line is the string generated from client's computer. The example of the Computer ID line is:

    client_signature = KXfe-uAAA-KXfe-uQAA\n

    "},{"location":"install/licensing/#application-version-lines","title":"Application version lines","text":"

    The application version lines include two parts, one is the start version number and another is the end version. The example of the application version lines are:

    from_sw_version = 100\nto_sw_version = 100\n

    "},{"location":"install/licensing/#effective-date-lines","title":"Effective date lines","text":"

    The effective date lines include both start and end date. The example of the effective date lines are:

    from_date = 2017-07-02\nto_date = 2018-08-02\n

    "},{"location":"install/licensing/#sample-license-files","title":"Sample license files","text":"

    A sample license file is shown here. This file is for WELSIM v1.8 and later tasks.

    [WELSIM]\nlicense_version = 100\nlicense_signature = Tvp919deAq5od+nCUjRF15mgeBIKCLgscLgvR8eFYAlBrqqcjETIyuY0Lu/brYbOKYrIPOXqFzWn8asLqieImA==\nclient_signature = KXfe-uAAA-KXfe-uQAA\nfrom_sw_version = 100\nto_sw_version = 100\nfrom_date = 2023-07-02\nto_date = 2024-07-02\n

    "},{"location":"install/licensing/#recognizing-a-welsim-license-file","title":"Recognizing a WELSIM license file","text":"

    If you receive a license file and are not sure if it is a WELSIM license file, you can determine if it is by looking at the contents of the license file. If it is a WELSIM license file, then

    • In the first line of the license file, the string field is WELSIM.
    "},{"location":"install/licensing/#installing-the-welsim-license-manager","title":"Installing the WELSIM license manager","text":"

    The WelSim License Manager is included in the WELSIM application installation. As the user installs the application, the license manager is already installed.

    "},{"location":"install/licensing/#troubleshooting","title":"Troubleshooting","text":"

    This section lists problems and error messages that you may encounter while setting up licensing. The possible error messages are:

    • LICENSE_FILE_NOT_FOUND
    • LICENSE_SERVER_NOT_FOUND
    • ENVIRONMENT_VARIABLE_NOT_DEFINED
    • FILE_FORMAT_NOT_RECOGNIZED
    • LICENSE_MALFORMED
    • PRODUCT_NOT_LICENSED
    • PRODUCT_EXPIRED
    • LICENSE_CORRUPTED
    • IDENTIFIERS_MISMATCH

    An example of the license message error message is shown in Figure\u00a0[fig:ch10_license_not_found].

    "},{"location":"install/linux/","title":"Linux installation guide","text":""},{"location":"install/linux/#installation-prerequisites-for-linux","title":"Installation prerequisites for Linux","text":"

    This document describes the steps necessary to correctly install and configure WELSIM application on Linux platforms. These products include:

    • WELSIM Application
    • License manager
    "},{"location":"install/linux/#system-prerequisites","title":"System prerequisites","text":"

    WELSIM application is supported on the Linux platforms and operating system levels listed in Table\u00a0below.

    Platform Operating system Availability Linux x64 Ubuntu 22.04 LTS or higher Download

    Note

    1. If you run WELSIM on Ubuntu, we recommand Ubuntu 22.04 LTS or higher with the latest libstdc++ and libfortran libraries.
    "},{"location":"install/linux/#disk-space-and-memory-requirements","title":"Disk space and memory requirements","text":"

    You will need the disk space shown in Table\u00a0below for installation and proper functioning.

    Product Disk space Memory WELSIM application at least 1 GB at least 4 GB"},{"location":"install/linux/#platform-details","title":"Platform details","text":"

    For all 64-bit Linux platforms, the libraries listed below should be installed.

    • libxcb-xinerama0
    • libstdc++
    • gcc-c++
    • glibc
    • libfortran
    • openmpi-bin
    • libomp-dev
    "},{"location":"install/linux/#installing-the-welsim-for-a-linux-system","title":"Installing the WELSIM for a Linux system","text":"

    This section explains how to download and install WELSIM.

    You can install WELSIM as root, or non-root; however, if you are root user, you can install the application in the system directory. The application can be used by different users.

    "},{"location":"install/linux/#product-download-instructions","title":"Product download instructions","text":"

    To download the installation files from our website, you will need to agree the US Export Restrictions. You only need to download one installer file.

    1. From the website1, select the Linux version of WELSIM and click the download button on the webpage.
    2. The downloaded installer file has the name like: WelSim%version%SetupUbuntu.run. For example, the installer of 2024R1 is WelSim28SetupUbuntu.run.
    3. Begin the product installation as described in the next section.
    "},{"location":"install/linux/#production-installation","title":"Production installation","text":"

    1.Navigate to the directory where you placed the installer file. Run the commands below in a terminal window. Note that we take the version of 2024R1 as an example, if you are installing a different version, replace the installer name in the command line below.

    $ chmod +x WelSim28SetupUbuntu.run\n$ ./WelSim28SetupUbuntu.run\n

    Note

    Running the installer requires the libxcb-xinerama0 library installed in your system.

    2.The WELSIM installation Launcher appears as shown below.

    3.Click the Next button to start the installation on your computer.

    4.The installation folder setting appears as shown below. You can input your designated directory or keep the default one. After specifying the directory, Click Next.

    5.The component selection interface appears as shown below. You can select the components that you want to install. The user can keep the default selection, and know the occupied disk space for this installation. Click Next.

    6.The license agreement appears as shown below. Read the agreement, and if you agree to the terms and conditions, select I Agree. Click Next.

    7.The installation needs your conformation to start as shown below. Click Install.

    8.The installation completed as shown below. Click Next.

    "},{"location":"install/linux/#starting-the-software-on-linux","title":"Starting the software on Linux","text":"

    After installation, starting the WELSIM software application is straightforward. Here are steps:

    1.Install the dependencies to your Ubuntu OS

    sudo apt update\nsudo apt upgrade\nsudo apt install openmpi-bin libomp-dev\n

    2.Allocate the installed WELSIM application folder, double click the executable file runWelSim.

    Note

    If the WELSIM does not start, the executable file may have no exectuable attribute on your machine. You could open a terminal window and type commends below.

    $ chmod +x runWelSim.sh\n$ ./runWelSim.sh \n

    3.WELSIM application starts, the GUI shows the system information in Figure\u00a0below.

    "},{"location":"install/linux/#uninstalling-the-software","title":"Uninstalling the software","text":"

    To uninstall WELSIM, you can browse file explorer into the installation folder, and double click on the Uninstaller. Following the instructions on the Uninstaller, you can remove the application from your computer.

    You also can simply delete the installation folder to uninstall the WELSIM.

    1. https://welsim.com/download \u21a9

    "},{"location":"install/windows/","title":"Windows installation guide","text":""},{"location":"install/windows/#installation-prerequisites-for-windows","title":"Installation prerequisites for Windows","text":"

    This document describes the steps essential to correctly install and configure WELSIM on Windows platform.

    "},{"location":"install/windows/#system-prerequisites","title":"System prerequisites","text":"

    WELSIM is supported on the following Windows platforms and operating system levels.

    Platform Operating System Platform Architecture Availability x64 Windows 11 winx64 Download"},{"location":"install/windows/#disk-space-and-memory-requirements","title":"Disk space and memory requirements","text":"

    You will need the disk space shown in Table\u00a0[tab:ch11_win_disk_space] for installation and proper functioning. The numbers listed here are the maximum amount of disk space you will need.

    Product Disk Space Memory WELSIM 1 GB at least 4GB"},{"location":"install/windows/#software-prerequisites","title":"Software prerequisites","text":"

    You need to have the following software installed on your system. These software prerequisites will be installed automatically when you launch the product installation. If you have finished an installation successfully, the prerequisites executable are located under the %Installed Folder%\\Prerequisites directory.

    • Microsoft Visual C++ 2015-2022 Redistributable(x64)
    • Intel Visual Fortran Redistributables, 2022
    • Microsoft MPI Redistributable, 10.0
    "},{"location":"install/windows/#digital-signatures","title":"Digital signatures","text":"

    WELSIM installer and executable files are signed with digital certificates. The signer name is: WelSimulation LLC.

    "},{"location":"install/windows/#platform-details","title":"Platform details","text":""},{"location":"install/windows/#compiler-requirements-for-windows-systems","title":"Compiler requirements for Windows systems","text":"

    The compiler requirements for Windows systems are listed in Table\u00a0[tab:ch12_win_compiler_req].

    No. WELSIM Compilers 1 Visual Studio 2022 (including the Microsoft C++ compiler) 2 Intel Visual Fortran 2022 compiler

    Note

    Those compilers are not required if you only use WELSIM application.

    "},{"location":"install/windows/#installing-the-welsim-for-a-windows-system","title":"Installing the WELSIM for a Windows system","text":"

    This section includes the steps required for installing WELSIM and licensing configuration on one Windows machine.

    "},{"location":"install/windows/#downloading-the-installation-file","title":"Downloading the installation file","text":"

    To download the installation files from our website, you will need to agree the US Export Restrictions.

    You only need to download one installer file.

    1. From the website, select the Windows version of WELSIM and click the download button on the webpage.
    2. The downloaded installer file has the name: WelSim28Setup.exe
    3. Begin the product installation as described in the next section.
    "},{"location":"install/windows/#installing-welsim","title":"Installing WELSIM","text":"
    1. Navigate to the directory where you placed the installer file. Run the installer by double click.
    2. The WELSIM installation Launcher appears as shown in Figure\u00a0below.
    3. Click the Next button to start the installation on your computer.
    4. The license agreement appears as shown in Figure\u00a0below. Read the agreement, and if you agree to the terms and conditions, select I Agree. Click Next.
    5. The installation folder setting appears as shown in the figure below. You can input your designated directory or keep the default one. After specifying the directory, Click Next.
    6. The prerequesites libraries installation appears as shown in the figure below. Your system requires these libraries to run the WELSIM application. Click Yes.
    7. The installation completed as shown in the figure\u00a0below. Click Finish.

    Note

    WELSIM relies on the latest version of Microsoft MPI. If the Microsoft MPI redistributable installation conflicts with your pre-existing MS MPI libraries, please uninstall the pre-existing MPI from the Control Panel and reinstall the WELSIM.

    "},{"location":"install/windows/#activating-the-welsim","title":"Activating the WELSIM","text":"

    In this section, assuming you already received the license file wsimkey.dat. To activate WELSIM on your computer with client licensing, you can follow the steps below:

    1. Start WELSIM application on your computer.
    2. Click the License Manager from the menu: HELP -> License Manager
    3. WELSIM License Manager user interface appears. There are five buttons on the interface:
      1. Generate Computer ID: generate user's unique ID for license key generation.
      2. Evaluate: click to continue using the trial version.
      3. Exit: quit the License Manager with no software activation.
      4. Buy Now: open your default internet browser and direct your visit to the pricing page.
      5. Enter Code: If you have received the license key file, click this button to import the license file.
    4. If the user are running software at the first time, generate the Computer ID by clicking the button of \u201cGenerate Computer ID\u201d, and send this string (format of xxxx-xxxx-xxxx-xxxx) to info@welsim.com. The user will receive the license key within 24 hours.
    5. After receiving the license file (wsimkey.dat), click \u201cEnter Code\u201d button to import the license. In the License Code interface, the user can paste the license content from clipboard, or directly import the license from file.
    6. Click OK button to activate the WELSIM. A successfully activated software is shown in figure\u00a0below.

    "},{"location":"install/windows/#starting-the-software","title":"Starting the software","text":"

    After installation, starting the WELSIM software is straightforward. Here are three methods:

    1. Double click the shortcut of WELSIM, if you toggle the option \u201cCreate Desktop Shortcut\u201d during the last step of installation.
    2. Click the shortcut of WELSIM from the Start menu. From Start -> WELSIM ->WELSIM v1.8.
    3. Browse the directory of installation, double click the runWelSim.exe file.

    As shown in the figure\u00a0below, WESLIM application is started successfully on the Windows operation system.

    "},{"location":"install/windows/#uninstalling-the-software","title":"Uninstalling the software","text":"

    Uninstalling the software is straightforward. The user can run the unint.exe from one of methods below:

    1. Click the shortcut of WELSIM uninstaller from the Start menu. From Start -> WELSIM ->Uninstall.
    2. Browse the directory of installation, double click the uninst.exe file.
    3. Unstall the WELSIM application from the system Control Panel.
    "},{"location":"legal/","title":"Legal notice","text":""},{"location":"legal/#copyright-and-trademark-information","title":"Copyright and trademark information","text":"

    \u00a92023 WelSimulation LLC. All rights reserved. Unauthorized use, distribution or duplication is prohibited.

    WELSIM and any and all WelSimulation LLC brand, product, service and feature names, logos and slogans are registered trademarks or trademarks of WelSimulation LLC. or its subsidiaries in the United States or other countries. All other brand, product, service and feature names or trademarks are the property of their respective owners.

    "},{"location":"legal/#disclaimer-notice","title":"Disclaimer notice","text":"

    THIS WELSIM SOFTWARE PRODUCT AND PROGRAM DOCUMENTATION INCLUDE TRADE SECRETS AND ARE CONFIDENTIAL AND PROPRIETARY PRODUCTS OF WELSIMULATION LLC, ITS SUBSIDIARIES, OR LICENSORS. The software products and documentation are furnished by WelSimulation LLC, its subsidiaries, or affiliates 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.

    "},{"location":"legal/#us-government-rights","title":"U.S. government rights","text":"

    For U.S. Government users, except as specifically granted by the WelSimulation LLC software license agreement, the use, duplication, or disclosure by the United States Government is subject to restrictions stated in the WelSimulation LLC software license agreement.

    "},{"location":"legal/#third-party-software","title":"Third-party software","text":"

    This product may contain the following licensed software which requires reproduction of the following notices.

    • ABAQUS is a registered trademark of ABAQUS, Inc

    • Copyright 1984-1989, 1994 Adobe Systems Incorporated. Copyright 1988, 1994 Digital Equipment Corporation. Permission to use,copy,modify,distribute and sell this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notices appear in all copies and that both those copyright notices and this permission notice appear in supporting documentation, and that the names of Adobe Systems and Digital Equipment Corporation not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Adobe Systems & Digital Equipment Corporation make no representations about the suitability of this software for any purpose. It is provided \"as is\" without express or implied warranty.

    • Adobe and Acrobat are registered trademarks of Adobe Systems Incorporated

    • Apache commons CLI, Apache Commons Compress, Apache Commons DBCP, and Apache Commons Pool ([http://commons.apache.org||http://commons.apache.org]) - Copyright 2001-2008 The Apache Software Foundation Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. See Apache License for a complete listing of the Apache License.

    • Boost C++ Libraries [http://www.boost.org] is licensed under the Boost Software License V1 [http://www.boost.org/users/license.html]

    • Coin3D is a high-level, retained-mode toolkit for effective 3D graphics development. It is API compatible with Open Inventor 2.1. Coin3D is Free Software, published under the BSD 3-clause license.

    • cpp (GCC): Copyright (C) 2003 Free Software Foundation, Inc.

    • CrashRpt is a light-weight open-source error reporting library for C++ applications running in Windows.

    • DXF is a trademark of Autodesk, Inc

    • Eigen is a high-level C++ library of template headers for linear algebra, matrix and vector operations, geometrical transformations, numerical solvers and related algorithms. Eigen is published under MPL2 license.

    • Fmt is an open-source formatting library for C++. It can be used as a safe and fast alternative to (s)printf and IOStreams.

    • FreeType2: Portions of this software are copyright 1996-2002, 2006 The FreeType Project ([http://www.freetype.org]). All rights reserved.

    • FrontISTR is an open-source large-scale parallel finite element method program for nonlinear structural analysis. It is published under MIT license.

    • GNU Fortran and Standard C++ library http://gcc.gnu.org is licensed under The GNU General Public License (GPL) Version 2 June 1991 Copyright \u00a9 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGR4AM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. See GNU GENERAL PUBLIC LICENSE (GPL) for a complete listing of the GNU GENERAL PUBLIC LICENSE.

    • gzip http://www.gzip.org is licensed under The GNU General Public License (GPL) Version 2 June 1991 Copyright \u00a9 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGR4AM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. See GNU GENERAL PUBLIC LICENSE (GPL) for a complete listing of the GNU GENERAL PUBLIC LICENSE.

    • Gzstream is a small C++ library, basically just a wrapper, that provides the functionality of the zlib C-library in a C++ iostream. It is freely available under the LGPL license.

    • HDF5 (Hierarchical Data Format 5) Software Library and Utilities Copyright 2006-2008 by The HDF Group (THG). NCSA HDF5 (Hierarchical Data Format 5) Software Library and Utilities Copyright 1998-2006 by the Board of Trustees of the University of Illinois. All rights reserved. Contributors: National Center for Supercomputing Applications (NCSA) at the University of Illinois, Fortner Software, Unidata Program Center (netCDF), The Independent JPEG Group (JPEG), Jean-loup Gailly and Mark Adler (gzip), and Digital Equipment Corporation (DEC). Redistribution and use in source and binary forms, with or without modification, are permitted for any purpose (including commercial purposes) provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the following disclaimer in the documentation and/or materials provided with the distribution. 3. In addition, redistributions of modified forms of the source or binary code must carry prominent notices stating that the original code was changed and the date of the change. 4. All publications or advertising materials mentioning features or use of this software are asked, but not required, to acknowledge that it was developed by The HDF Group and by the National Center for Supercomputing Applications at the University of Illinois at Urbana-Champaign and credit the contributors. 5. Neither the name of The HDF Group, the name of the University, nor the name of any Contributor may be used to endorse or promote products derived from this software without specific prior written permission from THG, the University, or the Contributor, respectively. DISCLAIMER: THIS SOFTWARE IS PROVIDED BY THE HDF GROUP (THG) AND THE CONTRIBUTORS \"AS IS\" WITH NO WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED. In no event shall THG or the Contributors be liable for any damages suffered by the users arising out of the use of this software, even if advised of the possibility of such damage. Portions of HDF5 were developed with support from the University of California, Lawrence Livermore National Laboratory (UC LLNL). The following statement applies to those portions of the product and must be retained in any redistribution of source code, binaries, documentation, and/or accompanying materials: This work was partially produced at the University of California, Lawrence Livermore National Laboratory (UC LLNL) under contract no. W-7405-ENG-48 (Contract 48) between the U.S. Department of Energy (DOE) and The Regents of the University of California (University) for the operation of UC LLNL. DISCLAIMER: This work was prepared as an account of work sponsored by an agency of the United States Government. Neither the United States Government nor the University of California nor any of their employees, makes any warranty, express or implied, or assumes any liability or responsibility for the accuracy, completeness, or usefulness of any information, apparatus, product, or process disclosed, or represents that its use would not infringe privately- owned rights. Reference herein to any specific commercial products, process, or service by trade name, trademark, manufacturer, or otherwise, does not necessarily constitute or imply its endorsement, recommendation, or favoring by the United States Government or the University of California. The views and opinions of authors expressed herein do not necessarily state or reflect those of the United States Government or the University of California, and shall not be used for advertising or product endorsement purposes.

    • IGES is a trademark of IGES Data Analysis, Inc

    • Intel is a registered trademark of Intel Corporation

    • JsonCpp is a C++ library that allows manipulating JSON values. It is freely availble under MIT license.

    • Mesa Library license requirements: Copyright (C) 1999-2005 Brian Paul All Rights Reserved. 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 BRIAN PAUL 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. Mesa Component Licenses also apply. Reference http://mesa3d.sourceforge.net/.

    • METIS 4.0.1 Copyright 1997, Regents of the University of Minnesota. METIS was written by George Karypis (karypis@cs.umn.edu). Our policy regarding the distribution of METIS with third-party applications is as follows: Non-commerical applications METIS can be freely distributed provided that proper references are included and the original documentation and copyright notice is included. Commercial applications METIS cab be freekt distributed provided that proper references are included, the original documentation and copyright notice is included and METIS is a relatively small portion of the overall application. In either case, permission to distribute/include METIS with your application must be obtained by sending email to metis@cs.umn.edu.

    • Microsoft, Windows, Windows 2000 and Windows XP are registered trademarks of Microsoft Corporation.

    • MPICH2 Copyright Notice + 2002 University of Chicago Permission is hereby granted to use, reproduce, prepare derivative works, and to redistribute to others. This software was authored by: Argonne National Laboratory Group W. Gropp: (630) 252-4318; FAX: (630) 252-5986; e-mail: gropp@mcs.anl.gov E. Lusk: (630) 252-7852; FAX: (630) 252-5986; e-mail: lusk@mcs.anl.gov Mathematics and Computer Science Division Argonne National Laboratory, Argonne IL 60439

    • MUMPS is a software application for the solution of large sparse systems of linear algebraic equations on distributed memory parallel computers. It is freely available under CeCILL-C license.

    • NASTRAN is a registered trademark of the National Aeronautics and Space Administration.

    • NetCDF is a set of software libraries and self-describing, machine-independent data formats that support the creation, access, and sharing of array-oriented scientific data.

    • NetGen is an automatic 3d tetrahedral mesh generator under GNU LGPL.

    • Open CASCADE is open source software for 3D surface and solid modeling, visualization, data exchange, and rapid application development. It is published under LGPL.

    • Open License Manager is a license manager written in C/C++ for Windows and Linux environments. It is pulished under BSD3 license.

    • OpenSSL OpenSSL is a robust, commercial-grade, and full-featured toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols. OpenSSL is licensed under an Apache-style license.

    • PETSc is a suite of data structures and routines for the scalable (parallel) solution of scientific applications modeled by partial differential equations. It is published under 2-clause BSD license.

    • Pro/ENGINEER is a registered trademark of Parametric Technology Corporation.

    • Pthread a multi-thread library. It is freely available under MIT license.

    • QT is a multiplatform C++ GUI toolkit. It is freely available under LGPL. See [http://www.qt.io] for more information.

    • Visualization Toolkit (VTK) is an open-source, freely available software system for 3D computer graphics, image processing and visualization. It is published under 3-Clause BSD license.

    • Xerces-C++ is a validating XML parser written in a portable subset of C++. Xerces-C++ is made available under the Apache Software License, Version 2.0.

    • ZLIB 1.1.3 Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler.

    "},{"location":"legal/LGPL/","title":"GNU Lesser Genreal Public License (LGPL)","text":""},{"location":"legal/LGPL/#version-3-gnu-lesser-general-public-license","title":"Version 3 GNU Lesser General Public License","text":"

    Version 3, 29 June 2007

    Copyright \u00a9 2007 Free Software Foundation, Inc. http://fsf.org/

    Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

    This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below.

    1. Additional Definitions. As used herein, \u201cthis License\u201d refers to version 3 of the GNU Lesser General Public License, and the \u201cGNU GPL\u201d refers to version 3 of the GNU General Public License.

      \u201cThe Library\u201d refers to a covered work governed by this License, other than an Application or a Combined Work as defined below.

      An \u201cApplication\u201d is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library.

      A \u201cCombined Work\u201d is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the \u201cLinked Version\u201d.

      The \u201cMinimal Corresponding Source\u201d for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version.

      The \u201cCorresponding Application Code\u201d for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work.

    2. Exception to Section 3 of the GNU GPL. You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL.

    3. Conveying Modified Versions.

      If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version:

      1. under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or

      2. under the GNU GPL, with none of the additional permissions of this License applicable to that copy.

    4. Object Code Incorporating Material from Library Header Files. The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following:

      1. Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License.

      2. Accompany the object code with a copy of the GNU GPL and this license document.

    5. Combined Works. You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following:

      1. Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License.
      2. Accompany the Combined Work with a copy of the GNU GPL and this license document.
      3. For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document.
      4. Do one of the following:

        1. Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.

        2. Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version.

      5. Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.)

    6. Combined Libraries. You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following:

      1. Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License.
      2. Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work.
    7. Revised Versions of the GNU Lesser General Public License. The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.

      Each version is given a distinguishing version number. If the Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License \u201cor any later version\u201d applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation.

      If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library.

    "},{"location":"legal/LGPL/#version-21","title":"Version 2.1","text":"

    GNU LESSER GENERAL PUBLIC LICENSE (LGPL) Version 2.1, February 1999 Copyright \u00a9 1991, 1999, Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

    WelSimulation LLC will provide you with a complete machine-readable copy of the source code, valid for three years. The source code can be obtained by contacting WelSimulation LLC at info@welsim.com.

    Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. NO WARRANTY BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

    "},{"location":"legal/LGPL/#gnu-lesser-general-public-license","title":"GNU Lesser General Public License","text":"

    Version 2.1

    Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

    Preamble

    The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users.

    This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below.

    When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things.

    To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it.

    For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights.

    We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library.

    To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others.

    Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license.

    Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs.

    When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library.

    We call this license the \"Lesser\" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances.

    For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License.

    In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system.

    Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library.

    The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a \"work based on the library\" and a \"work that uses the library\". The former contains code derived from the library, whereas the latter must be combined with the library in order to run.

    GNU LESSER GENERAL PUBLIC LICENSE

    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

    1. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called \"this License\"). Each licensee is addressed as \"you\".

    A \"library\" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables.

    The \"Library\", below, refers to any such software library or work which has been distributed under these terms. A \"work based on the Library\" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term \"modification\".)

    \"Source code\" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library.

    Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does.

    1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library.

    You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.

    1. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:

      1. The modified work must itself be a software library.
      2. You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change.
      3. You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License.\\
      4. If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful.

    (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.)

    These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.

    Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library.

    In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.

    1. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices.

    Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy.\\noindent

    This option is useful when you wish to copy part of the code of the Library into a program that is not a library.

    1. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange.

    If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code.

    1. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a \"work that uses the Library\". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License.

    However, linking a \"work that uses the Library\" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a \"work that uses the library\". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables.

    When a \"work that uses the Library\" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law.

    If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.)

    Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself.

    1. As an exception to the Sections above, you may also combine or link a \"work that uses the Library\" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications.

      You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things:

      1. Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable \"work that uses the Library\", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.)

      2. Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with.

      3. Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution.

      4. If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place.

      5. Verify that the user has already received a copy of these materials or that you have already sent this user a copy.

      For an executable, the required form of the \"work that uses the Library\" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.

      It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute.

    2. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things:

      1. Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above.

      2. Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work.

    3. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

    4. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it.

    5. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License.

    6. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library.

    If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances.

    It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.

    This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.

    1. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.

    2. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.

    Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and \"any later version\", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation.

    1. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.

    2. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

    3. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

    END OF TERMS AND CONDITIONS

    "},{"location":"legal/contact/","title":"WelSimulation LLC contact information","text":"

    WelSimulation LLC

    1840 Mayview Rd. Suite 208

    Bridgeville, PA 15017

    USA

    Email: info@welsim.com

    Website: https://welsim.com

    Phone: +1 724-914-8722

    "},{"location":"legal/trademarks/","title":"WELSIM Trademarks List","text":"
    • WELSIM\u00ae
    "},{"location":"mateditor/mat_core_loss/","title":"Core loss model","text":"

    The core loss combines eddy current losses and hysteresis losses for a transient solution type. It is a post-processing calculation, based on already calculated transient magnetic field quantities. It is applicable for the evaluation of core losses in steel laminations (frequently used in applications such as electric machines, transformers) or in power ferrites.

    Hysteresis loss is associated with loss density fields in 2D and 3D eddy current solutions only. Hysteresis loss is short for magnetic hysteresis loss and represents power loss in some magnetic materials (electric steels or ferrites) in alternating (sinusoidal) magnetic fields. This loss is due to a phenomenon called \"magnetic viscosity\" which causes the B and H fields to have a phase shift between them. In the B-H plane, for linear materials, the relationship between these two fields describes an ellipse. The hysteresis loss is proportional to the area of the ellipse.

    "},{"location":"mateditor/mat_core_loss/#core-loss-models-for-an-electromagnetic-material","title":"Core loss models for an electromagnetic material","text":"

    MatEditor provides two core loss models: electrical steel and power ferrite. The coefficients are given in the table below.

    Type Associated properties Electrical Steel Hystersis coefficient \\(K_h\\), Classcial eddy coefficient \\(K_c\\), Excess coefficient \\(K_e\\). Power Ferrite Steinmetz coefficients \\(C_m\\), \\(X\\), and \\(Y\\).

    Note

    In Transient Solver, X must be less than Y.

    "},{"location":"mateditor/mat_core_loss/#calculating-properties-for-core-loss-b-p-curve","title":"Calculating properties for core loss (B-P curve)","text":"

    To be able to extract parameters from the loss characteristics (B-P Curve), you first set the Core Loss Model of the material to Electrical Steel or Power Ferrite as a material property in the Property View.

    Additional parameters appear in the following table Core Loss Model (\\(K_h\\), \\(K_c\\), and \\(K_e\\) for electrical steel, and \\(C_{m}\\), \\(X\\), and \\(Y\\) for power ferrite). If the P-B test data is already presented in the current material, you can add curve fitting property from the RMB context menu. This allows the electrical steel coefficients \\(K_h\\), \\(K_c\\), and \\(K_e\\), or the power ferrite coefficients \\(C_m\\), \\(X\\), and \\(Y\\) to be derived from a manufacturer-provided core loss curve.

    Node

    The accuracy in inputting the data for B-P Curve for the electrical steel material has a significant effect on the correctness of the analyses to the electromagnetic devices. You should input the data for B-P Curve according to accurate data provided by material manufacturers. Typically core material suppliers provide the average loss over a cycle for a peak B, of sinusoidal nature. Therefore for BP curve input in WelSim, B (Tesla) should be peak and P should be average.

    As the input data (value or unit) changes, the following parameters are not automatically updated unless you resolve the curve fitting:

    • \\(K_h\\) - Hysteresis Coefficient
    • \\(K_c\\) - Classical Eddy Coefficient
    • \\(K_e\\) - Excess Coefficient
    • \\(C_m\\) - Steinmetz Coefficient
    • \\(X\\) - Steinmetz Coefficient
    • \\(Y\\) - Steinmetz Coefficient
    "},{"location":"mateditor/mat_core_loss/#calculate-core-loss-coefficients-from-loss-curves","title":"Calculate core loss coefficients from loss curves","text":"

    This section introduces how to calculate core loss coefficients for electrical steel and power ferrite materials according to the given P-B test data.

    1. Add P-B Test Data material property, and edit the frequency-based data. You also can import the data from a plain text or Excel file. Check the data curves by clicking the row of frequency. Click the header of the frequency column displays all curves in the chart.

    2. Add Core Loss Model material property, and set the Core Loss Model Type of the property to Electrical Steel or Power Ferrite.

    3. Add Curve Fitting sub-property from the RMB context menu.

    4. Solve the curve fit from the RMB context menu.

    5. If the solve succeeds. The calculated parameters will be shown in the table.

    6. Copy the solved values to the properties from RMB context menu. You also can review the calculated curves in the chart.

    7. Display curves in the logarithmic axis (optional).

    "},{"location":"mateditor/mat_core_loss/#computation-of-electrical-steel-core-loss-from-loss-curves","title":"Computation of electrical steel core loss from loss curves","text":"

    The iron-core loss without DC flux bias is expressed as the following:

    \\[ p_v=P_h+P_c+P_e=K_{f} f (B_m)^2 + K_c (fB_m)^2 + K_e(fB_m)^{1.5} = K_1B_m^2+K_2B_m^{1.5} \\]

    where

    • \\(B_m\\) is the amplitude of the AC flux component,
    • \\(f\\) is the frequency,
    • \\(K_h\\) is the hysteresis core loss coefficient,
    • \\(K_c\\) is the eddy-current core loss coefficient, and
    • \\(K_e\\) is the excess core loss coefficient,
    • \\(K_1=K_ff+K_cf^2\\),
    • \\(K_2=K_ef^{1.5}\\).

    Minimize the quadratic form to obtain \\(K_h\\) , \\(K_c\\), and \\(K_e\\) directly.

    \\[ err(K_h,K_c,K_e)=\\sum_{i=1}^m \\sum_{j=1}^{n_i} \\left[p_{ij}-\\left(K_{h}f_{i}B_{mij}^2 +K_{c}\\left(fB_{mij}\\right)^{2}+ K_{e}\\left(f_iB_{mij}\\right)^{1.5} \\right) \\right]^2=min \\]

    where \\(m\\) is the number of loss curves, \\(n_i\\) is the number of points of the \\(i\\)-th loss curve, and \\(p_{ij} = f(f_i , B_{mij})\\) is two dimensional lookup table for loss curves.

    Note

    Since the manufacturer-provided loss curve is obtained under sinusoidal flux conditions at a given frequency, these coefficients can be derived in the frequency domain.

    "},{"location":"mateditor/mat_core_loss/#computation-of-power-ferrite-core-loss-from-loss-curves","title":"Computation of power ferrite core loss from loss curves","text":"

    The principles of the computation algorithm are summarized as follows. The iron-core loss is expressed as the Steinmetz approximation

    \\[ p_v=C_m f^x B_m^y \\]

    where \\(p_v\\) is the average power density, \\(f\\) is the excitation frequency, and \\(B_m\\) is the peak flux density, is commonly used to characterize core loss data for sinusoidal excitation, but can also be applied to square-wave data.

    To linearize the equation for curve fitting, we used base-10 logarithms. The equation above can be rewritten to

    \\[ log(p_v)=c + x\\cdot log(f) + y \\cdot(B_m) \\]

    where \\(c=log(C_m)\\).

    Minimize the quadratic form to obtain \\(C\\), \\(x\\) and \\(y\\).

    \\[ err(C_m,x,y)=\\sum_{i=1}^{m}\\sum_{j=1}^{n_i}\\left[log(p_{vij})-\\left(c+xlog(f_i)+ylog(B_{mij}) \\right) \\right]^2=min \\]

    where \\(m\\) is the number of loss curves, \\(n_i\\) is the number of points of the \\(i\\)-th loss curve, and \\(P_{vij} = f(f_i , B_{mij})\\) is two dimensional lookup table for multi-frequency loss curves. Then \\(C_m\\) is calculated from the equation \\(c=log(C_m)\\).

    "},{"location":"mateditor/mat_file_format/","title":"Material library file format","text":"

    Material library data follows the MatML 3.1 Schema for saving material data to external libraries on disk. More information about MatML can be found at http://matml.org. For an example of the format see the Export individual data item in the Perform Basic Tasks in Material section and then open the file with a text/xml editor.

    "},{"location":"mateditor/mat_gui/","title":"Graphical user interface","text":"

    The MatEditor workspace is an independent interface and display relavant items as you configured.

    "},{"location":"mateditor/mat_gui/#layout-reference","title":"Layout reference","text":"

    Presented below are two layout configurations for the MatEditor view. The first configuration is displayed by clicking on \"Library\" tab in toolbox. The second configure is shown by clicking on \"Build\" tab in toolbox. You can switch this two layout mode by clicking the tabs.

    Legend Name Description A Menu Bar Operations for MatEditor. B Toolbar Selected operations that often used for MatEditor. C Material Outline Pane Material items that are created in MatEditor. D Library Outline Pane Displays the available prebuild material sources. E Property Outline Pane Displays the available material property sources that can be included into a material. F Properties Pane Displays the properties of the current material. G Table Pane Shows the tabular data for the selected item in the Properties pane. H Chart Pane Shows the chart of the item selected in the Properties pane."},{"location":"mateditor/mat_gui/#menu-bar","title":"Menu bar","text":"

    The following items in the menu bar are provided by MatEditor:

    "},{"location":"mateditor/mat_gui/#file","title":"File","text":"
    • New: Create a new material object in the tree window.
    • Open: Retrieve material data from an external XML file. This command remove all existing material data in the system.
    • Save: Save current material data into an external XML file.
    • Save as: Save current material data into an designated folder and in a specific XML file name.
    • Export material data: Output selected material data into an exteral XML file.
    • Import material data: Input material data from an external XML file. The existing material data will not be removed.
    • Exit: Close the software.
    "},{"location":"mateditor/mat_gui/#edit","title":"Edit","text":"
    • Activate: Set the selected material object as current.
    • Duplicate: Create a new material object and copy all propeties from the selected to the newly created material.
    • Delete: Remove the selected material object(s).
    • Delete all: Remove all material objects.
    "},{"location":"mateditor/mat_gui/#units","title":"Units","text":"

    This menu provides all avilable unit systems and units. Once one unit (system) is chosen, the default unit is determined. The units for the newly created material data will be automatically set to the chosen unit(system).

    "},{"location":"mateditor/mat_gui/#help","title":"Help","text":"
    • Help: Direct the user to the online user manual.
    • About: Display the software and hardware information dialog.
    "},{"location":"mateditor/mat_gui/#toolbar","title":"Toolbar","text":"

    The following item in the toolbar is provided by MatEditor:

    Icon Name Description New Create a new material object in the tree window. Open Retrieve material data from an external XML file. This command remove all existing material data in the system. Save Save current material data into an external XML file. Help Direct the user to the online user manual. About Display the software and hardware information dialog."},{"location":"mateditor/mat_gui/#toolbox","title":"Toolbox","text":"

    MatEditor Toolbox contains two tabs: Library and Build. These two tabs function as:

    • Library: contains default material data that allows user to directly use. Clicking this tab displays the Library Outline Pane.
    • Build: contains all supported material properties that enable user to compose material data. Clicking this tab displays the Property Outline Pane.
    "},{"location":"mateditor/mat_gui/#material-outline-pane","title":"Material outline pane","text":"

    The Outline pane shows an outline of the contents of the created material data source. You can perform the following actions in this pane:

    • Create a new material
    • Delete a material
    • Rename a material
    • Edit a material
    • Duplicate a material
    "},{"location":"mateditor/mat_gui/#items-status","title":"Items status","text":"

    The itmes column shows the name of the items contained in the data source. When the name of material object is in bold, the material is activated for editing.

    "},{"location":"mateditor/mat_gui/#library-outline-pane","title":"Library outline pane","text":"

    The Library Outline pane shows an outline of availble predefined materials. These materials are grouped into several categories.

    "},{"location":"mateditor/mat_gui/#property-outline-pane","title":"Property outline pane","text":"

    The Property Outline pane shows an outline of availble material properties. These material properties are grouped into several categories.

    "},{"location":"mateditor/mat_gui/#properties-pane","title":"Properties pane","text":"

    The Properties pane shows the properties for the item selected in the Property Outline pane. You can perform the following actions in this pane:

    • Add additional properties, tabular data (from the Property Outline and Table panes)
    • Delete a property
    • Modify constant data
    • Suppress a property
    "},{"location":"mateditor/mat_gui/#property-column","title":"Property column","text":"

    The property column lists the properties for the item selected in the Property Outline pane. Clicking a property will change the contents of the Table pane and Chart pane.

    "},{"location":"mateditor/mat_gui/#material-property","title":"Material property","text":"

    The status of the material property is indicated as follows:

    • : The material property is described in a single property data (see the Material Definitions topic).
    "},{"location":"mateditor/mat_gui/#value-column","title":"Value column","text":"

    The value column is used to change data for a property or indicates that the data for the property is tabular ().

    "},{"location":"mateditor/mat_gui/#unit-column","title":"Unit column","text":"

    The unit column displays the unit of the data shown in the value column . If the column is editable (see Units Menu), changing the unit will convert the value into the selected unit (there is no net change in the data, so the solution is still valid).

    "},{"location":"mateditor/mat_gui/#suppression-column","title":"Suppression column","text":"

    The suppression column shows the suppression status of the item and may also be used to switch the status (see Suppression).

    "},{"location":"mateditor/mat_gui/#table-pane","title":"Table pane","text":"

    The Table pane shows the tabular data for the item selected in the Properties pane. If there are independent variables (for instance, Temperature) for the selected item and the item is constant, you may change it to a table by entering a value into the independent variables data cell. If a row is shown with an index of *, you may add additional rows of data.

    Note

    You also can change the unit by clicking the header of table

    "},{"location":"mateditor/mat_gui/#chart-pane","title":"Chart pane","text":"

    The Chart pane shows the chart of the selected item in the Properties pane. The chart data is idenital to the table data.

    "},{"location":"mateditor/mat_hyperelasticity_curvefit/","title":"Curve Fitting","text":""},{"location":"mateditor/mat_hyperelasticity_curvefit/#calculate-material-constants-from-test-data","title":"Calculate material constants from test data","text":"

    This section introduces how to calculate material coefficients for the selected hyperelastic models according to the given uniaxial, biaxial, shear, and volumetric test data. Enginering strain and stress pair is used for input data.

    1. Add Uniaxial Test Data, Biaxial Test Data, or Shear Test Data material property, and edit the strain-stress data. You also can import the data from a plain text or Excel file. Set the temperature value if it is available. Check the data points by clicking the row of temperature.

    2. Add one of hyperelastic material properties from the toolbox, the supported hyperelastic models include Neo-Hookean, Mooney-Rivlin, Arruda-Boyce, Blatz-Ko, Gent, Ogden, Polynomial, and Yeoh. An example of Mooney-Rivlin 9 is given here.

    3. Add Curve Fitting sub-property from the RMB context menu.

    4. Solve the curve fit from the RMB context menu.

    5. If the solve succeeds. The calculated parameters will be shown in the table.

    6. Copy the solved values to the properties from RMB context menu. You also can review the calculated curves in the chart.

    Note

    1. The test data should cover the entire strain range in the following simulation.
    2. It is recommended to input all uniaxial, biaxial, and shear test data if those data are available from the experiments.
    "},{"location":"mateditor/mat_io/","title":"Mutually exclusive properties 1","text":"

    Some properties are mutually exclusive of each other and require that only one property in the mutually exclusive set be unsuppressed. The addition or removing of the suppression for one of these properties automatically suppresses the other mutually exclusive properties.

    For example, defining Isotropic Elasticity and Orthotropic Elasticity for the same material represents redundant elasticity behavior. Only one behavior can be active for the material. When such a conflict occurs, the property defined last is used and the previously defined, conflicting property is automatically suppressed.

    The properties that are mutually exclusive are grouped in the following table.

    Group Material Property Elastic properties Isotropic Elasticity, Orthotropic Elasticity, Anisotropic Elasticity, Mooney-Rivlin, Neo-Hookean, Polynomial, Yeoh, Ogden, Arruda-Boyce, Gent, Blatz-Ko, Ogden Foam, Extended Tube, Mullins Effect Plastic properties Bilinear Isotropic Hardening, Multilinear Isotropic Hardening, Bilinear Kinematic Hardening, Multilinear Kinematic Hardening Thermal conductivity properties Thermal Conductivity Isotropic, Thermal Conductivity Orthotropic Resistivity properties Isotropic Resistivity, Orthotropic Resistivity Electric permittivity properties Isotropic Relative Permittivity, Orthotropic Relative Permittivity Dielectric loss properties Isotropic Dielectric Loss Tangent, Orthotropic Dielectric Loss Tangent Magnetic permeability properties Isotropic Relative Permeability, Orthotropic Relative Permeability Magnetic loss properties Isotropic Relative Imaginary Permeability, Isotropic Magnetic Loss Tangent, Orthotropic Magnetic Loss Tangent"},{"location":"mateditor/mat_io_openradioss/","title":"OpenRadioss format","text":"

    The format of exported material scripts is based on the OpenRadioss version 2022, more details please refer to the OpenRadioss user reference manual.

    The import of OpenRadioss scripts is not supported yet in MatEditor/WELSIM.

    "},{"location":"mateditor/mat_io_openradioss/#supported-openradioss-units","title":"Supported OpenRadioss units","text":"

    At present, MatEditor supports eight types of unit systems commonly used in engineering simulation, which are as follows.

    • Metric kg-m-s
    • Metric g-cm-s
    • Metrickg-mm-s
    • Metric tonne-mm-s
    • Metric decatonne-mm-s
    • Metric kg-um-s
    • US Customary lbm-ft-s
    • US Customary lbm-in-s
    • Metric g-cm-us
    "},{"location":"mateditor/mat_io_openradioss/#supported-openradioss-materials","title":"Supported OpenRadioss materials","text":""},{"location":"mateditor/mat_io_openradioss/#basic","title":"Basic","text":"
    • Density
    • Linear Elasticity
    "},{"location":"mateditor/mat_io_openradioss/#hyperelasticity-and-viscoelasticity","title":"Hyperelasticity and Viscoelasticity","text":"
    • LAW34 \u2014 Boltzmann
    • LAW35 \u2014 Maxwell-Kelvin-Voigt
    • LAW40 \u2014 Maxwell-Kelvin
    • LAW42 \u2014 Odgen \u00bd/3
    • LAW92 \u2014 Arruda-Boyce
    • LAW94 \u2014 Yeoh \u00bd/3
    • LAW100 \u2014 Polynomial, Neo-Hookean, Mooney-Rivlin2
    "},{"location":"mateditor/mat_io_openradioss/#plasticity","title":"Plasticity","text":"
    • LAW2 \u2014 Johnson-Cook
    • PLAS_ZERIL \u2014 Zerilli-Armstrng
    • LAW32 \u2014 Hill
    • LAW36 \u2014 Rate-Dependent Multilinear Hardening
    • LAW44 \u2014 Cowper-Symonds
    • LAW93 \u2014 Orthotropic Hill
    • LAW48 \u2014 Zhao
    • LAW49 \u2014 Steinberg-Guinan
    • LAW52 \u2014 Gurson
    • LAW57 \u2014 Barlet3
    • LAW78 \u2014 Yoshida-Uemori
    • LAW79 \u2014 Johnson-Holmquist
    • LAW84 \u2014 Swift-Voce
    • LAW103 \u2014 Hensel-Spittel
    • LAW110 \u2014 Vegter
    "},{"location":"mateditor/mat_io_openradioss/#failure-models","title":"Failure Models","text":"
    • ALTER \u2014 Glass Failure
    • BIQUD \u2014 BiQuadratic
    • COCKCROFT \u2014 Cockcroft
    • CONNECT-Connect
    • EMC \u2014 ExtendedMohr-Coulomb
    • ENERGY-Energy
    • FABRIC \u2014 Fabric
    • FLD \u2014 Forming Limit Diagram
    • GURSON \u2014 Gurson
    • HASHIN \u2014 Hashin
    • HC_DSSE \u2014 Ladeveze Delamination
    • JOHNSON-Johnson-Cook
    • MULLINS_OR \u2014 Mullins Effect
    • NXT \u2014 NXT
    • ORTHBIQUAD \u2014 Orthotropic Biquad
    • ORTHSTRAIN \u2014 Orthotropic Strain
    • PUCK \u2014 Puck
    • TBUTCHER \u2014 Tuler-Butcher
    • TENSSTRAIN \u2014 Tensile Strain
    • WILKINS \u2014 Wilkins
    • WIERZBICKI \u2014 Wierzbicki
    "},{"location":"mateditor/mat_io_openradioss/#equation-of-state-eos","title":"Equation of State (EOS)","text":"
    • Compaction EOS
    • Gruneisen EOS
    • Ideal Gas EOS
    • Linear EOS
    • LSZK EOS
    • Murnaghan EOS
    • NASG EOS
    • Nobel-Abel EOS
    • Osborne EOS
    • Polynomial EOS
    • Puff EOS
    • Stiff-Gas EOS
    "},{"location":"mateditor/mat_io_openradioss/#fluids","title":"Fluids","text":"
    • LAW06 - Kinematic Viscosity
    • ALE - ALE

    More materials will be added upon user request.

    "},{"location":"mateditor/mat_mutually_exclusive/","title":"Mutually exclusive properties","text":"

    Some properties are mutually exclusive of each other and require that only one property in the mutually exclusive set be unsuppressed. The addition or removing of the suppression for one of these properties automatically suppresses the other mutually exclusive properties.

    For example, defining Isotropic Elasticity and Orthotropic Elasticity for the same material represents redundant elasticity behavior. Only one behavior can be active for the material. When such a conflict occurs, the property defined last is used and the previously defined, conflicting property is automatically suppressed.

    The properties that are mutually exclusive are grouped in the following table.

    Group Material Property Elastic properties Isotropic Elasticity, Orthotropic Elasticity, Anisotropic Elasticity, Mooney-Rivlin, Neo-Hookean, Polynomial, Yeoh, Ogden, Arruda-Boyce, Gent, Blatz-Ko, Ogden Foam, Extended Tube, Mullins Effect Plastic properties Bilinear Isotropic Hardening, Multilinear Isotropic Hardening, Bilinear Kinematic Hardening, Multilinear Kinematic Hardening Thermal conductivity properties Thermal Conductivity Isotropic, Thermal Conductivity Orthotropic Resistivity properties Isotropic Resistivity, Orthotropic Resistivity Electric permittivity properties Isotropic Relative Permittivity, Orthotropic Relative Permittivity Dielectric loss properties Isotropic Dielectric Loss Tangent, Orthotropic Dielectric Loss Tangent Magnetic permeability properties Isotropic Relative Permeability, Orthotropic Relative Permeability Magnetic loss properties Isotropic Relative Imaginary Permeability, Isotropic Magnetic Loss Tangent, Orthotropic Magnetic Loss Tangent"},{"location":"mateditor/mat_overview/","title":"Overview","text":"

    Material Module serves as a database for material properties used in analysis projects. The module not only provides a material library but allow you to create a material using the given properties. The properties view of a Material object is the primary user interface designed to let you create, save, and retrieve material models. The well-defined material object can be saved and used in the subsequent projects.

    Note

    The WELSIM Material module and MatEditor share the same features. For the completed and latest content, you can refer to the manual of MatEditor.

    "},{"location":"mateditor/mat_overview/#graphical-user-interface","title":"Graphical user interface","text":"

    The ease-of-use Material Module contains the following graphical user interface components:

    • Toolbox: provdies two options (Library and Build tabs) for you to edit material data.
    • Library outline pane: lists predefined materials for you to quickly add material data.
    • Property outline pane: shows an outline of the contents of the togglable material properties. You can add a property data entry to the material by toggling on the property entry or remove property by toggling off the property entry.
    • Properties view pane: displays all properties that are going to be added to the Material Object. You can tune the property values at this pane.
    • Table pane: allows you to define and review tabular data for material properies.
    • Chart pane: displays the property tabular data in vivid.
    "},{"location":"mateditor/mat_overview/#predefined-materials","title":"Predefined materials","text":"

    WELSIM also provide predefined materials, which covers most of commonly used materials. Users can choose these materials and apply to the successive finite element analysis.

    Category Materials General Materials Structural Steel, Stainless Steel, Aluminum Alloy, Concrete, Copper Alloy, Gray Cast Iron, Titanium Alloy Nonlinear Materials Aluminum Alloy NL, Concrete NL, Copper Alloy NL, Stainless Steel NL, Structural Steel NL, Titanium Alloy NL Hyperelastic Materials Elastomer Mooney-Rivlin, Elastomer Neo-Hookean, Elastomer Ogden, Elastomer Yeoh, Neoprene Rubber Thermal Materials Brass, Bronze, Copper, Diamond, Ferrite, Nodular Cast Iron, Solder, Teflon, Tungsten, Wood Electromagnetic Materials SS416, Supermendure Other Materials Water Liquid, Argon, Ash"},{"location":"mateditor/mat_overview/#material-properties","title":"Material properties","text":"

    The supported material properties are listed in the table below.

    Category Materials Basic Density, Isotropic Thermal Expansion, Isotropic Instantaneous Thermal Expansion, Orthotropic Thermal Expansion, Orthotropic Instantaneous Thermal Expansion, Constant Damping Coefficient Linear Elastic Isotropic Elasticity, Orthotropic Elasticity, Viscoelastic Hyperelastic Test Data Uniaxial Test Data, Biaxial Test Data, Shear Test Data, Volumetric Test Data, SimpleShear Test Data, Uniaxial Tension Test Data, Uniaxial Compression Test Data Hyperelastic Arruda-Boyce, Blatz-Ko, Gent, Mooney-Rivlin 2, Mooney-Rivlin 3, Mooney-Rivlin 5, Mooney-Rivlin 9, Neo-Hookean, Ogden 1st Order, Ogden 2nd Order, Ogden 3rd Order, Polynomial 1st Order, Polynomial 2nd Order, Polynomial 3rd Order, Yeoh 1st Order, Yeoh 2nd Order, Yeoh 3rd Order Plasticity Bilinear Isotropic Hardening, Multilinear Isotropic Hardening, Bilinear Kinematic Hardening, Multilinear Kinematic Hardening, Anand Viscoplasticity Creep Strain Hardening, Time Hardening, Generalized Exponential, Generalized Graham, Generalized Blackburn, Modified Time Hardening, Modified Strain Hardening, Generalized Garofalo, Exponential Form, Norton, Combined Time Hardening, Rational Polynomial, Generalized Time Hardening Visco-elastic Prony Shear Relaxation, Prony Volumetric Relaxation Other Mechanical Strain Life Parameters, Compressive Ultimate Strength, Compressive Yield Strength, LaRc0304 Constants, Orthotropic Strain Limits, Orthotropic Stress Limits, Puck Constants, Tensile Ultimate Strength, Tensile Yield Strength, Tsai-Wu Constants, Shape Memory Effect, Drucker-Prager Strength Piecewise, Drucker-Prager Strength Linear, Ideal Gas EOS, Crushable Foam, Nonlinear Elastic Model Damage, Plakin Special Hardening, Tensile Pressure Failure, Crack Softening Failure Thermal Enthalpy, Isotropic Thermal Conductivity, Orthotropic Thermal Conductivity, Specific Heat Electromagnetics B-H Curve, Isotropic Relative Permeability, Orthotropic Relative Permeability, Isotropic Resistivity, Orthotropic Resistivity"},{"location":"mateditor/mat_overview/#working-with-material-data","title":"Working with material data","text":""},{"location":"mateditor/mat_overview/#exporting","title":"Exporting","text":"

    You can export the complete material data to an external XML file. The following format is supported for export:

    • XML in WELSIM Material (MatML 3.1) schema.
    • JSON in WELSIM Material schema.
    • OpenRadioss input script
    "},{"location":"mateditor/mat_properties/","title":"Libraries and properties","text":""},{"location":"mateditor/mat_properties/#definitions","title":"Definitions","text":"

    We make use of the following terminology for materials:

    Term Definition Material An identifier that contains a property or multiple properties Property An identifier the singular information (for example, Density) Property data An identifier for tabular data (for example, Thermal Conductivity)"},{"location":"mateditor/mat_properties/#sample-libraries","title":"Sample libraries","text":"

    MatEditor provides sample material data categorized into several libraries. However, you still need to validate that the data is consistent with the material you are using in your analysis.

    The following materials are included:

    • General Materials: A library of general use materials and consists mostly of metals.
    • General Nonlinear Materials: A library of general use nonlinear materials for performing nonlinear analyses.
    • Hyperelastic Materials: A library of materials containing test data which can be used to represent hyperelastic materails. The data doesn't correspond to any particular material.
    • Thermal Materials: A library of materials containing thermal data.
    • Electromagnetic Materials: A library of materials containing electromagnetic data, specific for use in an electromagnetic analysis.
    "},{"location":"mateditor/mat_properties/#supported-properties","title":"Supported properties","text":"

    The supported material properties are listed by category here.

    "},{"location":"mateditor/mat_properties/#basics","title":"Basics","text":"
    • Density
    • Isotropic Thermal Expansion
    • Isotropic Instantaneous Thermal Expansion
    • Orthotropic Thermal Expansion
    • Orthotopic Instantaneous Thermal Expansion
    • Constant Damping Coefficient
    "},{"location":"mateditor/mat_properties/#linear-elastic","title":"Linear Elastic","text":"
    • Isotropic Elasticity
    • Orthotropic Elasticity
    • Viscoelastic
    "},{"location":"mateditor/mat_properties/#hyperelastic-test-data","title":"Hyperelastic Test Data","text":"
    • Uniaxial Test Data
    • Biaxial Test Data
    • Shear Test Data
    • Volumetric Test Data
    • Simple Shear Test Data
    • Uniaxial Tension Test Data
    • Uniaxial Compression Test Data
    "},{"location":"mateditor/mat_properties/#hyperelastic","title":"Hyperelastic","text":"
    • Arruda-Boyce
    • Blatz-Ko
    • Gent
    • Mooney-Rivlin 2
    • Mooney-Rivlin 3
    • Mooney-Rivlin 5
    • Mooney-Rivlin 9
    • Neo-Hookean
    • Ogden 1st Order
    • Ogden 2nd Order
    • Ogden 3rd Order
    • Polynomial 1st Order
    • Polynomial 2nd Order
    • Polynomial 3rd Order
    • Yeoh 1st Order
    • Yeoh 2nd Order
    • Yeoh 3rd Order
    "},{"location":"mateditor/mat_properties/#plasticity","title":"Plasticity","text":"
    • Bilinear Isotropic Hardening
    • Multilinear Isotropic Hardening
    • Bilinear Kinematic Hardening
    • Multilinear Kinematic Hardening
    • Anand Viscoplasticity
    "},{"location":"mateditor/mat_properties/#creep","title":"Creep","text":"
    • Strain Hardening
    • Time Hardening
    • Generalized Exponential
    • Generalized Graham
    • Generalized Blackburn
    • Modified Time Hardening
    • Modified Strain Hardening
    • Generalized Garofalo
    • Exponential Form
    • Norton
    • Combined Time Hardening
    • Rational Polynomial
    • Generalized Time Hardening
    "},{"location":"mateditor/mat_properties/#visco-elastic","title":"Visco-elastic","text":"
    • Prony Shear Relaxation
    • Prony Volumetric Relaxation
    "},{"location":"mateditor/mat_properties/#thermal","title":"Thermal","text":"
    • Enthalpy
    • Isotropic Thermal Conductivity
    • Orthotropic Thermal Conductivity
    • Specific Heat
    "},{"location":"mateditor/mat_properties/#electromagnetics","title":"Electromagnetics","text":"
    • B-H Curve
    • Isotropic Relative Permeability
    • Orthotropic Relative Permeability
    • Isotropic Resistivity
    • Orthotropic Resistivity
    • Isotropic Relative Permittivity
    • Orthotropic Relative Permittivity
    • Isotropic Dielectric Loss Tangent
    • Isotropic Magnetic Loss Tangent
    • Isotropic Relative Imaginary Permeability
    • Orthotropic Dielectric Loss Tangent
    • Orthotropic Magnetic Loss Tangent
    "},{"location":"mateditor/mat_table_data/","title":"Import/Export Tabular Data","text":"

    Import and export tabular data is supported in MatEditor, CurveFitter and WELSIM, this feature facilitates you to input and output massive tabular data with no need to manually input and output data, specifically test data for the hyperelastic and magnetic core loss materials.

    The import and export buttons are allocated on the top of the Tabular Data Window, as shown in the figure below:

    "},{"location":"mateditor/mat_table_data/#default-file-format","title":"Default file format","text":"

    The default file format used in MatEditor/CurveFitter/WELSIM contains a header block that gives the quantity name, unit, and dependency. This header data allows you to define the units from the external file. The latest version supports both plain text and Excel formats. Both formats share a similar schema. The details of each format are discussed below.

    • The comment line starts with ### symbol and will be ignored by the reader.
    • The first row lists the quantity names.
    • The second row shows the units. For the dimensionless quantity, dash symbol - is used.
    • The third row gives the dependency of the quantity, which could be independent, dependent, subindependent, or subdependent.
    • The kernel test data start from the fourth row.

    Note

    The number of columns of import data must match the pre-defined headers.

    The plain text data file looks like below:

    An example of Excel file is shown below:

    "},{"location":"mateditor/mat_table_data/#format-with-no-header-data","title":"Format with no header data","text":"

    MatEditor/CurveFitter/WELSIM also supports the external data that contains no header information (pure value data). You need to ensure unit consistency when importing such data files. Both plain text and Excel file formats are supported.

    The plain text file with no header dat looks like below:

    Note

    Due to the lack of the header information, the units of the imported data is determined by the current units of the Table. In addition, the pivoting column may not be set if the file does not contain such data. The number of columns must be identicial to that of the pre-defined table quantities.

    "},{"location":"mateditor/mat_table_data/#examples","title":"Examples","text":"

    The examples of the import/export tabular data are available at our GitHub page.

    "},{"location":"mateditor/mat_theory/","title":"Material Theory","text":"

    Some properties are mutually exclusive of each other and require that only one property in the mutually exclusive set be unsuppressed. The addition or removing of the suppression for one of these properties automatically suppresses the other mutually exclusive properties.

    For example, defining Isotropic Elasticity and Orthotropic Elasticity for the same material represents redundant elasticity behavior. Only one behavior can be active for the material. When such a conflict occurs, the property defined last is used and the previously defined, conflicting property is automatically suppressed.

    The properties that are mutually exclusive are grouped in the following table.

    Group Material Property Elastic properties Isotropic Elasticity, Orthotropic Elasticity, Anisotropic Elasticity, Mooney-Rivlin, Neo-Hookean, Polynomial, Yeoh, Ogden, Arruda-Boyce, Gent, Blatz-Ko, Ogden Foam, Extended Tube, Mullins Effect Plastic properties Bilinear Isotropic Hardening, Multilinear Isotropic Hardening, Bilinear Kinematic Hardening, Multilinear Kinematic Hardening Thermal conductivity properties Thermal Conductivity Isotropic, Thermal Conductivity Orthotropic Resistivity properties Isotropic Resistivity, Orthotropic Resistivity Electric permittivity properties Isotropic Relative Permittivity, Orthotropic Relative Permittivity Dielectric loss properties Isotropic Dielectric Loss Tangent, Orthotropic Dielectric Loss Tangent Magnetic permeability properties Isotropic Relative Permeability, Orthotropic Relative Permeability Magnetic loss properties Isotropic Relative Imaginary Permeability, Isotropic Magnetic Loss Tangent, Orthotropic Magnetic Loss Tangent"},{"location":"mateditor/mat_theory_eos/","title":"Equations of State (EOS)","text":"

    MatEditor allows you to define the EOS material properties. The supported properties are listed below.

    • Compaction
    • Gruneisen
    • Ideal Gas
    • Linear
    • LSZK (Landau-Stanyukovich-Zeldovich-Kompaneets)
    • Murnaghan
    • NASG (Noble-Abel Stiffened Gas)
    • Noble-Abel
    • Osborne
    • Polynomial
    • Puff
    • Stiff Gas
    • Tillotson
    "},{"location":"mateditor/mat_theory_eos/#compaction-eos","title":"Compaction EOS","text":"

    Plastic compaction is along path defined by equation:

    \\[ p=C_0 + C_1 \\mu +C_2 \\mu^2 + C_3 \\mu^3 \\]

    where \\(P\\) is the hydrodynamic pressure in material. \\(\\mu\\) is the volumetric strain that can be obtained by \\(\\mu=\\dfrac{\\rho}{\\rho_0}-1\\).

    Unloading bulk modulus \\(B\\) is the bulk modules for the unloading process.

    Pressure Shift \\(P_{sh}\\) is used to model the relative pressure formulation.

    "},{"location":"mateditor/mat_theory_eos/#gruneisen-eos","title":"Gruneisen EOS","text":"

    In the Gruneisen EOS model, the hydrodynamic pressure is described by the following equations:

    For the compressed material, \\(\\mu\\)>0

    \\[ p = \\dfrac{\\rho_0C^2\\mu[1+(1-\\dfrac{\\gamma_0}{2})\\mu-\\dfrac{\\alpha}{2}\\mu^2]}{[1-(S_1-1)\\mu-S_2\\dfrac{\\mu^2}{\\mu+1}-S_3\\dfrac{\\mu^3}{(\\mu+1)^2}]^2} + (\\gamma_0+\\alpha\\mu)E \\]

    For the expanding material, \\(\\mu\\)<0 $$ p = \\rho_0C^2\\mu + (\\gamma_0+\\alpha\\mu)E $$

    where the \\(\\mu=\\dfrac{\\rho}{\\rho_0}-1\\).

    "},{"location":"mateditor/mat_theory_eos/#ideal-gas-eos","title":"Ideal Gas EOS","text":"

    The pressure in the Ideal Gas model can be represented by the function:

    \\[ p = (\\gamma-1)(1+\\mu)E \\]

    where unitless parameter \\(\\gamma\\) is determined by the heat capacity \\(C_v\\) and \\(C_p\\), \\(\\gamma=\\dfrac{C_p}{C_v}\\). The initial heat capacity \\(C_v\\) is calculated from the initial conditions:

    \\[ C_v=\\dfrac{E_0}{\\rho_0T_0} \\]"},{"location":"mateditor/mat_theory_eos/#linear-eos","title":"Linear EOS","text":"

    The pressure in linear EOS is given by

    \\[ p = p_0 + B\\mu \\]

    where \\(p_0\\) i initial pressure and \\(B\\) is the initial bulk modulus. Linear EOS is a simplified form of polynomial EOS:

    \\[ p=C_0+C_1\\mu + C_2\\mu + C_3\\mu + (C_4+C_5)E_0 \\]

    where, \\(C_0=p_0\\), \\(C_1=B\\), \\(C_2=C_3 = C_4 = C_5 = 0\\).

    Bulk modulus is usually treated as \\(B=\\rho_0c_0^2\\), where \\(c_0\\) is the initial sound speed.

    "},{"location":"mateditor/mat_theory_eos/#lszk-landau-stanyukovich-zeldovich-kompaneets-eos","title":"LSZK (Landau-Stanyukovich-Zeldovich-Kompaneets) EOS","text":"

    This EOS model is the short for the Landau-Stanyukovich-Zeldovich-Kompaneets EOS, used for the detonation modeling. The pressure is given by

    \\[ p = (\\gamma-1)\\rho e + a \\rho^b \\]

    where \\(\\rho\\) is the mass density, \\(e\\) is the internal energy density by mass, \\(b\\) is the material parameter.

    "},{"location":"mateditor/mat_theory_eos/#murnaghan-eos","title":"Murnaghan EOS","text":"

    This EOS is also known as Tait EOS. The pressure is defined by

    \\[ p = \\dfrac{K_0}{K_1}[(\\dfrac{V}{V_0})^{-K_1}-1] \\]

    where \\(K_0\\), \\(K_1\\) are material parameters, \\(V\\) is the volume.

    This model is also expressed in terms of the compressibility \\(\\mu\\):

    \\[ p = p_0 + \\dfrac{K_0}{K_1}[(1+\\mu)^{K_1}-1] \\]

    Note

    Murnaghan EOS is independent to the energy.

    "},{"location":"mateditor/mat_theory_eos/#nasg-noble-abel-stiffened-gas-eos","title":"NASG (Noble-Abel Stiffened Gas) EOS","text":"

    The pressure can be computing by

    \\[ p = \\dfrac{(\\gamma-1)(1+\\mu)(E-\\rho_0q)}{1-b\\rho_0(1+\\mu)} - \\gamma p_{\\infty} \\]

    where \\(p_{\\infty}\\) is the stiffness parameter.

    "},{"location":"mateditor/mat_theory_eos/#noble-abel-eos","title":"Noble-Abel EOS","text":"

    This EOS can apply to dense gases at high pressure, as the volume occupied by the moledules is no longer negligible.

    \\[ p = \\dfrac{(\\gamma-1)(1+\\mu)E}{1-b\\rho_0(1+\\mu)} \\]

    where \\(\\gamma=\\dfrac{C_p}{C_v}\\)

    Note

    Covolume parameter b is usually in the range between [0.9e-3, 1.1e-3] \\(m^3/kg\\).

    "},{"location":"mateditor/mat_theory_eos/#osborne-eos","title":"Osborne EOS","text":"

    This EOS is also called quadratic EOS.

    $$ p = \\dfrac{A_1\\mu+A_2\\mu |\\mu| + (B_0+B_1\\mu+B_2\\mu^2)E + (C_0 + C_1\\mu)E^2 }{E+D_0} $$ where \\(E\\) is the internal energy by initial volume.

    "},{"location":"mateditor/mat_theory_eos/#polynomial-eos","title":"Polynomial EOS","text":"

    The pressure for the linear polynomial EOS can be calculated by

    \\[ p=C_0+C_1\\mu + C_2\\mu + C_3\\mu + (C_4+C_5)E \\]

    where \\(E\\) is the internal energy density by volume.

    Note

    For the expanding status (\\(\\mu\\)<0), the term \\(C_2\\mu^2\\)=0.

    "},{"location":"mateditor/mat_theory_eos/#puff-eos","title":"Puff EOS","text":"

    This EOS model describes pressure accroding to the compressibility \\(\\mu\\) and sublimation energy density by volume \\(E_s\\).

    When \\(\\mu\\geq\\) 0:

    \\[ p = (C_1\\mu+C_2\\mu^2+C_3\\mu^3)(1-\\dfrac{\\gamma\\mu}{2})+\\gamma(1+\\mu)E \\]

    when \\(\\mu\\)<0 and \\(E\\geq E_s\\):

    \\[ p = (T_1\\mu+T_2\\mu^2)(1-\\dfrac{\\gamma\\mu}{2})+\\gamma(1+\\mu)E \\]

    when \\(\\mu\\)<0 and \\(E<E_s\\):

    \\[ p = \\eta[H+(\\gamma_0-H)\\sqrt{\\eta}][E-E_s(1-exp(\\dfrac{N(\\eta-1)}{\\eta^2}))] \\]

    with \\(N=\\dfrac{C_1\\eta}{\\gamma_0E_s}\\).

    "},{"location":"mateditor/mat_theory_eos/#stiffened-gas-eos","title":"Stiffened Gas EOS","text":"

    This EOS was originally designed to simulate water for underwater explosions.

    The pressure can be calculated by $$ p = (\\gamma-1)(1+\\mu)E - \\gamma p_{\\star} $$

    where \\(E=\\dfrac{E_{int}}{V_0}\\), \\(\\mu=\\dfrac{\\rho}{\\rho_0}-1\\). The additional pressure term \\(p^{\\star}\\) is introduced here.

    This EOS can be derived from the Polynomial EOS: $$ p=C_0+C_1\\mu + C_2\\mu + C_3\\mu + (C_4+C_5)E $$ when \\(C_0 = -\\gamma p^{\\star}\\), \\(C_1=C_2=C3=0\\), \\(C_4=C_5=\\gamma-1\\), \\(E_0=\\dfrac{P_0-C_0}{C_4}\\).

    "},{"location":"mateditor/mat_theory_eos/#tillotson-eos","title":"Tillotson EOS","text":"

    The pressure is defined by

    $$ p = C_1\\mu + C_2\\mu^2 +(a+\\dfrac{b}{\\omega})\\eta E $$ with \\(\\omega=1+\\dfrac{E}{E_r}\\eta^2\\) for the region \\(\\mu \\geq\\) 0.

    $$ p = C_1\\mu+(a+\\dfrac{b}{\\omega})\\eta E $$ for the region \\(\\mu<0\\), \\(\\dfrac{V}{V_0}<V_s\\), and \\(E<E_s\\).

    and $$ p = C_1 e^{\\beta x} e^{-\\alpha x^2}\\mu + (a + \\dfrac{be^{-\\alpha x^2}}{\\omega}) \\eta E $$

    "},{"location":"mateditor/mat_theory_failure/","title":"Failure Models","text":"

    MatEditor allows you to define the failure material properties. The supported properties are listed below.

    • Glass
    • Bi-Quadratic
    • Cockcroft
    • Connect
    • Extended Mohr-Coulomb
    • Energy
    • Fabric
    • Forming Limit Diagram
    • Hashin
    • Hosford-Coulomb
    • Johnson-Cook
    • Ladeveze delamination
    • Mullins Effect
    • NXT
    • Orthotropic Bi-Quadratic
    • Orthotropic Strain
    • Puck
    • Tuler-Butcher
    • Tensile Strain
    • Wierzbicki
    • Wilkins
    "},{"location":"mateditor/mat_theory_failure/#bi-quadratic","title":"Bi-Quadratic","text":"

    The failure strain is described by two parabolic functions that user input.

    "},{"location":"mateditor/mat_theory_failure/#cockcroft","title":"Cockcroft","text":"

    A nonlinear stress-strain based failure criterion with linear damage accumulation.

    \\[ C_0 = \\int _0 ^{\\bar{\\epsilon}_f} max(\\sigma_1, 0) \\cdot d\\bar{\\epsilon} \\]

    where \\(\\epsilon_1\\) is the first principal tension stress, \\(\\bar{\\epsilon}\\) is the equivalent strain.

    "},{"location":"mateditor/mat_theory_failure/#extended-mohr-coulomb","title":"Extended Mohr-Coulomb","text":"

    The failure criteria is calculated as:

    \\[ D = \\sum \\dfrac{\\Delta \\bar{\\epsilon}_p}{\\bar{\\epsilon}_{p,fail}} \\]

    where effective failure strain is

    \\[ \\bar{\\epsilon}_{p,fail} = b \\cdot (1+c)^{\\frac{1}{n}} \\cdot \\{[\\dfrac{1}{2}((f_1-f_2)^a + (f_2-f_3)^a + (f_1 - f_3)^a )]^{\\frac{1}{a}} + c(2\\eta+f_1+f_3) \\}^{-\\frac{1}{n}} \\]

    the coefficient b is computed as

    \\[ b = b_0[1+\\gamma ln(\\dfrac{\\dot{\\bar{\\epsilon}}_p}{\\dot{\\bar{\\epsilon}}_0})] \\quad if\\, \\dot{\\bar{\\epsilon}}_p > \\dot{\\bar{\\epsilon}}_0 \\]

    or

    \\[ b = b_0 \\quad if\\, \\dot{\\bar{\\epsilon}}_p \\le \\dot{\\bar{\\epsilon}}_0 \\]"},{"location":"mateditor/mat_theory_failure/#energy","title":"Energy","text":"

    The damage is defined as

    \\[ D = \\dfrac{E-E_1}{E_2 - E_1} \\]

    where the energy density is the current internal energy of the element divided by the current element volume.

    "},{"location":"mateditor/mat_theory_failure/#fabric","title":"Fabric","text":"

    The failure and damage is defined independently in each direction (\\(i\\)=1,2)

    \\[ D_i = \\dfrac{\\epsilon_i - \\epsilon_{fi}}{\\epsilon_{ri} - \\epsilon_{fi}} \\]

    where \\(\\epsilon_i \\ge \\epsilon_{fi}\\).

    "},{"location":"mateditor/mat_theory_failure/#hashin","title":"Hashin","text":"

    This model can be used for the composite materials.

    The damage factor is calculated as

    \\[ D = Max(F_1,F_2,F_3, F_4, F_5) \\quad for\\quad uni-directional\\, lamina\\, model \\] \\[ D = Max(F_1,F_2,F_3, F_4, F_5, F_6, F_7) \\quad for\\quad fabric\\, lamina\\, model \\]"},{"location":"mateditor/mat_theory_failure/#for-the-uni-directional-lamina-model","title":"For the uni-directional lamina model:","text":"

    Tensile/shear fiber mode:

    \\[ F_1 = (\\dfrac{\\langle\\sigma_{11}\\rangle}{\\sigma_1^t})^2 + (\\dfrac{\\sigma_{12}^2 + \\sigma_{13}^2}{{\\sigma_{12}^f}^2}) \\]

    Compression fiber mode:

    \\[ F_2 = (\\dfrac{\\langle \\sigma_a \\rangle}{ \\sigma_1^c})^2 \\]

    with \\(\\sigma_{\\alpha} = -\\sigma_{11}+\\langle -\\dfrac{\\sigma_{22}+\\sigma_{33}}{2} \\rangle\\).

    Crush mode:

    \\[ F_3 = (\\dfrac{\\langle p \\rangle}{\\sigma_c})^2 \\]

    with \\(p=-\\dfrac{\\sigma_{11}+\\sigma_{22}+\\sigma_{33}}{3}\\).

    Failure matrix mode:

    \\[ F_4 = (\\dfrac{\\langle \\sigma_{22} \\rangle}{\\sigma_2^t})^2 + (\\dfrac{\\sigma_{23}}{S_{23}})^2 + (\\dfrac{\\sigma_{12}}{S_{12}})^2 \\]

    Delamination mode:

    \\[ F_5 = S^2_{del}[(\\dfrac{\\langle \\sigma_{33} \\rangle}{\\sigma^t_2})^2 + (\\dfrac{\\sigma_{23}}{\\tilde{S}_{23}})^2 + (\\dfrac{\\sigma_{12}}{S_{12}})^2 ] \\]"},{"location":"mateditor/mat_theory_failure/#for-the-fabirc-lamina-model","title":"For the fabirc lamina model:","text":"

    Tensile/shear fiber mode

    \\[ F_1 = (\\dfrac{\\langle\\sigma_{11}\\rangle}{\\sigma_1^t})^2 + (\\dfrac{\\sigma_{12}^2 + \\sigma_{13}^2}{{\\sigma_{a}^f}^2}) \\] \\[ F_2 = (\\dfrac{\\langle\\sigma_{22}\\rangle}{\\sigma_2^t})^2 + (\\dfrac{\\sigma_{12}^2 + \\sigma_{23}^2}{{\\sigma_{b}^f}^2}) \\]

    Compression fiber mode:

    \\[ F_3 = (\\dfrac{\\langle \\sigma_a \\rangle}{ \\sigma_1^c})^2 \\] \\[ F_4 = (\\dfrac{\\langle \\sigma_b \\rangle}{ \\sigma_2^c})^2 \\]

    Crush mode:

    \\[ F_5 = (\\dfrac{\\langle p \\rangle}{\\sigma_c})^2 \\]

    Shear failure matrix mode:

    \\[ F_6 = (\\dfrac{\\sigma_12}{\\sigma_12^m})^2 \\]

    Matrix failure mode:

    \\[ F_7 = S^2_{del}[(\\dfrac{\\langle \\sigma_{33} \\rangle}{\\sigma^t_3})^2 + (\\dfrac{\\sigma_{23}}{\\tilde{S}_{23}})^2 + (\\dfrac{\\sigma_{12}}{S_{12}})^2 ] \\]"},{"location":"mateditor/mat_theory_failure/#hosford-coulomb","title":"Hosford-Coulomb","text":"

    The failure strain is described y the Hosford-Coulomb function.

    The damage is defined as

    \\[ D = \\sum \\dfrac{\\Delta \\bar{\\epsilon}_p} {\\bar{\\epsilon}^{pr}_{HC}(\\eta) } \\]

    where the strain is calcualted as

    \\[ \\bar{\\epsilon}^{pr}_{HC}(\\eta, \\theta) = b(1+c)^{\\frac{1}{n_f}} \\{[\\dfrac{1}{2}((f_1-f_2)^a + (f_2-f_3)^a + (f_1-f_3)^a)]^{\\frac{1}{a}} + c(a\\eta + f_1 +f_2) \\}^{\\frac{1}{n_f}} \\]"},{"location":"mateditor/mat_theory_failure/#johnson-cook","title":"Johnson-Cook","text":"

    The failure strain is calculated by the constutitive relation:

    \\[ \\epsilon_f = [D_1+D_2exp(D_3\\sigma^*)] [1+D_4 ln(\\dot{\\epsilon}^*)] (1 + D_5 T^*) \\]

    The damage factor is defined as

    \\[ D = \\sum \\dfrac{\\Delta \\epsilon_p}{\\epsilon_f} \\]"},{"location":"mateditor/mat_theory_failure/#ladeveze-delamination","title":"Ladeveze Delamination","text":"

    This is the Ladeveze failure model for delamination (interlaminar fracture). The damage parameters are defined as

    \\[ Y_{d_3} = \\dfrac{\\partial E_D}{\\partial d_3} \\vert _{\\sigma=cst}=\\dfrac{1}{2} \\dfrac{\\langle\\sigma_{33}\\rangle^2}{K_3(1-d_3)^2} \\quad Mode\\,I \\] \\[ Y_{d_2} = \\dfrac{\\partial E_D}{\\partial d_2} \\vert _{\\sigma=cst}=\\dfrac{1}{2} \\dfrac{\\langle\\sigma_{32}\\rangle^2}{K_2(1-d_2)^2} \\quad Mode\\,II \\] \\[ Y_{d_1} = \\dfrac{\\partial E_D}{\\partial d_1} \\vert _{\\sigma=cst}=\\dfrac{1}{2} \\dfrac{\\langle\\sigma_{31}\\rangle^2}{K_1(1-d_1)^2} \\quad Mode\\,III \\]

    The damage value can be

    \\[ D = \\dfrac{k}{a}[1- exp(-a\\langle w(Y)-d\\rangle)] \\]"},{"location":"mateditor/mat_theory_failure/#mullins-effect","title":"Mullins Effect","text":"

    This failure model is used with the hyperelastic materials. The stress during the first loading process is equal to the undamaged stress. Upon unloading and reloading the strss is multiplied by a positive softening factor as

    \\[ \\sigma = \\eta dev(\\sigma) - pI \\]

    where dev(\\(\\sigma\\)) is the deviatoric part of the stress, \\(p\\) is the hydrostatic pressure. The damage factor \\(\\eta\\) is given as

    \\[ \\eta = 1 - \\dfrac{1}{R} erf(\\dfrac{W_{max}-W}{m+\\beta W_{max}}) \\]

    where \\(erf\\) is the Gauss error function.

    "},{"location":"mateditor/mat_theory_failure/#nxt","title":"NXT","text":"

    This model describes the forming limit baed on stresses. This failure is used for shell elements only.

    An instability factor is defined as:

    \\[ \\lambda_f=\\dfrac{\\sigma/h - (\\sigma/h)_{SR}}{(\\sigma/h)_{3D}-(\\sigma/h)_{SR}} + 1 \\]

    The material is defined as free if \\(0<\\lambda_f<1\\), warning if \\(1<\\lambda_f<2\\), failure if \\(\\lambda_f \\ge 2\\).

    "},{"location":"mateditor/mat_theory_failure/#orthotropic-bi-quadratic","title":"Orthotropic Bi-Quadratic","text":"

    The failure strain is described by two parabolicfunctions calculated using curve fitting from user input failure strains.

    "},{"location":"mateditor/mat_theory_failure/#orthotropic-strain","title":"Orthotropic Strain","text":"

    A damage factor is the maximum over time and is calculated for each direction and stress state via:

    \\[ d_ijl = \\dfrac{\\epsilon_{ijf\\_l}}{\\epsilon_{ijl}} \\cdot \\dfrac{\\epsilon_{ijl}-\\alpha\\cdot\\epsilon_{ijd\\_l}}{\\epsilon_{ijf\\_l}-\\epsilon_{ijd\\_l}} \\]

    where the direction is indicated by using the common \\(ij\\) notation and loading state is either compression (\\(l=c\\)) or tension (\\(l=t\\)). The parameter \\(\\alpha=factor_{el}\\cdot factor_{rate}\\).

    The element size correction factor is :

    \\[ factor_{el} = Fscale_{el} \\cdot f_{el} \\dfrac{Size_{el}}{El_ref} \\]

    where \\(f_{el}\\) is the element size correction factor function, \\(Size_{el}\\) is the characteristic element size.

    The strain rate factor is

    \\[ factor_{rate} = f_{ijl}(\\dfrac{\\dot{\\epsilon}_{ijl}}{\\dot{\\epsilon}_0}) \\]

    where \\(f_ijl\\) is strain rate factor function, \\(\\dot{\\epsilon}_{ijl}\\) is the current strain rate in direction ij and load case l, and \\(\\dot\\epsilon_0\\) is the reference strate rate.

    Generally, the damange for this model is

    \\[ D = Max(d_{ijl}) = Max(\\dfrac{\\epsilon_{ijf\\_l}}{\\epsilon_{ijl}} \\cdot \\dfrac{\\epsilon_{ijl}-\\alpha\\cdot\\epsilon_{ijd\\_l}}{\\epsilon_{ijf\\_l}-\\epsilon_{ijd\\_l}}) \\]"},{"location":"mateditor/mat_theory_failure/#puck","title":"Puck","text":"

    This failure model can be applied for both solid and shell elements.

    For the fiber fraction failure, the damage parameter \\(e_f\\) is defined by

    \\[ e_f=\\dfrac{\\sigma_{11}}{\\sigma_{1}^t} \\quad for\\, tensile \\]

    or

    \\[ e_f=\\dfrac{|\\sigma_{11}|}{\\sigma_{1}^c} \\quad for\\, compression \\]

    For the inter fiber failure: the damage parameter \\(e_f\\) is

    \\[ e_f=\\dfrac{1}{\\bar{\\sigma}_{12}} [ \\sqrt{(\\dfrac{\\bar{\\sigma}_{12}}{\\sigma_2^t} -p^+_{12})^2\\sigma_{22}^2 + \\sigma_{12}^2}+p^+_{12}\\sigma_{22}] \\quad for\\, Mode\\, A \\]

    or

    \\[ e_f=[(\\dfrac{\\sigma_{12}}{2(1+p^-_{22})\\bar{\\sigma}_{12}})^2 + (\\dfrac{\\sigma_{22}}{\\sigma_2^c})^2](\\dfrac{\\sigma^c_2}{-\\sigma_{22}}) \\quad for\\, Mode\\, C \\]

    or

    \\[ e_f=\\dfrac{1}{\\bar{\\sigma}_{12}} ( \\sqrt{\\sigma_{12}^2+(p^-_{12}\\sigma_{22})^2}+p^-_{12}\\sigma_{22}) \\quad for\\, Mode\\, B \\]

    when the damage parameter \\(e_f \\ge 1.0\\), the stresses are decreased by using an exponential function to avoid numerical instabilities.

    The damage is defined by

    \\[ D = Max(e_f(tensile),e_f(compression), e_f(ModaA), e_f(ModeB), e_f(ModeC) ) \\]"},{"location":"mateditor/mat_theory_failure/#tuler-butcher","title":"Tuler-Butcher","text":"

    An element fails once the damage is greater than specified critical damage value K. For ductile materials, the cumulative damage parameter is:

    \\[ D=\\int_0^t{max(0, \\sigma-\\sigma_r)^{\\lambda})dt}>K \\]

    where \\(\\sigma_r\\) is initial fracture stress, \\(\\sigma\\) maximum principal stress, \\(\\lambda\\) is material constant, \\(t\\) is the time when the element cracks, \\(D\\) is the damage integral, \\(K\\) is the critical value of the damage integral.

    For brittle materials (shells only), the damage parameter is: $$ \\dot{D} = \\dfrac{1}{K}(\\sigma - \\sigma_r)^a $$ $$ \\sigma_r=\\sigma_0(1-D)^b $$ $$ D=D+\\dot{D}\\Delta t $$

    "},{"location":"mateditor/mat_theory_failure/#tensile-strain","title":"Tensile Strain","text":"

    This is a strain-based failure model that is compatible with both solid and shell elements. The damage is calculated by:

    \\[ D = \\dfrac{\\epsilon - \\epsilon_{t1}}{\\epsilon_{t2} - \\epsilon_{t1}} \\]

    where \\(\\epsilon\\) is either the quivlent strain or maximum principal tensile strain.

    "},{"location":"mateditor/mat_theory_failure/#wierzbicki-model","title":"Wierzbicki model","text":"

    This model describes the Bao-Xue-Wierzbicki failure model. The damage is defined by

    \\[ D=\\sum{\\dfrac{\\Delta\\epsilon_{p}}{\\bar{\\epsilon}_f}} \\]

    where the effective failure strain is

    \\[ \\bar{\\epsilon}_f =\\{ \\bar{\\epsilon}_{max}n-[\\bar{\\epsilon}_{max}n - \\bar{\\epsilon}_{min}n](1-\\bar{\\xi}^m)^{\\dfrac{1}{m}} \\}^{\\dfrac{1}{n}} \\]

    where \\(\\bar{\\epsilon}_{max} = C_1 e^{-1C_{2}\\eta}\\), and \\(\\bar{\\epsilon}_{min} = C_{3} e^{-1C_{4}\\eta}\\).

    For solid element, the parameters \\(\\bar{\\xi}\\) and \\(\\bar{\\eta}\\) are defined by the two options.

    The option 1 (default) is : $$ \\bar{\\xi}=\\dfrac{\\sigma_m}{\\sigma_{VM}} \\quad \\bar{\\eta}=\\dfrac{27J_3}{2\\sigma^3_{VM}} $$

    The option 2 is: $$ \\bar{\\xi}=\\dfrac{\\int_0^{\\epsilon_p}\\dfrac{\\sigma_m}{\\sigma_{VM}}d\\epsilon_p}{\\epsilon_p} \\quad \\bar{\\eta}=\\dfrac{\\int_0^{\\epsilon_p} \\dfrac{27J_3}{2\\sigma^3_{VM}} d\\epsilon_p}{\\epsilon_p} $$

    For shell element, the parameters \\(\\bar{\\xi}\\) and \\(\\bar{\\eta}\\) are $$ \\bar{\\xi}=\\dfrac{\\sigma_m}{\\sigma_{VM}} \\quad \\bar{\\eta}=-\\dfrac{27}{2}\\bar{\\eta}(\\bar{\\eta}^2-\\dfrac{1}{3}) $$

    where \\(\\sigma_m\\) is Hydrostatic stress, \\(\\sigma_{VM}\\) is von Mises stress, and \\(J_3\\) is the third invariant deviatoric stress.

    "},{"location":"mateditor/mat_theory_failure/#wilkins-model","title":"Wilkins model","text":"

    The cumulative damage is given by:

    \\[ D_c = \\int W_1 W_2 d \\bar{\\epsilon_p} \\]

    where \\(W_1=(\\dfrac{1}{1-\\dfrac{P}{P_{lim}}})^{\\alpha}\\), \\(W_2=(2-A)^{\\beta}\\), and hydro-pressure \\(P=-\\dfrac{1}{3}\\sum_{j=1}^{3}\\sigma_{jj}\\), \\(A=max(\\dfrac{s_2}{s_1}, \\dfrac{s_2}{s_3})\\). \\(s_1\\), \\(s_2\\), \\(s_3\\) are the deviatoric stresses, and \\(s_1 \\ge s_2 \\ge s_3\\).

    "},{"location":"mateditor/mat_theory_hyper-elasticity/","title":"Hyperelasticity and Curve Fitting","text":""},{"location":"mateditor/mat_theory_hyper-elasticity/#isotropic-hyperelasticity","title":"Isotropic hyperelasticity","text":"

    The elastic potential energy in hyperelastic material can be obtained from the initial state with no stress activation. Therefore, we have the main invariable terms of the right Cauchy-Green deformation tensor C(\\(I_{1}\\), \\(I_{2}\\), \\(I_{3}\\)), or the main invariable of the deformation tensor excluding the volume changes (\\(\\bar{I}_{1}\\), \\(\\bar{I}_{2}\\), \\(\\bar{I}_{3}\\)). The potential can be expressed as \\(\\mathbf{W}=\\mathbf{W}(I_{1},I_{2},I_{3})\\), or \\(\\mathbf{W}=\\mathbf{W}(\\bar{I}_{1},\\bar{I}_{2},\\bar{I}_{3})\\).

    The nonlinear constitutive relation of a hyperelastic material is defined by the relation between the second-order Piola-Kirchhoff stress and the Green-Lagrange strain, the total Lagrange method is more efficient in solving such models.

    When the elastic potential energy \\(W\\) of the hyperelasticity is known, the second Piola-Kirchhoff stress and strain-stress relationship can be calculated as follows

    \\[ S=2\\dfrac{\\partial W}{\\partial C} \\] \\[ C=4\\dfrac{\\partial^{2}W}{\\partial C\\partial C} \\]

    The following are several forms of strain-energy potential (W) provided for the modeling of incompressible or nearly incompressible hyperelastic materials.

    "},{"location":"mateditor/mat_theory_hyper-elasticity/#arruda-boyce-model","title":"Arruda-Boyce model","text":"

    The form of the strain-energy potential for Arruda-Boyce model is

    \\[ \\begin{array}{ccl} W & = & \\mu[\\dfrac{1}{2}(\\bar{I}_{1}-3)+\\dfrac{1}{20\\lambda_{m}^{2}}(\\bar{I_{1}^{2}}-9)+\\dfrac{11}{1050\\lambda_{m}^{4}}(\\bar{I_{1}^{3}}-27)\\\\ & + & \\dfrac{19}{7000\\lambda_{m}^{6}}(\\bar{I_{1}^{4}}-81) + \\dfrac{519}{673750\\lambda_{m}^{8}}(\\bar{I_{1}^{5}}-243)]\\\\ & + & \\dfrac{1}{D_1}(\\dfrac{J^{2}-1}{2}-\\mathrm{ln}J) \\end{array} \\]

    where \\(\\mu\\) is the initial shear modulus of the material, \\(\\lambda_{m}\\) is limiting network stretch, and \\(D_1\\) is the material incompressibility parameter.

    The initial shear modulus is

    \\[ \\mu=\\dfrac{\\mu_{0}}{1+\\dfrac{3}{5\\lambda_{m}^{2}}+\\dfrac{99}{175\\lambda_{m}^{4}}+\\dfrac{513}{875\\lambda_{m}^{6}}+\\dfrac{42039}{67375\\lambda_{m}^{8}}} \\]

    The initial bulk modulus is

    \\[ K=\\dfrac{2}{D_1} \\]

    As the parameter \\(\\lambda_L\\) goes to infinity, the model is equivalent to neo-Hookean form.

    "},{"location":"mateditor/mat_theory_hyper-elasticity/#blatz-ko-foam-model","title":"Blatz-Ko foam model","text":"

    The form of strain-energy potential for the Blatz-Ko model is:

    \\[ W=\\frac{\\mu}{2}\\left(\\frac{I_{2}}{I_{3}}+2\\sqrt{I_{3}}-5\\right) \\]

    where \\(\\mu\\) is the initial shear modulus of material. The initial bulk modulus is defined as :

    \\[ K = \\frac{5}{3}\\mu \\]"},{"location":"mateditor/mat_theory_hyper-elasticity/#gent-model","title":"Gent model","text":"

    The form of the strain-energy potential for the Gent model is:

    \\[ W=-\\frac{\\mu J_{m}}{2}\\mathrm{ln}\\left(1-\\frac{\\bar{I}_{1}-3}{J_{m}}\\right)+\\frac{1}{D_1}\\left(\\frac{J^{2}-1}{2}-\\mathrm{ln}J\\right) \\]

    where \\(\\mu\\) is the initial shear modulus of material, \\(J_m\\) is limiting value of \\(\\bar{I}_1-3\\), \\(D_1\\) is material incompressibility parameter.

    The initial bulk modulus is

    \\[ K=\\dfrac{2}{D_1} \\]

    When the parameter \\(J_m\\) goes to infinity, the Gent model is equivalent to neo-Hookean form.

    "},{"location":"mateditor/mat_theory_hyper-elasticity/#mooney-rivlin-model","title":"Mooney-Rivlin model","text":"

    This model includes two-, three-, five-, and nine-terma Mooney-Rivlin models. The form of the strain-energy potential for a two-parameter Mooney-Rivlin model is

    \\[ W=C_{10}\\left(\\bar{I}_{1}-3\\right)+C_{01}\\left(\\bar{I}_{2}-3\\right)+\\frac{1}{D_1}\\left(J-1\\right)^{2} \\]

    where \\(C_{10}\\), \\(C_{01}\\), and \\(D_{1}\\) are the material constants.

    The form of strain-energy potential for a three-parameter Mooney-Rivlin model is

    \\[ W=C_{10}\\left(\\bar{I}_{1}-3\\right)+C_{01}\\left(\\bar{I}_{2}-3\\right)+C_{11}\\left(\\bar{I}_{1}-3\\right)\\left(\\bar{I}_{2}-3\\right)+\\frac{1}{D_1}\\left(J-1\\right)^{2} \\]

    where \\(C_{10}\\), \\(C_{01}\\), \\(C_{11}\\), and \\(D_1\\) are material constants.

    The form of strain-energy potential for a five-parameter Mooney-Rivlin model is

    \\[ \\begin{array}{ccl} W & = & C_{10}\\left(\\bar{I}_{1}-3\\right)+C_{01}\\left(\\bar{I}_{2}-3\\right)+C_{20}\\left(\\bar{I}_{1}-3\\right)^{2}\\\\ & + & C_{11}\\left(\\bar{I}_{1}-3\\right)\\left(\\bar{I}_{2}-3\\right)+C_{02}\\left(\\bar{I}_{2}-3\\right)^{2}+\\frac{1}{D_1}\\left(J-1\\right)^{2} \\end{array} \\]

    where \\(C_{10}\\), \\(C_{01}\\), \\(C_{20}\\), \\(C_{11}\\), \\(C_{02}\\), and \\(D_1\\) are material constants.

    The form of strain-energy potential for a nine-parameter Mooney-Rivlin model is

    \\[ \\begin{array}{ccl} W & = & C_{10}\\left(\\bar{I}_{1}-3\\right)+C_{01}\\left(\\bar{I}_{2}-3\\right)+C_{20}\\left(\\bar{I}_{1}-3\\right)^{2}\\\\ & + & C_{11}\\left(\\bar{I}_{1}-3\\right)\\left(\\bar{I}_{2}-3\\right)+C_{02}\\left(\\bar{I}_{2}-3\\right)^{2}+C_{30}\\left(\\bar{I}_{1}-3\\right)^{3}\\\\ & + & C_{21}\\left(\\bar{I}_{1}-3\\right)^{2}\\left(\\bar{I}_{2}-3\\right)+C_{12}\\left(\\bar{I}_{1}-3\\right)\\left(\\bar{I}_{2}-3\\right)^{2}+C_{03}\\left(\\bar{I}_{2}-3\\right)^{3}\\\\ & + & \\frac{1}{D_1}\\left(J-1\\right)^{2} \\end{array} \\]

    where \\(C_{10}\\), \\(C_{01}\\), \\(C_{20}\\), \\(C_{11}\\), \\(C_{02}\\), \\(C_{30}\\), \\(C_{21}\\), \\(C_{12}\\), \\(C_{03}\\), and \\(D_1\\) are material constants.

    The initial shear modulus is given by:

    \\[ \\mu=2(C_{10}+C_{01}) \\]

    The initial bulk modulus is

    \\[ K=\\dfrac{2}{D_1} \\]"},{"location":"mateditor/mat_theory_hyper-elasticity/#neo-hookean-model","title":"Neo-Hookean model","text":"

    The Neo-Hookean model is a well-known hyperelastic model with an expanded linear rule (Hooke rule) having isotropy so that it can respond to finite deformation problems. The elastic potential is as follows.

    \\[ W=\\frac{\\mu}{2}(\\bar{I}_{1}-3)+\\dfrac{1}{D_{1}}(J-1)^{2} \\]

    where \\(\\mu\\) is initial shear modulus of materials, \\(D_{1}\\) is the material constant.

    The initial bulk modulus is given by:

    \\[ K=\\dfrac{2}{D_1} \\]"},{"location":"mateditor/mat_theory_hyper-elasticity/#ogden-compressible-foam-model","title":"Ogden compressible foam model","text":"

    The strain-energy potential of the Ogden compressible foam model is based on the principal stretches of left Cauchy strain tensor, which has the form:

    \\[ W=\\sum_{i=1}^{N}\\frac{\\mu_{i}}{\\alpha_{i}}\\left(J^{\\alpha_{i}/3}\\left(\\bar{\\lambda}_{1}^{\\alpha_{i}}+\\bar{\\lambda}_{2}^{\\alpha_{i}}+\\bar{\\lambda}_{3}^{\\alpha_{i}}\\right)-3\\right)+\\sum_{i=1}^{N}\\frac{\\mu_{i}}{\\alpha_{i}\\beta_{i}}\\left(J^{-\\alpha_{i}\\beta_{i}}-1\\right) \\]

    where N determines the order of the polynomial, \\(\\mu_i\\), \\(\\alpha_i\\) are material constants, \\(D_k\\) is incompressiblity parameter. The reduced principal strench is defined by:

    \\[ \\bar{\\lambda}_{p}=J^{-\\frac{1}{3}}\\lambda_p,\\; J=(\\lambda_{1}\\lambda_{2}\\lambda_{3})^{\\frac{1}{2}} \\]

    The initial shear modulus is given by:

    \\[ \\mu=\\dfrac{\\sum_{i=1}^{N}\\mu_{i}\\alpha_{i}}{2} \\]

    The initial bulk modulus K is defined by

    \\[ K = \\sum_{i=1}^{N}\\mu_{i}\\alpha_{i}\\left(\\dfrac{1}{3}+\\beta_{i}\\right) \\]

    When parameters N=1, \\(\\alpha_1\\)=-2, \\(\\mu_1\\)=-\\(\\mu\\), and \\(\\beta\\)=0.5, the Ogden compressible model is converted to the Blatz-Ko model.

    "},{"location":"mateditor/mat_theory_hyper-elasticity/#ogden-model","title":"Ogden model","text":"

    The strain-energy potential of the Ogden compressible foam model is based on the principal stretches of left Cauchy strain tensor, which has the form:

    \\[ W=\\sum_{i=1}^{N}\\frac{\\mu_{i}}{\\alpha_{i}}\\left(\\bar{\\lambda}_{1}^{\\alpha_{i}}+\\bar{\\lambda}_{2}^{\\alpha_{i}}+\\bar{\\lambda}_{3}^{\\alpha_{i}}-3\\right)+\\sum_{k=1}^{N}\\frac{1}{D_{k}}\\left(J-1\\right)^{2k} \\]

    where N determines the order of the polynomial, \\(\\mu_i\\), \\(\\alpha_i\\) are material constants, \\(D_k\\) is incompressiblity parameter. The reduced principal strench is defined by:

    \\[ \\bar{\\lambda}_{p}=J^{-\\frac{1}{3}}\\lambda_p,\\; J=(\\lambda_{1}\\lambda_{2}\\lambda_{3})^{\\frac{1}{2}} \\]

    The initial shear modulus is given by:

    \\[ \\mu=\\dfrac{\\sum_{i=1}^{N}\\mu_{i}\\alpha_{i}}{2} \\]

    The initial bulk modulus K is defined by

    \\[ K = \\dfrac{2}{D_1} \\]

    When parameters N=1, \\(\\alpha_1\\)=2, the Ogden model is converted to the neo-Hookean model. When parameters N=2, \\(\\alpha_1\\)=2 and \\(\\alpha_2\\)=-2, the Ogden model is converted to the 2-parameter Mooney-Rivlin model.

    "},{"location":"mateditor/mat_theory_hyper-elasticity/#polynomial-form","title":"Polynomial form","text":"

    The polynomial form of strain-energy potential is:

    \\[ W=\\sum_{i+j=1}^{N}c_{ij}\\left(\\bar{I}_{1}-3\\right)^{i}\\left(\\bar{I_{2}}-3\\right)^{j}+\\sum_{k=1}^{N}\\frac{1}{D_{k}}\\left(J-1\\right)^{2k} \\]

    where \\(N\\) determines the order of polynomial, \\(c_{ij}\\), \\(D_k\\) are material constants.

    The initial shear modulus is given by:

    \\[ \\mu=2\\left(C_{10}+C_{01}\\right) \\]

    The initial bulk modulus K is defined by

    \\[ K = \\dfrac{2}{D_1} \\]

    The Polynomial model is converted to following models with specific parameters:

    Parameters of Polynomial model Equivalent model N=1, \\(C_{01}\\)=0 neo-Hookean N=1 2-parameter Mooney-Rivlin N=2 5-parameter Mooney-Rivlin N=3 9-parameter Mooney-Rivlin"},{"location":"mateditor/mat_theory_hyper-elasticity/#yeoh-model","title":"Yeoh model","text":"

    The Yeoh model is also called the reduced polynomial form. The strain-energy potential is

    \\[ W=\\sum_{i=1}^{N}c_{i0}\\left(\\bar{I}_{1}-3\\right)^{i}+\\sum_{k=1}^{N}\\frac{1}{D_{k}}\\left(J-1\\right)^{2k} \\]

    where N denotes the order of the polynomial, \\(C_{i0}\\) and \\(D_k\\) are material constants. When N=1, Yeoh becomes neo-Hookean model.

    The initial shear modulus is defined:

    \\[ \\mu=2c_{10} \\]

    The initial bulk modulus is:

    \\[ K=\\frac{2}{D_1} \\]"},{"location":"mateditor/mat_theory_hyper-elasticity/#hyperelasticity-material-curve-fitting","title":"Hyperelasticity Material Curve Fitting","text":"

    The mechanical response of hyperelastic materials is determined by the hyperelastic constants in the strain energy density function of a model. To get correct results during a hyperelastic analysis, it is required to precisely assess the material constants of the materials being tested. These constants are usually derived for a material based on the experimental strain-stress data. The test data are generally taken from several modes of deformation over a wide range of strain values. The material constants could be fit using test data in at least as many deformation states as will be experienced in the finite element analysis.

    For hyperelastic materials, simple deformation tests can be used to characterize the material constants. The six different deformation modes are graphically illustrated in the figure below. Combinations of data from multiple tests will enhance the characterization of the hyperelastic behavior of a material.

    Although these six different deformation states are accepted, we find that upon the addition of hydrostatic stresses, the following modes of deformation are the same:

    1. Uniaxial Tension and Equibiaxial Compression.
    2. Uniaxial Compression and Equibiaxial Tension.
    3. Planar Tension and Planar Compression.

    With these equivalent modes of testing, we now have only three independent deformation modes for which one can get experimental data.

    In the analysis, when the coordinate system is chosen to consistent with the principal directions of deformation, the right Cauchy-Green strain tensor can be written in matrix form by:

    \\[ [C] = \\begin{bmatrix} \\lambda_1^2 & 0 & 0\\\\ 0 & \\lambda_2^2 & 0\\\\ 0 & 0 & \\lambda_3^2 \\end{bmatrix} \\]

    where \\(\\lambda_i\\)=1+\\(\\epsilon_i\\) is principal stretch ratio in the i-th direction, \\(epsilon_i\\) is principal value of the engineering strain tensor in the i-th direction. The principal invariants of right Cauchy-Green strain tensor \\(C_{ij}\\) are:

    \\[ I_1 = \\lambda_1^2+\\lambda_2^2+\\lambda_3^2 \\] \\[ I_2 = \\lambda_1^2\\lambda_2^2 + \\lambda_1^2\\lambda_3^2 + \\lambda_2^2\\lambda_3^2 \\] \\[ I_3 = \\lambda_1^2\\lambda_2^2\\lambda_3^2 \\]

    For the fully incompressible material, the principal invariant \\(I_3\\) is one:

    \\[ \\lambda_1^2\\lambda_2^2\\lambda_3^2=1 \\]"},{"location":"mateditor/mat_theory_hyper-elasticity/#uniaxial-tension-equibiaxial-compression","title":"Uniaxial tension (Equibiaxial compression)","text":"

    For the uniaxial tension deformation, the principal stretch ratios in the directions orthogonal to the 'pulling' axis is identical. Thus, the principal stretches during uniaxial tension \\(\\lambda_i\\) are given by:

    • \\(\\lambda_1=\\)stretch in direction being loaded
    • \\(\\lambda_2=\\lambda_3=\\)stretch in directions not being loaded

    Due to incompressibility:

    \\[ \\lambda_2\\lambda_3=\\lambda^{-1} \\]

    and with

    \\[ \\lambda_2=\\lambda_3=\\lambda_1^{-1/2} \\]

    For uniaxial tension, the first and second strain invariants then become:

    \\[ I_1= \\lambda_1^2+2\\lambda_1^{-1}\\\\ I_2=2\\lambda_1+\\lambda_1^{-2} \\]

    The corresponding engineering stress can be expressed using principal stretch ratio:

    \\[ T_1=2(\\lambda_1-\\lambda_1^{-2})[\\dfrac{\\partial W}{\\partial I_1}+\\lambda_1^{-1}\\dfrac{\\partial W}{\\partial I_2}] \\]"},{"location":"mateditor/mat_theory_hyper-elasticity/#equibiaxial-tension-uniaxial-compression","title":"Equibiaxial tension (Uniaxial compression)","text":"

    During an equibiaxial tension test, the principal stretch ratios in the directions being loaded are identical. Therefore, for quibiaxial tension, the principal stretches, \\(\\lambda_i\\) are given by:

    • \\(\\lambda_1=\\lambda_2=\\)stretch ratio in direction being loaded
    • \\(\\lambda_3=\\)stretch in directions not being loaded

    According to incompressibility, we have

    \\[ \\lambda_3=\\lambda_1^{-2} \\]

    For equibiaxial tension, the first and second strain invariants then become:

    \\[ I_1=2\\lambda_1^2+\\lambda_1^{-4} \\\\ I_2=\\lambda_1^4+2\\lambda_1^{-2} \\]

    The corresponding engineering stress can be expressed using principal stretch ratio:

    \\[ T_1=2(\\lambda_1-\\lambda_1^{-5})[\\dfrac{\\partial W}{\\partial I_1} + \\lambda_1^2\\dfrac{\\partial W}{\\partial I_2}] \\]"},{"location":"mateditor/mat_theory_hyper-elasticity/#pure-shear-uniaxial-tension-and-uniaxial-compression-in-orthogonal-directions","title":"Pure Shear (Uniaxial tension and uniaxial compression in orthogonal directions)","text":"

    For pure shear deformation mode, plane strain is generally assumed so that there is no deformation in the 'wide' direction of the specimen. Including the incompressibility, we have

    \\[ \\lambda_2=1 \\\\ \\lambda_3 = \\lambda_1^{-1} \\]

    For pure shear, the first and second strain invariants are:

    \\[ I_1=I_2=\\lambda_1^2+\\lambda_1^{-2}+1 \\]

    The corresponding engineering stress can be expressed using principal stretch ratio:

    \\[ T_1=2(\\lambda_1 - \\lambda_1^{-3})[\\dfrac{\\partial W}{\\partial I_1} + \\dfrac{\\partial W}{\\partial I_2}] \\]"},{"location":"mateditor/mat_theory_hyper-elasticity/#volumetric-deformation","title":"Volumetric Deformation","text":"

    The volumetric deformation is given as:

    \\[ \\lambda_1=\\lambda_2=\\lambda_3=\\lambda\\\\ J=\\lambda^3 \\]

    As nearly incompressible is assumed, we have:

    \\[ \\lambda \\approx 1 \\]

    The pressure P is directly related to the volume ratio J:

    \\[ P=\\dfrac{\\partial W}{\\partial J} \\]"},{"location":"mateditor/mat_theory_hyper-elasticity/#deformations-for-principal-stretches-based-models","title":"Deformations for principal stretches based models","text":"

    For the models based on the principal stretches, such Ogden model, the strain-stress relation can be obtained by deriving the strain energy with respect to the stretch.

    \\[ \\sigma(\\lambda)=\\dfrac{\\partial W(\\lambda)}{\\partial \\lambda} \\]

    The corresponding engineering stress is:

    \\[ T_1 = \\dfrac{\\partial W(\\lambda_1)}{\\partial \\lambda_1} \\lambda_1^{-1} \\]"},{"location":"mateditor/mat_theory_hyper-elasticity/#material-stability-check","title":"Material stability check","text":"

    Stability checks are critical for the following analysis. A nonlinear material is stable if the secondary work required for an arbitrary change in the deformation is always positive. We usually use the Drucker stability criterion to determine the stability of the hyperelastic materials. Mathematically, this is:

    \\[ d\\sigma_{ij}d\\epsilon_{ij}>0 \\]

    where \\(d\\sigma\\) is the change in the Cauchy stress tensor corresponding to a change in the logarithmic strain.

    The material stability checks can be done at the end of preprocessing but before an analysis actually begins. Checking for the stability of a material can be more conveniently accomplished by checking for the positive definiteness of the material stiffness. The program checks for the loss of stability of six typical stress paths including uniaxial tension and compression, equibiaxial tension and compression, and planar tension and compression. the range of the stretch ratio over which the stability is checked is chosen from 0.1 to 10.

    "},{"location":"mateditor/mat_theory_io/","title":"Theory IO","text":"

    Some properties are mutually exclusive of each other and require that only one property in the mutually exclusive set be unsuppressed. The addition or removing of the suppression for one of these properties automatically suppresses the other mutually exclusive properties.

    For example, defining Isotropic Elasticity and Orthotropic Elasticity for the same material represents redundant elasticity behavior. Only one behavior can be active for the material. When such a conflict occurs, the property defined last is used and the previously defined, conflicting property is automatically suppressed.

    The properties that are mutually exclusive are grouped in the following table.

    Group Material Property Elastic properties Isotropic Elasticity, Orthotropic Elasticity, Anisotropic Elasticity, Mooney-Rivlin, Neo-Hookean, Polynomial, Yeoh, Ogden, Arruda-Boyce, Gent, Blatz-Ko, Ogden Foam, Extended Tube, Mullins Effect Plastic properties Bilinear Isotropic Hardening, Multilinear Isotropic Hardening, Bilinear Kinematic Hardening, Multilinear Kinematic Hardening Thermal conductivity properties Thermal Conductivity Isotropic, Thermal Conductivity Orthotropic Resistivity properties Isotropic Resistivity, Orthotropic Resistivity Electric permittivity properties Isotropic Relative Permittivity, Orthotropic Relative Permittivity Dielectric loss properties Isotropic Dielectric Loss Tangent, Orthotropic Dielectric Loss Tangent Magnetic permeability properties Isotropic Relative Permeability, Orthotropic Relative Permeability Magnetic loss properties Isotropic Relative Imaginary Permeability, Isotropic Magnetic Loss Tangent, Orthotropic Magnetic Loss Tangent"},{"location":"mateditor/mat_theory_plasticity/","title":"Plasticity","text":"

    This section describes the plastic laws in details.

    "},{"location":"mateditor/mat_theory_plasticity/#johnson-cook-model","title":"Johnson-Cook Model","text":"

    In this model the material behaves as a linear-elastic material when the quivalent stress is lower than the plastic yield stress. For higher stress values, the material behavior is plastic, and the true stress is calculated as:

    \\[ \\sigma = (a+b\\epsilon_p^n)(1+c\\cdot ln\\dfrac{\\dot{\\epsilon}}{\\dot{\\epsilon}_0})(1-(\\dfrac{T-T_r}{T_{melt}-T_r})^m) \\]

    where \\(\\epsilon_p\\) is the plastic strain, \\(\\dot{\\epsilon}\\) is strain rate, \\(T\\) is the temperature, \\(T_r\\) is the ambient temperature, \\(T_{melt}\\) is the melting temperature. The plastic yield stress \\(a\\) should always be greater than zero. The plastic hardening exponent \\(n\\) must be less than or equal to 1.

    "},{"location":"mateditor/mat_theory_plasticity/#zerilli-armstrong-model","title":"Zerilli-Armstrong Model","text":"

    The stress during plastic deformation is defined by

    \\[ \\sigma = C_0 + C_1 exp(-C_3 T + C_4 T ln \\dfrac{\\dot{\\epsilon}}{\\dot{\\epsilon}_0} ) + C_5 \\epsilon_p ^n \\]

    where the yield stress \\(C_0\\) should be positive, plastic hardening exponent \\(n\\) must be less than 1.

    "},{"location":"mateditor/mat_theory_plasticity/#hill-model","title":"Hill Model","text":"

    The Hill model describes the orthotropic plastic material. The yield stress can be input by parameters or tabular data. The yield stress is defined as:

    \\[ \\sigma_y = a(\\epsilon_0+\\epsilon_p)^n \\mathrm{max}(\\dot{\\epsilon}, \\dot{\\epsilon}_0)^m \\]

    The maximum elastic stress is given by

    \\[ \\sigma_0 = a(\\epsilon_0)^n (\\dot{\\epsilon}_0)^m \\]

    The yield stress is compresed to the equivalent stress: $$ \\sigma_{eq} = \\sqrt{A_1 \\sigma_1^2 + A_2 \\sigma_2^2 -A_3 \\sigma_1 \\sigma_2 +A_{12} \\sigma_{12}^2} $$

    where parameters \\(A_1\\), \\(A_2\\), \\(A_3\\), and \\(A_{12}\\) are defined by the Lankford constants.

    "},{"location":"mateditor/mat_theory_plasticity/#orthotropic-hill-model","title":"Orthotropic Hill Model","text":"

    This model describes the orthotropic elastic behavior material with Hill plasticity. The yield stress is compared to an equivalent stress for the orthotropic materials. The equivalent stress for solid elements is defined as:

    \\[ \\sigma_{eq} = \\sqrt{F(\\sigma_{22}^2 - \\sigma_{33}^2) + G(\\sigma_{33}^2 - \\sigma_{11}^2) + H(\\sigma_{11} - \\sigma_{22}^2) + 2L\\sigma_{23}^2 + 2M\\sigma_{31}^2 + 2N\\sigma_{12}^2} \\]

    For the shell element, the equivalent yield stress is :

    \\[ \\sigma_{eq} = \\sqrt{(G+H)\\sigma_{11}^2 +(F+H) \\sigma_{22}^2 - 2H \\sigma_{11} \\sigma_{22} + 2N\\sigma_{12}^2} \\]"},{"location":"mateditor/mat_theory_plasticity/#rate-dependent-multilinear-hardening","title":"Rate-Dependent MultiLinear Hardening","text":"

    This model describes an isotropic elasto-plastic material using user-input funcitons for the strain-stress curves at the different strain rates. No yield stress equations are needed because constitutive relations are given by the tabular data.

    "},{"location":"mateditor/mat_theory_plasticity/#cowper-symonds-model","title":"Cowper-Symonds Model","text":"

    Similar to the Johnson-Cook model, Cowper-Symonds law models isotropic elasto-plastic materials. The yield stress is defined by the stress constants, tabular data, or a combination of both. The pure constant formulation is given here:

    \\[ \\sigma = (a+b\\epsilon_p^n)(1+(\\dfrac{\\dot{\\epsilon}}{c})^{\\frac{1}{p}}) \\]

    where the yield stress \\(a\\) should be positive, plastic hardening exponent \\(n\\) must be less than 1.

    "},{"location":"mateditor/mat_theory_plasticity/#zhao-model","title":"Zhao Model","text":"

    Zhao model describes the isotropic plastic strain rate-dependent materials. The strain-stress relation is based on the formula below:

    \\[ \\sigma = (A + B \\epsilon_p^n) + (C-D\\epsilon_p^m)\\cdot \\mathrm{ln}\\dfrac{\\dot{\\epsilon}}{\\dot{\\epsilon}_0}+E_1 \\dot{\\epsilon}^k \\]

    where the yield stress \\(A\\) should be positive, plastic hardening exponent \\(n\\) must be less than 1. If \\(\\dot{\\epsilon} \\le \\dot{\\epsilon}_0\\), the term \\((C-D\\epsilon_p^m)\\cdot \\mathrm{ln}\\dfrac{\\dot{\\epsilon}}{\\dot{\\epsilon}_0}=0\\), the stress becomes:

    \\[ \\sigma = (A + B \\epsilon_p^n) + E_1 \\dot{\\epsilon}^k \\]"},{"location":"mateditor/mat_theory_plasticity/#steinberg-guinan-model","title":"Steinberg-Guinan Model","text":"

    This model defines an isotropic elasto-plastic mateial with thermal softening. When the material approaches melting temperature, the yield strength and shear modulus decrease to zeero. The melting energy is given as

    \\[ E_m = E_c + \\rho_0 C_p T_m \\]

    where \\(E_c\\) is the cold compression energy.

    When the internal energy \\(E\\) is less than \\(Em\\), the shear modulus and the yield stress are :

    \\[ G = G_0 [1 + b_1 p V^{\\frac{1}{3}} - h(T-T_0)] e^{-\\frac{fE}{E-E_m}} \\] \\[ \\sigma_y = \\sigma_0(1+\\beta \\epsilon_p^{\\mathrm{(max)}})^n [1 + b_2 p V^{\\frac{1}{3}} -h(T-T_0)]e^{-\\frac{fE}{E-E_m}} \\]

    where initial shear modulus \\(G_0 = \\dfrac{E_0}{2(1+\\nu)}\\).

    "},{"location":"mateditor/mat_theory_plasticity/#gurson-model","title":"Gurson Model","text":"

    The Gurson law can be used to model visco-elasto-plastic strain rate-depdent porous materials. The yield stress can be obtained from the tabular data or the Cowper-Symond's law, the latter formulation is defined as:

    \\[ \\sigma_M = (A + B \\epsilon_M^n) (1 + (\\dfrac{\\dot{\\epsilon}}{c})^{\\frac{1}{p}}) \\]

    The von Mises critera for the viscoplastic flow are given as

    \\[ \\Omega_{vm} = \\sigma_{qt} - \\sigma_{M}\\sqrt{1 + q_3 f^{*2} - 2q_1 f^{*2} \\mathrm{cosh}(\\dfrac{3q_2\\sigma_m}{2\\sigma_M})} \\]

    or

    \\[ \\Omega_{vm} =\\dfrac{\\sigma^2_{qe}}{\\sigma^2_M} + 2q_1 f^* \\mathrm{cosh}(\\dfrac{3}{2}q_2 \\dfrac{\\sigma_m}{\\sigma_M}) - (1 + q_3 f^{*2}) \\]

    where \\(\\sigma_M\\) is the admissible stress, \\(\\sigma_m\\) is the trace, \\(\\sigma_eq\\) is the von Mises stress, \\(q_1\\), \\(q_2\\), and \\(q_3\\) are the Gurson material constants. The specific coalescence function \\(f*\\) is defined as

    \\[ f^* = f_c + \\dfrac{f_u - f_c}{f_F - f_c}(f - f_c) \\quad \\mathrm{if}\\, f \\gt f_c \\]"},{"location":"mateditor/mat_theory_plasticity/#barlat3-model","title":"Barlat3 Model","text":"

    This is an orthotropic elastoplastic law for modeling anisotropic materials in metal forming process. Thus it is widely applied in the shell elements. The plastic hardening is described by the input parameters or user-defined tabular data. The anisotropic yield criteria F for plane stress is given by:

    \\[ F = a |K_1 + K_2|^m + a |K_1 - K_2|^m + c |2K_2|^m - 2\\sigma_y^m = 0 \\]

    where coefficient \\(K_1 = \\frac{\\sigma_{xx} + h \\sigma_{yy}}{2}\\) and \\(K_2 = \\sqrt{(\\frac{\\sigma_{xx} - h \\sigma_{yy}}{2})^2 + p^2 \\sigma_{xy}^2}\\). The constants \\(a\\), \\(c\\), and \\(h\\) can be obtained from the Lankford constants.

    When the Young's modulus is based on the input parameters. The expression is

    \\[ E(t) = E - (E_0-E_{inf})[1-\\mathrm{exp}(-C_E \\bar{\\epsilon}_p)] \\]

    where \\(E_0\\) is the initial Youngs' modulus, \\(E_{inf}\\) is the asymptotic Young's modulus, and \\(\\bar{\\epsilon}_p\\) is the accumulated equivalent plastic strain.

    "},{"location":"mateditor/mat_theory_plasticity/#yoshida-uemori-model","title":"Yoshida-Uemori Model","text":"

    This model can describe the large strain cyclic plasticity of metals. The law is based on the yielding and bounding surfaces.

    For solid elements, von Mises yield criterion is used as:

    \\[ f = \\dfrac{3}{2} (\\mathbf{s} - \\mathbf{\\alpha}) \\colon (\\mathbf{s} - \\mathbf{\\alpha}) - Y^2 \\]

    For shell elements, Hill or Barlat3 yield criterion is used. The Hill law is expressed as:

    \\[ f_{Hill} = \\varphi(\\mathbf{\\sigma} - \\mathbf{\\alpha})- Y^2 \\]

    where \\(Y\\) is yield stress, and \\(\\mathbf{\\alpha}\\) is total back stress. Let \\(\\mathbf{A}=\\mathbf{\\sigma}-\\mathbf{\\alpha}\\), the function \\(\\varphi\\) becomes

    \\[ \\varphi(A) = A_{xx}^2 - \\dfrac{2r_0}{1+r_0}A_{xx}A_{yy} + \\dfrac{r_0(1+r_{90})}{r_{90}(1+r_0)}A_{yy}^2 + \\frac{r_0 + r_{90}}{r_{90}(1+r_0)}(2r_{45}+1)A_{xy}^2 \\]

    The Barlat law is defined as:

    \\[ f_{Barlat} = \\phi(\\sigma - \\alpha) - 2Y^M \\]

    where \\(M\\) is the exponent in Barlat's yield criterion.

    "},{"location":"mateditor/mat_theory_plasticity/#hohnson-holmquist-model","title":"Hohnson-Holmquist Model","text":"

    This law describes the behaivor of brittle materials, such as glass and ceramics.

    \\[ \\sigma^* = (1-D)\\sigma^*_i + D \\sigma_f^* \\]

    where the equivalent stress of the intact materials \\(\\sigma_i^*\\) can be expressed as

    \\[ \\sigma_i^* = a (P^* + T^*)^n (1 + c\\mathrm{ln}\\dfrac{\\dot{\\epsilon}}{\\dot{\\epsilon}_0}) \\]

    and the equivalent stress of the failed materials \\(\\sigma_f^*\\) is

    \\[ \\sigma_f^* = b(P^*)^m (1+c\\mathrm{ln}\\dfrac{\\dot{\\epsilon}}{\\dot{\\epsilon}_0}) \\]"},{"location":"mateditor/mat_theory_plasticity/#swift-voce-model","title":"Swift-Voce Model","text":"

    Swift-Voce elastoplastic model can combine the Johnson-Cook strain rate hardening and temperature softening. This model can be applied for the orthotropic materials and allows a quadratic non-assoicated flow rule. The yield stress can be calculated using a combination of Swift and Voce models as shown below.

    \\(\\sigma_y = \\{ \\alpha [A(\\bar{\\epsilon}_p + \\epsilon_0)^n] + (1+\\alpha)[K_0 + Q(1-\\mathrm{exp}(-B\\bar{\\epsilon }_p))]\\} (1+C \\mathrm{ln}\\dfrac{\\dot{\\bar{\\epsilon}}_p}{\\dot{\\epsilon}_0}) [1 - (\\dfrac{T-T_{ref}}{T_{melt} - T_{ref}})^m]\\)

    The plastic non-associated flow rule is computed as:

    \\[ \\Delta \\epsilon_p = \\Delta \\bar{\\epsilon}_p \\dfrac{\\partial g(\\sigma)}{\\partial \\sigma} \\]

    where \\(g(\\sigma) = \\sqrt{\\sigma^TG\\sigma}\\).

    "},{"location":"mateditor/mat_theory_plasticity/#hensel-spittel-model","title":"Hensel-Spittel Model","text":"

    The hensel-Spittel yield stress is a function of strain, strain rate, and temperature. This model is often used in hot forging simulations. The yield stress is defined as :

    \\[ \\sigma_y = A_0 e^{m_1 T} \\epsilon^{m_2} \\dot{\\epsilon}^{m_3} e^{\\frac{m_4}{\\epsilon}} (1+\\epsilon)^{m_5T} e^{m_7\\epsilon} \\]

    where true strain \\(\\epsilon = \\epsilon_0 + \\bar{\\epsilon}_p\\), \\(\\dot{\\epsilon}\\) is the true strain rate.

    "},{"location":"mateditor/mat_theory_plasticity/#vegter-model","title":"Vegter Model","text":"

    The yield function is defined as

    \\[ \\phi = \\bar{\\sigma} - \\sigma_Y \\]

    where \\(\\bar{\\sigma}\\) is the interpolated Vegter equivalent stress.

    "},{"location":"mateditor/mat_workflow/","title":"Material workflow","text":"

    This section discusses about the material data, and precedures for working with MatEditor.

    "},{"location":"mateditor/mat_workflow/#material-data","title":"Material data","text":"

    Material data is the source of the material information that is used for the analysis of the system it is contained in. The information in a material data component system is used if shared to an analysis system. MatEditor allows you to view, edit, and add data for use in your analysis system.

    "},{"location":"mateditor/mat_workflow/#importing","title":"Importing","text":"

    You can import data into an system as a new material. The following types of files are supported for import:

    • WELSIM material data format
    • Material(s) file following the MatML 3.1 schema

    Note

    When you import material data, the materials contained in that source will be added to the material outline.

    "},{"location":"mateditor/mat_workflow/#editing","title":"Editing","text":"

    Property and Table panes provide constant and tabular data input. You can edit both constant and tabular data.

    "},{"location":"mateditor/mat_workflow/#constant-data","title":"Constant data","text":"

    You edit constant data by changing the value and/or unit of that data in the Properties pane. The value is modified by clicking the cell in the Value column and typing in the new value. If available, changing the unit will convert the value to correspond to the new unit. If the value entered is invalid or not acceptable it will be indicated in yellow or red to gain users' attention.

    "},{"location":"mateditor/mat_workflow/#tabular-data","title":"Tabular data","text":"

    If Value cell shows a tabular format indication. This data is edited in the Table pane and each datum is a value and unit as one integral piece. If the value entered is invalid or not acceptable it will be indicated in yellow or red to gain users' attention. The unit is shown in the header, and you can change unit if necessary. The units between table header and Property pane column are connnected. Modifying either one of them changes units on both areas.

    "},{"location":"mateditor/mat_workflow/#suppression","title":"Suppression","text":"

    A material property may be defined but suppressed to prevent it from being sent to analysis process in the system. A data item may be suppressed by selecting the dropdown in the suppression column. Suppressed items and its children are shown by a strike through the name (for example, ) and the dropdown being set to True in the suppression column.

    "},{"location":"mateditor/mat_workflow/#perform-material-tasks-in-mateditor","title":"Perform material tasks in MatEditor","text":"

    All material related tasks require that you perform the following basic tasks:

    Task Procedure Create new material. In the Menu or Toolbar, click New Material to add a new material. Add material properties.
    1. Activate the material in the Material Outline pane that is to receive the additional property.
    2. Toggle the property in the Property Outline pane that you want to add.
    Delete material properties.
    1. Activate the material in the Material Outline pane whose property is to be deleted.
    2. Select the material property in the Properties pane.
    3. Right-click and choose Delete or on the menu bar, choose Delete.
    Modify material properties.
    1. Activate the material in the Material Outline pane that contains the property you want to modify.
    2. In the Properties pane change the value or unit for constant data.
    3. Perform one of the following:
      • For constant data, change the value or unit in the Properties pane.
      • For tabular data, change the value or unit(s) in the Table pane.
    Suppress material properties.
    1. Activate the material in the Material Outline pane that contains the property you want to suppress.
    2. Select the dropdown in the suppression column for the property you want to suppress.
    "},{"location":"mateditor/mateditor_overview/","title":"Overview","text":"

    MatEditor is a free material editor software program for engineers. This tool provides you comprehensive material properties those are often used in engineering simulation and finite element analysis.

    "},{"location":"mateditor/mateditor_overview/#specification","title":"Specification","text":"Specification Description Operation system Microsoft Windows 7 to 10; 64-bit Physical memory At least 4 GB

    Supported unit systems :

    • SI: (kg, m, s, K, A, N, V)
    • MKS Standard: (kg, m, s, \u00b0C, A, N, V)
    • NMMTON Standard: (tonne, mm, s, \u00b0C, A, N, mV)
    • BIN Standard: (lbm, in, s, \u00b0F, A, lbf, V)
    • US Engineering: (lb, in, s, R, A, lbf, V)
    • CGS Standard: (g, cm, s, \u00b0C, A, dyne, V)
    • NMM Standard: (kg, mm, s, \u00b0C, mA, N, mV)
    • UMKS Standard: (kg, \u00b5m, s, \u00b0C, mA, \u00b5N, V)
    • NMMDAT Standard: (decatonne, mm, s, \u00b0C, mA, N, mV)
    • BFT Standard: (lbm, ft, s, \u00b0F, A, lbf, V)
    • CGS Consistent: (g, m, s, \u00b0C, A, dyne, V)
    • NMM Consistent: (tonne, m, s, \u00b0C, mA, t\u22c5mm/s2, mV)
    • UMKS Consistent: (kg, m, s, \u00b0C, pA, \u00b5N, pV)
    • BIN Consistent: (slinch, in, s, \u00b0C, A, slinch\u22c5in/s2, V)
    • BFT Consistent: (slug, ft, s, \u00b0C, A, slug\u22c5ft/s2, V)
    • CGuS Standard: (g, cm, \\(\\mu\\)s, \u00b0C, A, dyne, V)
    "},{"location":"mateditor/mateditor_overview/#material-properties","title":"Material properties","text":"

    The supported material properties are listed in the table below.

    Category Materials Basic Density, Isotropic Thermal Expansion, Isotropic Instantaneous Thermal Expansion, Orthotropic Thermal Expansion, Orthotropic Instantaneous Thermal Expansion, Constant Damping Coefficient Linear Elastic Isotropic Elasticity, Orthotropic Elasticity, Viscoelastic Hyperelastic Test Data Uniaxial Test Data, Biaxial Test Data, Shear Test Data, Volumetric Test Data, SimpleShear Test Data, Uniaxial Tension Test Data, Uniaxial Compression Test Data Hyperelastic Arruda-Boyce, Blatz-Ko, Gent, Mooney-Rivlin 2, Mooney-Rivlin 3, Mooney-Rivlin 5, Mooney-Rivlin 9, Neo-Hookean, Ogden 1st Order, Ogden 2nd Order, Ogden 3rd Order, Polynomial 1st Order, Polynomial 2nd Order, Polynomial 3rd Order, Yeoh 1st Order, Yeoh 2nd Order, Yeoh 3rd Order Plasticity Bilinear Isotropic Hardening, Multilinear Isotropic Hardening, Bilinear Kinematic Hardening, Multilinear Kinematic Hardening, Anand Viscoplasticity, Johnson-Cook, Zerilli-Armstrong Creep Strain Hardening, Time Hardening, Generalized Exponential, Generalized Graham, Generalized Blackburn, Modified Time Hardening, Modified Strain Hardening, Generalized Garofalo, Exponential Form, Norton, Combined Time Hardening, Rational Polynomial, Generalized Time Hardening Visco-elastic Prony Shear Relaxation, Prony Volumetric Relaxation Equations of State (EOS) Compaction, Gruneisen, Ideal Gas, Linear, LSZK, Murnaghan, NASG, Noble-Abel, Osborne, Polynomial, Puff, Stiff Gas, Tillotson Failure Johnson Other Mechanical Strain Life Parameters, Compressive Ultimate Strength, Compressive Yield Strength, LaRc0304 Constants, Orthotropic Strain Limits, Orthotropic Stress Limits, Puck Constants, Tensile Ultimate Strength, Tensile Yield Strength, Tsai-Wu Constants, Shape Memory Effect, Drucker-Prager Strength Piecewise, Drucker-Prager Strength Linear, Ideal Gas EOS, Crushable Foam, Nonlinear Elastic Model Damage, Plakin Special Hardening, Tensile Pressure Failure, Crack Softening Failure Thermal Enthalpy, Isotropic Thermal Conductivity, Orthotropic Thermal Conductivity, Specific Heat Electromagnetics B-H Curve, Isotropic Relative Permeability, Orthotropic Relative Permeability, Isotropic Resistivity, Orthotropic Resistivity, Isotropic Relative Permittivity, Orthotropic Relative Permittivity, Isotropic Dielectric Loss Tangent, Isotropic Magnetic Loss Tangent, Isotropic Relative Imaginary Permeability, Orthotropic Dielectric Loss Tangent, Orthotropic Magnetic Loss Tangent Fluid Dynamic Viscosity, Kinematic Viscosity, Lemalar Prandtl Number, Turbulent Prandtl Number, ALE"},{"location":"mateditor/mateditor_overview/#predefined-materials","title":"Predefined materials","text":"

    WELSIM also provide predefined materials, which covers most of commonly used materials. Users can choose these materials and apply to the successive finite element analysis.

    Category Materials General Materials Structural Steel, Stainless Steel, Aluminum Alloy, Concrete, Copper Alloy, Gray Cast Iron, Titanium Alloy Nonlinear Materials Aluminum Alloy NL, Concrete NL, Copper Alloy NL, Stainless Steel NL, Structural Steel NL, Titanium Alloy NL Hyperelastic Materials Elastomer Mooney-Rivlin, Elastomer Neo-Hookean, Elastomer Ogden, Elastomer Yeoh, Neoprene Rubber Thermal Materials Brass, Bronze, Copper, Diamond, Ferrite, Nodular Cast Iron, Solder, Teflon, Tungsten, Wood Electromagnetic Materials SS416, Supermendure, TDK-K1, TDK-M33, TDK-N30, TDK-N41, TDK-N45, TDK-N48, TDK-N49, TDK-N87, TDK-N97, TDK-T38, TDK-T66 Other Materials Water Liquid, Argon, Ash"},{"location":"mateditor/mateditor_overview/#download","title":"Download","text":"

    MatEditor software is available at our official website.

    "},{"location":"mateditor/material_data/","title":"Defining materials","text":"

    This section describes how to create material objects and define material properties in the WELSIM application.

    "},{"location":"mateditor/material_data/#overview","title":"Overview","text":"

    Material Module serves as a database for material properties used in a modeling project. The module not only provides a material library but also allow you to create a material using the given properties. The spreadsheet of a Material object is the primary user interface designed to let you create, save, and retrieve material models. The well-defined material object can be saved and used in the subsequent projects.

    Material Module is shown as a Material Project and Material Objects in the Project Explorer (tree) window. The solution system contains only one Material Project, which acts as a material repository in the modeling system. The Material Project may include multiple Material Objects, where the properties can be added or edited by users.

    To access Material Object properties, you can choose one of the following methods: * Double click on the Material Object. * Right click on a Material Object, and select Edit item from the context menu.

    "},{"location":"mateditor/material_data/#modes-of-operation","title":"Modes of operation","text":"
    • Material for subsequent analysis: You can create a material that can be consumed in the subsequent analysis. For example, a defined material can be assigned to the specific geometry bodies.
    • Material Data for files: You can create a material and export the material data into an external file.

    The data included in the Material Module is automatically saved as you save the project.

    "},{"location":"mateditor/material_data/#user-interface","title":"User interface","text":"

    The Material Editor spreadsheet is an essential portion of the WELSIM user interface, and it displays material-related components that allow users to edit material data easily.

    "},{"location":"mateditor/material_data/#editing-mode","title":"Editing mode","text":"

    Presented in this section are two configurations for the material property editing. The first configuration method is based on the library as shown in Figure\u00a0[fig:ch3_guide_mat_ui_lib], and the second configuration is designed to manually combine the properties for the material object as shown in Figure\u00a0[fig:ch3_guide_mat_ui_build]. You can click on the Library or Build tab to switch these two editing modes.

    Note

    1. You can click on category tabs to browse different materials.
    2. Loading a material dataset from the library removes all pre-existing properties.
    "},{"location":"mateditor/material_data/#build-outline-tab","title":"Build outline tab","text":"

    The Build Outline Tab shows an outline of the contents of the togglable material properties. You can add a property data entry to the material by toggling on the property entry or remove property by toggling off the property entry.

    "},{"location":"mateditor/material_data/#properties-pane","title":"Properties pane","text":"

    The Properties pane displays all properties that are going to be added to the Material Object. You can tune the property values at this pane. The columns in this spreadsheet pane are:

    • Name: A read-only text field to display the property name.
    • Value: A number field to display and input the value.
    • Description: A read-only text field to display the attribute of this property.

    You can delete a property by right-clicking on a row and select Remove Rows from the pop-up context menu.

    The Material Properties pane provides the following command buttons to the bottom of the window:

    • OK: Save the properties and exit the material editor.
    • Apply: Save the current properties to the material database.
    • Cancel: Exit the material editor without Saving.
    • Clear: Remove all properties.
    "},{"location":"mateditor/material_data/#working-with-material-data","title":"Working with material data","text":""},{"location":"mateditor/material_data/#exporting","title":"Exporting","text":"

    You can export the complete material data to an external file. The following format is supported for export:

    • XML in WELSIM Material (MatML 3.1) schema.
    • JSON in WELSIM Material schema.
    • OpenRadioss input script

    To implement the exporting, you can use one of the following methods:

    • Click the Export Materials button from the standard Toolbar.
    • Click the Export Materials item from the Material Menu.
    • Right-click the Material Project and select the Export Materials item from the context menu.
    "},{"location":"mateditor/material_data/#mateditor-applicaiton","title":"MatEditor applicaiton","text":"

    MatEditor is a free application allow you to create and edit material data for the computer aided engineering. It is a smaller and concise application but has most of features that material module of WELSIM has. More details about MatEditor, please visit MatEditor page.

    "},{"location":"unitconverter/unitconverter/","title":"UnitConverter","text":"

    UnitConverter is a free unit conversion software program for engineers. This tool allows you to convert a large number of engineering units quickly and accurately.

    "},{"location":"unitconverter/unitconverter/#specification","title":"Specification","text":"Specification Description Operation system Microsoft Windows 7 to 10; 64-bit Physical memory At least 4 GB

    Supported unit systems :

    • SI: (kg, m, s, K, A, N, V)
    • MKS Standard: (kg, m, s, \u00b0C, A, N, V)
    • NMMTON Standard: (tonne, mm, s, \u00b0C, A, N, mV)
    • BIN Standard: (lbm, in, s, \u00b0F, A, lbf, V)
    • US Engineering: (lb, in, s, R, A, lbf, V)
    • CGS Standard: (g, cm, s, \u00b0C, A, dyne, V)
    • NMM Standard: (kg, mm, s, \u00b0C, mA, N, mV)
    • UMKS Standard: (kg, \u00b5m, s, \u00b0C, mA, \u00b5N, V)
    • NMMDAT Standard: (decatonne, mm, s, \u00b0C, mA, N, mV)
    • BFT Standard: (lbm, ft, s, \u00b0F, A, lbf, V)
    • CGS Consistent: (g, m, s, \u00b0C, A, dyne, V)
    • NMM Consistent: (tonne, m, s, \u00b0C, mA, t\u22c5mm/s2, mV)
    • UMKS Consistent: (kg, m, s, \u00b0C, pA, \u00b5N, pV)
    • BIN Consistent: (slinch, in, s, \u00b0C, A, slinch\u22c5in/s2, V)
    • BFT Consistent: (slug, ft, s, \u00b0C, A, slug\u22c5ft/s2, V)
    • CGuS Standard: (g, cm, \\(\\mu\\)s, \u00b0C, A, dyne, V)
    "},{"location":"unitconverter/unitconverter/#supported-units","title":"Supported units","text":"

    The supported units are listed in the table below.

    Category Materials Base Angle, Current, Length, Mass, Temperature, Time Common Area, Density, Energy, Frequency, Volume Mechanical Acceleration, Angular Acceleration, Angular Velocity, Force, Moment of Inertia, Power, Pressure, Torque, Velocity Thermal Heat Flux Density, Heat Transfer Coefficient, Specific Heat Capacity, Thermal Conductivity, Thermal Expansivity Electrical Capacitance, Electric Charge, Electrical Conductance, Electrical Conductivity, Inductance, Surface Charge Density, Surface Current Density, Voltage, Volume Charge Density Magnetic Magnetic field strength, Magnetic flux density"},{"location":"unitconverter/unitconverter/#download","title":"Download","text":"

    UnitConverter software is available at our official website.

    "},{"location":"welsim/release_notes/","title":"WELSIM release notes","text":"

    This release notes are specific to WELSIM 2024R1 and arranged by the version and features.

    "},{"location":"welsim/release_notes/#upgrading","title":"Upgrading","text":"

    To upgrade WELSIM to the latest version, download the installer from our official website . \u200b

    Since version 2.1, WelSim provides a version checker in the application, users can click Help -> Check for Updates on the menu and know if a new version is available.

    To inspect the currently installed version, open the About dialog in WELSIM application.

    "},{"location":"welsim/release_notes/#changelog","title":"Changelog","text":""},{"location":"welsim/release_notes/#2024r1-28-jan-at-2024","title":"2024R1 (2.8) Jan. at 2024","text":"
    • Import GDSII files and display in the project tree and 3D graphics window.
    • Allow users to choose the layer of selection in 3D geometry picking.
    • Enable ruler to show the micro and nano meter markers to better support micro shapes.
    • Add new 3D EM features: Eigenmode, Transient, and Driven analyses.
    • Include EM solver Palace, and all dependencies, MFEM, GSLib, libCEED, libXSMM, ARPACK-NG, etc. Built Palace on Windows operation system. Set the Palace as the default EM solver. Remove FemSolver1.
    • MatEditor
      • Add a new unit system: Metric (kg, mm, ns, A, N, V).
      • Add new material properties: Material Axes.
      • Add new materials: Sapphire.
    • Upgrade Linux version version to Ubuntu 22.04 LTS, upgrade compiler to GCC11.
    • Upgrade HYPRE from 2.25 to 2.30.
    • Enhancement and improvement.
    "},{"location":"welsim/release_notes/#2023r3-27-sept-at-2023","title":"2023R3 (2.7) Sept. at 2023","text":"
    • Support open-source CFD package Su2 pre-processing:
      • Configure file and Su2 format mesh file.
      • Solver options: EULER, NAVIER_STOKES, RANS, INC_EULER, INC_NAVIER_STOKES, INC_RANS.
      • Time-dependent and steady-state analyses.
      • Free-stream field.
      • Fluid Model: STANDARD_AIR, IDEAL_GAS, VW_GAS, PR_GAS, CONSTANT_DENSITY, INC_IDEAL_GAS, INC_IDEAL_GAS_POLY, FLUID_MIXTURE, SU2_NONEQ, MUTATIONPP.
      • Turbulence models: Spalart-Allmaras (SA), Shear Stress Transport (SST).
      • Markers and Boundary Conditions: Euler (Slip) Wall, Symmetry, Heatflux, Isothermal Wall, Far field, Inlet, Supersonic Inlet, Outlet, etc.
      • Convective Schemes: JST, ROE, AUSM, HLLC, CUSP, MSW, FDS.
      • Limiter Options: SLOPE_LIMITER_FLOW, SLOPE_LIMITER_TURB, BARTH_JESPERSEN, VENKATAKRISHNAN, VENKATAKRISHNAN_WANG, SHARP_EDGES, WALL_DISTANCE, VAN_ALBADA_EDGE.
      • Restart and Visualization Files: RESTART, MESH, CSV, PARAVIEW_MULTIBLOCK, PARAVIEW, SURFACE_CSV, SURFACE_PARAVIEW.
      • Customizing the Screen and History Output: TIME_ITER, OUTER_ITER, INNER_ITER, CUR_TIME, TIME_STEP, WALL_TIME.
    • Pre- and post-processing for OpenRadioss
      • Support multi-step analysis
      • Support output frequency for the engine file.
      • Expose the thickness results option in the animation files.
      • Expose the FLD results option in the animation files.
    • Add the Adaptive Mesh Region condition.
    • Support pressure boundary condition for shell structure.
    • Support RMB context menu for the result color legend bar. The context menu allows user to:
      • Select the type of bar.
      • Toggle the display of date and time, logarithmic scale, deformation scale factor, scientific notation, and semi-transparency.
      • Set the number of digits, number of labels, and color spectrum.
    • Support RMB context menu for the 3D graphics window.
    • Support Isometric view for the dropdown AxisWidget.
    • Expose Ffmpeg executable file path in the Preferences.
    • Expose regression recorder and tester to the end users.
    • Open source all regression test cases.
    • MatEditor:
      • Add JWL material property and Test143.
      • Add Shear Test Data - Viscoelastic, Bulk Test Data - Viscoelastic, and Uniaxial Plastic Strain Test Data material properties.
    • CurveFitter:
      • Add an Output window to display more information to users.
      • Add the Johnson-Cook, Swift, Voce, and Swift-Voce functions in the Nonlinear section.
    • Introduce glog 0.6. Upgrade MFEM from 4.5 to 4.5.2.
    • Enhancement and optimization
    "},{"location":"welsim/release_notes/#2023r2-26-april-at-2023","title":"2023R2 (2.6) April at 2023","text":"
    • Generate solver scripts and associated mesh files for Palace. Support boundary conditions: PEC, PMC, Absorbing, Conductivity, Impedance, LumpedPort, WavePort, SurfaceCurrent, Ground, ZeroCharge. Support material properties: Permeability, Permittivity, LossTan, Conductivity. Support solver settings: Electrostatic, Magnetostatic, Eigenmode, Driven, Transient, Linear. Support mesh formats: Gmsh, MFEM, VTK, Vtu, Nastran.
    • Export mesh files in Gmsh and Nastran formats.
    • Support rigid body condition for the OpenRadioss solver.
    • Support spring boundary condition for the structural analysis.
    • Check geometries before meshing implementation.
    • Add the \u201dOpen Recent\u201c feature to the File menu.
    • Directory persistence for tabular data import and export.
    • Introduce nlohmann/json third-party library.
    • Upgrade MFEM to 4.5 from 4.4, Hypre to 2.25 from 2.12, and FrontISTR to 5.5 from 5.3.
    • Enhancement and optimization.
    "},{"location":"welsim/release_notes/#2023r1-25-jan-at-2023","title":"2023R1 (2.5) Jan. at 2023","text":"
    • Support OpenRadioss pre-processing.
      • Export OpenRadioss solver scripts including starter and engine files.
      • Supported blocks with keywords: MAT, NODE, GRNOD/NODE, BCS, PART, SHELL, BRICK, PROP/SOLID, PROP/SHELL, FUNCT, GRAV, INTER/TYPE7, SURF/SEG, RBODY, TH/PART, TH/INTER, INIVEL.
    • Support OpenRadioss post-processing.
      • Load T01 file.
      • Load A001 files.
      • Display result contours: displacement, velocity, acceleration, stresses, and strains.
      • Generate dynamic analysis result videos.
    • Support explicit structural dynamics using OpenRadioss solver.
    • Support explicit structural dynamics using OpenRadioss solver.
    • Support Contact Search for multi-body analysis.
    • Support Exploded View for multi-body analysis.
    • Optimize the meshing modules and improve the meshing user experience.
    • Refactor the chart module.
    • Support data persistence of mesh and results.
    • Upgrade Windows C++ compiler to Visual Studio 2022, SDK to 10.0.19041
    • Upgrade 3rd party libraries:
      • Qt to 5.15.2
      • OpenCascade to 7.5.3
      • Boost to 1.80, replace nowide with Boost/nowide
    • Start to use the external version name based on the calendar year, such as 2023R1.
    • Enhancements and optimizations.
    "},{"location":"welsim/release_notes/#24-dec-at-2022","title":"2.4 Dec. at 2022","text":"
    • Export MFEM mesh file.
    • Export time-dependent results in Paraview Data format (*.pvd)
    • Export FrontISTR, MFEM, and SU2 input scripts.
    • UnitConverter:
      • Add new units: Energy Density By Area, Energy Density By Volume, Dynamic Viscosity, Kinematic Viscosity, Specific Heat Density By Volume, Specific Volume, Heat Capacity, Stiffness.
      • Add new unit system: g-cm-um.
    • CurveFitter:
      • Support multi-thread parallel computing (OpenMP), add 1st-6th Schulz-Flory functions\u3002
      • Expose solver options to GUI.
    • MatEditor:
      • Add new material: Air.
      • Add new fluid properties: Dynamic Viscosity, Kinematic Viscosity, Lemalar Prandtl Number, Turbulent Prandtl Number.
      • Add new Equation of State properties: EOS Compaction, EOS Gruneisen, EOS Ideal Gas, EOS Ideal Gas VT, EOS Linear, EOS LSZK, EOS Murnaghan, EOS NASG, EOS Noble Abel, EOS Osborne, EOS Polynomial EOS Puff, EOS Sesame, EOS Stiff Gas, EOS Tillotson.
      • Add new plasticity properties: Johnson Cook Strength, Zerilli Armstrong Strength, Hill, Rate-Dependent Multilinear Hardening, Orthotropic Hill, Cowper-Symonds, Zhao, Steinberg-Guinan, Gurson, Barlat3, Yoshida-Uemori, Johnson-Holmquist, Hensel-Spittel, Swift-Voce, and Vegter.
      • Add new Failure Criteria: Glass, Bi-Quadratic, Cockcroft, Connect, Extended Mohr-Coulomb, Energy, Fabric, Forming Limit Diagram, Hashin, Hosford-Coulomb, Johnson-Cook, Ladeveze delamination, Mullins Effect, NXT, Orthotropic Bi-Quadratic, Orthotropic Strain, Puck, Tuler-Butcher, Tensile Strain, Wierzbicki, Wilkins.
      • Add viscoelastic properties: Boltzman, Maxwell-Kelvin-Voigt, Maxwell-Kelvin.
      • Support tooltips for the materials and properties.
      • Support collapse and expand on the selected material properties.
      • Support deletion of the selected material properties.
      • Support Save/Resume.
      • Support writing OpenRadioss material scripts;
    • Upgrade MFEM to 4.4.
    • Upgrade MKL and Fortran Compiler to Intel oneAPI 2022.02.
    • Linux version: new release since v1.9; Upgrade Qt to 5.15.2, MKL to Intel oneAPI 2022.01.
    • Enhancements and optimizations.
    "},{"location":"welsim/release_notes/#23-july-at-2022","title":"2.3 July at 2022","text":"
    • Improve meshing performance; Reduce the size of the temporary mesh data files.
    • Add 2D circular shape geometry creation.
    • Add a Refine Geometry feature.
    • Add new HPC options in the Preference settings.
    • Support new units: Momentum.
    • Upgrade structural solver to 5.3.
    • Upgrade the 3D rendering module to 5.0.3.
    • Upgrade third-party libraries: HDF to 1.12.2, CGNS to 4.3.0, ITK to 5.2.1.
    • Enhancements and optimizations.
    "},{"location":"welsim/release_notes/#22-may-at-2022","title":"2.2 May at 2022","text":"
    • Add screen capture feature.
    • Support video export feature for the spinning view.
    • Add a result VCR controller to the Graph window.
    • Support result animation review and video export.
    • Enhancements and optimizations.
    "},{"location":"welsim/release_notes/#21-dec-at-2021","title":"2.1 Dec. at 2021","text":"
    • Add Sphere, and Torus build-in shape creation.
    • Support Clip Planes for the section view in post-processing.
    • Add vector (Glyph3D arrows) electric field and vector electric flux density results for electrostatic analysis.
    • Add Point Charge, Spherical Charge Density, and Polarization source conditions for electrostatic analysis.
    • Add Cylindrical Magnet, Ring Current source conditions for magnetostatic analysis.
    • Add image-saving feature for the Chart window.
    • Launch independent beam cross-section application - BeamSection.
    • CurveFitter: support R-squared (R2) calculation, enhance solver.
    • Upgrade Eigen to 3.3.9.
    "},{"location":"welsim/release_notes/#20-january-at-2021","title":"2.0 January at 2021","text":"
    • All new 3D graphics module supports 4K display, auto spin/swing, stereo views, etc.
    • New \"Pre-Selection\", \"Show Vertices\", \"Wireframe\", \"Show Mesh\", \"Stop Meshing/Solving\" commands on Menu and Toolbar.
    • A new dimension ruler supports both metric and U.S. customary units.
    • A new bounding box feature for all presented objects in the 3D scene.
    • Optimized meshing module with better performance and usability.
    • Optimized mesh and result 3D rendering.
    • Added a new Selection View to the GUI main window.
    • Upgrade QT framework to 5.12.9, OCCT to 7.4, VTK to 8.2, MUMPS to 5.3.5, PETSc to 3.14.2, etc.
    "},{"location":"welsim/release_notes/#191-july-at-2020","title":"1.9.1 July at 2020","text":"
    • Support curve fitting features for the Core Loss Model and test data.
    • Support curve fitting for the hyperelastic material models and test data.
    • Launch general-purpose curve fitting application - CurveFitter.
    "},{"location":"welsim/release_notes/#19-november-2019","title":"1.9 November, 2019","text":"
    • Support units.
    • Support nonlinear thermal analysis.
    • All new table and graph windows.
    • All new About dialogs with capability of displaying software and hardware information.
    • Launch the engineering material data tool - MatEditor.
    • Launch the engineering unit converter - UnitConverter.
    • Launch online documentation at docs.welsim.com and replaced the PDF documents.
    • Result legend supports user-defined min/max values.
    • Upgrade C++ compiler to vs2017, QT framework to 5.12.2, HDF5 to 1.8.21, Boost to 1.69, OCCT to 7.3, etc.
    • Enhancements and optimizations.
    "},{"location":"welsim/release_notes/#18-december-2018","title":"1.8 December, 2018","text":"
    • Input/Output: Add Nastran and Abaqus input scripts generation; Read generated result files.
    • GUI: Add system preferences database and associated user interface; Enhance Output/Message window, promote more detailed messages.
    • Geometry: New STL geometry object. Import STL files; Add geometry checking feature.
    • Mesh: mesh STL geometry. export mesh data to file.
    • Analysis: Support Vertex scoping for the boundary conditions. Add body heat flux condition for thermal analysis.
    • Upgrade Microsoft MPI to 10.0. General enhancements.
    "},{"location":"welsim/release_notes/#17-july-2018","title":"1.7 July, 2018","text":"
    • Add structural shell analysis, including the associated fixed rotation boundary condition, rotation result, reaction moment probe.
    • Add structural body conditions: body force, acceleration, earth gravity, rotational velocity.
    • Add mesh method object to support distinct mesh density for bodies.
    • Add geometry selection controller on graphics toolbar, support body, face, edge, and vertex selections.
    • Add plane shape creation feature.
    • Add official user manual.
    • General enhancements.
    "},{"location":"welsim/release_notes/#16-april-2018","title":"1.6 April, 2018","text":"
    • Add data persistence module to support project save/resume feature.
    • Add user-defined and reaction force probe results.
    • Add velocity and acceleration boundary conditions and results for transient structural analysis.
    • Add geometry export feature.
    • General enhancements.
    "},{"location":"welsim/release_notes/#15-february-2018","title":"1.5 February, 2018","text":"
    • Launch Linux 64-bit version that supports Ubuntu 16.04 LTS and Fedora 27.
    • Add status engine for the project tree objects, small icon represents the current state of the object.
    • General enhancements.
    "},{"location":"welsim/release_notes/#14-november-2017","title":"1.4 November, 2017","text":"
    • Add 3D static and transient lamellar flow analysis (Deprecated).
    • General enhancements.
    "},{"location":"welsim/release_notes/#13-september-2017","title":"1.3 September, 2017","text":"
    • Add 3D electrostatic analysis with supported boundary conditions: ground, symmetry, voltage, zero charges, surface charge density, electric displacement.
    • Add 3D magnetostatic analysis with supported boundary conditions: insulting, magnetic flux density.
    • General enhancements.
    "},{"location":"welsim/release_notes/#12-august-2017","title":"1.2 August, 2017","text":"
    • Add 3D steady-state and transient thermal analysis with associated boundary conditions.
    • General enhancements.
    "},{"location":"welsim/release_notes/#11-july-2017","title":"1.1 July, 2017","text":"
    • Add chart, tabular data, and output window to GUI.
    • Add multi-body and contact features to structural analysis.
    • Add nonlinear material analysis features with the capabilities of solving hyperelastic, elastoplastic, viscoelastic, and creep materials.
    • Add 3D static, transient, and modal structural analyses.
    • General enhancements.
    "},{"location":"welsim/release_notes/#10-march-2017","title":"1.0 March 2017","text":"
    • Launch all-in-one simulation framework including a graphical user interface, meshers, and solvers.
    • Add 3D linear elastic structural analysis.
    • Add Automatic mesh generator for Tet4 and Tet10 elements.
    • Add geometry creation and CAD model import features.
    • Add graphics, tree, and property windows to the GUI.
    "},{"location":"welsim/troubleshooting/","title":"Troubleshooting","text":"

    If you encounter an issue that cannot be resolved here, please send the project file (*.wsdb and the associated folder), and the system information to info@welsim.com. Your computer information can be acquired by clicking About button on the toolbar.

    "},{"location":"welsim/troubleshooting/#graphical-window-issue","title":"Graphical window issue","text":"

    The graphics window fails to display items, and the context is all black. The screen capture of this issue is shown in Figure\u00a0[fig:ch6_issue_opengl].

    • Cause: This issue is due to an unsupported graphics card or driver.

    • Solution: Set the environment variable QT_OPENGL=desktop then restart the WelSim application. The graphics window shall display the context correctly.

    "},{"location":"welsim/get_started/quick_start/","title":"Quick start","text":"

    This section demonstrates you the primary GUI features and workflow of WELSIM application.

    "},{"location":"welsim/get_started/quick_start/#graphical-user-interface","title":"Graphical user interface","text":""},{"location":"welsim/get_started/quick_start/#overview","title":"Overview","text":"

    The WELSIM application provides you an ease-of-use graphical interface to customize the finite element analysis settings. The primary components of graphical user interface include:

    • Menus
    • Toolbar
    • Project Explorer (Tree) Window
    • Properties View Window
    • Graphics Window
    • Tabular Data Window
    • Chart Window
    • Output Window

    An overview of graphical user interface is shown in Figure below.

    .

    "},{"location":"welsim/get_started/quick_start/#menu-and-toolbar","title":"Menu and toolbar","text":"

    Menus and toolbar contain primary commands of the application as shown in Figure below. Sections Main Menus and Toolbars of have more details.

    .

    "},{"location":"welsim/get_started/quick_start/#graphics-window","title":"Graphics window","text":"

    The Graphics window displays the geometries and associated symbols, text, and annotations. In this window, you can pan, rotate, and zoom the 3D geometries using mouse and key. In addition to the geometries, this window may contain annotation, Graphics Toolbar, coordinate system symbol, ruler, logo, etc. A schematic view of the Graphics window is shown in Figure below.

    .

    "},{"location":"welsim/get_started/quick_start/#material-definition-spreadsheet","title":"Material definition spreadsheet","text":"

    The material module provides a spreadsheet panel for you to define and review material properties. An overview of the material property spreadsheet is shown in Figure\u00a0below.

    .

    "},{"location":"welsim/get_started/quick_start/#geometry-display","title":"Geometry display","text":"

    The Graphics window displays the 3D geometries, meshed elements, result contours, etc. A 3D geometry and object properties are shown in Figure below.

    .

    "},{"location":"welsim/get_started/quick_start/#mesh-display","title":"Mesh display","text":"

    Graphics window displays the mesh as you select the mesh related objects in the tree. The Properties View shows the statistical data of the mesh as shown in Figure\u00a0below.

    .

    "},{"location":"welsim/get_started/quick_start/#boundary-condition-display","title":"Boundary condition display","text":"

    For the boundary conditions, the Graphics window displays the highlighted entities (faces, edges, vertices), the Property View, Tabular Data, and Chart windows show the boundary values over time. The Properties View window also allows you to scope the geometry entities and set values, as shown in Figure\u00a0below.

    .

    "},{"location":"welsim/get_started/quick_start/#solution-display","title":"Solution display","text":"

    After solving, the user interface displays the solution and results. The Graphics window displays the result contour and legend. The Properties View shows the Maximum and Minimum values of the result at the given Set Number. The Tabular Data and Chart Windows illustrate the maximum and minimum values over the time as shown in Figure \u00a0below.

    .

    "},{"location":"welsim/get_started/quick_start/#result-legend","title":"Result legend","text":"

    You can adjust the result contour and legend by right clicking on the legend field and set the parameters in the context menu, as shown in Figure\u00a0below.

    .

    "},{"location":"welsim/get_started/quick_start/#workflow","title":"Workflow","text":"

    Using WELSIM is straightforward. The following gives you the primary workflow steps in starting a finite element analysis project from scratch:

    "},{"location":"welsim/get_started/quick_start/#create-a-new-project","title":"Create a new project","text":"

    Clicking New command from Toolbar or File Menu creates a new simulation project. Several default objects are automatically generated in the tree, and the Graphics window is filled with the 3D modeling interface. The following shows the behaviors of creating a new project:

    • A Material Project and a FEM Project are created simultaneously. The Material Project object holds only Material objects, and the FEM Project object contains all modeling objects that allow users to customize a finite element analysis. Only one Material Project is allowed in the tree, while you can add multiple FEM Projects to conduct multiple simulation studies at one interface.

    • An activated project displays the object name in Bold. You can double click the project object to activate a FEM Project.

    • Many commands on Toolbar and Menu become available as a FEM project is created.

    • Each object provides a unique context menu, and you can right-click to display the context menu. For example, you can rename an object via the context menu.

    • Each object provides unique options in Properties View window, which is automatically updated as you select objects.

    "},{"location":"welsim/get_started/quick_start/#defining-materials","title":"Defining materials","text":"

    In addition to the default Structural Steel material, you can add new materials and define the properties. A Material object represents a material database. The following gives the behaviors of material definition.

    • You can create a new material object by clicking Add Material command from Toolbar or Material Menu. The Material Project many holds multiple Material objects.

    • A newly created Material object requires you to specify the properties. Double-clicking or right-clicking on the material object, you open the Edit spreadsheet.

    • Two methods are available for you to add material properties in the Edit spreadsheet. The Library tab provides you pre-defined material data to directly import. The Build tab lists all available properties for you to add properties one by one.

    "},{"location":"welsim/get_started/quick_start/#importing-or-creating-geometries","title":"Importing or creating geometries","text":"

    You can add geometry data by importing a CAD file or creating primitive shapes using the commands from Toolbar or Geometry Menu.

    • The built-in modeler allows you to create primitive shapes such as Box, Cylinder, Plate, and Line.
    • The supported CAD geometry file formats are: STEP, IGES.
    • The ruler in the Graphics window provides you a reference to estimate the size of geometries.
    • The size of the imported geometry can be adjusted by the tuning the Scale property value.
    "},{"location":"welsim/get_started/quick_start/#meshing","title":"Meshing","text":"

    You can skip meshing at this moment because the system automatically meshes the domain at solving step if no mesh is generated. However, meshing at this step provides you an insight of the mesh quality and a chance to optimize the mesh. You can click the Mesh commands from the Toolbar or FEM Menu to perform the meshing operations.

    • The mesh module supports Tet10, Tet4, Tri6, and Tri3 elements. The default type is the linear element, and you can change the element order by modifying the Quadratic property in Mesh Settings object.
    • For multiple body geometries, you can add a Mesh Method object to make some bodies have different mesh density to the global mesh density, which is defined by the Mesh Settings object.
    • The Toolbar and FEM Menu provide you mesh tools, such as Clear Generated Mesh, Examine Mesh.
    • The mesh density can be adjusted by tuning the properties of Mesh Settings, such as Maximum Size, Mesh Density.
    "},{"location":"welsim/get_started/quick_start/#analysis-settings","title":"Analysis settings","text":"

    You can define the analysis settings in the following order:

    • Set the Physics Type and Analysis Type in the FEM Project object.
    • Determine the Number of Steps, Current Step, and Current End Time properties in Study object.
    • Determine the analysis settings properties in Study Settings object.
    • Determine the solver settings properties in the Answers object.
    "},{"location":"welsim/get_started/quick_start/#imposing-initial-conditions","title":"Imposing initial conditions","text":"

    For the transient analysis, you can define initial conditions. The available initial conditions are

    • Initial Temperature
    "},{"location":"welsim/get_started/quick_start/#imposing-boundary-conditions","title":"Imposing boundary conditions","text":"

    The boundary and body conditions are essential for the conducted analysis. Depending on the Physics Type and Analysis Type, you can insert various condition objects into the tree via the Toolbar or Menu. The following gives the behaviors of the body and boundary conditions.

    • The body and boundary condition value is Step-based.
    • Multiple boundary and body conditions can be jointly imposed on the geometry.
    • In the condition scoping, you can select multiple entities by pressing Ctrl or Shift key. However, the multiple entities for one property field must be the same type of geometry.
    • Graphics window displays the annotation and highlighted geometry entities if a condition object is valid.
    • Tabular Data and Chart windows can show the condition values over time.
    "},{"location":"welsim/get_started/quick_start/#solve","title":"Solve","text":"

    To solve the customized model, you can click the Compute command from the Toolbar or FEM Menu. The behaviors of solving are

    • You may be required to Save the project before performing a solving process. The system needs to save the input scripts and mesh data for solvers.
    • The Output window displays the solver messages. The promoted message indicates the success or failure of the solving process.
    • You can discontinue the solving process by clicking the Stop Interprocess button in the Output pane.
    "},{"location":"welsim/get_started/quick_start/#displaying-results","title":"Displaying results","text":"

    Depending on the Physics Type and Analysis Type, you can insert various result objects into the tree via the Toolbar or Menu. The following gives the behaviors of the solution and results.

    • To display the resulting contour, you can select the target result object, and click the Evaluate from the Toolbar or FEM Menu, or double click the object.
    • You can adjust the contour format by right clicking on the resulting legend.
    • You can clear result contour by clicking Clear Result, or Clear Calculated Solution commands from the Toolbar or FEM Menu.
    "},{"location":"welsim/get_started/quick_start/#completed","title":"Completed","text":"

    The analysis is completed. You can Save the projects to an external \u201cwsdb\u201d file and close the application.

    Note

    The *.wsdb file and associated folder are the WELSIM database for project data persistence, you can open this project file later, on another computer, and on different operation systems.

    "},{"location":"welsim/get_started/electromagnetics/electrostatic/","title":"Electrostatic analysis","text":"

    This example shows you how to conduct a 3D electrostatic analysis for a unibody part.

    "},{"location":"welsim/get_started/electromagnetics/electrostatic/#specifying-analysis","title":"Specifying analysis","text":"

    In the Properties View of the FEM Project object, you set the Physics Type property to Electromagnetic and Analysis Type to Electrostatic. An Electro-Static analysis is defined as shown in Figure\u00a0below.

    "},{"location":"welsim/get_started/electromagnetics/electrostatic/#preparing-geometry","title":"Preparing geometry","text":"

    Next, you can import the geometry file \u201ch_section_unibody.step\u201d by clicking the Import... command from the Toolbar or Geometry Menu. The imported geometry and material property are shown in Figure\u00a0below.

    "},{"location":"welsim/get_started/electromagnetics/electrostatic/#setting-mesh","title":"Setting mesh","text":"

    To obtain a fine mesh for the analysis, you set the Mesh Settings properties Quadratic to True, and Maximum Size to 3e-3.

    Clicking the Mesh command from the Toolbar or FEM Menu, you can mesh the geometries. There are 34,764 nodes, and 20,657 Tet10 elements generated as shown in Figure\u00a0below.

    "},{"location":"welsim/get_started/electromagnetics/electrostatic/#imposing-conditions","title":"Imposing conditions","text":"

    Next, you impose two boundary conditions, a Ground, and Voltage by clicking the corresponding commands from the Toolbar and Electromagnetic Menu. In the Properties View of the Ground object, holding the Ctrl or Shift key and select left bottom and right top surfaces for the Geometry property, as shown in Figure\u00a0below.

    In the Properties View of Voltage object, set the Voltage value to 5, and scope surfaces for the Geometry property, as shown in Figure\u00a0below.

    "},{"location":"welsim/get_started/electromagnetics/electrostatic/#solving-the-model","title":"Solving the model","text":"

    To solve the model, you can click the Compute command from the Toolbar, FEM Menu, or right-click on the Answers object and select Compute command from context menu. Depending on the complexity of the model, the solving process can be completed in seconds to hours. The Output window displays the solver messages and indicates the status of the solving process. As shown in Figure\u00a0[fig:ch2_start_ex1_output_solver], this model is solved successfully.

    "},{"location":"welsim/get_started/electromagnetics/electrostatic/#evaluating-results","title":"Evaluating results","text":"

    To evaluate the deformation of the structure, you can add a Voltage object to the tree by clicking the Voltage item from the Toolbar, Electromagnetic Menu. Next, double-clicking the result object or clicking the Evaluate item from the Toolbar or FEM Menu, you display the contour in the Graphics window as shown in Figure\u00a0below.

    Adding an electric field result object is similar. Clicking the Electric Field result from Toolbar or Electromagnetic Menu, you insert a Electric Field result object to the tree. Evaluating the default Total Electric Field Type, you obtain the magnitude of the electric field vector contour on the body in the Graphics window. The Maximum and Minimum values of field data are displayed in the Properties View window as shown in Figure\u00a0below.

    Info

    This project file is located at examples/quick_electrostatic_01.wsdb.

    "},{"location":"welsim/get_started/structural/structural_modal/","title":"Structural modal analysis","text":"

    This example shows you how to conduct a 3D transient structural analysis for an assembly.

    "},{"location":"welsim/get_started/structural/structural_modal/#defining-materials","title":"Defining materials","text":"

    In this multi-body analysis, we assign Structural Steel and Aluminum materials to different parts. Since a Structural Steel object is already added as you initialize a FEM Project, you only need to insert an aluminum material object by clicking Add Material from Toolbar or FEM Menu.

    To edit the material properties, you can double-click the Material object, or right-click on the Material object and select the Edit command from the context menu. In the material editor, you select the Library tab > General Materials > Aluminum Alloy, then click Import button or double-click the Aluminum Alloy entry. Click the OK to save and exit the material editing.

    You can rename this new material object to Aluminum by press F2 key or right-clicking.

    "},{"location":"welsim/get_started/structural/structural_modal/#specifying-analysis","title":"Specifying analysis","text":"

    In the Properties View of the FEM Project object, you set the Analysis Type property to Modal. A Modal Structural analysis is defined as shown in Figure\u00a0below.

    "},{"location":"welsim/get_started/structural/structural_modal/#preparing-geometry","title":"Preparing geometry","text":"

    Next, you can import the geometry file \u201ch_section_multibody.step\u201d and assign the materials to the corresponding parts. Three Part objects in the Geometry group represent three bodies in the Graphics window, respectively. You assign the Aluminum material to the Part2, which is the connection body in the middle, the rest bodies are assigned with Structural Steel material.

    "},{"location":"welsim/get_started/structural/structural_modal/#setting-mesh","title":"Setting mesh","text":"

    To obtain a fine mesh for the analysis, you set the Mesh Settings properties Quadratic to True, and Maximum Size to 3e-3, as shown in Figure\u00a0below.

    Clicking the Mesh command from the Toolbar or FEM Menu, you can mesh the geometries. There are 42,329 nodes, and 25,920 Tet10 elements generated as shown in Figure\u00a0below.

    "},{"location":"welsim/get_started/structural/structural_modal/#specifying-contacts","title":"Specifying contacts","text":"

    Next, you need to define two Contact Pairs to bond the three parts into one uni-body for the analysis. Clicking the Add Contact command from the Toolbar or FEM Menu, you add two Contact Pair objects into the tree. You can rename these two objects to Contact1 and Contact2, respectively. Then you select the surfaces for Master and Target Geometry properties.

    "},{"location":"welsim/get_started/structural/structural_modal/#defining-analysis-settings","title":"Defining analysis settings","text":"

    In the Properties View of Study Settings object, you can define the analysis details such as Number of Modes. Here, you can use the default settings as shown in Figure\u00a0below.

    "},{"location":"welsim/get_started/structural/structural_modal/#imposing-boundary-conditions","title":"Imposing boundary conditions","text":"

    In this modal analysis, you impose a Constraint (Fixed Support) boundary condition, which can be processed by clicking the corresponding commands from the Toolbar and Structural Menu. In the Properties View of the Constraint object, select the left bottom surface for the Geometry property.

    "},{"location":"welsim/get_started/structural/structural_modal/#solving-the-model","title":"Solving the model","text":"

    To solve the model, you can click the Compute command from the Toolbar, FEM Menu, or right-click on the Answers object and select Compute command from context menu. Depending on the complexity of the model, the solving process can be completed in seconds to hours. The Output window displays the solver messages and indicates the status of the solving process.

    "},{"location":"welsim/get_started/structural/structural_modal/#evaluating-results","title":"Evaluating results","text":"

    To evaluate the deformation of the structure, you can add a Deformation object to the tree by clicking the Deformation item from the Toolbar, Structural Menu. A result object may provide multiple sub-result types. For example, a Deformation result object allows you to specify one deformation type from the candidates Deformation X, Y, Z, and Total.

    After setting the Type property to Deformation Z, double-clicking on the result object displays the resulting contour in the Graphics window as shown in Figure\u00a0below. You also can click the Evaluate item from the Toolbar or FEM Menu to evaluate the result.

    Info

    This project file is located at examples/quick_structural_modal_solid_01.wsdb.

    "},{"location":"welsim/get_started/structural/structural_static/","title":"Static structural analysis","text":"

    This example shows you how to conduct a 3D static structural analysis for an assembly.

    "},{"location":"welsim/get_started/structural/structural_static/#defining-materials","title":"Defining materials","text":"

    In this multi-body analysis, we assign Structural Steel and Aluminum materials to different parts. Since a Structural Steel object is already added as you initialize a FEM Project, you only need to insert an aluminum material object by clicking Add Material from Toolbar or FEM Menu.

    To edit the material properties, you can double-click the Material object, or right-click on the Material object and select the Edit command from the context menu. In the material editor, you select the Library tab > General Materials > Aluminum Alloy, then click Import button or double-click the Aluminum Alloy entry. The material properties are set as shown in Figure below. Click the OK to save and exit the material editing.

    You can rename this new material object to Aluminum by press F2 key or right-clicking.

    .

    "},{"location":"welsim/get_started/structural/structural_static/#specifying-analysis","title":"Specifying analysis","text":"

    Since the Static Structural analysis is the default settings at WELSIM application, you can keep the default settings as shown in Figure below.

    "},{"location":"welsim/get_started/structural/structural_static/#preparing-geometry","title":"Preparing geometry","text":"

    Next, you can import the geometry file \u201ch_section_multibody.step\u201d and assign the materials to the corresponding parts. As shown in Figure\u00a0below, three Part objects in the Geometry group represent three bodies in the Graphics window, respectively. You assign the Aluminum material to the Part2, which is the connection body in the middle, the rest bodies are assigned with Structural Steel material.

    "},{"location":"welsim/get_started/structural/structural_static/#setting-mesh","title":"Setting mesh","text":"

    To obtain a fine mesh for the analysis, you set the Mesh Settings properties Quadratic to True, and Maximum Size to 5e-3, as shown in Figure\u00a0below.

    Next, you add a Mesh Method object from the Toolbar or FEM Menu. In the property of this object, you select the left body for the Geometry property, and set Maximum Size value to 3e-3, , as shown in Figure\u00a0below.

    Clicking the Mesh command from the Toolbar or FEM Menu, you can mesh the geometries. There are 21,117 nodes, and 12,427 Tet10 elements generated as shown in Figure\u00a0below.

    "},{"location":"welsim/get_started/structural/structural_static/#specifying-contacts","title":"Specifying contacts","text":"

    Next, you need to define two Contact Pairs to bond the three parts into one uni-body for the analysis. Clicking the Add Contact command from the Toolbar or FEM Menu, you add two Contact Pair objects into the tree. You can rename these two objects to Contact1 and Contact2, respectively. Then you select the surfaces for Master and Target Geometry properties as shown in Figures\u00a0below.

    "},{"location":"welsim/get_started/structural/structural_static/#imposing-conditions","title":"Imposing conditions","text":"

    Next, you impose two boundary conditions, a Constraint (Fixed Support) and a Pressure by clicking the corresponding commands from the Toolbar and Structural Menu. In the Properties View of the Constraint object, select the left bottom surface for the Geometry property, as shown in Figure\u00a0below.

    In the Properties View of Pressure object, set the Normal Pressure value to 1e7, and scope the right top surface for the Geometry property, as shown in Figure\u00a0below.

    "},{"location":"welsim/get_started/structural/structural_static/#solving-the-model","title":"Solving the model","text":"

    To solve the model, you can click the Compute command from the Toolbar, FEM Menu, or right-click on the Answers object and select Compute command from context menu. Depending on the complexity of the model, the solving process can be completed in seconds to hours. The Output window displays the solver messages and indicates the status of the solving process. As shown in Figure\u00a0[fig:ch2_start_ex1_output_solver], this model is solved successfully.

    "},{"location":"welsim/get_started/structural/structural_static/#evaluating-results","title":"Evaluating results","text":"

    To evaluate the deformation of the structure, you can add a Deformation object to the tree by clicking the Deformation item from the Toolbar, Structural Menu. A result object may provide multiple sub-result types. For example, a Deformation result object allows you to specify one deformation type from the candidates Deformation X, Y, Z, and Total, as shown in Figure\u00a0below.

    After setting the property Type to Total Deformation, double-clicking on the result object displays the resulting contour in the Graphics window. You can click the Evaluate item from the Toolbar or FEM Menu to evaluate the result.

    Adding a stress result object is similar. Clicking the Stress result from Toolbar or Structural Menu, you insert a stress object to the tree. Evaluating the default von-Mises Stress Type, you obtain the von-Mises stress contour on bodies in the Graphics window. The Maximum and Minimum values of stress data are displayed in the Properties View, Tabular Data, and Chart windows.

    Info

    This project file is located at examples/quick_structural_static_solid_01.wsdb.

    "},{"location":"welsim/get_started/structural/structural_transient/","title":"Transient structural analysis","text":"

    This example shows you how to conduct a 3D transient structural analysis for an assembly.

    "},{"location":"welsim/get_started/structural/structural_transient/#defining-materials","title":"Defining materials","text":"

    In this multi-body analysis, we assign Structural Steel and Aluminum materials to different parts. Since a Structural Steel object is already added as you initialize a FEM Project, you only need to insert an aluminum material object by clicking Add Material from Toolbar or FEM Menu.

    To edit the material properties, you can double-click the Material object, or right-click on the Material object and select the Edit command from the context menu. In the material editor, you select the Library tab > General Materials > Aluminum Alloy, then click Import button or double-click the Aluminum Alloy entry. The material properties are set as shown in Figure\u00a0below. Click the OK to save and exit the material editing.

    You can rename this new material object to Aluminum by press F2 key or right-clicking.

    "},{"location":"welsim/get_started/structural/structural_transient/#specifying-analysis","title":"Specifying analysis","text":"

    In the Properties View of the FEM Project object, you set the Analysis Type property to Transient. A Transient Structural analysis is defined as shown in Figure\u00a0below.

    "},{"location":"welsim/get_started/structural/structural_transient/#preparing-geometry","title":"Preparing geometry","text":"

    Next, you can import the geometry file \u201ch_section_multibody.step\u201d and assign the materials to the corresponding parts. As shown in Figure\u00a0below, three Part objects in the Geometry group represent three bodies in the Graphics window, respectively. You assign the Aluminum material to the Part2, which is the connection body in the middle, the rest bodies are assigned with Structural Steel material.

    "},{"location":"welsim/get_started/structural/structural_transient/#setting-mesh","title":"Setting mesh","text":"

    To obtain a fine mesh for the analysis, you set the Mesh Settings properties Quadratic to True, and Maximum Size to 5e-3, as shown in Figure\u00a0below.

    Next, you add a Mesh Method object from the Toolbar or FEM Menu. In the property of this object, you select the left body for the Geometry property, and set Maximum Size value to 3e-3, as shown in Figure\u00a0below.

    Clicking the Mesh command from the Toolbar or FEM Menu, you can mesh the geometries. There are 21,117 nodes, and 12,427 Tet10 elements generated as shown in Figure\u00a0below.

    "},{"location":"welsim/get_started/structural/structural_transient/#specifying-contacts","title":"Specifying contacts","text":"

    Next, you need to define two Contact Pairs to bond the three parts into one uni-body for the analysis. Clicking the Add Contact command from the Toolbar or FEM Menu, you add two Contact Pair objects into the tree. You can rename these two objects to Contact1 and Contact2, respectively. Then you select the surfaces for Master and Target Geometry properties as shown in Figures\u00a0below.

    Note

    Defining contacts is optional, adding a contact or not is up to your specific model.

    "},{"location":"welsim/get_started/structural/structural_transient/#defining-analysis-settings","title":"Defining analysis settings","text":"

    In this transient analysis, you define 18 steps and set the End Time for each step, as shown in Figure\u00a0below.

    Next, you select the Study Settings object in the tree and set the Substeps property to 18, which determines the total number of substeps of the transient analysis. A screen capture of the defined properties is shown in Figure\u00a0below.

    "},{"location":"welsim/get_started/structural/structural_transient/#imposing-conditions","title":"Imposing conditions","text":"

    Next, you impose two boundary conditions, a Constraint (Fixed Support) and an Acceleration by clicking the corresponding commands from the Toolbar or Structural Menu. In the Properties View of the Constraint object, select the left bottom surface for the Geometry property, as shown in Figure\u00a0below.

    In the Properties View of Acceleration object, set the Acceleration value for the current step, and repeat this value definition for each Step. After defining the acceleration values for all steps, you scope a surface on Part2 for the Geometry property, as shown in Figure\u00a0below.

    "},{"location":"welsim/get_started/structural/structural_transient/#solving-the-model","title":"Solving the model","text":"

    To solve the model, you can click the Compute command from the Toolbar, FEM Menu, or right-click on the Answers object and select Compute command from context menu. Depending on the complexity of the model, the solving process can be completed in seconds to hours. The Output window displays the solver messages and indicates the status of the solving process. As shown in Figure\u00a0below, this model is solved successfully.

    "},{"location":"welsim/get_started/structural/structural_transient/#evaluating-results","title":"Evaluating results","text":"

    To evaluate the deformation of the structure, you can add a Deformation object to the tree by clicking the Deformation item from the Toolbar, Structural Menu. A result object may provide multiple sub-result types. For example, a Deformation result object allows you to specify one deformation type from the candidates Deformation X, Y, Z, and Total.

    After setting the result Type to Deformation Z, double-clicking on the result object displays the resulting contour in the Graphics window as shown in Figure\u00a0below. You can click the Evaluate item from the Toolbar or FEM Menu to evaluate the result.

    Adding a stress result object is similar. Clicking the Stress result from Toolbar or Structural Menu, you insert a stress object to the tree. Evaluating the default von-Mises Stress Type, you obtain the von-Mises stress contour on bodies in the Graphics window as shown in Figure\u00a0below. The Maximum and Minimum values of stress data are displayed in the Properties View, Tabular Data, and Chart windows.

    Info

    This project file is located at examples/quick_structural_transient_solid_01.wsdb.

    "},{"location":"welsim/get_started/thermal/thermal_ss/","title":"Steady-state thermal analysis","text":"

    This example shows you how to conduct a 3D static thermal analysis for an assembly.

    "},{"location":"welsim/get_started/thermal/thermal_ss/#defining-materials","title":"Defining materials","text":"

    In this multi-body analysis, we assign Structural Steel and Aluminum materials to different parts. Since a Structural Steel object is already added as you initialize a FEM Project, you only need to insert an aluminum material object by clicking Add Material from Toolbar or FEM Menu.

    To edit the material properties, you can double-click the Material object, or right-click on the Material object and select the Edit command from the context menu. In the material editor, you select the Library tab > General Materials > Aluminum Alloy, then click Import button or double-click the Aluminum Alloy entry. The material properties are set as shown in Figure\u00a0below. Click the OK to save and exit the material editing.

    You can rename this new material object to Aluminum by press F2 key or right-clicking.

    "},{"location":"welsim/get_started/thermal/thermal_ss/#specifying-analysis","title":"Specifying analysis","text":"

    In the Properties View of the FEM Project object, you set the Physics Type property to Thermal. A Steady-State Thermal analysis is defined as shown in Figure\u00a0below.

    "},{"location":"welsim/get_started/thermal/thermal_ss/#preparing-geometry","title":"Preparing geometry","text":"

    Next, you can import the geometry file \u201ch_section_multibody.step\u201d and assign the materials to the corresponding parts. As shown in Figure, three Part objects in the Geometry group represent three bodies in the Graphics window, respectively. You assign the Aluminum material to the Part2, which is the connection body in the middle, the rest bodies are assigned with Structural Steel material.

    "},{"location":"welsim/get_started/thermal/thermal_ss/#setting-mesh","title":"Setting mesh","text":"

    To obtain a fine mesh for the analysis, you set the Mesh Settings properties Quadratic to True, and Maximum Size to 3e-3.

    Clicking the Mesh command from the Toolbar or FEM Menu, you can mesh the geometries. There are 42,329 nodes, and 25,920 Tet10 elements generated.

    "},{"location":"welsim/get_started/thermal/thermal_ss/#specifying-contacts","title":"Specifying contacts","text":"

    Next, you need to define two Contact Pairs to bond the three parts into one uni-body for the analysis. Clicking the Add Contact command from the Toolbar or FEM Menu, you add two Contact Pair objects into the tree. You can rename these two objects to Contact1 and Contact2, respectively. Then you select the surfaces for Master and Target Geometry properties.

    "},{"location":"welsim/get_started/thermal/thermal_ss/#imposing-boundary-conditions","title":"Imposing boundary conditions","text":"

    Next, you impose four boundary conditions, a Temperature, Heat Flux, Convection, and Radiation by clicking the corresponding commands from the Toolbar or Thermal Menu. In the Properties View of the Temperature object, select a left bottom surface for the Geometry property and set the Temperature value to 0, as shown in Figure\u00a0below.

    In the Properties View of Heat Flux object, set the Heat Flux value to 5e3, and scope a surface for the Geometry property, as shown in Figure\u00a0below.

    In the Properties View of Heat Radiation object, set the Radiation Coefficient value to 1e-6, Ambient Temperature value to 22.3, and scope a surface for the Geometry property, as shown in Figure\u00a0below.

    In the Properties View of Heat Convection object, set the Convection Coefficient value to 1e3 and Ambient Temperature value to 22.3, and scope a surface for the Geometry property, as shown in Figure\u00a0below.

    "},{"location":"welsim/get_started/thermal/thermal_ss/#solving-the-model","title":"Solving the model","text":"

    To solve the model, you can click the Compute command from the Toolbar, FEM Menu, or right-click on the Answers object and select Compute command from context menu. Depending on the complexity of the model, the solving process can be completed in seconds to hours. The Output window displays the solver messages and indicates the status of the solving process. As shown in Figure\u00a0below, this model is solved successfully.

    "},{"location":"welsim/get_started/thermal/thermal_ss/#evaluating-results","title":"Evaluating results","text":"

    To evaluate the deformation of the structure, you can add a Temperature object to the tree by clicking the Temperature item from the Toolbar or Thermal Menu. Next, double-clicking the result object or clicking the Evaluate item from the Toolbar or FEM Menu, you display the result contour in the Graphics window as shown in Figure\u00a0below.

    Info

    This project file is located at examples/quick_thermal_static_solid_01.wsdb.

    "},{"location":"welsim/get_started/thermal/thermal_transient/","title":"Transient thermal analysis","text":"

    This example shows you how to conduct a 3D transient thermal analysis for an assembly.

    "},{"location":"welsim/get_started/thermal/thermal_transient/#defining-materials","title":"Defining materials","text":"

    In this multi-body analysis, we assign Structural Steel and Aluminum materials to different parts. Since a Structural Steel object is already added as you initialize a FEM Project, you only need to insert an aluminum material object by clicking Add Material from Toolbar or FEM Menu.

    To edit the material properties, you can double-click the Material object, or right-click on the Material object and select the Edit command from the context menu. In the material editor, you select the Library tab > General Materials > Aluminum Alloy, then click Import button or double-click the Aluminum Alloy entry. The material properties are set as shown in Figure\u00a0below. Click the OK to save and exit the material editing.

    You can rename this new material object to Aluminum by press F2 key or right-clicking.

    "},{"location":"welsim/get_started/thermal/thermal_transient/#specifying-analysis","title":"Specifying analysis","text":"

    In the Properties View of the FEM Project object, you set the Physics Type property to Thermal and Analysis Type property to Transient. A Transient Thermal analysis is defined as shown in Figure\u00a0below.

    "},{"location":"welsim/get_started/thermal/thermal_transient/#preparing-geometry","title":"Preparing geometry","text":"

    Next, you can import the geometry file \u201ch_section_multibody.step\u201d and assign the materials to the corresponding parts. As shown in Figure, three Part objects in the Geometry group represent three bodies in the Graphics window, respectively. You assign the Aluminum material to the Part2, which is the connection body in the middle, the rest bodies are assigned with Structural Steel material.

    "},{"location":"welsim/get_started/thermal/thermal_transient/#setting-mesh","title":"Setting mesh","text":"

    To obtain a fine mesh for the analysis, you set the Mesh Settings properties Quadratic to True, and Maximum Size to 3e-3.

    Clicking the Mesh command from the Toolbar or FEM Menu, you can mesh the geometries. There are 42,329 nodes, and 25,920 Tet10 elements generated.

    "},{"location":"welsim/get_started/thermal/thermal_transient/#specifying-contacts","title":"Specifying contacts","text":"

    Next, you need to define two Contact Pairs to bond the three parts into one uni-body for the analysis. Clicking the Add Contact command from the Toolbar or FEM Menu, you add two Contact Pair objects into the tree. You can rename these two objects to Contact1 and Contact2, respectively. Then you select the surfaces for Master and Target Geometry properties as shown in Figures\u00a0below.

    "},{"location":"welsim/get_started/thermal/thermal_transient/#defining-analysis-settings","title":"Defining analysis settings","text":"

    In this transient analysis, you define 1 step and set the Current End Time value to 600, as shown in Figure\u00a0below.

    In the Properties View of Study Settings object in the tree, you can use the default settings as shown in Figure\u00a0below.

    "},{"location":"welsim/get_started/thermal/thermal_transient/#imposing-conditions","title":"Imposing conditions","text":"

    Next, you can add an Initial Temperature object from the Toolbar or Thermal Menu. The initial temperature value is 300 as shown in Figure\u00a0below.

    Next, you impose three boundary conditions, a Temperature, Heat Flux, and a Heat Convection by clicking the corresponding commands from the Toolbar and Thermal Menu. In the Properties View of the Temperature object, you select the bottom surface of Part1 for the Geometry property. Next set the Temperature value to 0, and define Initial Status to Equal to Step 1, as shown in Figure\u00a0below.

    In the Properties View of Heat Flux object, set the Heat Flux value to -5000 and Initial Status to Equal to Step 1. Next, you scope a surface on Part1 for the Geometry property, as shown in Figure\u00a0below.

    In the Properties View of Heat Convection object, set the Convection Coefficient value to 1000, Ambient Temperature value to 22.3, and Initial Status to Equal to Step 1. After defining these property values, you scope a surface on Part2 for the Geometry property, as shown in Figure\u00a0below.

    "},{"location":"welsim/get_started/thermal/thermal_transient/#solving-the-model","title":"Solving the model","text":"

    To solve the model, you can click the Compute command from the Toolbar, FEM Menu, or right-click on the Answers object and select Compute command from context menu. Depending on the complexity of the model, the solving process can be completed in seconds to hours. The Output window displays the solver messages and indicates the status of the solving process. As shown messages in Output window, this model is solved successfully.

    "},{"location":"welsim/get_started/thermal/thermal_transient/#evaluating-results","title":"Evaluating results","text":"

    To evaluate the temperature of the model, you can add a Temperature object to the tree by clicking the Temperature item from the Toolbar, Thermal Menu.

    After inserting the result object and settings the Set Number to 15, double-clicking on the result object displays the resulting contour in the Graphics window as shown in Figure\u00a0below. You can click the Evaluate item from the Toolbar or FEM Menu to evaluate the result.

    Info

    This project file is located at examples/quick_thermal_transient_solid_01.wsdb.

    "},{"location":"welsim/material/mat_overview/","title":"Overview","text":"

    Material Module serves as a database for material properties used in analysis projects. The module not only provides a material library but allow you to create a material using the given properties. The properties view of a Material object is the primary user interface designed to let you create, save, and retrieve material models. The well-defined material object can be saved and used in the subsequent projects.

    Note

    The WELSIM Material module and MatEditor share the same features. For the completed and latest content, you can refer to the manual of MatEditor.

    "},{"location":"welsim/material/mat_overview/#graphical-user-interface","title":"Graphical user interface","text":"

    The ease-of-use Material Module contains the following graphical user interface components:

    • Toolbox: provdies two options (Library and Build tabs) for you to edit material data.
    • Library outline pane: lists predefined materials for you to quickly add material data.
    • Property outline pane: shows an outline of the contents of the togglable material properties. You can add a property data entry to the material by toggling on the property entry or remove property by toggling off the property entry.
    • Properties view pane: displays all properties that are going to be added to the Material Object. You can tune the property values at this pane.
    • Table pane: allows you to define and review tabular data for material properies.
    • Chart pane: displays the property tabular data in vivid.
    "},{"location":"welsim/material/mat_overview/#predefined-materials","title":"Predefined materials","text":"

    WELSIM also provide predefined materials, which covers most of commonly used materials. Users can choose these materials and apply to the successive finite element analysis.

    Category Materials General Materials Structural Steel, Stainless Steel, Aluminum Alloy, Concrete, Copper Alloy, Gray Cast Iron, Titanium Alloy Nonlinear Materials Aluminum Alloy NL, Concrete NL, Copper Alloy NL, Stainless Steel NL, Structural Steel NL, Titanium Alloy NL Hyperelastic Materials Elastomer Mooney-Rivlin, Elastomer Neo-Hookean, Elastomer Ogden, Elastomer Yeoh, Neoprene Rubber Thermal Materials Brass, Bronze, Copper, Diamond, Ferrite, Nodular Cast Iron, Solder, Teflon, Tungsten, Wood Electromagnetic Materials SS416, Supermendure Other Materials Water Liquid, Argon, Ash"},{"location":"welsim/material/mat_overview/#material-properties","title":"Material properties","text":"

    The supported material properties are listed in the table below.

    Category Materials Basic Density, Isotropic Thermal Expansion, Isotropic Instantaneous Thermal Expansion, Orthotropic Thermal Expansion, Orthotropic Instantaneous Thermal Expansion, Constant Damping Coefficient Linear Elastic Isotropic Elasticity, Orthotropic Elasticity, Viscoelastic Hyperelastic Test Data Uniaxial Test Data, Biaxial Test Data, Shear Test Data, Volumetric Test Data, SimpleShear Test Data, Uniaxial Tension Test Data, Uniaxial Compression Test Data Hyperelastic Arruda-Boyce, Blatz-Ko, Gent, Mooney-Rivlin 2, Mooney-Rivlin 3, Mooney-Rivlin 5, Mooney-Rivlin 9, Neo-Hookean, Ogden 1st Order, Ogden 2nd Order, Ogden 3rd Order, Polynomial 1st Order, Polynomial 2nd Order, Polynomial 3rd Order, Yeoh 1st Order, Yeoh 2nd Order, Yeoh 3rd Order Plasticity Bilinear Isotropic Hardening, Multilinear Isotropic Hardening, Bilinear Kinematic Hardening, Multilinear Kinematic Hardening, Anand Viscoplasticity Creep Strain Hardening, Time Hardening, Generalized Exponential, Generalized Graham, Generalized Blackburn, Modified Time Hardening, Modified Strain Hardening, Generalized Garofalo, Exponential Form, Norton, Combined Time Hardening, Rational Polynomial, Generalized Time Hardening Visco-elastic Prony Shear Relaxation, Prony Volumetric Relaxation Other Mechanical Strain Life Parameters, Compressive Ultimate Strength, Compressive Yield Strength, LaRc0304 Constants, Orthotropic Strain Limits, Orthotropic Stress Limits, Puck Constants, Tensile Ultimate Strength, Tensile Yield Strength, Tsai-Wu Constants, Shape Memory Effect, Drucker-Prager Strength Piecewise, Drucker-Prager Strength Linear, Ideal Gas EOS, Crushable Foam, Nonlinear Elastic Model Damage, Plakin Special Hardening, Tensile Pressure Failure, Crack Softening Failure Thermal Enthalpy, Isotropic Thermal Conductivity, Orthotropic Thermal Conductivity, Specific Heat Electromagnetics B-H Curve, Isotropic Relative Permeability, Orthotropic Relative Permeability, Isotropic Resistivity, Orthotropic Resistivity"},{"location":"welsim/material/mat_overview/#working-with-material-data","title":"Working with material data","text":""},{"location":"welsim/material/mat_overview/#exporting","title":"Exporting","text":"

    You can export the complete material data to an external XML file. The following format is supported for export:

    • XML in WELSIM Material (MatML 3.1) schema.
    • JSON in WELSIM Material schema.
    • OpenRadioss input script
    "},{"location":"welsim/mesh/mesh_usage/","title":"Usage in WELSIM","text":""},{"location":"welsim/mesh/mesh_usage/#basic-meshing-process","title":"Basic meshing process","text":"

    The following steps provide the fundamental workflow for using the Meshing module as part of a finite element analysis in WELSIM.

    1. Create a finite element project and set the appropriate project type in the Properties of FEM Project object, such as Static Structural.

    2. Define appropriate material data for your analysis. The system provide a Structural Steel material, and you can create a new material object. Double-click, or Right click the material object. The Material Editing workspace appears, where you can add or edit material data as necessary.

    3. Import geometry to your system or build new geometry. Assign the material to the geometry.

    4. Click on the Mesh object in the Tree to access Meshing application functionality and apply mesh controls.

    5. Define loads and boundary conditions. Set up your analysis using that application's tools and features.

    6. You can solve your analysis by clicking solve button.

    7. Review your analysis results.

    Note

    You should save your data periodically (File>Save Project). The data will be saved as a .wsdb file and associated folder.

    "},{"location":"welsim/mesh/meshing/","title":"Meshing Overview","text":""},{"location":"welsim/mesh/meshing/#philosophy","title":"Philosophy","text":"

    The goal of meshing in WELSIM is to provide easy-to-use and stable meshing utilities that will simplify the mesh generation process.

    "},{"location":"welsim/mesh/meshing/#physics-based-meshing","title":"Physics-based meshing","text":"

    The WELSIM mesh generation is set based on the physics and engineering preferences. Particularly, the mesh system targets on the mechanical, thermal and electromagnetics physics.

    "},{"location":"welsim/mesh/meshing/#meshing-application-interface","title":"Meshing application interface","text":"

    The intuitive Meshing applicaiton interface, shown in the figure below, faciliates your use of all meshing controls and settings.

    The funcational elements of the interface are described in the following table.

    Window Component Description Main Menu This menu includes all basic menus such as File and Mesh. Standard Toolbar This toolbar contains commonly used application commands. Graphics Toolbar This toolbar contains commands that control pointer mode or cause an action in the graphics browser. Tree Outline Outline view of the project. Always visible. Location in the outline sets the context for other controls. Provides access to object's context menus. Allows renaming of objects. Establishes what details display in the Details View. Property Details View The Details View corresponds to the Outline selection. Displays a details window on the lower left panel (by default) which contains details about each object in the Outline. Geometry Window (also sometimes called the Graphics window) Displays and manipulates the visual representation of the object selected in the Outline. This window may display: <\\br> 3D Geometry<\\br> 2D/3D Graph<\\br> Spreadsheet<\\br> HTML Pages<\\br> Scale ruler<\\br> Triad control<\\br> Legend<\\br>"},{"location":"welsim/theory/contact/","title":"Structures with contact","text":"

    As contact occurs among multiple bodies, the contact force \\(\\mathbf{t}_{c}\\) is transmitted via the contact surface. The principle equation of the virtual work can be rewritten as follows

    \\[ \\begin{align} \\label{eq:ch5_contact_gov1} \\intop_{^{t'}V}\\thinspace^{t'}\\sigma\\colon\\delta^{t'}\\mathbf{A}_{(L)}d^{t'}v=\\intop_{^{t'}S_{t}}\\thinspace^{t'}\\mathbf{t}\\cdot\\delta\\mathbf{u}d^{t'}s+\\intop_{V}\\thinspace^{t'}\\mathbf{b}\\cdot\\delta\\mathbf{u}d^{t'}v+\\intop_{^{t'}S\\text{c}}\\thinspace^{t'}\\mathbf{t}_{c}[\\delta\\mathbf{u}^{(1)}-\\delta\\mathbf{u}^{(2)}] \\end{align} \\]

    where notation \\(s_{c}\\) represents the contact area, \\(\\mathbf{u}^{(1)}\\) and \\(\\mathbf{u}^{(2)}\\) denotes the displacement of the contact object 1 and 2, respectively.

    In the contact analysis, the surfaces involve contact are paired. One of these surfaces is called the master surface, and another type of surface is target surface. We also assume

    • The target nodes do not penetrate the master surface
    • When contact occurs, the target nodes become the contact position, the master surface and the target surface mutually transmit the contact force and the frictional force through the points of contact.

    The governing equations with contact term can be reduced to the finite element formation

    \\[ \\intop_{^{t'}S_{c}}\\thinspace^{t'}\\mathbf{t}_{c}[\\delta\\mathbf{u}^{(1)}-\\delta\\mathbf{u}^{(2)}]\\approx\\delta\\mathbf{UK}_{C}\\triangle\\mathbf{U}+\\delta\\mathbf{UF}_{C} \\]

    where \\(\\mathbf{K}_{c}\\) and \\(\\mathbf{F}_{c}\\) are contact rigid matrix, and the contact forces, respectively.

    Remember that we introduced total Lagrange and update Lagrange methods, those formulation can be extended with the consideration of contact factors. The total Lagrange and updated Lagrange formulation with contact terms are given below

    \\[ \\delta\\mathbf{U}^{T}(_{0}^{t}\\mathbf{K}_{L}+_{0}^{t}\\mathbf{K}_{NL}+\\mathbf{K}_{c})\\triangle\\mathbf{U}=\\delta\\mathbf{U}^{T}\\thinspace_{0}^{t'}\\mathbf{F}-\\delta\\mathbf{U}^{T}\\thinspace_{0}^{t}\\mathbf{Q}+\\delta\\mathbf{U}^{T}\\mathbf{F}_{c} \\] \\[ \\delta\\mathbf{U}^{T}(_{t}^{t}\\mathbf{K}_{L}+_{t}^{t}\\mathbf{K}_{NL}+\\mathbf{K}_{c})\\triangle\\mathbf{U}=\\delta\\mathbf{U}^{T}\\thinspace_{t}^{t'}\\mathbf{F}-\\delta\\mathbf{U}^{T}\\thinspace_{t}^{t}\\mathbf{Q}+\\delta\\mathbf{U}^{T}\\mathbf{F}_{c} \\]"},{"location":"welsim/theory/electromagnetic/","title":"Electromagnetic analysis","text":"

    This section discuss the electromagnetic theories that are applied in the WELSIM application.

    "},{"location":"welsim/theory/electromagnetic/#electromagnetic-field-fundamentals","title":"Electromagnetic field fundamentals","text":"

    The electromagnetic fields are governed by the well-known Maxwell's equations\u00a0\\(\\eqref{eq:ch4_theory_maxwell1}\\)-\\(\\eqref{eq:ch4_theory_maxwell4}\\)12.

    \\[ \\begin{align} \\label{eq:ch4_theory_maxwell1} \\nabla\\times\\mathbf{H}=\\mathbf{J}+\\dfrac{\\partial\\mathbf{D}}{\\partial t}=\\mathbf{J}_{S}+\\mathbf{J}_{e}+\\mathbf{J}_{V}+\\dfrac{\\partial\\mathbf{D}}{\\partial t} \\end{align} \\] \\[ \\begin{align} \\label{eq:ch4_theory_maxwell2} \\nabla\\times\\mathbf{E}=-\\dfrac{\\partial\\mathbf{B}}{\\partial t} \\end{align} \\] \\[ \\begin{align} \\label{eq:ch4_theory_maxwell3} \\nabla\\cdot\\mathbf{B}=0 \\end{align} \\] \\[ \\begin{align} \\label{eq:ch4_theory_maxwell4} \\nabla\\cdot\\mathbf{D}=\\rho \\end{align} \\]

    where \\(\\mathbf{H}\\) is the magnetic field intensity vector, \\(\\mathbf{J}\\) is total current density vector, \\(\\mathbf{J}_{s}\\) is the applied source current density vector, \\(\\mathbf{J}_{e}\\) is the induced eddy current density vector, and \\(\\mathbf{J}_{VS}\\) is the velocity current density vector, \\(\\mathbf{D}\\) is the electric flux density vector (this term is also called electric displacement), \\(\\mathbf{E}\\) is the electric field intensity vector, \\(\\mathbf{B}\\) is the magnetic flux density vector, and \\(\\rho\\) is the electric charge density.

    The above field governing equations contian the constitutive relations:

    \\[ \\mathbf{D}=\\epsilon\\mathbf{E}+\\mathbf{P} \\]

    and

    \\[ \\mathbf{B}=\\mu\\mathbf{H} \\]

    where \\(\\mathbf{P}\\) is the polarization density, and \\(\\mathbf{M}\\) is t he magnetization. In many materials the polarization density can be approximated as a scalar multiple of the electric field. \\(\\mu\\) is the magnetic permeability matrix. For example, if the magnetic permeability is a function of temperature,

    \\[ \\mu=\\mu_{0}\\left[\\begin{array}{ccc} \\mu_{rx} & 0 & 0\\\\ 0 & \\mu_{ry} & 0\\\\ 0 & 0 & \\mu_{rz} \\end{array}\\right] \\]

    For the permanent magnets, the constitutive relation of magnetic field becomes

    \\[ \\mathbf{B}=\\mu\\mathbf{H}+\\mu_{0}\\mathbf{M}_{0} \\]

    where \\(\\mathbf{M}_{0}\\) is the remanet intrinsic magnetization vector.

    Similarly, the consitutive relations for the related electric fields are:

    \\[ \\mathbf{J}=\\sigma[\\mathbf{E}+\\mathbf{v}\\times\\mathbf{B}] \\] \\[ \\sigma=\\left[\\begin{array}{ccc} \\sigma_{xx} & 0 & 0\\\\ 0 & \\sigma_{yy} & 0\\\\ 0 & 0 & \\sigma_{zz} \\end{array}\\right] \\] \\[ \\epsilon=\\left[\\begin{array}{ccc} \\epsilon_{xx} & 0 & 0\\\\ 0 & \\epsilon_{yy} & 0\\\\ 0 & 0 & \\epsilon_{zz} \\end{array}\\right] \\]

    where \\(\\sigma\\) is the electrical conductivity matrix, \\(\\epsilon\\) is the permittivity matrix, and \\(v\\) is the velocity vector.

    "},{"location":"welsim/theory/electromagnetic/#electrostatics","title":"Electrostatics","text":"

    The WELSIM application introduces electric scalar potential to solve the electrostatic problems. When the time-derivetive of magnetic flux density is neglected from the full Maxwell's equations. The governing equations are reduced to

    \\[ \\begin{align} \\label{eq:ch4_theory_govern_eqn_electrostatic} \\nabla\\times\\mathbf{H}=\\mathbf{J}+\\dfrac{\\partial\\mathbf{D}}{\\partial t} \\end{align} \\] \\[ \\nabla\\times\\mathbf{E}=\\mathbf{0} \\] \\[ \\nabla\\cdot\\mathbf{B}=0 \\] \\[ \\nabla\\cdot\\mathbf{D}=\\rho \\]

    Since the electric field \\(\\mathbf{E}\\) is irrotational and can be expressed as the function of electric scalar potential

    \\[ \\mathbf{E}=-\\nabla \\varphi \\]

    where \\(\\varphi\\) is the electric scalar potential and has units of Volts in the SI system. Inserting this definition into the Gauss's Law gives:

    \\[ -\\nabla \\cdot \\epsilon\\nabla\\varphi = \\rho - \\nabla \\cdot \\mathbf{P} \\]

    which is Poisson's equation for the electric potential , where we have assumed a linear constitutive relation between \\(\\mathbf{D}\\) and \\(\\mathbf{E}\\) of the form \\(\\mathbf{D}=\\epsilon\\mathbf{E}+\\mathbf{P}\\).

    "},{"location":"welsim/theory/electromagnetic/#boundary-conditions","title":"Boundary Conditions","text":"

    For an electric material interface, the continuious conditions for \\(\\mathbf{E}\\), \\(\\mathbf{D}\\), and \\(\\mathbf{J}\\) are

    \\[ E_{t1}-E_{t2}=0 \\] \\[ J_{1n}+\\dfrac{\\partial D_{1n}}{\\partial t}=J_{2n}+\\dfrac{\\partial D_{2n}}{\\partial t} \\] \\[ D_{1n}-D_{2n}=\\rho_{s} \\]

    where \\(E_{t}\\) is the tangential components of \\(\\mathbf{E}\\), \\(J_{n}\\) is the normal components of \\(\\mathbf{J}\\), \\(D_{n}\\) is the normal components of \\(\\mathbf{D}\\), and \\(\\rho_{s}\\) is the surface charge density.

    Since the solutons to the governing equation are non-unique, we must impose a Dirichlet boundary condition at least at one node in the domain to get the physical solution. The Dirichlet condition could be a fixed piecewise voltage value on certain nodes. In addition, the normal derivative boundary condition \\(\\hat{n}\\cdot\\mathbf{D}\\) such as surface charge density can be imposed on the boundary.

    "},{"location":"welsim/theory/electromagnetic/#matrix-forms","title":"Matrix Forms","text":"

    The electric scalar potential algorithm is applied in the WELSIM application for solving electrostatic problems. The governing equations are reduced to the following:

    \\[ -\\nabla\\cdot\\left(\\epsilon\\nabla V\\right)=\\rho \\]

    The matrix equation for an electrostatic analysis is derived from Equation \\(\\eqref{eq:ch4_theory_govern_eqn_electrostatic}\\):

    \\[ \\left[K^{VS}\\right]\\left\\{ V_{e}\\right\\} =\\left\\{ L_{e}\\right\\} \\]

    where

    \\[ \\left[K^{VS}\\right]=\\intop_{V}\\left(\\nabla\\left\\{ N\\right\\} ^{T}\\right)^{T}\\epsilon\\left(\\nabla\\left\\{ N\\right\\} ^{T}\\right)dV \\] \\[ \\left\\{ L_{e}\\right\\} =\\left\\{ L_{e}^{n}\\right\\} +\\left\\{ L_{e}^{c}\\right\\} +\\left\\{ L_{e}^{SC}\\right\\} \\] \\[ \\left\\{ L_{e}^{c}\\right\\} =\\int_{V}\\rho\\left\\{ N\\right\\} ^{T}dV \\] \\[ \\left\\{ L_{e}^{sc}\\right\\} =\\int_{V}\\rho_{s}\\left\\{ N\\right\\} ^{T}dV \\]"},{"location":"welsim/theory/electromagnetic/#vector-magnetic-potential","title":"Vector magnetic potential","text":"

    The WELSIM application applies the vector magnetic potential method for the magentostatic analysis. Considering the neglected electric displacement currents, the full Maxwell's equations can be reduced to

    \\[ \\nabla\\times\\mathbf{H}=\\mathbf{J} \\] \\[ \\nabla\\times\\mathbf{E}=-\\dfrac{\\partial\\mathbf{B}}{\\partial t} \\] \\[ \\nabla\\cdot\\mathbf{B}=0 \\]

    A numerical solution can be achieved by introducing potentials to the governing equations. The proposed magnetic vector potential\u00a0\\(\\mathbf{A}\\) and electric scalar potential\u00a0\\(V\\) have the following characteristics:

    \\[ \\mathbf{B}=\\nabla\\times\\mathbf{A} \\] \\[ \\mathbf{E}=-\\dfrac{\\partial\\mathbf{A}}{\\partial t}-\\nabla V \\]

    In addition, the Coulomb gauge condition is introduced to ensure the uniqueness of the vector potential, as shown in the following equations.

    \\[ \\nabla\\times\\mathbf{v}\\nabla\\times\\mathbf{A}-\\nabla v_{e}\\nabla\\cdot\\mathbf{A}+\\sigma\\left\\{ \\dfrac{\\partial\\mathbf{A}}{\\partial t}\\right\\} +\\sigma\\nabla V-\\mathbf{v}\\times\\sigma\\nabla\\times\\mathbf{A}=\\mathbf{0} \\] \\[ \\nabla\\cdot\\left(\\sigma\\left\\{ \\dfrac{\\partial\\mathbf{A}}{\\partial t}\\right\\} -\\sigma\\nabla V+\\mathbf{v}\\times\\sigma\\nabla\\times\\mathbf{A}\\right)=\\mathbf{0} \\] \\[ \\nabla\\times\\mathbf{v}\\nabla\\times\\mathbf{A}-\\nabla v_{e}\\nabla\\cdot\\mathbf{A}=\\mathbf{J}_s+\\nabla\\times\\dfrac{1}{\\mathbf{v}_{0}}\\mathbf{v}\\mathbf{M}_{0} \\]

    where matrix invarient \\(v_{e}\\) is \\(v_{e}=\\frac{1}{3}\\mathrm{tr}(v)=\\frac{1}{3}(v_{11}+v_{22}+v_{33})\\).

    "},{"location":"welsim/theory/electromagnetic/#edge-element-magnetic-vector-potential","title":"Edge-element magnetic vector potential","text":"

    Due to the limitation of node-based vector magnetic potential algorithm2, WELSIM application uses the edge-based finite element for the magnetic vector potential algorithm.

    The governing equation for the edge finite element method is given below.

    \\[ \\nabla\\times\\mathbf{v}\\nabla\\times\\mathbf{A}+\\sigma\\left\\{ \\dfrac{\\partial\\mathbf{A}}{\\partial t}+\\nabla V\\right\\} +\\epsilon\\left(\\left\\{ \\dfrac{\\partial^{2}\\mathbf{A}}{\\partial t^{2}}\\right\\} +\\nabla\\left\\{ \\dfrac{\\partial V}{\\partial t}\\right\\} \\right)=\\mathbf{0} \\] \\[ \\nabla\\cdot\\left(\\sigma\\left(\\left\\{ \\dfrac{\\partial\\mathbf{A}}{\\partial t}\\right\\} +\\nabla V\\right)+\\epsilon\\left(\\left\\{ \\dfrac{\\partial^{2}\\mathbf{A}}{\\partial t^{2}}\\right\\} +\\nabla\\left\\{ \\dfrac{\\partial V}{\\partial t}\\right\\} \\right)\\right)=\\mathbf{0} \\] \\[ \\nabla\\times\\mathbf{v}\\nabla\\times\\mathbf{A}=\\mathbf{J}_{s}+\\nabla\\times\\dfrac{1}{\\mathbf{v}_{0}}\\mathbf{v}\\mathbf{M}_{0} \\]

    The uniqueness of these equations is ensured by the tree gauging procedure, which sets the edge-flux degrees of freedom related to the spanning tree of the finite element mesh to zero.

    1. John D. Jackson, Classical Electrodynamics, 3rd edition, Wiley.\u00a0\u21a9

    2. Jian-Ming Jin, The Finite Element Method in Electromagnetics, 2nd edition, Wiley-IEEE Press.\u00a0\u21a9\u21a9

    "},{"location":"welsim/theory/elements/","title":"Element library","text":"

    The WELSIM application supports several types of finite elements. This section discuss the details of element that is used in the program.

    Element type Finite element type Description Plane element (Shell) Tri3 Three node triangular element Plane element (Shell) Tri6 Six node triangular element(quadratic) Solid element Tet4 Four node tetrahedral element Solid element Tet10 Ten node tetrahedral element(quadratic)

    The element groups shown in Table\u00a0[tab:ch4_theory_elem_types] can be used for engineering analysis. The schematic views and the surface definition of those elements are given in Figures\u00a0[fig:ch4_theory_elem_views], [fig:ch4_theory_elem_triangles], and [fig:ch4_theory_elem_tet].

    Surface No. Linear Quadratic 1 1-2-3 [front] 1-6-2-4-3-5 [front] 2 3-2-1 [back] 3-4-2-6-1-5 [back]

    Surface No. Linear Quadratic 1 1-2-3 1-7-2-5-3-6 2 1-2-4 1-7-2-9-4-8 3 2-3-4 2-5-3-10-4-9 4 3-1-4 3-6-1-10-4-8"},{"location":"welsim/theory/geometricnl/","title":"Structures with geometric nonlinearity","text":"

    In the analysis of finite deformation problems, the principle equation of virtual work becomes a nonlinear equation regarding the displacement-strain relation. To solve the nonlinear equation, an iterative algorithm is generally applied. When implementing an incremental analysis for a finite deformation problem, whether to refer to the initial status as a reference layout, or refer to the starting point of the increments can be selected. The former is called the total Lagrange method, and the latter is called the updated Lagrange method. Both the total Lagrange and updated Lagrange methods are available in the program. This section discusses the various geometrically nonlinear options available, including the large strain.

    "},{"location":"welsim/theory/geometricnl/#decomposition-of-increments-of-virtual-work-equation","title":"Decomposition of increments of virtual work equation","text":"

    Given the solid deformation at time t is known, the status at time t'=t+\\triangle t is unknown. The equilibrium equation, dynamic boundary condition, and external boundary condition can be expressed as

    \\[ \\begin{align} \\label{eq:ch5_nonlinear_gov1} \\nabla_{t'\\mathbf{x}}\\cdot^{t'}\\sigma+^{t'}\\mathbf{b}=0\\quad\\text{in}V \\end{align} \\] \\[ ^{t'}\\sigma\\cdot^{t'}\\mathbf{n}=^{t'}\\mathbf{t}\\quad\\mathrm{on}\\thinspace^{t'}S \\] \\[ ^{t'}\\mathbf{u}=^{t'}\\bar{\\mathbf{u}} \\]

    where \\(^{t'}\\sigma\\), \\(^{t'}\\mathbf{b}\\), \\(^{t'}\\mathbf{n}\\), \\(^{t'}\\mathbf{t}\\), \\(^{t'}\\mathbf{u}\\) are the Cauchy stress, body force, outward normal vector of the object's surface, fixed surface force, and fixed displacement in each time t'.

    "},{"location":"welsim/theory/geometricnl/#principle-of-virtual-work","title":"Principle of virtual work","text":"

    The principle of virtual work to the equation \\(\\eqref{eq:ch5_nonlinear_gov1}\\) is

    \\[ \\begin{align} \\label{eq:ch5_nonlinear_gov2} \\int_{^{t'}V}^{t'}\\sigma:\\delta^{t'}\\mathbf{A}_{(L)}d^{t'}v=\\int_{^{t'}S_{t}}^{t'}\\mathbf{t}\\cdot\\delta\\mathbf{u}d^{t'}s+\\int_{V}^{t'}\\mathbf{b}\\cdot\\delta\\mathbf{u}d^{t'}v \\end{align} \\]

    where \\(^{t'}\\mathbf{A}_{(L)}\\) is the linear portion of the Almansi strain tensor and can be calculated by

    \\[ ^{t'}\\mathbf{A}_{(L)}=\\dfrac{1}{2}\\{\\dfrac{\\partial^{t'}\\mathbf{u}}{\\partial^{t'}\\mathbf{x}}+(\\dfrac{\\partial^{t'}\\mathbf{u}}{\\partial^{t'}\\mathbf{x}})^{T}\\} \\]

    The equation \\(\\eqref{eq:ch5_nonlinear_gov2}\\) needs to be solved referring to layout V at time 0, or layout \\(^{t}v\\) at time t. The following sections will introduce these two algorithms: total Lagrange method and updated Lagrange method, respectively.

    "},{"location":"welsim/theory/geometricnl/#formulation-of-total-lagrange-algorithm","title":"Formulation of total lagrange algorithm","text":"

    The principle equation of the virtual work at time t' assuming the initial layout of time 0 is the reference domain, which is shown below.

    \\[ \\begin{align} \\label{eq:ch5_nonlinear_total_lag_gov1} \\intop_{V}\\thinspace_{0}^{t'}\\mathbf{S}:\\delta_{0}^{t'}\\mathbf{E}dV=^{t'}\\delta\\mathbf{R} \\end{align} \\] \\[ \\begin{align} \\label{eq:ch5_nonlinear_total_lag_gov2} ^{t'}\\delta\\mathbf{R}=\\intop_{S_{t}}\\thinspace_{0}^{t'}\\mathbf{t}\\cdot\\delta dS+\\intop_{V}\\thinspace_{0}^{t'}\\mathbf{b}\\cdot\\delta\\mathbf{u}dV \\end{align} \\]

    where \\(_{0}^{t'}\\mathbf{S}\\) and \\(_{0}^{t'}\\mathbf{E}\\) are the 2nd order Piola-Kirchhoff stress tensor and the Green-Lagrange strain tensor at time t', respectively. The initial domain at time 0 is called the reference domain. The body force \\(_{0}^{t'}\\mathbf{b}\\) and nominal surface force vector \\(_{0}^{t'}\\mathbf{t}\\) are

    \\[ _{0}^{t'}\\mathbf{t}=\\dfrac{d^{t'}s}{dS}\\thinspace^{t'}\\mathbf{t} \\] \\[ _{0}^{t'}\\mathbf{b}=\\dfrac{d^{t'}v}{dV}\\thinspace^{t'}\\mathbf{b} \\]

    The Green-Lagrange strain tensor at time t is defined by

    \\[ _{0}^{t}\\mathbf{E}=\\dfrac{1}{2}\\{\\dfrac{\\partial^{t}\\mathbf{u}}{\\partial\\mathbf{X}}+(\\dfrac{\\partial^{t}\\mathbf{u}}{\\partial\\mathbf{X}})^{T}+(\\dfrac{\\partial^{t}\\mathbf{u}}{\\partial\\mathbf{X}})^{T}\\cdot\\dfrac{\\partial^{t}\\mathbf{u}}{\\partial\\mathbf{X}}\\} \\]

    Then the displacement \\(^{t'}\\mathbf{u}\\) and 2nd order Piola-Kirchhoff stress \\(_{0}^{t'}\\mathbf{S}\\) at time t' are

    \\[ \\begin{align} \\label{eq:ch5_nonlinear_total_lag_gov3} ^{t'}\\mathbf{u}=^{t}\\mathbf{u}+\\triangle\\mathbf{u} \\end{align} \\] \\[ \\begin{align} \\label{eq:ch5_nonlinear_total_lag_gov4} _{0}^{t'}\\mathbf{S}=_{0}^{t}\\mathbf{S}+\\triangle\\mathbf{S} \\end{align} \\]

    Similarly, the incremental Green-Lagrange strain can be defined as

    \\[ \\begin{align} \\label{eq:ch5_nonlinear_total_lag_gov5} ^{t'}\\mathbf{E}=^{t}\\mathbf{E}+\\triangle\\mathbf{E} \\end{align} \\] \\[ \\begin{align} \\label{eq:ch5_nonlinear_total_lag_gov6} \\triangle\\mathbf{E}=\\triangle\\mathbf{E}_{L}+\\triangle\\mathbf{E}_{NL} \\end{align} \\]

    where

    \\[ \\triangle\\mathbf{E}_{L}=\\dfrac{1}{2}\\{\\dfrac{\\partial\\triangle\\mathbf{u}}{\\partial\\mathbf{X}}+(\\dfrac{\\partial\\triangle\\mathbf{u}}{\\partial\\mathbf{X}})^{T}+(\\dfrac{\\partial\\triangle\\mathbf{u}}{\\partial\\mathbf{X}})^{T}\\cdot\\dfrac{\\partial^{t}\\mathbf{u}}{\\partial\\mathbf{X}}+(\\dfrac{\\partial^{t}\\mathbf{u}}{\\partial\\mathbf{X}})^{T}\\cdot\\dfrac{\\partial\\triangle\\mathbf{u}}{\\partial\\mathbf{X}}\\} \\] \\[ \\triangle\\mathbf{E}_{NL}=\\dfrac{1}{2}(\\dfrac{\\partial\\triangle\\mathbf{u}}{\\partial\\mathbf{X}})^{T}\\cdot\\dfrac{\\partial\\triangle\\mathbf{u}}{\\partial\\mathbf{X}} \\]

    Substituting equations \\(\\eqref{eq:ch5_nonlinear_total_lag_gov3}\\), \\(\\eqref{eq:ch5_nonlinear_total_lag_gov4}\\), \\(\\eqref{eq:ch5_nonlinear_total_lag_gov5}\\), and \\(\\eqref{eq:ch5_nonlinear_total_lag_gov6}\\) into governing equations \\(\\eqref{eq:ch5_nonlinear_total_lag_gov1}\\) and \\(\\eqref{eq:ch5_nonlinear_total_lag_gov2}\\), we have

    \\[ \\intop_{v}\\triangle\\mathbf{S}:(\\delta\\triangle\\mathbf{E}_{L}+\\delta\\triangle\\mathbf{E}_{NL})dV+\\intop_{V}\\thinspace_{0}^{t}\\mathbf{S}\\colon\\delta\\triangle\\mathbf{E}_{NL}dV=^{t'}\\delta\\mathbf{R}-\\intop_{V}\\thinspace_{0}^{t}\\mathbf{S}:\\delta\\triangle\\mathbf{E}_{L}dV \\]

    where \\(\\triangle\\mathbf{S}\\) is assumed to be

    \\[ \\triangle\\mathbf{S}=_{0}^{t}\\mathbf{C}\\colon\\triangle\\mathbf{E}_{L} \\]

    then we have

    \\[ \\begin{align} \\label{eq:ch5_nonlinear_total_lag_gov7} \\intop_{v}(\\mathbf{C}\\colon\\triangle\\mathbf{E}):\\delta\\triangle\\mathbf{E}_{L}dV+\\intop_{V}\\thinspace_{0}^{t}\\mathbf{S}\\colon\\delta\\triangle\\mathbf{E}_{NL}dV=^{t'}\\delta\\mathbf{R}-\\intop_{V}\\thinspace_{0}^{t}\\mathbf{S}:\\delta\\triangle\\mathbf{E}_{L}dV \\end{align} \\]

    Equation \\(\\eqref{eq:ch5_nonlinear_total_lag_gov7}\\) can be discreted to finite element formulation

    \\[ \\delta\\mathbf{U}^{T}(_{0}^{t}\\mathbf{K}_{L}+{}_{0}^{t}\\mathbf{K}_{NL})\\triangle\\mathbf{U}=\\delta\\mathbf{U}^{T}\\thinspace_{0}^{t'}\\mathbf{F}-\\delta\\mathbf{\\mathbf{U}}^{T}\\thinspace_{0}^{t'}\\mathbf{Q} \\]

    where \\(_{0}^{t}\\mathbf{K}_{L}\\), \\(_{0}^{t}\\mathbf{K}_{NL}\\), \\(_{0}^{t'}\\mathbf{F}\\), \\(_{0}^{t}\\mathbf{Q}\\) are the initial material stiffness matrix, initial geometric stiffness (stress) matrix, external force vector, and internal force vector, respectively. The recursive algorithm to calculate the deformation status at time t' from time t is given:

    Step 1: i = 0

    \\[ \\quad\\quad_{0}^{t'}\\mathbf{K}^{(0)}=_{0}^{t}\\mathbf{K}_{L}+_{0}^{t}\\mathbf{K}_{NL} \\] \\[ \\quad\\quad_{0}^{t'}\\mathbf{Q}^{(0)}=_{0}^{t}\\mathbf{Q} \\] \\[ \\quad\\quad^{t'}\\mathbf{U}^{(0)}=^{t}\\mathbf{U} \\]

    Step 2:

    \\[ \\quad\\quad_{0}^{t'}\\mathbf{K}^{(i)}\\triangle\\mathbf{U}^{(i)}=_{0}^{t'}\\mathbf{F}-_{0}^{t'}\\mathbf{Q}^{(i-1)} \\]

    Step 3:

    \\[ \\quad\\quad^{t'}\\mathbf{U}^{(i)}=^{t'}\\mathbf{U}^{(i-1)}+\\triangle\\mathbf{U}^{(i)} \\]"},{"location":"welsim/theory/geometricnl/#formulation-of-updated-lagrange-algorithm","title":"Formulation of updated lagrange algorithm","text":"

    In addition to the total Lagrange algorithm, the updated Lagrange algorithm is also widely applied in the nonlinear structural model computation. The principle virtual work equation at time t' uses the current domain at time t as reference domain.

    \\[ \\begin{align} \\label{eq:ch5_nonlinear_updated_lag_gov1} \\intop_{V}\\thinspace_{t}^{t'}\\mathbf{S}:\\delta_{t}^{t'}\\mathbf{E}dV=^{t'}\\delta\\mathbf{R} \\end{align} \\] \\[ \\begin{align} \\label{eq:ch5_nonlinear_updated_lag_gov2} ^{t'}\\delta\\mathbf{R}=\\intop_{S_{t}}\\thinspace_{t}^{t'}\\mathbf{t}\\cdot\\delta dS+\\intop_{V}\\thinspace_{t}^{t'}\\mathbf{b}\\cdot\\delta\\mathbf{u}dV \\end{align} \\]

    where

    \\[ _{t}^{t'}\\mathbf{t}=\\dfrac{d^{t'}s}{d^{t}s}\\thinspace^{t'}\\mathbf{t} \\] \\[ _{t}^{t'}\\mathbf{b}=\\dfrac{d^{t'}v}{d^{t}v}\\thinspace^{t'}\\mathbf{b} \\]

    The tensors \\(_{t}^{t'}\\mathbf{S}\\), \\(_{t}^{t'}\\mathbf{E}\\) and vectors \\(_{t}^{t'}\\mathbf{t}\\), \\(_{t}^{t'}\\mathbf{b}\\) are using the current time domain t as the reference domain. Therefore, the Green-Lagrange strain does not contain the initial displacement (the displacement at the time t) \\(^{t}\\mathbf{u}\\);

    \\[ \\begin{align} \\label{eq:ch5_nonlinear_updated_lag_gov3} _{t}^{t'}\\mathbf{E}=\\triangle_{t}\\mathbf{E}_{L}+\\triangle_{t}\\mathbf{E}_{NL} \\end{align} \\]

    where

    \\[ \\begin{align} \\label{eq:ch5_nonlinear_updated_lag_gov4} \\triangle_{t}\\mathbf{E}_{L}=\\dfrac{1}{2}\\{\\dfrac{\\partial\\triangle\\mathbf{u}}{\\partial^{t}x}+(\\dfrac{\\partial\\triangle\\mathbf{u}}{\\partial^{t}x})^{T}\\} \\end{align} \\] \\[ \\begin{align} \\label{eq:ch5_nonlinear_updated_lag_gov5} \\triangle_{t}\\mathbf{E}_{NL}=\\dfrac{1}{2}(\\dfrac{\\partial\\triangle\\mathbf{u}}{\\partial^{t}x})^{T}\\cdot\\dfrac{\\partial\\triangle\\mathbf{u}}{\\partial^{t}x} \\end{align} \\]

    Similarly,

    \\[ _{t}^{t'}\\mathbf{S}=_{t}^{t}\\mathbf{S}+\\triangle_{t}\\mathbf{S} \\]

    Substituting equations \\(\\eqref{eq:ch5_nonlinear_updated_lag_gov3}\\) and \\(\\eqref{eq:ch5_nonlinear_updated_lag_gov2}\\) into governing equations \\(\\eqref{eq:ch5_nonlinear_updated_lag_gov1}\\), we have

    \\[ \\intop_{^{t}v}\\triangle_{t}\\mathbf{S}:(\\delta\\triangle_{t}\\mathbf{E}_{L}+\\delta\\triangle_{t}\\mathbf{E}_{NL})d^{t}v+\\intop_{V}\\thinspace_{t}^{t}\\mathbf{S}\\colon\\delta\\triangle_{t}\\mathbf{E}_{NL}d^{t}v=^{t'}\\delta\\mathbf{R}-\\intop_{^{t}v}\\thinspace_{t}^{t}\\mathbf{S}:\\delta\\triangle_{t}\\mathbf{E}_{L}d^{t}v \\]

    where \\(\\triangle_{t}\\mathbf{S}\\) is assumed to be

    \\[ \\triangle_{t}\\mathbf{S}=_{t}^{t}\\mathbf{C}\\colon\\triangle_{t}\\mathbf{E}_{L} \\]

    then we have

    \\[ \\begin{align} \\label{eq:ch5_nonlinear_updated_lag_gov7} \\intop_{v}(\\mathbf{C}\\colon\\triangle t\\mathbf{E}_{L}):\\delta\\triangle_{t}\\mathbf{E}_{L}dV+\\intop_{V}\\thinspace_{t}^{t}\\mathbf{S}\\colon\\delta\\triangle_{t}\\mathbf{E}_{NL}dV=^{t'}\\delta\\mathbf{R}-\\intop_{V}\\thinspace_{t}^{t}\\mathbf{S}:\\delta\\triangle_{t}\\mathbf{E}_{L}dV \\end{align} \\]

    Equation \\(\\eqref{eq:ch5_nonlinear_updated_lag_gov7}\\) can be discreted to finite element formulation

    \\[ \\delta\\mathbf{U}^{T}(_{t}^{t}\\mathbf{K}_{L}+{}_{t}^{t}\\mathbf{K}_{NL})\\triangle\\mathbf{U}=\\delta\\mathbf{U}^{T}\\thinspace_{t}^{t'}\\mathbf{F}-\\delta\\mathbf{\\mathbf{U}}^{T}\\thinspace_{t}^{t'}\\mathbf{Q} \\]

    where \\(_{t}^{t}\\mathbf{K}_{L}\\), \\(_{t}^{t}\\mathbf{K}_{NL}\\), \\(_{t}^{t'}\\mathbf{F}\\), \\(_{t}^{t}\\mathbf{Q}\\) are the initial material stiffness matrix, initial geometric stiffness (stress) matrix, external force vector, and internal force vector, respectively. The recursive algorithm to calculate the deformation status at time t' from time t is given:

    Step 1: i = 0

    \\[ \\quad\\quad_{t}^{t'}\\mathbf{K}^{(i)}=_{t}^{t}\\mathbf{K}_{L}+_{t}^{t}\\mathbf{K}_{NL} \\] \\[ \\quad\\quad_{t}^{t'}\\mathbf{Q}^{(i)}=_{t}^{t}\\mathbf{Q} \\] \\[ \\quad\\quad^{t'}\\mathbf{U}^{(i)}=^{t}\\mathbf{U} \\]

    Step 2:

    \\[ \\quad\\quad_{0}^{t'}\\mathbf{K}^{(i)}\\triangle\\mathbf{U}^{(i)}=_{0}^{t'}\\mathbf{F}-_{0}^{t'}\\mathbf{Q}^{(i-1)} \\]

    Step 3:

    \\[ \\quad\\quad^{t'}\\mathbf{U}^{(i)}=^{t'}\\mathbf{U}^{(i-1)}+\\triangle\\mathbf{U}^{(i)} \\]"},{"location":"welsim/theory/introduction/","title":"Introduction","text":"

    This theory reference presents theoretical descriptions of all algorithms, as well as many procedures and elements used in these products. It is useful to any of our users who need to understand how the software program calculates the output based on the inputs.

    "},{"location":"welsim/theory/materialnl/","title":"Structures with material nonlinearities","text":"

    Material nonlinearities occur because of the nonlinear relationship between stress and strain; that is, the stress is a nonlinear function of the strain. The relationship is also path-dependent (except for the case of nonlinear elasticity and hyperelasticity), so that the stress depends on the strain history as well as the strain itself.

    The program can account for many material nonlinearities, as follows:

    1. Rate-independent plasticity is characterized by the irreversible instantaneous straining that occurs in a material.

    2. Rate-dependent plasticity allows the plastic-strains to develop over a time interval. It is also termed viscoplasticity.

    3. Creep is also an irreversible straining that occurs in a material and is rate-dependent so that the strains develop over time. The time frame for creep is usually much larger than that for rate-dependent plasticity.

    4. Nonlinear elasticity allows a nonlinear stress-strain relationship to be specified. All straining is reversible.

    5. Hyperelasticity is defined by a strain-energy density potential that characterizes elastomeric and foam-type materials. All straining is reversible.

    6. Viscoelasticity is a rate-dependent material characterization that includes a viscous contribution to the elastic straining.

    When the material applicable for analysis is an elastoplastic material, the updated Lagrange method is applied, and the total Lagrange method is applied for hyperelastic material. Moreover, the Newton-Raphson method is applied to the repetitive analysis method.

    "},{"location":"welsim/theory/materialnl/#strain-definitions","title":"Strain definitions","text":"

    For the case of nonlinear materials, the definition of elastic strain given in Equation\u00a0\\(\\eqref{eq:ch4_theory_stress_strain_relation}\\) expands to

    \\[ \\begin{align} \\label{eq:ch4_guide_strain_full} \\{\\epsilon\\}=\\{\\epsilon^{el}\\}+\\{\\epsilon^{th}\\}+\\{e^{pl}\\}+\\{\\epsilon^{cr}\\}+\\{\\epsilon^{sw}\\} \\end{align} \\]

    where \\(\\epsilon\\) is the total strain vector, \\(\\epsilon^{el}\\) is elastic strain vector, \\(\\epsilon^{th}\\) is the thermal strain vector, \\(\\epsilon^{pl}\\) is the plastic strain vector, \\(\\epsilon^{cr}\\) is the creep strain vector, and \\(\\epsilon^{sw}\\) is the swelling strain vector.

    "},{"location":"welsim/theory/materialnl/#hyperelasticity","title":"Hyperelasticity","text":"

    The elastic potential energy in hyperelastic material can be obtained from the initial state with no stress activation. Therefore, we have the main invariable terms of the right Cauchy-Green deformation tensor C(\\(I_{1}\\), \\(I_{2}\\), \\(I_{3}\\)), or the main invariable of the deformation tensor excluding the volume changes (\\(\\bar{I}_{1}\\), \\(\\bar{I}_{2}\\), \\(\\bar{I}_{3}\\)). The potential can be expressed as \\(\\mathbf{W}=\\mathbf{W}(I_{1},I_{2},I_{3})\\), or \\(\\mathbf{W}=\\mathbf{W}(\\bar{I}_{1},\\bar{I}_{2},\\bar{I}_{3})\\).

    The nonlinear constitutive relation of hyperelastic material is defined by the relation between the second order Piola-Kirchhoff stress and the Green-Lagrange strain, the total Lagrange method is more efficient in solving such models.

    When the elastic potential energy \\(W\\) of the hyperelasticity is known, the second Piola-Kirchhoff stress and strain-stress relationship can be calculated as follows

    \\[ S=2\\dfrac{\\partial W}{\\partial C} \\] \\[ C=4\\dfrac{\\partial^{2}W}{\\partial C\\partial C} \\]"},{"location":"welsim/theory/materialnl/#arruda-boyce-model","title":"Arruda-Boyce model","text":"

    The form of the strain-energy potential for Arruda-Boyce model is

    \\[ \\begin{array}{ccc} W & = & [\\dfrac{1}{2}(\\bar{I}_{1}-3)+\\dfrac{1}{20\\lambda_{m}^{2}}(\\bar{I_{1}^{2}}-9)+\\dfrac{11}{1050\\lambda_{m}^{4}}(\\bar{I_{1}^{3}}-27)\\\\ & + & \\dfrac{19}{7000\\lambda_{m}^{6}}(\\bar{I_{1}^{4}}-81)+\\dfrac{519}{673750\\lambda_{m}^{8}}(\\bar{I_{1}^{5}}-243)]+\\dfrac{1}{D_1}(\\dfrac{J^{2}-1}{2}-\\mathrm{ln}J) \\end{array} \\]

    where \\(\\lambda_{m}\\) is limiting network stretch, and \\(D_1\\) is the material incompressibility parameter.

    The initial shear modulus is

    \\[ \\mu=\\dfrac{\\mu_{0}}{1+\\dfrac{3}{5\\lambda_{m}^{2}}+\\dfrac{99}{175\\lambda_{m}^{4}}+\\dfrac{513}{875\\lambda_{m}^{6}}+\\dfrac{42039}{67375\\lambda_{m}^{8}}} \\]

    The initial bulk modulus is

    \\[ K=\\dfrac{2}{D_1} \\]

    As the parameter \\(\\lambda_L\\) goes to infinity, the model is equivalent to neo-Hookean form.

    "},{"location":"welsim/theory/materialnl/#blatz-ko-foam-model","title":"Blatz-Ko foam model","text":"

    The form of strain-energy potential for the Blatz-Ko model is:

    \\[ W=\\frac{\\mu}{2}\\left(\\frac{I_{2}}{I_{3}}+2\\sqrt{I_{3}}-5\\right) \\]

    where \\(\\mu\\) is initla shear modulus of material. The initial bulk modulus is defined as :

    \\[ K = \\frac{5}{3}\\mu \\]"},{"location":"welsim/theory/materialnl/#extended-tube-model","title":"Extended tube model","text":"

    The elastic strain-energy potential for the extended tube model is:

    \\[ \\begin{array}{ccc} W & = & \\frac{G_{c}}{2}\\left[\\frac{\\left(1-\\delta^{2}\\right)\\left(\\bar{I}_{1}-3\\right)}{1-\\delta^{2}\\left(\\bar{I}_{1}-3\\right)}+\\mathrm{ln}\\left(1-\\delta^{2}\\left(\\bar{I}_{1}-3\\right)\\right)\\right]\\\\ & + & \\frac{2G_{e}}{\\beta^{2}}\\sum_{i=1}^{3}\\left(\\bar{\\lambda}_{i}^{-\\beta}-1\\right)+\\frac{1}{D_1}\\left(J-1\\right)^{2} \\end{array} \\]

    where the initial shear modulus is \\(G\\)=\\(G_c\\) + \\(G_e\\), and \\(G_e\\) is constraint contribution to modulus, \\(G_c\\) is crosslinked contribution to modulus, \\(\\delta\\) is extensibility parameter, \\(\\beta\\) is empirical parameter (0\\(\\leq \\beta \\leq\\)1), and \\(D_1\\) is material incompressibility parameter.

    Extended tube model is equivalent ot a two-term Ogden model with the following parameters:

    \\[ \\begin{array}{cccc} \\alpha_1 = 2 &, & \\alpha_2=-\\beta\\\\ \\mu_1=G_c &, & \\mu_2=-\\dfrac{2}{\\beta}G_e, & \\delta=0 \\end{array} \\]"},{"location":"welsim/theory/materialnl/#gent-model","title":"Gent model","text":"

    The form of the strian-energy potential for the Gent model is:

    \\[ W=-\\frac{\\mu J_{m}}{2}\\mathrm{ln}\\left(1-\\frac{\\bar{I}_{1}-3}{J_{m}}\\right)+\\frac{1}{D_1}\\left(\\frac{J^{2}-1}{2}-\\mathrm{ln}J\\right) \\]

    where \\(\\mu\\) is initial shear modulus of material, \\(J_m\\) is limiting value of \\(\\bar{I}_1-3\\), \\(D_1\\) is material incompressibility parameter.

    The initial bulk modulus is

    \\[ K=\\dfrac{2}{D_1} \\]

    When the parameter \\(J_m\\) goes to infinity, the Gent model is equivalent to neo-Hookean form.

    "},{"location":"welsim/theory/materialnl/#mooney-rivlin-model","title":"Mooney-Rivlin model","text":"

    This model includes two-, three-, five-, and nine-terma Mooney-Rivlin models. The form of the strain-energy potential for a two-parameter Mooney-Rivlin model is

    \\[ W=C_{10}\\left(\\bar{I}_{1}-3\\right)+C_{01}\\left(\\bar{I}_{2}-3\\right)+\\frac{1}{D_1}\\left(J-1\\right)^{2} \\]

    where \\(C_{10}\\), \\(C_{01}\\), and \\(D_{1}\\) are the material constants.

    The form of strain-energy potential for a three-parameter Mooney-Rivlin model is

    \\[ W=C_{10}\\left(\\bar{I}_{1}-3\\right)+C_{01}\\left(\\bar{I}_{2}-3\\right)+C_{11}\\left(\\bar{I}_{1}-3\\right)\\left(\\bar{I}_{2}-3\\right)+\\frac{1}{D_1}\\left(J-1\\right)^{2} \\]

    where \\(C_{10}\\), \\(C_{01}\\), \\(C_{11}\\), and \\(D_1\\) are material ocnstants.

    The form of strain-energy potential for a five-parameter Mooney-Rivlin model is

    \\[ \\begin{array}{ccc} W & = & C_{10}\\left(\\bar{I}_{1}-3\\right)+C_{01}\\left(\\bar{I}_{2}-3\\right)+C_{20}\\left(\\bar{I}_{1}-3\\right)^{2}\\\\ & + & C_{11}\\left(\\bar{I}_{1}-3\\right)\\left(\\bar{I}_{2}-3\\right)+C_{02}\\left(\\bar{I}_{2}-3\\right)^{2}+\\frac{1}{D_1}\\left(J-1\\right)^{2} \\end{array} \\]

    where \\(C_{10}\\), \\(C_{01}\\), \\(C_{20}\\), \\(C_{11}\\), \\(C_{02}\\), and \\(D_1\\) are material ocnstants.

    The form of strain-energy potential for a nine-parameter Mooney-Rivlin model is

    \\[ \\begin{array}{ccc} W & = & C_{10}\\left(\\bar{I}_{1}-3\\right)+C_{01}\\left(\\bar{I}_{2}-3\\right)+C_{20}\\left(\\bar{I}_{1}-3\\right)^{2}\\\\ & + & C_{11}\\left(\\bar{I}_{1}-3\\right)\\left(\\bar{I}_{2}-3\\right)+C_{02}\\left(\\bar{I}_{2}-3\\right)^{2}+C_{30}\\left(\\bar{I}_{1}-3\\right)^{3}\\\\ & + & C_{21}\\left(\\bar{I}_{1}-3\\right)^{2}\\left(\\bar{I}_{2}-3\\right)+C_{12}\\left(\\bar{I}_{1}-3\\right)\\left(\\bar{I}_{2}-3\\right)^{2}+C_{03}\\left(\\bar{I}_{2}-3\\right)^{3}+\\frac{1}{D_1}\\left(J-1\\right)^{2} \\end{array} \\]

    where \\(C_{10}\\), \\(C_{01}\\), \\(C_{20}\\), \\(C_{11}\\), \\(C_{02}\\), \\(C_{30}\\), \\(C_{21}\\), \\(C_{12}\\), \\(C_{03}\\), and \\(D_1\\) are material ocnstants.

    The initial shear modulus is given by:

    \\[ \\mu=2(C_{10}+C_{01}) \\]

    The initial bulk modulus is

    \\[ K=\\dfrac{2}{D_1} \\]"},{"location":"welsim/theory/materialnl/#neo-hookean-model","title":"Neo-Hookean model","text":"

    The Neo-Hookean model is a well-known hyperelastic model with an expanded linear rule (Hooke rule) having isotropy so that it can respond to finite deformation problems. The elastic potential is as follows.

    \\[ W=\\frac{\\mu}{2}(\\bar{I}_{1}-3)+\\dfrac{1}{D_{1}}(J-1)^{2} \\]

    where \\(\\mu\\) is initial shear modulus of materials, \\(D_{1}\\) is the material constant.

    The initial bulk modulus is given by:

    \\[ K=\\dfrac{2}{D_1} \\]"},{"location":"welsim/theory/materialnl/#ogden-compressible-foam-model","title":"Ogden compressible foam model","text":"

    The strain-energy potential of the Ogden compressible foam model is based on the principal stretches of left Cauchy strain tensor, which has the form:

    \\[ W=\\sum_{i=1}^{N}\\frac{\\mu_{i}}{\\alpha_{i}}\\left(J^{\\alpha_{i}/3}\\left(\\bar{\\lambda}_{1}^{\\alpha_{i}}+\\bar{\\lambda}_{2}^{\\alpha_{i}}+\\bar{\\lambda}_{3}^{\\alpha_{i}}\\right)-3\\right)+\\sum_{i=1}^{N}\\frac{\\mu_{i}}{\\alpha_{i}\\beta_{i}}\\left(J^{-\\alpha_{i}\\beta_{i}}-1\\right) \\]

    where N determines the order of the polynomial, \\(\\mu_i\\), \\(\\alpha_i\\) are material constants, \\(D_k\\) is incompressiblity parameter. The reduced principal strench is defined by:

    \\[ \\bar{\\lambda}_{p}=J^{-\\frac{1}{3}}\\lambda_p,\\; J=(\\lambda_{1}\\lambda_{2}\\lambda_{3})^{\\frac{1}{2}} \\]

    The initial shear modulus is given by:

    \\[ \\mu=\\dfrac{\\sum_{i=1}^{N}\\mu_{i}\\alpha_{i}}{2} \\]

    The initial bulk modulus K is defined by

    \\[ K = \\sum_{i=1}^{N}\\mu_{i}\\alpha_{i}\\left(\\dfrac{1}{3}+\\beta_{i}\\right) \\]

    When parameters N=1, \\(\\alpha_1\\)=-2, \\(\\mu_1\\)=-\\(\\mu\\), and \\(\\beta\\)=0.5, the Ogden compressible model is converted to the Blatz-Ko model.

    "},{"location":"welsim/theory/materialnl/#ogden-model","title":"Ogden model","text":"

    The strain-energy potential of the Ogden compressible foam model is based on the principal stretches of left Cauchy strain tensor, which has the form:

    \\[ W=\\sum_{i=1}^{N}\\frac{\\mu_{i}}{\\alpha_{i}}\\left(\\bar{\\lambda}_{1}^{\\alpha_{i}}+\\bar{\\lambda}_{2}^{\\alpha_{i}}+\\bar{\\lambda}_{3}^{\\alpha_{i}}-3\\right)+\\sum_{k=1}^{N}\\frac{1}{D_{k}}\\left(J-1\\right)^{2k} \\]

    where N determines the order of the polynomial, \\(\\mu_i\\), \\(\\alpha_i\\) are material constants, \\(D_k\\) is incompressiblity parameter. The reduced principal strench is defined by:

    \\[ \\bar{\\lambda}_{p}=J^{-\\frac{1}{3}}\\lambda_p,\\; J=(\\lambda_{1}\\lambda_{2}\\lambda_{3})^{\\frac{1}{2}} \\]

    The initial shear modulus is given by:

    \\[ \\mu=\\dfrac{\\sum_{i=1}^{N}\\mu_{i}\\alpha_{i}}{2} \\]

    The initial bulk modulus K is defined by

    \\[ K = \\dfrac{2}{D_1} \\]

    When parameters N=1, \\(\\alpha_1\\)=2, the Ogden model is converted to the neo-Hookean model. When parameters N=2, \\(\\alpha_1\\)=2 and \\(\\alpha_2\\)=-2, the Ogden model is converted to the 2-parameter Mooney-Rivlin model.

    "},{"location":"welsim/theory/materialnl/#polynomial-form","title":"Polynomial form","text":"

    The polynomial form of strain-energy potential is:

    \\[ W=\\sum_{i+j=1}^{N}c_{ij}\\left(\\bar{I}_{1}-3\\right)^{i}\\left(\\bar{I_{2}}-3\\right)^{j}+\\sum_{k=1}^{N}\\frac{1}{D_{k}}\\left(J-1\\right)^{2k} \\]

    where \\(N\\) determines the order of polynomial, \\(c_{ij}\\), \\(D_k\\) are material constants.

    The initial shear modulus is given by:

    \\[ \\mu=2\\left(C_{10}+C_{01}\\right) \\]

    The initial bulk modulus K is defined by

    \\[ K = \\dfrac{2}{D_1} \\]

    The Polynomial model is converted to following models with specific paramters:

    Parameters of Polynomial model Equivalent model N=1, \\(C_{01}\\)=0 neo-Hookean N=1 2-parameter Mooney-Rivlin N=2 5-parameter Mooney-Rivlin N=3 9-parameter Mooney-Rivlin"},{"location":"welsim/theory/materialnl/#yeoh-model","title":"Yeoh model","text":"

    The Yeoh model is also called the reduced polynomial form. The strain-energy potential is

    \\[ W=\\sum_{i=1}^{N}c_{i0}\\left(\\bar{I}_{1}-3\\right)^{i}+\\sum_{k=1}^{N}\\frac{1}{D_{k}}\\left(J-1\\right)^{2k} \\]

    where N denotes the order of polynomial, \\(C_{i0}\\) and \\(D_k\\) are material constants. When N=1, Yeoh becomes neo-Hookean model.

    The initial shear modulus is defined:

    \\[ \\mu=2c_{10} \\]

    The initial bulk modulus is:

    \\[ K=\\frac{2}{D_1} \\]"},{"location":"welsim/theory/materialnl/#rate-independent-plasticity","title":"Rate-independent plasticity","text":"

    The elastoplasticity based on the flow rule is applied in this program. The constitutive relation between Jaumman rate and the deformation rate tensor of the Kirchhoff stress is numerically solved using the updated Lagrange method.

    "},{"location":"welsim/theory/materialnl/#elastoplastic-constitutive-equation","title":"Elastoplastic constitutive equation","text":"

    The yield criteria of an elasto-plastic solid can be written into math formulas. The initial yield criteria are

    \\[ F(\\sigma,\\sigma_{y0})=0 \\]

    The Consecutive yield criteria are

    \\[ F(\\sigma,\\sigma_{y}(e^{-p}))=0 \\]

    where \\(F\\) is the yield function, \\(\\sigma_{y0}\\) is initial yield stress, \\(\\sigma_{y}\\) is consecutive yield stress, \\(\\sigma\\) is stress tensor, \\(\\mathbf{e}\\) is the infinitesimal strain tensor, \\(\\mathbf{e}^{p}\\) is the plastic strain tensor, \\(\\bar{\\mathbf{e}}^{p}\\) is equivalent plastic strain.

    The yield stress-equivalent plastic strain relationship is assumed to conform to the stress-plastic strain relation in a single axis state. The stress-plastic strain relation about one single axis state is:

    \\[ \\sigma=H(e^{p}) \\] \\[ \\dfrac{d\\sigma}{de^{p}}=H' \\]

    where \\(H'\\) is the strain hardening factor. The equivalent stress-equivalent plastic strain relation is :

    \\[ \\bar{\\sigma}=H(\\bar{e}^{p}) \\] \\[ \\dot{\\bar{\\sigma}}=H'\\dot{\\bar{e^{p}}} \\]

    The consecutive yield function is generally a function of temperature and plastic strain work. In this program, this function is assumed to be related to the equivalent plastic strain \\bar{e}^{p}. Since condition F=0 holds during the plastic deformation, we have

    \\[ \\begin{align} \\label{eq:ch5_plastic_gov1} \\dot{F}=\\dfrac{\\partial F}{\\partial\\sigma}\\colon\\dot{\\sigma}+\\dfrac{\\partial F}{\\partial\\mathbf{e}^{p}}\\colon\\dot{\\mathbf{e}}^{p}=0 \\end{align} \\]

    where \\(\\dot{F}\\) is the time derivative function of \\(F\\).

    In this case, we assume the existence of the plastic potential \\(\\Theta\\), the plastic strain rate is

    \\[ \\dot{\\mathbf{e}}^{p}=\\dot{\\lambda}\\dfrac{\\partial\\Theta}{\\partial\\sigma} \\]

    where \\(\\dot{\\lambda}\\) is the factor. Moreover, assuming the plastic potential \\(\\Theta\\) is equivalent to yield function \\(F\\), the associated flow rule is assumed as

    \\[ \\dot{\\mathbf{e}}^{p}=\\dot{\\lambda}\\dfrac{\\partial F}{\\partial\\sigma} \\]

    which is substituted with equation \\(\\eqref{eq:ch5_plastic_gov1}\\), we have

    \\[ \\dot{\\lambda}=\\dfrac{\\mathbf{a}^{T}\\colon\\mathbf{d}_{D}}{A+\\mathbf{a}^{T}\\colon\\mathbf{D}\\colon\\mathbf{a}}\\mathbf{\\dot{\\mathbf{e}}} \\]

    where \\(\\mathbf{D}\\) is the elastic matrix, and

    \\[ \\mathbf{a}^{T}=\\dfrac{\\partial F}{\\partial\\sigma}\\quad\\mathbf{d}_{D}=\\mathbf{D}\\mathbf{a}^{T}\\quad A=-\\dfrac{1}{\\dot{\\lambda}}\\dfrac{\\partial F}{\\partial\\mathbf{\\mathbf{e}}^{p}}\\colon\\dot{\\mathbf{e}}^{p} \\]

    The stress-strain relation for elastoplasicity can be rewritten to

    \\[ \\begin{align} \\label{eq:ch5_plastic_yield_func1} \\dot{\\sigma}=\\{\\mathbf{D}-\\dfrac{\\mathbf{d}_{D}\\otimes\\mathbf{d}_{D}^{T}}{A+\\mathbf{d}_{D}^{T}\\mathbf{a}}\\}\\colon\\dot{\\mathbf{e}} \\end{align} \\]

    Here we give the explicit form of several yield functions that are applied in the program.

    "},{"location":"welsim/theory/materialnl/#von-mises-yield-function","title":"Von-Mises yield function","text":"\\[ F=\\sqrt{3\\mathbf{J}_{2}}-\\sigma_{y} = 0 \\]"},{"location":"welsim/theory/materialnl/#mohr-coulomb-yield-function","title":"Mohr-Coulomb yield function","text":"\\[ F=\\sigma_{1}-\\sigma_{3}+(\\sigma_{1}+\\sigma_{3})\\mathrm{sin}\\phi-2c\\mathrm{cos}\\phi = 0 \\]"},{"location":"welsim/theory/materialnl/#drucker-prager-yield-function","title":"Drucker-Prager yield function","text":"\\[ F=\\sqrt{\\mathbf{J}_{2}}-\\alpha\\sigma\\colon\\mathbf{I}-\\sigma_{y}=0 \\]

    where material constant \\(\\alpha\\) and \\(\\sigma_{y}\\) are calculated from the viscosity and friction angle of the material as shown below

    \\[ \\alpha=\\dfrac{2\\mathrm{sin}\\phi}{3+\\mathrm{sin}\\phi},\\quad\\sigma_{y}=\\dfrac{6c\\mathrm{cos}\\phi}{3+\\mathrm{sin}\\phi} \\]"},{"location":"welsim/theory/materialnl/#viscoelasticity","title":"Viscoelasticity","text":"

    A material is viscoelastic if the material has both elastic (recoverable) and viscous (nonrecoverable) parts. Upon loads, the elastic deformation is instantaneous while the viscous part occurs over time. A viscoelastic model can depicts the deformation behavior of glass or glass-like materials and simulate heating and cooling processing of such materials.

    "},{"location":"welsim/theory/materialnl/#constitutive-equations","title":"Constitutive Equations","text":"

    A generalized Maxwell model is applied for viscoelasticity in this program. The constitutive equation becomes a function of deviatoric strain \\(\\mathbf{e}\\) and deviatoric viscosity strain \\(\\mathbf{q}\\),

    \\[ \\sigma(t)=K\\thinspace tr(\\epsilon\\mathbf{I})+2G(\\mu_{0}\\mathbf{e}+\\mu\\mathbf{q}) \\]

    where

    \\[ \\mu\\mathbf{q}=\\sum_{m=1}^{M}\\mu_{m}\\mathbf{q}^{(m)};\\quad\\sum_{m=0}^{M}\\mu_{m}=1 \\]

    moveover, the deviatoric viscosity strain \\(\\mathbf{q}\\) can be calculated by

    \\[ \\dot{\\mathbf{q}}\\thinspace^{(m)}+\\dfrac{1}{\\tau_{m}}\\mathbf{q}^{(m)}=\\dot{\\mathbf{e}} \\]

    where \\(\\tau_{m}\\) is the relaxation time. The shear and volumetric relaxation coefficient \\(G\\) is represented by the following Prony series:

    \\[ G(t)=G[\\mu_{0}^{G}+\\sum_{i=1}^{M}\\mu_{i}^{G}e^{-(t/\\tau_{i}^{G})}] \\] \\[ K(t)=K[\\mu_{0}^{K}+\\sum_{i=1}^{M}\\mu_{i}^{K} e^{-\\frac{t}{\\tau_{i}^{K}}}] \\]

    where \\(\\tau_{i}^{G}\\) and \\(\\tau_{i}^{K}\\) are relaxation times for each Prony component, \\(G_i\\) and \\(K_i\\) are shear and volumetric moduli, respectively.

    "},{"location":"welsim/theory/materialnl/#themorheological-simplicity","title":"Themorheological Simplicity","text":"

    Viscous material depends strongly on temperature. For instance, A glass-like material turninto viscous fluids at high temperatures and behave like a solid material at low temperatures. The thermorheological simplicity is proposed to assumes that material response to a load at a high temperature over a short duration is identical to that at lower temperature but over a longer duration. Essentially, the relaxation times in Prony components oby the scaling law:

    \\[ \\tau_{i}^{G}(T) = \\dfrac{\\tau_{i}^{G}(T_r)}{A(T,T_r)} ,\\qquad \\tau_{i}^{K}(T) = \\dfrac{\\tau_{i}^{K}(T_r)}{A(T,T_r)} \\]

    where \\(A(T,T_r)\\) is called the shift function.

    "},{"location":"welsim/theory/materialnl/#shift-functions","title":"Shift Functions","text":"

    WELSIM offers the following forms of the shift function:

    • Williams-Landel-Ferry Shift Function
    "},{"location":"welsim/theory/materialnl/#williams-landel-ferry-shift-function","title":"Williams-Landel-Ferry Shift Function","text":"

    The Williams-Landel-Ferry (WLF) shift function is defined by

    \\[ log_{10}(A) = \\dfrac{C1(T-T_r)}{C2+T-T_r} \\]

    where T is temperature, \\(T_r\\) is reference temperature, \\(C_1\\) and \\(C_2\\) are the WLF constants.

    "},{"location":"welsim/theory/materialnl/#rate-dependent-plasticity-including-creep-and-viscoplasticity","title":"Rate-dependent plasticity (including creep and viscoplasticity)","text":"

    The creep is a deformation phenomenon that the displacement depends on the time even under constant stress condition. The viscoelasticity can be viewed as linear creep. Several nonlinear creep are described in this section. In the mathematical theory, we define creep strain \\(\\epsilon^{c}\\) and creep strain rate \\(\\dot{\\epsilon}^{c}\\)

    \\[ \\begin{align} \\label{eq:ch5_creep_gov1} \\dot{\\epsilon}^{c}=\\dfrac{\\partial\\epsilon^{c}}{\\partial t}=\\beta(\\sigma,\\epsilon^{c}) \\end{align} \\]

    In this case, if the instantaneous strain is assumed as the elasticity strain \\(\\epsilon^{e}\\), the total strain can be expressed as the summary of elastic and creep strains

    \\[ \\epsilon=\\epsilon^{e}+\\epsilon^{c} \\]

    where the elastic strain can be calculated by

    \\[ \\epsilon^{e}=\\mathbf{c}^{e-1}\\colon\\sigma \\]

    When the creep occurs in the deformation, the stress becomes

    \\[ \\sigma_{n+1}=\\mathbf{c}\\colon(\\epsilon_{n+1}-\\epsilon_{n+1}^{c}) \\] \\[ \\epsilon_{n+1}^{c}=\\epsilon_{n}^{c}+\\triangle t\\beta_{n+\\theta} \\]

    where \\(\\beta_{n+\\theta}\\) becomes

    \\[ \\beta_{n+\\theta}=(1+\\theta)\\beta_{n}+\\theta\\beta_{n+1} \\]

    The incremental creep strain \\(\\triangle\\epsilon^{c}\\) can be simplified to a nonlinear equation

    \\[ \\mathbf{R}_{n+1}=\\epsilon_{n+1}-\\mathbf{c}^{-1}\\colon\\sigma_{n+1}-\\epsilon_{n}^{c}-\\triangle t\\beta_{n+\\theta}=0 \\]

    The Newton-Raphson method is applied to solve the nonlinear conditions. The iterative scheme in the finite element framework is

    \\[ \\begin{align} \\label{eq:ch5_creep_gov2} \\mathbf{R}_{n+1}^{(k+1)}=0=\\mathbf{R}_{n+1}^{(k)}-(\\mathbf{c}^{-1}+\\triangle t\\mathbf{c}_{n+1}^{c})d\\sigma_{n+1}^{(k)} \\end{align} \\]

    which yields

    \\[ \\begin{align} \\label{eq:ch5_creep_gov3} \\mathbf{c}_{n+1}^{c}=\\dfrac{\\partial\\beta}{\\partial\\sigma}\\mid_{n+\\theta}=\\theta\\dfrac{\\partial\\beta}{\\partial\\sigma}\\mid_{n+1} \\end{align} \\]

    The above equations \\(\\eqref{eq:ch5_creep_gov2}\\) and \\(\\eqref{eq:ch5_creep_gov3}\\) are used in the iterative scheme. As the residual \\(\\mathbf{R}\\) gets close to zero, the stress \\(\\sigma_{n+1}\\) and tangent tensile modulus are

    \\[ \\mathbf{c}_{n+1}^{*}=[\\mathbf{c}^{-1}+\\triangle t\\mathbf{c}_{n+1}^{c}]^{-1} \\]

    To solve the equation \\(\\eqref{eq:ch5_creep_gov1}\\), the following Norton model is applied in the program. The equivalent clip strain \\(\\dot{\\epsilon}^{cr}\\) is defined to be the function of Mises stress \\(q\\) and time \\(t\\).

    \\[ \\dot{\\epsilon}^{cr}=Aq^{n}t^{m} \\]

    where \\(A\\), \\(m\\), \\(n\\) are the material coefficients.

    "},{"location":"welsim/theory/materialnl/#creep","title":"Creep","text":"

    Creep is the inelastic, irreversible deformation of structures during time. It is a life limiting factor and depends on stress, strain, temperature and time. This dependency can be modeled as followed:

    \\[ \\dot{\\epsilon}^{cr}=f(\\sigma,\\epsilon,T,t) \\]

    Creep can occur in all crystalline materials, such as metal or glass, has various impacts on the behavior of the material.

    "},{"location":"welsim/theory/materialnl/#three-types-of-creep","title":"Three types of creep","text":"

    Creep can be divided in three different stages: primary creep, secondary creep and irradiation induced creep.

    Primary creep (0<m<1) starts rapidly with an infinite creep rate at the initialization. Here is m the time index. It occurs after a certain amount of time and slows down constantly. It occurs in the first hour after applying the load and is essential in calculating the relaxation over time.

    Secondary creep (m=1) follows right after the primary creep stage. The strain rate is now constant over a long period of time.

    The strain rate in the irradiation induced creep stage is growing rapidly until failure. This happens in a short period of time and is not of great interest. Therefore only primary and secondary creep are modeled in WelSim.

    "},{"location":"welsim/theory/materialnl/#creep-models","title":"Creep models","text":"

    WELSIM supports implicit creep models including Strain Hardening, Time Hardening, Generalized Exponentia, Generalized Graham, Generalized Blackburn, Modified Time Hardening, Modified Strain Hardening, Generalized Garofalo, Exponential form, Norton, Combined Time Hardening, Rational polynomial, and Generalized Time Hardening. The details of these models are given in the table below.

    Creep Model(index) Name Equations Parameters Type 1 Strain Hardening \\(\\dot{\\epsilon}_{cr}=C_{1}\\sigma^{C_2}\\epsilon_{cr}^{C_3}e^{-C_4/T}\\) \\(C_1>0\\) Primary 2 Time Hardening \\(\\dot{\\epsilon}_{cr}=C_{1}\\sigma^{C_2}t^{C_3}e^{-C_4/T}\\) \\(C_1>0\\) Primary 3 Generalized Exponential \\(\\dot{\\epsilon}_{cr}=C_{1}\\sigma^{C_2}re^{-rt}\\), \\(r=C_{5}\\sigma^{C_3}e^{-C4/T}\\) \\(C_1>0\\)\\(C_5>0\\) Primary 4 Generalized Graham \\(\\dot{\\epsilon}_{cr}=C_{1}\\sigma^{C_2}\\left( t^{C_3} + C_{4}t^{C_5} + C_{6}t^{C_7} \\right) e^{-C_8/T}\\) \\(C_1>0\\) Primary 5 Generalized Blackburn \\(\\dot{\\epsilon}_{cr} = f\\left(1-e^{-rt}\\right)+gt\\)\\(f=C_{1}e^{C_2\\sigma}\\), \\(r=C_3\\left(\\sigma/C_4\\right)^{C_5}\\), \\(g=C_{6}e^{C_{7}\\sigma}\\) \\(C_1>0\\)\\(C_3>0\\)\\(C_6>0\\) Primary 6 Modified Time Hardening \\(\\dot{\\epsilon}_{cr}=\\dfrac{C_{1}}{C_3+1}\\sigma^{C_2}t^{C_3+1}e^{-C_4/T}\\) \\(C_1>0\\) Primary 7 Modified Strain Hardening \\(\\dot{\\epsilon}_{cr}= \\{ C_{1} \\sigma^{C_2} \\left[\\left( C_3+1\\right)\\epsilon_{cr} \\right]^{C_3} \\}^{1/(C_3+1)} e^{-C_4/T}\\) \\(C_1>0\\) Primary 8 Generalized Garofalo \\(\\dot{\\epsilon}_{cr}=C_1\\left[ sinh(C_2\\sigma)\\right]^{C_3} e^{-C_4/T}\\) \\(C_1>0\\) Secondary 9 Exponential form \\(\\dot{\\epsilon}_{cr}=C_1 e^{\\sigma/C_2} e^{-C_3/T}\\) \\(C_1>0\\) Secondary 10 Norton \\(\\dot{\\epsilon}_{cr}=C_1 \\sigma^{C_2} e^{-C_3/T}\\) \\(C_1>0\\) Secondary 11 Combined Time Hardening \\(\\dot{\\epsilon}_{cr}=\\dfrac{C_1}{C_3+1} \\sigma^{C_2} t^{C_3+1} e^{-C_4/T} + C_5 \\sigma^{C_6}te^{-C_7/T}\\) \\(C_1>0\\), \\(C_5>0\\) Primary + Secondary 12 Rational Polynomial \\(\\dot{\\epsilon}_{cr}=C_1 \\dfrac{\\partial\\epsilon_c}{\\partial t}\\), \\(\\epsilon_{c}=\\dfrac{cpt}{1+pt}+\\dot{\\epsilon}_m t\\) \\(\\dot{\\epsilon}_m=C_2(10)^{C_3\\sigma}\\sigma^{C_4}\\) \\(c=C_7\\dot{\\epsilon}_m^{C_8}\\sigma^{C_9}\\), \\(p=C_{10}\\dot{\\epsilon}_{m}^{C_{11}}\\sigma^{C_{12}}\\) \\(C_2>0\\) Primary + Secondary 13 Generalized Time Hardening \\(\\dot{\\epsilon}_{cr}=ft^r e^{-C_6/T}\\) \\(f=C_1\\sigma+C_2\\sigma^2+C_3\\sigma^3\\) \\(r=C_4 + C_5\\sigma\\) - Primary

    where \\(\\epsilon_{cr}\\) is equivalent creep strain, \\(\\dot{\\epsilon}_{cr}\\) is the change in equivalent creep strain with respect to time, \\(\\sigma\\) is equivalent stress. \\(T\\) is temperature. \\(C_1\\) through \\(C_{12}\\) are creep constants. \\(t\\) is time at end of substep. \\(e\\) is natural logarithm base.

    "},{"location":"welsim/theory/modal/","title":"Modal analysis","text":""},{"location":"welsim/theory/modal/#generalized-eigenvalue-problem","title":"Generalized eigenvalue problem","text":"

    When conducting a free oscillation analysis of the continuum, assuming no damping in the free vibration. The governing eqatuion is

    \\[ \\begin{align} \\label{eq:ch5_modal_gov} \\mathbf{M}\\ddot{\\mathbf{u}}+\\mathbf{Ku}=0 \\end{align} \\]

    where \\(\\mathbf{u}\\) is the generated displacement vector, \\(\\mathbf{M}\\) is the mass matrix and \\(\\mathbf{K}\\) is the stiffness matrix. The solution is assumed to

    \\[ \\begin{align} \\label{eq:ch5_eigenvalue_vector} \\mathbf{u}(t)=(asin\\omega t+bcos\\omega t)\\mathbf{x} \\end{align} \\]

    where \\(\\omega\\) is the natural angular frequency, \\(a\\) and \\(b\\) are the arbitrary constants. Herein, the second order differential of equation \\(\\eqref{eq:ch5_eigenvalue_vector}\\) is

    \\[ \\begin{align} \\label{eq:ch5_modal_acceleration} \\ddot{\\mathbf{u}}(t)=\\omega(asin\\omega t-bsin\\omega t)\\mathbf{x} \\end{align} \\]

    Combining equations \\(\\eqref{eq:ch5_modal_gov}\\), \\(\\eqref{eq:ch5_eigenvalue_vector}\\), and \\(\\eqref{eq:ch5_modal_acceleration}\\), we have

    \\[ \\begin{align} \\label{eq:ch5_modal_gov3} \\mathbf{M}\\ddot{\\mathbf{u}}+\\mathbf{Ku}=(a\\mathrm{sin}\\omega t+b\\mathrm{cos}\\omega t)(-\\omega^{2}\\mathbf{M}+\\mathbf{K}\\mathbf{x})=(-\\lambda\\mathbf{M}\\mathbf{x}+\\mathbf{K}\\mathbf{x})=0 \\end{align} \\]

    which simplifies

    \\[ \\mathbf{K}\\mathbf{x}=\\lambda\\mathbf{M}\\mathbf{x} \\]

    which indicates that if factor \\(\\lambda(=\\omega^{2})\\) and vector \\(\\mathbf{x}\\) satisfies equation \\(\\eqref{eq:ch5_modal_gov3}\\), function \\(\\mathbf{u}(t)\\) becomes the solution of equation \\(\\eqref{eq:ch5_modal_gov}\\). The factor \\(\\lambda\\) is called the eigenvalue, vector \\(\\mathbf{x}\\) is called the eigenvector.

    "},{"location":"welsim/theory/modal/#problem-settings","title":"Problem settings","text":"

    Equation \\(\\eqref{eq:ch5_modal_acceleration}\\) can be expanded to calculate arbitrary order frequencies, which may appear at real engineering practices. To solve various physical problems, we assume the system is Hermitian(Matrix Symmetrical). Thus, a complex matrix can be transposed into a conjugate complex number and a real symmetric matrix. The relationship can be expressed by the equation below

    \\[ k_{ij}=\\bar{k}_{ji} \\]

    In this manual, the matrix in modal analysis is assumed to be symmetrical and positive definite. A positively definite matrix always yields to positive eigenvalues. Thus a matrix in the modal system always satisfies the following equation

    \\[ \\mathbf{x}^{T}\\mathbf{Ax}>0 \\]"},{"location":"welsim/theory/modal/#shifted-inverse-iteration-method","title":"Shifted inverse iteration method","text":"

    In the practical structural modal analysis, not all eigen values are required. There are many cases that some low order eigenvalues are sufficient for the engineering analysis. In the large scale problem that contains large sparse matrix, efficiently calculate the eigenvalues of the low order modes becomes important.

    When the lower limit of the eigenvalue is given, the equation \\(\\eqref{eq:ch5_modal_gov3}\\) can be derived to:

    \\[ \\begin{align} \\label{eq:ch5_modal_gov4} (\\mathbf{K}-\\sigma\\mathbf{M})^{-1}\\mathbf{M}\\mathbf{x}=[1/(\\lambda-\\sigma)]\\mathbf{x} \\end{align} \\]

    this formation of the equations has following advantages in numerical calculation:

    • The mode is reversed.
    • The eigenvalue around \\mathbf{\\sigma} is maximized.

    In the computing practice, the maximum eigenvalue may be calculated by first. For this reason, we use the equation \\(\\eqref{eq:ch5_modal_gov4}\\) rather than equation \\(\\eqref{eq:ch5_modal_gov3}\\) to calculate the eigenvalues around \\sigma. This scheme is called the shifted inverse iteration.

    "},{"location":"welsim/theory/modal/#lanczos-method","title":"Lanczos method","text":"

    In the WELSIM application, the Lanczos method is applied to solve the eigenvalues. Lanczos method is a numerical method performing tridiagonalization of matrices. It has capabilities of :

    • an iterative method, has advantages in solving sparse matrices.
    • the algorithm is well structured with matrix and vector operations, and naturally fits for parallel computing.
    • is suitable for the geometric domain decomposition method (DDM) that is embedded finite element mesh.
    • calculate arbitrary number of the eigenvalues and modes.

    The Lanczos method calculates the base of partial spaces by creating orthogonal vectors from the initial vectors. This method has advantages of computation speed over the subspace method. However, Lanczos method is easily affected by numerical errors. It is essential to check the solution with the numerical errors.

    "},{"location":"welsim/theory/modal/#geometric-meaning-in-the-lanczos-method","title":"Geometric meaning in the lanczos method","text":"

    Based on equation \\(\\eqref{eq:ch5_modal_gov4}\\), we define

    \\[ \\begin{align} \\label{eq:ch5_modal_gov5} \\begin{cases} \\mathbf{A}=(\\mathbf{K}-\\sigma\\mathbf{M})^{-1}\\\\{} [1/(\\lambda-\\sigma)]=\\zeta \\end{cases} \\end{align} \\]

    which can be rewritten to the following equation

    \\[ \\mathbf{Ax}=\\zeta\\mathbf{x} \\]

    The algorithm of the Lanczos method is the Gram-Schmidt orthogonalization for column vectors. Those column vectors are also called the columns of Krylov, and the space created by this scheme is called the Krylov subspace. When the Gram-Schmidt orthogonalization is performed in this space, the vectors can be acquired using the two nearest vectors. This is called the principle of Lanczos.

    "},{"location":"welsim/theory/shapefunction/","title":"Shape functions","text":"

    This chapter describes the shape functions for the finite elements.

    "},{"location":"welsim/theory/shapefunction/#understanding-shape-function-notations","title":"Understanding shape function notations","text":"

    The notations used in shape functions are listed below:

    • u: displacement in x (or s) direction.
    • v: displacement in y (or t) direction.
    • w: displacement in z (or s) direction.
    • \\(\\theta_{x}\\): Rotation about x direction.
    • \\(\\theta_{y}\\): Rotation about y direction.
    • \\(\\theta_{z}\\): Rotation about z direction.
    • \\(A_{x}\\): x-component of vector magnetic potential.
    • \\(A_{y}\\): y-component of vector magnetic potential.
    • \\(A_{z}\\): z-component of vector magnetic potential.
    • C: Concentration.
    • P: Pressure.
    • T: Temperature.
    • V: Electric potential or source current.
    • For the shell element, the u and v represent in-plane motions, and w denotes the out-of-plane motion.
    "},{"location":"welsim/theory/shapefunction/#3d-shell-elements","title":"3D shell elements","text":"

    This section describes the shape functions for 3D shell elements that are applied in the WELSIM application.

    "},{"location":"welsim/theory/shapefunction/#3-node-triangle","title":"3-Node triangle","text":"

    The shape functions for the 3-node triangular shell elements are:

    \\[ u=u_{0}L_{0}+u_{1}L_{1}+u_{2}L_{2} \\] \\[ v=v_{0}L_{0}+v_{1}L_{1}+v_{2}L_{2} \\] \\[ w=w_{0}L_{0}+w_{1}L_{1}+w_{2}L_{2} \\] \\[ A_{x}=A_{x0}L_{0}+A_{x1}L_{1}+A_{x2}L_{2} \\] \\[ A_{y}=A_{y0}L_{0}+A_{y1}L_{1}+A_{y2}L_{2} \\] \\[ A_{z}=A_{z0}L_{0}+A_{z1}L_{1}+A_{z2}L_{2} \\] \\[ T=T_{0}L_{0}+T_{1}L_{1}+T_{2}L_{2} \\] \\[ V=V_{0}L_{0}+V_{1}L_{1}+V_{2}L_{2} \\]"},{"location":"welsim/theory/shapefunction/#6-node-triangle","title":"6-Node triangle","text":"

    The shape functions for the 6-node triangular shell elements are:

    \\[ u=u_{0}(2L_{0}-1)L_{0}+u_{1}(2L_{1}-1)L_{1}+u_{2}(2L_{2}-1)L_{2}+u_{3}(4L_{0}L_{1})+u_{4}(4L_{1}L_{2})+u_{5}(4L_{2}L_{0}) \\] \\[ v=v_{0}(2L_{0}-1)L_{0}+v_{1}(2L_{1}-1)L_{1}+v_{2}(2L_{2}-1)L_{2}+v_{3}(4L_{0}L_{1})+v_{4}(4L_{1}L_{2})+v_{5}(4L_{2}L_{0}) \\] \\[ w=w_{0}(2L_{0}-1)L_{0}+w_{1}(2L_{1}-1)L_{1}+w_{2}(2L_{2}-1)L_{2}+w_{3}(4L_{0}L_{1})+w_{4}(4L_{1}L_{2})+w_{5}(4L_{2}L_{0}) \\]"},{"location":"welsim/theory/shapefunction/#3d-solid-elements","title":"3D solid elements","text":"

    This section describes the shape functions for the 3D solid elements that are applied in the WELSIM application.

    "},{"location":"welsim/theory/shapefunction/#4-node-tetrahedra","title":"4-Node tetrahedra","text":"

    The 4-node tetrahedra is also called liner tetrahedra element. The shape functions are:

    \\[ u=u_{0}L_{0}+u_{1}L_{1}+u_{2}L_{2}+u_{3}L_{3} \\] \\[ v=v_{0}L_{0}+v_{1}L_{1}+v_{2}L_{2}+v_{3}L_{3} \\] \\[ w=w_{0}L_{0}+w_{1}L_{1}+w_{2}L_{2}+w_{3}L_{3} \\]"},{"location":"welsim/theory/shapefunction/#10-node-tetrahedra","title":"10-Node tetrahedra","text":"

    The 10-node tetrahedra is also called bilinear tetrahedra element. The shape functions are:

    \\[ u=u_{0}(2L_{0}-1)L_{0}+u_{1}(2L_{1}-1)L_{1}+u_{2}(2L_{2}-1)L_{2}+u_{3}(2L_{3}-1)L_{3}+4u_{4}L_{0}L_{1}+u_{5}L_{1}L_{2}+u_{6}L_{0}L_{2}+u_{7}L_{0}L_{3}+u_{8}L_{1}L_{3}+u_{9}L_{2}L_{3} \\] \\[ v=...\\text{(analogous to u)} \\] \\[ w=...\\text{(analogous to u)} \\]"},{"location":"welsim/theory/structures/","title":"Structures","text":"

    This section describes the mathematical and numerical theories used in this finite element analysis program. In the stress analysis of solids, the infinitesimal deformation linear elasticity static analysis method is discussed by first. The geometric nonlinearity and elastoplasticity are introduced to describe the finite deformation in solids.

    "},{"location":"welsim/theory/structures/#infinitesimal-deformation-linear-elasticity-static-analysis","title":"Infinitesimal deformation linear elasticity static analysis","text":"

    The infinitesimal deformation theory is the essential formulation for the linear elasticity, which assumes the stress-strain constitutive relation is linear. The equilibrium equation of solid mechanics, boundary conditions are given by the following equation.

    \\[ \\begin{align} \\label{eq:ch5_equilibrium_eqn1} \\nabla\\cdot\\mathbf{\\sigma}+\\mathbf{b}=0\\quad\\mathrm{in}V \\end{align} \\] \\[ \\begin{align} \\label{eq:ch5_equilibrium_eqn2} \\sigma\\cdot\\mathbf{n}=\\mathbf{t}\\quad\\mathrm{on}\\thinspace S_{t} \\end{align} \\] \\[ \\begin{align} \\label{eq:ch5_equilibrium_eqn3} \\mathbf{u}=\\mathbf{u}_{0}\\quad\\mathrm{on}\\thinspace S_{u} \\end{align} \\]

    where \\(\\sigma\\) is the stress, \\(\\mathbf{t}\\) is the surface force, \\(\\mathbf{b}\\) is the body force, and S_{t} expresses the dynamic boundary and the \\(S_{u}\\) expresses the geometric boundary. The strain and displacement relation in the infinitesimal deformation is given

    \\[ \\epsilon=\\nabla_{s}\\mathbf{u} \\]

    The stress and strain constitutive relation in the linear elastic body is given

    \\[ \\sigma=\\mathbf{C}\\colon\\epsilon \\]

    where \\(\\mathbf{C}\\) is the fourth order elasticity tensor.

    "},{"location":"welsim/theory/structures/#principle-of-virtual-work","title":"Principle of virtual work","text":"

    The principle of the virtual work regarding the equilibrium equations \\(\\eqref{eq:ch5_equilibrium_eqn1}\\), \\(\\eqref{eq:ch5_equilibrium_eqn2}\\), and \\(\\eqref{eq:ch5_equilibrium_eqn3}\\) is

    \\[ \\begin{align} \\label{eq:ch5_equilibrium_virtual1} \\int_{V}\\sigma\\colon\\delta\\epsilon dV=\\int_{S_{t}}\\mathbf{t}\\cdot\\delta\\mathbf{u}dS+\\int_{V}\\mathbf{b}\\cdot\\delta\\mathbf{u}dV \\end{align} \\] \\[ \\delta\\mathbf{u}=0\\quad\\mathrm{on}\\quad S_{u} \\]

    which can be rewritten into

    \\[ \\begin{align} \\label{eq:ch5_equilibrium_virtual2} \\int_{V}(\\mathbf{C}\\colon\\epsilon)\\colon\\delta\\epsilon dV=\\int_{S_{t}}\\mathbf{t}\\cdot\\delta\\mathbf{u}dS+\\int_{V}\\mathbf{b}\\cdot\\delta\\mathbf{u}dV \\end{align} \\]

    where \\(\\epsilon\\) is the strain tensor, \\(\\sigma\\) is the stress tensor, and \\(\\mathbf{C}\\) is the fourth order elasticity tensor. The strain tensor \\(\\epsilon\\) and stress tensor \\(\\sigma\\) can be rewritten into vector forms \\(\\hat{\\epsilon}\\) and \\(\\hat{\\sigma}\\), respectively. Then we have

    \\[ \\begin{align} \\label{eq:ch4_theory_stress_strain_relation} \\hat{\\sigma}=\\mathbf{D}\\hat{\\epsilon} \\end{align} \\]

    where \\(\\mathbf{D}\\) is the elasticity matrix. Given the strain and stress in the vector form, we can rewrite the governing equation ([eq:ch5_equilibrium_virtual1]) into

    \\[ \\begin{align} \\label{eq:ch5_equilibrium_virtual3} \\int_{V}\\hat{\\epsilon}^{T}\\mathbf{D}\\delta\\hat{\\epsilon}dV=\\int_{S_{t}}\\delta\\mathbf{u^{T}}\\mathbf{t}dS+\\int_{V}\\delta\\mathbf{u}^{T}\\mathbf{b}dV \\end{align} \\]

    Equation ([eq:ch5_equilibrium_virtual3]) is the principles of the virtual work applied in this software program.

    "},{"location":"welsim/theory/structures/#finite-element-formulation","title":"Finite element formulation","text":"

    The principle governing equation ([eq:ch5_equilibrium_virtual3]) of the virtual work can be discreted for each finite element:

    \\[ \\begin{align} \\label{eq:ch5_equilibrium_fe_form1} \\sum_{e}\\int_{V^{e}}\\hat{\\epsilon}^{T}\\mathbf{D}\\delta\\hat{\\epsilon}dV=\\sum_{e}\\int_{S_{t}^{e}}\\delta\\mathbf{u}^{T}\\mathbf{t}dS+\\sum_{e}\\int_{V^{e}}\\delta\\mathbf{u}^{T}\\mathbf{b}dV \\end{align} \\]

    where the displacement field is interpolated for each element

    \\[ \\begin{align} \\label{eq:ch5_equilibrium_fe_form2} \\mathbf{u}=\\sum_{i=1}^{m}N_{i}\\mathbf{u}_{i}=\\mathbf{NU} \\end{align} \\]

    Similarly, the strain component can be expressed as

    \\[ \\begin{align} \\label{eq:ch5_equilibrium_fe_form3} \\hat{\\epsilon}=\\mathbf{BU} \\end{align} \\]

    Substituting equations \\(\\eqref{eq:ch5_equilibrium_fe_form2}\\) and \\(\\eqref{eq:ch5_equilibrium_fe_form3}\\) into \\(\\eqref{eq:ch5_equilibrium_fe_form1}\\), we have

    \\[ \\begin{align} \\label{eq:ch5_equilibrium_fe_form4} \\sum_{e}\\delta\\mathbf{U}^{T}(\\int_{V^{e}}\\mathbf{B}^{T}\\mathbf{DB}dV)\\mathbf{U}=\\sum_{e}\\delta\\mathbf{U}^{T}\\cdot\\int_{S_{t}^{e}}\\mathbf{N}^{T}\\mathbf{t}dS+\\sum_{e}\\delta\\mathbf{U}^{T}\\int_{V^{e}}\\mathbf{N}^{T}\\mathbf{b}dV \\end{align} \\]

    The equation above can be summarized as

    \\[ \\begin{align} \\label{eq:ch5_equilibrium_fe_form5} \\delta\\mathbf{U}^{T}\\mathbf{KU}=\\delta\\mathbf{U}^{T}\\mathbf{F} \\end{align} \\]

    where

    \\[ \\begin{align} \\label{eq:ch5_equilibrium_fe_form6} \\mathbf{K}=\\sum_{e}\\int_{V^{e}}\\mathbf{B}^{T}\\mathbf{DB}dV \\end{align} \\] \\[ \\begin{align} \\label{eq:ch5_equilibrium_fe_form7} \\mathbf{F}=\\sum\\int_{S_{t}^{e}}\\mathbf{N}^{T}\\mathbf{t}dS+\\int_{V^{e}}\\mathbf{N}^{T}\\mathbf{b}dV \\end{align} \\]

    The components of the matrix and vectors defined by equations \\(\\eqref{eq:ch5_equilibrium_fe_form6}\\) and \\(\\eqref{eq:ch5_equilibrium_fe_form7}\\) can be calculated for each finite element. For arbitrary virtual displacement \\(\\delta\\mathbf{U}\\), equation \\(\\eqref{eq:ch5_equilibrium_fe_form5}\\) can be rewritten into

    \\[ \\mathbf{KU=F} \\]"},{"location":"welsim/theory/thermal/","title":"Thermal analysis","text":"

    This section discuss the theories used in the WESLIM thermal analysis.

    "},{"location":"welsim/theory/thermal/#governing-equations","title":"Governing equations","text":"

    The governing equations applied in thermal analysis are:

    \\[ \\begin{align} \\label{eq:ch5_thermal_gov} \\rho c\\frac{\\partial T}{\\partial t}=\\nabla\\cdot(k\\nabla T) \\end{align} \\]

    where \\(\\rho=\\rho(x)\\) is mass density, \\(c=c(x,T)\\) is the specific heat, \\(T=T(x,t)\\) is the temperature, \\(K=k(x,T)\\) is the thermal conductivity, \\(Q=Q(x,T,t)\\) is the calorific value. \\(x\\) is the position in the modeling domain, \\(T\\) is the temperature and \\(t\\) is the time.

    The modeling domain is represented by S, and the boundary is represented by \\(\\varGamma\\). When assuming the boundary conditions of either the Dirichlet or Neumann type, those boundary conditions can be mathematically expressed as

    \\[ T=T_{1}(x,t) \\qquad X\\in\\Gamma_{1} \\] \\[ k\\frac{\\partial T}{\\partial n}=q(x,T,t) \\qquad X\\in\\Gamma_{2} \\]

    where the term \\(T_{1}\\), \\(q\\) is already known. \\(q\\) is the heat flux outflow from the boundary. Three types of heat flux can be considered in WELSIM thermal module.

    \\[ q=-q_{s}+q_{c}+q_{r} \\] \\[ q_{s}=q_{s}(x,t) \\] \\[ q_{c}=hc(T-T_{c}) \\] \\[ q_{r}=hc(T^{4}-T_{r}^{4}) \\]

    where \\(q_{s}\\) is the distributed heat flux, \\(q_{c}\\) is the heat flux by the convective heat transfer, and \\(q_{r}\\) is the heat flux by the radiant heat transfer. The other quantities are

    • \\(T_{c}=T_{c}(x,t)\\) Convective heat transfer coefficient ambient temperature
    • \\(h_{c}=h_{c}(x,t)\\) Convective heat transfer factor
    • \\(T_{r}=T_{r}(x,t)\\) Radiant heat transfer coefficient ambient temperature
    • \\(h_{r}=\\epsilon\\sigma F=h_{r}(x,t)\\) Radiant heat transfer factor. \\(\\epsilon\\) is the radiant rate, \\(\\sigma\\) is the Stefan-Boltzmann constant, \\(F\\) is the shape factor.
    "},{"location":"welsim/theory/thermal/#derivation-of-heat-flow-matrices","title":"Derivation of heat flow matrices","text":"

    When equation \\(\\eqref{eq:ch5_thermal_gov}\\) is discreted by the Galerkin approximation, it becomes as follows,

    \\[ \\begin{align} \\label{eq:ch5_thermal_gov2} [\\mathbf{K}]\\{T\\}+[\\mathbf{M}]\\frac{\\partial T}{\\partial t}=\\{F\\} \\end{align} \\]

    where the matrices and vectors are

    \\[ \\begin{array}{ccc} [\\mathbf{K}] & = & \\int(k_{xx}\\dfrac{\\partial\\{N\\}^{T}}{\\partial x}\\dfrac{\\partial\\{N\\}}{\\partial x}+k_{yy}\\dfrac{\\partial\\{N\\}^{T}}{\\partial y}\\dfrac{\\partial\\{N\\}}{\\partial y}+k_{zz}\\dfrac{\\partial\\{N\\}^{T}}{\\partial z}\\dfrac{\\partial\\{N\\}}{\\partial z})dV\\\\ & + & \\int h_{c}\\{N\\}^{T}\\{N\\}ds+\\int h_{r}\\{N\\}^{T}\\{N\\}ds \\end{array} \\] \\[ [\\mathbf{M}]=\\int\\rho c\\{N\\}^{T}\\{N\\}dV \\] \\[ \\{F\\}=\\int Q\\{N\\}^{T}dV-\\int q_{s}\\{N\\}^{T}dS+\\int h_{c}T_{c}\\{N\\}^{T}dS+\\int h_{r}T_{r}(T+T_{r})(T^{2}+T_{r}^{2})\\{N\\}^{T}dS \\]

    where shape function

    \\[ \\{N\\}=(N^{1},N^{2},.......),\\thinspace N_{i}=N_{i}(x) \\]

    Equation \\(\\eqref{eq:ch5_thermal_gov2}\\) is nonlinear and unsteady. When the time is discretized by the backward Euler's rule and the temperature at time t=t_{0} is known, the temperature at t=t_{0+\\triangle t} is calculated using the following equation.

    \\[ \\begin{align} \\label{eq:ch5_thermal_gov_disc1} [\\mathbf{K}]_{t=t_{0+\\triangle t}}\\{T\\}_{t=t_{0+\\triangle t}}+[\\mathbf{M}]_{t=t_{0+\\triangle t}}\\dfrac{\\{T\\}_{t=t_{0+\\triangle t}}-\\{T\\}_{t=t_{0}}}{\\triangle t}=\\{F\\}_{t=t_{0+\\triangle t}} \\end{align} \\]

    The temperature vector can be expressed as

    \\[ \\begin{align} \\label{eq:ch5_thermal_gov_disc2} \\{T\\}_{t=t_{0}+\\triangle t}=\\{T\\}_{t=t_{0}+\\triangle t}^{(i)}+\\{\\triangle T\\}_{t=t_{0}+\\triangle t}^{(i)} \\end{align} \\]

    The product of the heat conduction matrix and temperature vector, mass matrix and etc. are expressed in approximation as in the following equation.

    \\[ \\begin{align} \\label{eq:ch5_thermal_gov_disc3} [\\mathbf{K}]_{t=t_{0+\\triangle t}}\\{T\\}_{t=t_{0+\\triangle t}}\\cong[\\mathbf{K}]_{t=t_{0+\\triangle t}}^{(i)}\\{T\\}_{t=t_{0+\\triangle t}}^{(i)}+\\dfrac{\\partial[\\mathbf{K}]_{t=t_{0+\\triangle t}}^{(i)}\\{T\\}_{t=t_{0+\\triangle t}}^{(i)}}{\\partial\\{T\\}_{t=t_{0+\\triangle t}}^{(i)}}\\{\\triangle T\\}_{t=t_{0+\\triangle t}}^{(i)} \\end{align} \\] \\[ \\begin{align} \\label{eq:ch5_thermal_gov_disc4} [M]_{t=t_{0+\\triangle t}}\\cong[M]_{t=t_{0}+\\triangle t}^{(i)}+\\dfrac{\\partial[M]_{t=t_{0}+\\triangle t}^{(i)}}{\\partial\\{T\\}_{t=t_{0+\\triangle t}}^{\\{i\\}}}\\{\\triangle T\\}_{t=t_{0+\\triangle t}}^{(i)} \\end{align} \\]

    Substituting equations \\(\\eqref{eq:ch5_thermal_gov_disc2}\\), \\(\\eqref{eq:ch5_thermal_gov_disc3}\\), and \\(\\eqref{eq:ch5_thermal_gov_disc4}\\) into equation \\(\\eqref{eq:ch5_thermal_gov_disc1}\\) and skipping the high order polynomial terms, we have

    \\[ (\\dfrac{[\\mathbf{M}]_{t=t_{0+\\triangle t}}^{(i)}}{\\triangle t}+\\dfrac{\\partial[\\mathbf{M}]_{t=t_{0+\\triangle t}}^{(i)}\\{T\\}_{t=t_{0}+\\text{\\triangle t}}^{(i)}}{\\partial\\{T\\}_{t=t_{0}+\\triangle t}^{(i)}}\\dfrac{\\{T\\}_{t=t_{0}+\\triangle t}^{(i)}-\\{T\\}_{t=t0}}{\\triangle t}+\\dfrac{\\partial[\\mathbf{K}]_{t=t_{0}+\\triangle t}^{(i)}\\{T\\}_{t=t_{0}+\\triangle t}^{(i)}}{\\partial\\{T\\}_{t=t_{0}+\\triangle t}^{(i)}})\\{\\triangle T\\}_{t=t_{0}+\\triangle t}^{(i)}\\\\=\\{F\\}_{t=t_{0}+\\triangle t}-[\\mathbf{M}]_{t=t_{0}+\\triangle t}^{(i)}\\dfrac{\\{T\\}_{t=t_{0}+\\triangle t}^{(i)}-\\{T\\}_{t=t_{0}}}{\\triangle t}-[\\mathbf{K}]_{t=t_{0}+\\triangle t}^{(i)}\\{T\\}_{t=t_{0}+\\triangle t}^{(i)} \\]

    Furthermore, an approximation evaluation for the left hand side factor is given below,

    \\[ [\\mathbf{K}^{*}]^{(i)}=\\dfrac{[M]_{t=t_{0}+\\triangle t}^{(i)}}{\\triangle t}+\\dfrac{\\partial[\\mathbf{K}]_{t=t_{0}+\\triangle t}^{(t)}}{\\partial\\{T\\}_{t=t_{0}+\\triangle t}^{(i)}}\\{T\\}_{t=t_{0}+\\triangle t}^{(i)}=\\dfrac{[M]_{t=t_{0}+\\triangle t}^{(i)}}{\\triangle t}+[\\mathbf{K}_{T}]_{t=t_{0}+\\triangle t}^{(i)} \\]

    where \\([\\mathbf{K}_{T}]_{t=t_{0}+\\triangle t}^{(i)}\\) tangent stiffness matrix.

    Eventually, the temperature at time \\(t=t_{0}+\\triangle t\\) can be calculated by iterative solver using the following scheme:

    \\[ \\begin{array}{cc} [\\mathbf{K}^{*}]^{(i)}\\{T\\}_{t=t_{0}+\\triangle t}^{(i)}=\\{F\\}_{t=t_{0}+\\triangle t}-[\\mathbf{M}]_{t=t_{0}+\\triangle t}^{(i)}\\dfrac{\\{T\\}_{t=t_{0}+\\triangle t}^{(i)}-\\{T\\}_{t=t_{0}}}{\\triangle t}-[\\mathbf{K}]_{t=t_{0}+\\triangle t}^{(i)}\\\\ \\{T\\}_{t=t_{0}+\\triangle t}^{(i+1)}=\\{T\\}_{t=t_{0}+\\triangle t}^{(i)}+\\{\\triangle T\\}_{t=t_{0}+\\triangle t}^{(i)} \\end{array} \\]

    For the steady state analysis, the iteration algorithm is given below

    \\[ \\begin{array}{cc} [\\mathbf{K}_{T}]^{(i)}\\{\\triangle T\\}_{t=\\infty}^{(i)}=\\{F\\}_{t=\\infty}-[\\mathbf{K}_{T}]^{(i)}\\{\\triangle T\\}_{t=\\infty}^{(i)}\\\\ \\{T\\}_{t=\\infty}^{(i+1)}=\\{T\\}_{t=\\infty}^{(i)}+\\{\\triangle T\\}_{t=\\infty}^{(i)} \\end{array} \\]

    Since the implicit time solver is applied in the program, the selection of incremental time \\(\\triangle t\\) is relatively flexible. However, if the magnitude of \\(\\triangle t\\) is too large, the convergence frequency will be decreased in the iterative computation. The program contains automatic incremental functions to monitor the size of the residual vectors during the iterations. As the convergence rate becomes slow, the incremental time \\(\\triangle t\\) is automatically reduced. When the convergence rate becomes high, the program increases the incremental time \\(\\triangle t\\). Doing this automatic scheme can improve the numerical performance and saving computational time.

    "},{"location":"welsim/theory/transient/","title":"Structures with transient analysis","text":"

    The time integration method applied in structural transient analysis is described in the section.

    "},{"location":"welsim/theory/transient/#formulation-of-implicit-method","title":"Formulation of implicit method","text":"

    In the direct time integration, the equation of motion can be expressed as follows

    \\[ \\begin{align} \\label{eq:ch5_time_solver_imp1} \\mathbf{M}(t+\\triangle t)\\ddot{\\mathbf{U}}(t+\\triangle t)+\\mathbf{C}(t+\\triangle t)\\dot{\\mathbf{U}}(t+\\triangle t)+\\mathbf{Q}(t+\\triangle t)=\\mathbf{F}(t+\\triangle t) \\end{align} \\]

    where \\(\\mathbf{M}\\) and \\(\\mathbf{C}\\) is the mass matrix and damping matrix, respectively. The \\(\\mathbf{Q}\\) and \\(\\mathbf{F}\\) are the internal force vector, and external force vector, respectively. Note that, the mass density is consistent in the structural analysis, thus the mass matrix keep constants regardless of the deformation in non-linearity.

    In the Newmark-\\(\\beta\\) method, the displacement, velocity, and acceleration at the each time incremental \\(\\triangle t\\) are

    \\[ \\begin{align} \\label{eq:ch5_time_solver_imp2} \\dot{\\mathbf{U}}(t+\\triangle t)=\\dfrac{\\gamma}{\\beta\\triangle t}\\triangle\\mathbf{U}(t+\\triangle t)-\\dfrac{\\gamma-\\beta}{\\beta}\\dot{\\mathbf{U}}(t)-\\triangle t\\dfrac{\\gamma-2\\beta}{2\\beta}\\ddot{\\mathbf{U}}(t) \\end{align} \\] \\[ \\begin{align} \\label{eq:ch5_time_solver_imp3} \\ddot{\\mathbf{U}}(t+\\triangle t)=\\dfrac{\\text{1}}{\\beta\\triangle t^{2}}\\triangle\\mathbf{U}(t+\\triangle t)-\\dfrac{1}{\\beta\\triangle t}\\dot{\\mathbf{U}}(t)-\\dfrac{1-2\\beta}{2\\beta}\\ddot{\\mathbf{U}}(t) \\end{align} \\]

    where \\(\\gamma\\) and \\(\\beta\\) are time solver parameters. Given the specific values, the numerical algorithm becomes linear acceleration method, or the trapezoid rule.

    \\[ \\gamma=\\frac{1}{2},\\thinspace\\beta=\\frac{1}{6},\\quad\\mathrm{Linear}\\thinspace\\mathrm{acceleration\\thinspace\\mathrm{method}} \\] \\[ \\gamma=\\frac{1}{2},\\thinspace\\beta=\\frac{1}{4},\\quad\\mathrm{Trapezoid}\\thinspace\\mathrm{rule} \\]

    substituting equations \\(\\eqref{eq:ch5_time_solver_imp2}\\) and \\(\\eqref{eq:ch5_time_solver_imp3}\\) into equation \\(\\eqref{eq:ch5_time_solver_imp1}\\), the following equation can be acquired

    \\[ \\begin{array}{ccc} (\\dfrac{1}{\\beta\\triangle t^{2}}\\mathbf{M}+\\dfrac{\\gamma}{\\beta\\triangle t}\\mathbf{C}+\\mathbf{K})\\triangle\\mathbf{U}(t+\\triangle t) & = & \\mathbf{F}(t+\\triangle t)-\\mathbf{Q}(t+\\triangle t)\\\\ & + & \\dfrac{1}{\\beta\\triangle t}\\mathbf{\\mathbf{M}\\dot{\\mathbf{U}}}(t)+\\dfrac{1-2\\beta}{2\\beta}\\mathbf{M}\\ddot{\\mathbf{U}}(t)+\\dfrac{\\gamma-\\beta}{\\beta}\\mathbf{C}\\dot{\\mathbf{U}}(t)\\\\ & + & \\triangle t\\dfrac{\\gamma-2\\beta}{2\\beta}\\mathbf{C}\\ddot{\\mathbf{U}}(t) \\end{array} \\]

    when we use linear stiffness matrix \\(\\mathbf{K}_{L}\\) for a linear problem, the equation above becomes \\(\\mathbf{Q}(t+\\triangle t)=\\mathbf{K}_{L}\\mathbf{U}(t+\\triangle t)\\). Substituting this term into the equation (), we have

    \\[ \\begin{array}{ccc} \\{\\mathbf{M}(-\\dfrac{1}{(\\triangle t)^{2}\\beta}\\mathbf{U}(t)-\\dfrac{1}{(\\triangle t)\\beta}\\dot{\\mathbf{U}}(t)-\\dfrac{1-2\\beta}{2\\beta}\\ddot{\\mathbf{U}}(t))\\\\ +\\mathbf{C}(-\\dfrac{\\gamma}{(\\triangle t)\\beta}\\mathbf{U}(t)+(1-\\dfrac{\\gamma}{\\beta})\\dot{\\mathbf{U}}(t)+\\triangle t\\dfrac{2\\beta-\\gamma}{2\\beta}\\ddot{\\mathbf{U}}(t))\\}\\\\ +\\{\\dfrac{1}{(\\triangle t)^{2}\\beta}\\mathbf{M}+\\dfrac{\\gamma}{(\\triangle t)\\beta}\\mathbf{C}+\\mathbf{K}_{L}\\}\\mathbf{U}(t+\\triangle t) & = & \\mathbf{F}(t+\\triangle t) \\end{array} \\]

    In the analysis practice, the acceleration and velocity boundary conditions are imposed. Then the displacement of the following equation can be derived from equation \\(\\eqref{eq:ch5_time_solver_imp1}\\).

    \\[ u_{is}(t+\\triangle t)=u_{is}(t)+\\triangle t\\dot{u}_{is}(t)+(\\triangle t)^{2}(\\frac{1}{2}-\\beta)\\ddot{u}_{is}(t+\\triangle t) \\]

    where \\(u_{is}(t+\\triangle t)\\) is the nodal displacement at time \\(t+\\triangle t\\), \\(\\dot{u}{}_{is}(t+\\triangle t)\\) is the nodal velocity, \\(\\ddot{u}{}_{is}(t+\\triangle t)\\) is the nodal acceleration, i is the degree of freedom per node, s is the node number.

    The mass and damping terms are treated as follows

    1. The lumped mass matrix is used at most of cases in this program.
    2. The damping matrix is treated using Rayleigh algorithm \\(\\mathbf{C}=R_{m}\\mathbf{M}+R_{k}\\mathbf{K}_{L}\\).
    "},{"location":"welsim/theory/transient/#formulation-of-explicit-method","title":"Formulation of explicit method","text":"

    This section discuss how the explicit time solver is formulation to solve the governing equation below

    \\[ \\begin{align} \\label{eq:ch5_time_solver_exp1} \\mathbf{M}\\ddot{\\mathbf{U}}(t)+\\mathbf{C}\\text{(t)}\\dot{\\mathbf{U}(t)+\\mathbf{Q}(t)=\\mathbf{F}(t)} \\end{align} \\]

    where the displacement at the time \\(t+\\triangle t\\) and \\(t-\\triangle t\\) can be expressed by the Taylor's expansion at time t with the second order truncation.

    \\[ \\begin{align} \\label{eq:ch5_time_solver_exp2} \\mathbf{U}(t+\\triangle t)=\\mathbf{U}(t)+\\dot{\\mathbf{U}}(t)(\\triangle t)+\\dfrac{1}{2!}\\ddot{\\mathbf{U}}(t)(\\triangle t)^{2} \\end{align} \\] \\[ \\begin{align} \\label{eq:ch5_time_solver_exp3} \\mathbf{U}(t-\\triangle t)=\\mathbf{U}(t)-\\dot{\\mathbf{U}}(t)(\\triangle t)+\\dfrac{1}{2!}\\ddot{\\mathbf{U}}(t)(\\triangle t)^{2} \\end{align} \\]

    Differentiating equations \\(\\eqref{eq:ch5_time_solver_exp2}\\) and \\(\\eqref{eq:ch5_time_solver_exp3}\\), we have

    \\[ \\begin{align} \\label{eq:ch5_time_solver_exp4} \\dot{\\mathbf{U}}(t)=\\dfrac{1}{2\\triangle t}(\\mathbf{U}(t+\\triangle t)-\\mathbf{U}(t-\\triangle t)) \\end{align} \\] \\[ \\begin{align} \\label{eq:ch5_time_solver_exp5} \\ddot{\\mathbf{U}}(t)=\\dfrac{1}{(\\triangle t)^{2}}(\\mathbf{U}(t+\\triangle t)-2\\mathbf{U}(t)+\\mathbf{U}(t-\\triangle t)) \\end{align} \\]

    Substituting equations \\(\\eqref{eq:ch5_time_solver_exp4}\\) and \\(\\eqref{eq:ch5_time_solver_exp5}\\) into \\(\\eqref{eq:ch5_time_solver_exp1}\\), we have

    \\[ (\\dfrac{1}{\\triangle t^{2}}\\mathbf{M}+\\dfrac{1}{2\\triangle t}\\mathbf{C})\\mathbf{U}(t+\\triangle t)=\\mathbf{F}(t)-\\mathbf{Q}(t)-\\dfrac{1}{\\triangle t^{2}}\\mathbf{M}[2\\mathbf{U}(t)-\\mathbf{U}(t-\\triangle t)]-\\dfrac{1}{2\\triangle t}\\mathbf{CU}(t-\\triangle t) \\]

    For the linear problem, we also have condition \\(\\mathbf{Q}(t)=\\mathbf{K}_{L}\\mathbf{U}(t)\\) for equation. Finally, the displacement at \\(t+\\triangle t\\) is:

    \\[ \\mathbf{U}(t+\\triangle t)=\\dfrac{1}{(\\frac{1}{\\triangle t^{2}}\\mathbf{M}+\\frac{1}{2\\triangle t}\\mathbf{C})}\\{\\mathbf{F}(t)-\\mathbf{Q}(t)-\\dfrac{1}{\\triangle t^{2}}\\mathbf{M}[2\\mathbf{U}(t)-\\mathbf{U}(t-\\triangle t)]-\\dfrac{1}{2\\triangle t}\\mathbf{C}(t-\\triangle t)\\mathbf{U}\\} \\]"},{"location":"welsim/users/analysistypes/","title":"Physics and analysis types","text":"

    WELSIM supports several types of finite element analyses. This section describes those analysis types that you can perform in the WELSIM user interface.

    "},{"location":"welsim/users/analysistypes/#static-structural-analysis","title":"Static structural analysis","text":"

    As one of the most widely used analysis types, a static structural analysis discloses the structural displacements, stresses, strains, and forces caused by loads or other mechanical effects. In this static analysis, the constant loading and response are assumed.

    The static structural analysis can be either linear or nonlinear. The non-linearity can be introduced by the large deformations, in-elasticity, contact, hyperelasticity, etc. For the nonlinear problem, it is recommended to set multiple substeps in the Study Settings.

    "},{"location":"welsim/users/analysistypes/#conducting-a-static-structural-analysis","title":"Conducting a static structural analysis","text":"

    The following lists the general and specifics steps in conducting static structural analysis:

    1. Creating analysis environment: In the Properties View of the FEM Project object, set the Physics Type to Structural and Analysis Type to Static. Since the static structural analysis is the default analysis type, you do not need to change these properties if the analysis is newly created. See Creating Analysis Environment for details.

    2. Defining materials: The material properties can be either linear or nonlinear. You must define the sufficient properties that are required in the solving process. See Defining Materials for details.

    3. Specifying geometries: See Specifying Geometries for details.

    4. Defining part behaviors: The Structure Type property of the Part object determines the successive meshing and solving algorithms, the default setting is Solid. You need to change this property value accordingly if the geometry is Shell or other types. See Defining Part Behaviors for details.

    5. Setting bonnections: Optional. Contacts are supported in a static structural analysis. See Setting Connections for details.

    6. Applying mesh: It is recommended to generate Tet10 elements for Solid analysis and the Tri6 element for the Shell analysis. See Applying Mesh for details.

    7. Configuring study settings: You usually do not need to change these settings for simple linear analyses. For the complex analyses such as nonlinear models, the analysis controls you can tune: Step Controls in Study object, Substep Controls and Nonlinear Controls in Study Settings object. See Configuring Study Settings for details.

    8. Setting up boundary conditions: For a static structural analysis, the applicable boundary conditions are Fixed Supported, Fixed Rotation, Displacement, Force, and Pressure. The following body conditions are supported: Body Force, Acceleration, Earth Gravity, and Rotational Velocity. See Setting up Boundary Conditions for details.

    9. Solving: Output window continuously updates messages from the solvers and provides information on the numerical steps in solving the given problem. The convergence data is also explicitly shown in the Output window. See Solving for details.

    10. Evaluating results: For a static structural analysis, the applicable results are Deformations, Stresses, Strains, Rotations, Reaction Forces, and Reaction Moments. The Tabular Data and Chart windows display the maximum and minimum result values along the time/set number. See Evaluating Results for details.

    "},{"location":"welsim/users/analysistypes/#transient-structural-analysis","title":"Transient structural analysis","text":"

    In the transient structural analysis, the dynamic response is updated and is a function of time. You can impose general time-dependent boundary conditions on the model and obtain the time-varying responded to these transient loads or constraints. The inertia or damping effects play important roles in this analysis type, if the inertia and damping effects are minimal, you could use the static analysis instead.

    The transient structural analysis can be either linear or nonlinear. The non-linearity can be introduced by the large deformations, inelasticity, contact, hyperelasticity, etc. For the nonlinear problem, it is recommended to set multiple substeps for each load step in the Study Settings.

    "},{"location":"welsim/users/analysistypes/#conducting-a-transient-structural-analysis","title":"Conducting a transient structural analysis","text":"

    The following lists the general and specifics steps in conducting transient structural analysis:

    1. Creating analysis environment: In the Properties View of the FEM Project object, set the Physics Type to Structural and Analysis Type to Transient. You can choose either Implicit or Explicit time integration solver. See Creating Analysis Environment for details.

    2. Defining materials: The material properties can be either linear or nonlinear. You must define the sufficient properties that are required in the solving process. See Defining Materials for details.

    3. Specifying geometries: See Specifying Geometries for details.

    4. Defining part behaviors: The Structure Type property of the Part object determines the successive meshing and solving algorithms, and the default setting is Solid. You need to change this property value accordingly if the geometry is Shell or other types. See Defining Part Behaviors for details.

    5. Setting connections: Optional. Contacts are supported in a transient structural analysis. See Setting Connections for details.

    6. Applying mesh: It is recommended to generate Tet10 elements for Solid analysis and the Tri6 element for the Shell analysis. See Applying Mesh for details.

    7. Configuring study settings: You usually do not need to change these settings for simple linear analyses. For the complex analyses such as nonlinear models, the analysis controls you can tune are Step Controls in Study object, Substep Controls and Nonlinear Controls in Study Settings object. See Configuring Study Settings for details.

    8. Defining initial conditions: Optional. In the transient structural analysis, you can define the initial status of boundary and body conditions. The Initial Status property provides two options: None and Equal to Step 1. The default option None set the initial value to zero, the option Equal to Step 1 set the initial value to that of step 1. See Defining Initial Conditions for details.

    9. Setting up boundary conditions: For the transient structural analysis, the applicable boundary conditions are Fixed Supported, Fixed Rotation, Displacement, Force, Pressure, Velocity, and Acceleration. The following body conditions are supported: Body Force, Acceleration, Earth Gravity, and Rotational Velocity. See Setting up Boundary Conditions for details.

    10. Solving: Output window continuously updates messages from the solvers and provides information on the numerical steps in solving the given problem. The convergence data is also explicitly shown in the Output window. See Solving for details.

    11. Evaluating results: For the transient structural analysis, the applicable results are: Deformations, Stresses, Strains, Rotations, Reaction Forces, Reaction Moments, Velocity, and Acceleration. The Tabular Data and Chart windows display the maximum and minimum result values along the time/set number. See Evaluating Results for details.

    "},{"location":"welsim/users/analysistypes/#modal-analysis","title":"Modal analysis","text":"

    The modal analysis investigates the vibration characteristics of a structure or component. You can obtain the natural frequencies and mode shapes, which serve as a starting pointing for dynamic analysis of the target structure.

    "},{"location":"welsim/users/analysistypes/#conducting-a-modal-structural-analysis","title":"Conducting a modal structural analysis","text":"

    The following lists the general and specifics steps in conducting modal structural analysis:

    1. Creating analysis environment: From the properties view of FEM Project object, set the Physics Type to Structural and Analysis Type to Modal. See Creating Analysis Environment for details.

    2. Defining materials: The material properties can be either linear or nonlinear. However, the nonlinearity in the modal analysis is ignored due to the characteristics of eigen solver algorithms. You must define the sufficient properties that are required in the solving process. For example, the mass density parameter must be defined. See Defining Materials for details.

    3. Specifying geometries: See Specifying Geometries for details.

    4. Defining part behaviors: The Structure Type property of the Part object determines the successive meshing and solving algorithms, and the default setting is Solid. You need to change this property value accordingly if the geometry is Shell or other types. See Defining Part Behaviors for details.

    5. Setting connections: Optional. The Bonded Contacts are supported in a modal structural analysis. See Setting Connections for details.

    6. Applying mesh: It is recommended to generate the Tet10 elements for Solid analysis and the Tri6 element for the Shell analysis. See Applying Mesh for details.

    7. Configuring study settings: You typically do not need to change these settings for simple modal analyses. The default number of modes is 6, increasing this value yields to calculate more natural frequency modes, while it requires more computational resources. See Configuring Study Settings for details.

    8. Setting up boundary conditions: For the modal structural analysis, the applicable boundary conditions are Fixed Supported, Fixed Rotation, zero Displacement. The following body conditions are supported: Body Force, Acceleration, Earth Gravity, and Rotational Velocity. Note that only constraint-type boundaries are applicable in modal analysis. See Setting up Boundary Conditions for details.

    9. Solving: Output window continuously updates messages from the solvers and provides information on the numerical steps in solving the given problem. The convergence data is also explicitly shown in the Output window. See Solving for details.

    10. Evaluating results: For the modal structural analysis, the applicable results are Deformations, and Frequencies. Note that deformation results here are just relative quantities intended to show the shape modes. The Tabular Data and Chart windows display the frequencies and related mode numbers. See Evaluating Results for details.

    "},{"location":"welsim/users/analysistypes/#steady-state-thermal-analysis","title":"Steady-state thermal analysis","text":"

    In the steady-state thermal analysis, you can determine the temperatures in objects that are impacted by the time-invariant thermal loads. Users are recommended to perform a steady-state analysis before conducting a transient study in a complex model.

    The static thermal analysis can be either linear or nonlinear. The nonlinearity can be introduced by the temperature-depend material properties, or radiation and convection coefficient. For the nonlinear problem, it is recommended to set multiple substeps in the Study Settings.

    "},{"location":"welsim/users/analysistypes/#conducting-a-static-structural-analysis_1","title":"Conducting a static structural analysis","text":"

    The following lists the general and specifics steps in conducting static structural analysis:

    1. Creating analysis environment: In the Properties View of the FEM Project object, set the Physics Type to Thermal and Analysis Type to Static. See Creating Analysis Environment for details.

    2. Defining materials: The material properties can be either linear or nonlinear. You must define the sufficient properties that are required in the solving process. See Defining Materials for details.

    3. Specifying geometries: See Specifying Geometries for details.

    4. Defining part behaviors: The Structure Type property of the Part object determines the successive meshing and solving algorithms, and the default setting is Solid. You need to change this property value accordingly if the geometry is Shell or other types. See Defining Part Behaviors for details.

    5. Setting connections: Optional. The steady-state thermal analysis supports the Bonded Contact. See Setting Connections for details.

    6. Applying mesh: It is recommended to generate the Tet10 elements for Solid analysis, and the Tri6 element for the Shell analysis. See Applying Mesh for details.

    7. Configuring study settings: You usually do not need to change these settings for simple linear analyses. For the complex analysis such as nonlinear models, the analysis controls you can tune are Step Controls in Study object, Substep Controls and Nonlinear Controls in Study Settings object. See Configuring Study Settings for details.

    8. Setting up boundary conditions: In the steady-state thermal analysis, the applicable boundary conditions are: Temperature, Heat Flux, Convection, and Radiation. See Setting up Boundary Conditions for details.

    9. Solving: Output window continuously updates messages from the solvers and provides information on the numerical steps in solving the given problem. The convergence data is also explicitly shown in the Output window. See Solving for details.

    10. Evaluating results: In steady-state thermal analysis, the applicable results are Temperature. The Tabular Data and Chart windows display the maximum and minimum result values along the time/set number. See Evaluating Results for details.

    "},{"location":"welsim/users/analysistypes/#transient-thermal-analysis","title":"Transient thermal analysis","text":"

    In the transient thermal analysis, you can obtain the temperatures of objects that vary over time. Many heat transfer applications such as coiling or quenching problems, and so on involve transient thermal analysis. The transient thermal analysis can be either linear or nonlinear. The nonlinearity can be introduced by the temperature-dependent material properties or convection and radiation boundary conditions. For the nonlinear problem, it is recommended to define multiple substeps for each load step in the Study Settings.

    "},{"location":"welsim/users/analysistypes/#conducting-a-transient-thermal-analysis","title":"Conducting a transient thermal analysis","text":"

    The following lists the general and specifics steps in conducting transient thermal analysis:

    1. Creating analysis environment: In the Properties View of the FEM Project object, set the Physics Type to Thermal and Analysis Type to Transient. See Creating Analysis Environment for details.

    2. Defining materials: The material properties can be either linear or nonlinear. You must define the sufficient properties that are required in the solving process. See Defining Materials for details.

    3. Specifying geometries: See Specifying Geometries for details.

    4. Defining part behaviors: The Structure Type property of the Part object determines the successive meshing and solving algorithms, and the default setting is Solid. You need to change this property value accordingly if the geometry is Shell or other types. See Defining Part Behaviors for details.

    5. Setting connections: Optional. In the transient thermal analysis, the Bonded Contact is supported. See Setting Connections for details.

    6. Applying mesh: It is recommended to generate the Tet10 elements for Solid analysis and the Tri6 element for the Shell analysis. See Applying Mesh for details.

    7. Configuring study settings: You usually do not need to change these settings for simple linear analyses. For the complex analysis such as nonlinear models, the analysis controls you can tune are Step Controls in Study object, Substep Controls and Nonlinear Controls in Study Settings object. See Configuring Study Settings for details.

    8. Setting up boundary conditions: In the transient thermal analysis, the applicable boundary conditions are: Temperature, Heat Flux, Convection, and Radiation. See Setting up Boundary Conditions for details.

    9. Defining initial conditions: You can define the global initial temperature condition for the analysis. In the transient thermal analysis, you can define the initial status of boundary and body conditions. The Initial Status property provides two options: None and Equal to Step 1. The default option None set the initial value to zero, the option Equal to Step 1 set the initial value to that of step 1. See Defining Initial Conditions for details.

    10. Solving: Output window continuously updates messages from the solvers and provides information on the numerical steps in solving the given problem. The convergence data is also explicitly shown in the Output window. See Solving for details.

    11. Evaluating results: In the transient thermal analysis, the applicable results are Temperature. The Tabular Data and Chart windows display the maximum and minimum result values along the time/set number. See Evaluating Results for details.

    "},{"location":"welsim/users/analysistypes/#electrostatic-analysis","title":"ElectroStatic Analysis","text":"

    The electrostatic analysis can be applied to determine the distribution of electric potential in a conducting body under voltage or current conditions. You can obtain the solution results such as voltage, electric field, etc. The electrostatic analysis supports the single body analysis.

    An electrostatic analysis could be either linear or nonlinear. The electric field dependent material properties can introduce the nonlinearity. For the nonlinear problem, it is recommended to set multiple substeps in the Study Settings.

    "},{"location":"welsim/users/analysistypes/#conducting-an-electrostatic-analysis","title":"Conducting an electrostatic analysis","text":"

    The following lists the general and specifics steps in conducting electrostatic analysis:

    1. Creating analysis environment: In the Properties View of the FEM Project object, set the Physics Type to Electromagnetic and Analysis Type to ElectroStatic. See Creating Analysis Environment for details.

    2. Defining materials: The material properties can be either linear or nonlinear. You must define the sufficient properties that are required in the solving process. See Defining Materials for details.

    3. Specifying geometries: See Specifying Geometries for details.

    4. Defining part behaviors: The Structure Type property of the Part object determines the successive meshing and solving algorithms, and the default setting is Solid. An electrostatic analysis only supports the Solid geometry type. See Defining Part Behaviors for details.

    5. Applying mesh: It is recommended to generate Tet10 elements for Solid analysis. See Applying Mesh for details.

    6. Configuring study settings: You usually do not need to change these settings for simple linear analyses. For the complex analysis such as nonlinear models, the analysis controls you can tune are Step Controls in Study object, Substep Controls and Nonlinear Controls in Study Settings object. See Configuring Study Settings for details.

    7. Setting up boundary conditions: In the electrostatic analysis, the applicable boundary conditions are Ground, Voltage, Symmetry, Zero Charge, Surface Charge Density, and Electric Displacement. See Setting up Boundary Conditions for details.

    8. Solving: Output window continuously updates messages from the solvers and provides information on the numerical steps in solving the given problem. The convergence data is also explicitly shown in the Output window. See Solving for details.

    9. Evaluating results: In the electrostatic analysis, the applicable results are Voltage, Electric Field, Electric Displacement, and Energy Density. The Tabular Data and Chart windows display the maximum and minimum result values along the time/set number. See Evaluating Results for details.

    "},{"location":"welsim/users/analysistypes/#magnetostatic-analysis","title":"MagnetoStatic analysis","text":"

    The magnetostatic analysis determines the magnetic field in and around a magnetic body.

    A magnetostatic analysis requires the medium such as air surrounding the geometry be included as part of the entire simulation domain. In many cases, the full model can be reduced to the symmetric model by applying a symmetric boundary condition on the symmetric surface.

    "},{"location":"welsim/users/analysistypes/#conducting-a-magnetostatic-analysis","title":"Conducting a magnetostatic analysis","text":"

    The following lists the general and specifics steps in conducting magnetostatic analysis:

    1. Creating analysis environment: In the Properties View of the FEM Project object, set the Physics Type to Electromagnetic and Analysis Type to MagnetoStatic. See Creating Analysis Environment for details.

    2. Defining materials: The material properties can be either linear or nonlinear. You must define the sufficient properties that are required in the solving process. See Defining Materials for details.

    3. Specifying geometries: See Specifying Geometries for details.

    4. Defining part behaviors: The Structure Type property of the Part object determines the successive meshing and solving algorithms, and the default setting is Solid. A magnetostatic analysis only supports the Solid geometry type. See Defining Part Behaviors for details.

    5. Applying mesh: It is recommended to generate the Tet10 elements for magnetostatic analysis. See Applying Mesh for details.

    6. Configuring study settings: You usually do not need to change these settings for simple linear analyses. For the complex analysis such as nonlinear models, the analysis controls you can tune are Step Controls in Study object, Substep Controls and Nonlinear Controls in Study Settings object. See Configuring Study Settings for details.

    7. Setting up boundary conditions: In the magnetostatic analysis, the applicable boundary conditions are Insulating, Symmetry, Magnetic Potential, and Magnetic Flux Density. See Setting up Boundary Conditions for details.

    8. Solving: Output window continuously updates messages from the solvers and provides information on the numerical steps in solving the given problem. The convergence data is also explicitly shown in the Output window. See Solving for details.

    9. Evaluating results: In the magnetostatic analysis, the applicable results are Magnetic Potential, Magnetic Field, Magnetic Induction Field, and Energy Density. The Tabular Data and Chart windows display the maximum and minimum result values along the time/set number. See Evaluating Results for details.

    The following describes the widget components in the material editor interface:

    • Library Outline Tab: Display the available pre-defined material data for you to select. All materials are classified into several categories including General Materials, Nonlinear Materials, Hyperelastic Materials, Thermal Materials, Electromagnetic Materials, and Acoustic Materials.

    • Build Outline Tab: Display the available properties for you to add to the material. All properties are classified into several categories including Baisc, Linear Elastic, Hyper-elastic, Plastic, Creep, Visco-elastic, and Electromagnetic. The toggled properties are added to the material data and shown in the Property Pane.

    • Material Properties View Pane: Displays the properties of the selected properties items. You can modify the values of the properties. Click OK button to close the spreadsheet and save the material data into the Material Object.

    "},{"location":"welsim/users/analysistypes/#library-outline-tab","title":"Library outline tab","text":"

    The Library Outline Tab shows an outline of the contents of the selectable material sources. You can directly load a material data from this pre-defined source by one of the methods below:

    • Double click a material entry.
    • Select a material entry, and press the Import button.
    "},{"location":"welsim/users/bcs/","title":"Setting up boundary conditions","text":"

    Boundary or Body conditions are essential conditions for the most analyses. A boundary condition is imposed on the boundary of the geometry. For example, a displacement condition imposed on the face of the 3D solid geometry. A body condition is imposed on the entire body. For example, the rotational velocity imposed on the body.

    Each analysis type has its boundary and body conditions. These boundary and body conditions will be described separately regarding structural, thermal, and electromagnetic analyses.

    Note

    The boundary condition here includes both boundary and body conditions.

    "},{"location":"welsim/users/bcs/#add-boundary-condition","title":"Add boundary condition","text":"

    Adding boundary and body conditions in WELSIM application is straightforward. The following describes the adding method and its behaviors.

    • Adding new conditions from the Menu.
    • Adding new conditions from the Toolbar.
    • Right clicking on the Study or its children objects and selecting the condition item from the context menu.
    "},{"location":"welsim/users/bcs/#scoping-method","title":"Scoping method","text":"

    The scoping method supports the geometry selection, and you can select the target geometry entities and set to the properties. A voltage boundary condition scoping is illustrated in Figure\u00a0below. You can select multiple geometry entities such as bodies, faces, edges, or vertices to a Geometry property, but all these entities must be the same type.

    "},{"location":"welsim/users/bcs/#tips-in-geometry-selection","title":"Tips in geometry selection","text":"

    The following describes the tips in selecting geometries for boundary and body conditions:

    • You can first select geometries and then apply to Geometry Selection property, or you can click the Geometry Selection property then select the geometries from the Graphics window.
    • You can select multiple entities by pressing the Ctrl or Shift key.
    • For the body conditions, you only select the volumes or bodies.
    • For the boundary conditions, you only can select the faces or edges.
    "},{"location":"welsim/users/bcs/#types-of-boundary-conditions","title":"Types of boundary conditions","text":"

    This section describes the boundary conditions that are provided in the WELSIM application.

    "},{"location":"welsim/users/bcs/#displacement","title":"Displacement","text":"

    Displacement determines the spatial motion of one or more faces, edges, or vertices for their original location. This boundary condition is available for all structural analysis.

    "},{"location":"welsim/users/bcs/#boundary-condition-application","title":"Boundary condition application","text":"

    To apply Displacement:

    1. On the menu or toolbar of the Structural, click Displacement button. Or, right-click the Study object in the tree and select Impose Conditions > Displacement.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Displacement components on X, Y, and Z directions.
    "},{"location":"welsim/users/bcs/#properties-view","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Displacement vector: Component field allows you to input displacement values on X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#displacement-example","title":"Displacement example","text":"

    Displacement boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#fixed-support","title":"Fixed support","text":"

    Fixed Support is a special case of Displacement boundary condition. It essentially sets the displacement to zero at the scoped geometries. This boundary condition is available for all structural analysis.

    "},{"location":"welsim/users/bcs/#boundary-condition-application_1","title":"Boundary condition application","text":"

    To apply the Fixed Support:

    1. On the menu or toolbar of the Structural, click Fixed Support button. Or, right-click the Study object in the tree and select Impose Conditions > Fixed Support.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Determine the constraint status on X, Y, and Z directions.
    "},{"location":"welsim/users/bcs/#properties-view_1","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Constraint status: Component field allows you to set the constraints on X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#fixed-support-example","title":"Fixed support example","text":"

    Fixed support boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#fixed-rotation","title":"Fixed rotation","text":"

    Fixed Rotation constrains the rotation of the scoped geometry entities. This boundary condition is only available for Shell structural analysis.

    "},{"location":"welsim/users/bcs/#boundary-condition-application_2","title":"Boundary condition application","text":"

    To apply Fixed Rotation: 1. On the menu or toolbar of the Structural, click Fixed Rotation button. Or, right-click the Study object in the tree and select Impose Conditions > Fixed Rotation. 2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window. 3. Determine the constraint status on X, Y, and Z directions.

    "},{"location":"welsim/users/bcs/#properties-view_2","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Constraint Status: Component field allows you to set the constraints on X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#fixed-rotation-example","title":"Fixed Rotation example","text":"

    Fixed Rotation boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#pressure","title":"Pressure","text":"

    A pressure boundary condition imposes a constant normal pressure to one or more surfaces. A positive pressure acts into the surface, which compresses the scoped body. Similarly, a negative pressure pulling away from the scoped surface. This boundary condition is available for all structural analysis.

    "},{"location":"welsim/users/bcs/#boundary-condition-application_3","title":"Boundary condition application","text":"

    To apply Pressure:

    1. On the menu or toolbar of the Structural, click Pressure button. Or, right-click the Study object in the tree and select Impose Conditions > Pressure.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Input the magnitude of normal pressure. A positive pressure acts into the surface, and a negative pressure pulls away from the surface.
    "},{"location":"welsim/users/bcs/#properties-view_3","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Normal Pressure: Scalar value field allows you to pressure. A positive value indicates a compression pressure, and negative value denotes a tensile pressure.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#pressure-example","title":"Pressure example","text":"

    Pressure boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#force","title":"Force","text":"

    A force boundary condition imposes a constant force to one or more entities, such as surfaces, edges, or vertices. This boundary condition is available for all structural analysis.

    "},{"location":"welsim/users/bcs/#boundary-condition-application_4","title":"Boundary condition application","text":"

    To apply Force:

    1. On the menu or toolbar of the Structural, click Force button. Or, right-click the Study object in the tree and select Impose Conditions>Force.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Force components on X, Y, and Z directions.
    "},{"location":"welsim/users/bcs/#properties-view_4","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Force Vector: Defines the Force component values on X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#force-example","title":"Force example","text":"

    Force boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#velocity","title":"Velocity","text":"

    A velocity boundary condition imposes a constant velocity to one or more entities, such as surfaces, edges, or vertices. This boundary condition is available for transient structural analysis.

    "},{"location":"welsim/users/bcs/#boundary-condition-application_5","title":"Boundary condition application","text":"

    To apply Velocity:

    1. On the menu or toolbar of the Structural, click Velocity button. Or, right-click the Study object in the tree and select Impose Conditions > Velocity.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Velocity components on X, Y, and Z directions.
    "},{"location":"welsim/users/bcs/#properties-view_5","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Velocity Vector: Defines the Velocity component values on X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#velocity-example","title":"Velocity example","text":"

    Velocity boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#acceleration","title":"Acceleration","text":"

    An acceleration boundary condition imposes a constant acceleration to one or more entities, such as surfaces, edges, or vertices. This boundary condition is available for transient structural analysis.

    "},{"location":"welsim/users/bcs/#boundary-condition-application_6","title":"Boundary condition application","text":"

    To apply Acceleration:

    1. On the menu or toolbar of the Structural, click Acceleration button. Or, right-click the Study object in the tree and select Impose Conditions>Acceleration.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Acceleration components on X, Y, and Z directions.
    "},{"location":"welsim/users/bcs/#properties-view_6","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Acceleration Vector: Defines the Acceleration component values on X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#acceleration-example","title":"Acceleration example","text":"

    Acceleration boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#temperature","title":"Temperature","text":"

    A temperature boundary condition imposes a constant temperature to one or more entities, such as surfaces, edges, or vertices. This boundary condition is available for all thermal analysis.

    "},{"location":"welsim/users/bcs/#boundary-condition-application_7","title":"Boundary condition application","text":"

    To apply Temperature:

    1. On the menu or toolbar of the Thermal, click Temperature button. Or, right-click the Study object in the tree and select Impose Conditions>Temperature.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Temperature scalar value.
    "},{"location":"welsim/users/bcs/#properties-view_7","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Temperature: Defines the Temperature value.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#temperature-example","title":"Temperature example","text":"

    Temperature boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#heat-flux","title":"Heat flux","text":"

    A Heat Flux boundary condition imposes a constant flux to one or more entities, such as surfaces, edges, or vertices. This boundary condition is available for all thermal analysis.

    "},{"location":"welsim/users/bcs/#boundary-condition-application_8","title":"Boundary condition application","text":"

    To apply Heat Flux:

    1. On the menu or toolbar of the Thermal, click Heat Flux button. Or, right-click the Study object in the tree and select Impose Conditions>Heat Flux.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Heat Flux scalar value.
    "},{"location":"welsim/users/bcs/#properties-view_8","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Heat Flux: Defines the flux value. A positive flux acts into the boundary, and a negative heat flux acts away from the boundary.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#heat-flux-example","title":"Heat flux example","text":"

    Heat Flux boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#heat-convection","title":"Heat convection","text":"

    A heat convection boundary condition imposes a constant convection onto one or more entities, such as surfaces, edges, or vertices. This boundary condition is available for all thermal analysis.

    "},{"location":"welsim/users/bcs/#boundary-condition-application_9","title":"Boundary condition application","text":"

    To apply Heat Convection:

    1. On the menu or toolbar of the Thermal, click Heat Convection button. Or, right-click the Study object in the tree and select Impose Conditions > Heat Convection.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Convection Coefficient and Ambient Temperature scalar values.
    "},{"location":"welsim/users/bcs/#properties-view_9","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Convection Coefficient: Defines the convection value. A positive convection acts into the boundary, and a negative heat convection acts away from the boundary.
    • Ambient Temperature: Defines the ambient temperature value for the convection condition.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#heat-convection-example","title":"Heat convection example","text":"

    Heat Convection boundary condition is applied in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#heat-radiation","title":"Heat radiation","text":"

    A heat radiation boundary condition imposes a constant radiation onto one or more entities, such as surfaces, edges, or vertices. This boundary condition is available for all thermal analysis.

    "},{"location":"welsim/users/bcs/#boundary-condition-application_10","title":"Boundary condition application","text":"

    To apply Heat Radiation:

    1. On the menu or toolbar of the Thermal, click Heat Radiation button. Or, right-click the Study object in the tree and select Impose Conditions>Heat Radiation.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Radiation Coefficient and Ambient Temperature scalar values.
    "},{"location":"welsim/users/bcs/#properties-view_10","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Emissivity: Defines the radiation coefficient value.
    • Ambient Temperature: Defines the ambient temperature value.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#heat-radiation-example","title":"Heat radiation example","text":"

    Heat Radiation boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#initial-temperature","title":"Initial temperature","text":""},{"location":"welsim/users/bcs/#boundary-condition-application_11","title":"Boundary condition application","text":"

    To apply Initial Temperature:

    1. On the Menu or Toolbar of the Thermal, click Initial Temperature button. Or, right-click the Study object in the tree and select Impose Conditions > Heat Radiation.
    2. Set the Initial Temperature value or use the default value.
    "},{"location":"welsim/users/bcs/#properties-view_11","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Initial temperature: Define initial temperature value.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#initial-temperature-example","title":"Initial temperature example","text":"

    Initial Temperature boundary condition is applied as shown in Figure\u00a0below.

    Note

    Initial Temperature should be added before any other boundary conditions in all kinds of thermal analyses.

    "},{"location":"welsim/users/bcs/#heat-flow","title":"Heat flow","text":""},{"location":"welsim/users/bcs/#boundary-condition-application_12","title":"Boundary condition application","text":"

    To apply Heat Flow:

    1. On the Menu or Toolbar of the Thermal, click Heat Flow button. Or, right-click the Study object in the tree and select Impose Conditions > Heat Flow.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Set the Heat Flow value.
    "},{"location":"welsim/users/bcs/#properties-view_12","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Heat Flow: Define the heat flow value.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#heat-flow-example","title":"Heat flow example","text":"

    Heat Flow boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#perfectly-insulated","title":"Perfectly insulated","text":""},{"location":"welsim/users/bcs/#boundary-condition-application_13","title":"Boundary condition application","text":"

    To apply Perfectly Insulated:

    1. On the Menu or Toolbar of the Thermal, click Heat Flow button. Or, right-click the Study object in the tree and select Impose Conditions > Heat Flow.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    "},{"location":"welsim/users/bcs/#properties-view_13","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#perfectly-insulated-example","title":"Perfectly insulated example","text":"

    Perfectly Insulated boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#voltage","title":"Voltage","text":"

    Voltage determines the electric potential to one or more faces or edges, or vertices. This boundary condition is available for the electrostatic analysis.

    "},{"location":"welsim/users/bcs/#boundary-condition-application_14","title":"Boundary condition application","text":"

    To apply Voltage:

    1. On the menu or toolbar of the Electromagnetic, click Voltage button. Or, right-click the Study object in the tree and select Impose Conditions>Voltage.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Voltage value.
    "},{"location":"welsim/users/bcs/#properties-view_14","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Voltage: Scalar field allows you to input voltage value.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#voltage-example","title":"Voltage example","text":"

    Voltage boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#ground","title":"Ground","text":"

    A Ground boundary condition is a special case of Voltage boundary condition. It essentially sets the voltage to zero at the scoped geometries. This boundary condition is available for the electrostatic analysis.

    "},{"location":"welsim/users/bcs/#boundary-condition-application_15","title":"Boundary condition application","text":"

    To apply Ground:

    1. On the menu or toolbar of the Electromagnetic, click Ground command. Or, right-click the Study object in the tree and select Impose Conditions>Ground.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    "},{"location":"welsim/users/bcs/#properties-view_15","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#ground-example","title":"Ground example","text":"

    Ground boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#symmetry","title":"Symmetry","text":"

    A Symmetry boundary condition defines the symmetric boundary for the scoped geometry. This boundary condition is available for electromagnetic analyses.

    "},{"location":"welsim/users/bcs/#boundary-condition-application_16","title":"Boundary condition application","text":"

    To apply Symmetry:

    1. On the menu or toolbar of the Electromagnetic, click Symmetry button. Or, right-click the Study object in the tree and select Impose Conditions>Symmetry.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    "},{"location":"welsim/users/bcs/#properties-view_16","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#symmetry-example","title":"Symmetry example","text":"

    Symmetry boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#zero-charge","title":"Zero charge","text":"

    A Zero Charge boundary condition defines the zero surface charge for the scoped geometry. This boundary condition is available for electrostatic analysis.

    "},{"location":"welsim/users/bcs/#boundary-condition-application_17","title":"Boundary condition application","text":"

    To apply Zero Charge:

    1. On the menu or toolbar of the Electromagnetic, click Zero Charge button. Or, right-click the Study object in the tree and select Impose Conditions>Zero Charge.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    "},{"location":"welsim/users/bcs/#properties-view_17","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#zero-charge-example","title":"Zero charge example","text":"

    Zero Charge boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#surface-charge-density","title":"Surface charge density","text":"

    A Surface Change Density boundary condition defines the surface charge density for the scoped geometry. This boundary condition is available for electrostatic analysis.

    "},{"location":"welsim/users/bcs/#boundary-condition-application_18","title":"Boundary condition application","text":"

    To apply Surface Charge Density:

    1. On the menu or toolbar of the Electromagnetic, click Surface Charge Density button. Or, right-click the Study object in the tree and select Impose Conditions>Surface Charge Density.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    "},{"location":"welsim/users/bcs/#properties-view_18","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Charge Density: A scalar value field determines the surface charge density on the scoped geometry.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#surface-charge-density-example","title":"Surface charge density example","text":"

    Surface Charge Density boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#electric-displacement","title":"Electric displacement","text":"

    An Electric Displacement boundary condition defines the electric displacement vector for the scoped geometry. This boundary condition is available for electrostatic analysis.

    "},{"location":"welsim/users/bcs/#boundary-condition-application_19","title":"Boundary condition application","text":"

    To apply Electric Displacement:

    1. On the menu or toolbar of the Electromagnetic, click Electric Displacement button. Or, right-click the Study object in the tree and select Impose Conditions>Electric Displacement.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Determine the values of Electric Displacement.
    "},{"location":"welsim/users/bcs/#properties-view_19","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Electric Displacement: Component fields determine the electric displacement on the X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#electric-displacement-example","title":"Electric displacement example","text":"

    Electric Displacement boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#insulating","title":"Insulating","text":"

    An Insulating boundary condition defines the zero magnetic field for the scoped geometry. This boundary condition is available for the magnetic analysis.

    "},{"location":"welsim/users/bcs/#boundary-condition-application_20","title":"Boundary condition application","text":"

    To apply Insulating:

    1. On the menu or toolbar of the Electromagnetic, click Insulating command. Or, right-click the Study object in the tree and select Impose Conditions>Insulating.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    "},{"location":"welsim/users/bcs/#properties-view_20","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#insulating-example","title":"Insulating example","text":"

    Insulating boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#vector-magnetic-potential","title":"Vector magnetic potential","text":"

    A Vector Magnetic Potential boundary condition defines the magnetic potential vector for the scoped geometry. This boundary condition is available for magnetic analysis.

    "},{"location":"welsim/users/bcs/#boundary-condition-application_21","title":"Boundary condition application","text":"

    To apply Vector Magnetic Potential:

    1. On the menu or toolbar of the Electromagnetic, click Magnetic Potential button. Or, right-click the Study object in the tree and select Impose Conditions>Magnetic Potential.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Determine the value of Vector Magnetic Potential.
    "},{"location":"welsim/users/bcs/#properties-view_21","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Magnetic Potential: A component field determines the magnetic potential on the X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#magnetic-potential-example","title":"Magnetic potential example","text":"

    Magnetic Potential boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#magnetic-flux-density","title":"Magnetic flux density","text":"

    A Magnetic Flux Density boundary condition defines the magnetic flux density for the scoped geometry. This boundary condition is available for magnetic analysis.

    "},{"location":"welsim/users/bcs/#boundary-condition-application_22","title":"Boundary condition application","text":"

    To apply Magnetic Flux Density:

    1. On the menu or toolbar of the Electromagnetic, click Magnetic Flux Density button. Or, right-click the Study object in the tree and select Impose Conditions>Magnetic Flux Density.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    "},{"location":"welsim/users/bcs/#properties-view_22","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Magnetic Flux Density: A component field determines the magnetic flux density on the X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#magnetic-flux-density-example","title":"Magnetic flux density example","text":"

    Magnetic Flux Density boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#types-of-body-conditions","title":"Types of body conditions","text":"

    This section describes the Body Conditions that are provided in the WELSIM application.

    "},{"location":"welsim/users/bcs/#acceleration_1","title":"Acceleration","text":"

    The Acceleration body condition defines a linear acceleration of a structure in a particular direction. This body condition is available for all structural analysis.

    If desired, acceleration body condition can be used to mimic the Earth Gravity. For example, the standard earth gravity is 9.80665 m/s\\(^{2}\\) toward the ground, you can add an acceleration body condition object and apply to all or the target bodies to represent the earth gravity.

    "},{"location":"welsim/users/bcs/#body-condition-application","title":"Body condition application","text":"

    To apply Acceleration:

    1. On the menu or toolbar of the Structural, click Acceleration button. Or, right-click the Study object in the tree and select Impose Conditions>Acceleration.
    2. Keep the All bodies Scoping Method, or choose the Geometry Selection and scope the geometric entities from Graphics window.
    3. Define the Acceleration magnitude on X, Y, and Z directions.
    "},{"location":"welsim/users/bcs/#properties-view_23","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Scoping Method: Drop-down field has options All Bodies and Geometry Selection.
    • Geometry Selection: Selection field allows you to select the body entities. This property is shown if the Scoping Method property is set to Geometry Selection.
    • Acceleration: Component field allows you to input acceleration values on X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the body condition.
    "},{"location":"welsim/users/bcs/#acceleration-example_1","title":"Acceleration example","text":"

    Acceleration is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#earth-gravity","title":"Earth gravity","text":"

    The earth gravity condition defines gravitational effects on structure bodies. This body condition is available for all structural analysis. This condition is equivalent to the Acceleration body condition.

    "},{"location":"welsim/users/bcs/#body-condition-application_1","title":"Body condition application","text":"

    To apply Acceleration:

    1. On the menu or toolbar of the Structural, click Earth Gravity button. Or, right-click the Study object in the tree and select Impose Conditions>Earth Gravity.
    2. Keep the All bodies Scoping Method, or choose the Geometry Selection and scope the geometric entities from Graphics window.
    3. Define the Earth Gravity magnitude on X, Y, and Z directions.
    "},{"location":"welsim/users/bcs/#properties-view_24","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Scoping Method: Drop-down field has options All Bodies and Geometry Selection.
    • Geometry Selection: Selection field allows you to select the body entities. This property is shown if the Scoping Method property is set to Geometry Selection.
    • Gravity: Component field allows you to input gravity values on X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the body condition.
    "},{"location":"welsim/users/bcs/#earth-gravity-example","title":"Earth gravity example","text":"

    The Earth Gravity body condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#body-force","title":"Body force","text":"

    The body force condition defines a linear force acting structure bodies. This body condition is available for all structural analysis. The contribution of body force to the governing equation can be seen at Infinitesimal deformation linear elasticity static analysis.

    "},{"location":"welsim/users/bcs/#body-condition-application_2","title":"Body condition application","text":"

    To apply Body Force:

    1. On the menu or toolbar of the Structural, click Body Force button. Or, right-click the Study object in the tree and select Impose Conditions>Body Force.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Body Force magnitude on X, Y, and Z directions.
    "},{"location":"welsim/users/bcs/#properties-view_25","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the body entities.
    • Force Vector: Component field allows you to input body force values on X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the body condition.
    "},{"location":"welsim/users/bcs/#body-force-example","title":"Body force example","text":"

    The Body Force is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#rotational-velocity","title":"Rotational velocity","text":"

    The Rotational Velocity condition determines the centrifugal force generated from a part spinning at a constant rate. This body condition is available for all structural analysis.

    "},{"location":"welsim/users/bcs/#body-condition-application_3","title":"Body condition application","text":"

    To apply Rotational Velocity:

    1. On the menu or toolbar of the Structural, click Rotational Velocity button. Or, right-click the Study object in the tree and select Impose Conditions>Rotational Velocity.
    2. Keep the All bodies Scoping Method, or choose the Geometry Selection and scope the geometric entities from Graphics window.
    3. Define the coefficients of Angular Velocity, Rotating Axis.
    "},{"location":"welsim/users/bcs/#properties-view_26","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the body entities. This property is shown if the Scoping Method property is set to Geometry Selection.
    • Angular Velocity: Defines the magnitude of the angular velocity.
    • Rotating Origin: Defines the origin location of the rotation axis.
    • Rotating Axis: Defines the direction vector of the rotation axis.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#rotational-velocity-example","title":"Rotational velocity example","text":"

    The Rotational Velocity is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#internal-heat-generation","title":"Internal heat generation","text":"

    The Internal Heat Generation condition determines the heat flow generated from the body. This body condition is available for all thermal analysis.

    "},{"location":"welsim/users/bcs/#internal-heat-generation-application","title":"Internal heat generation application","text":"

    To apply Internal Heat Generation:

    1. On the menu or toolbar of the Thermal, click Internal Heat Generation button. Or, right-click the Study object in the tree and select Impose Conditions > Internal Heat Generation.
    2. Keep the All bodies Scoping Method, or choose the Geometry Selection and scope the geometric entities from Graphics window.
    3. Define the coefficients of Heat Flow value.
    "},{"location":"welsim/users/bcs/#properties-view_27","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the body entities. This property is shown if the Scoping Method property is set to Geometry Selection.
    • Heat Flow: Defines the magnitude of the volume heat generation.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#internal-heat-generation-example","title":"Internal heat generation example","text":"

    The Internal Heat Generation is applied as shown in Figure below.

    "},{"location":"welsim/users/connections/","title":"Setting connections","text":"

    The Connections object acts as a group folder includes all connecting related settings, such as Contact Pair.

    "},{"location":"welsim/users/connections/#connections-group","title":"Connections group","text":"

    The Connections group is a unique container in WELSIM application for all types of connection objects. As illustrated in Figure\u00a0below, the Connections object includes multiple Contact Pair objects.

    "},{"location":"welsim/users/connections/#contact-pairs","title":"Contact pairs","text":"

    Contact Pairs are applied when two separate parts (solid, surface, and line bodies) in an assembly touch one another (they are mutually tangent). The contact bodies/surfaces:

    • Transmit normal forces and tangential frictional forces.
    • Can be bonded contact (Linear).
    • Can separate or collide (Nonlinear).
    • Do not penetrate one another in the structures.

    As shown in Figure\u00a0below, the Contact for structure analysis support three types of contact: Bonded, Frictionless, and Frictional. For the Frictionless and Frictional types, the contact pairs (surfaces, edges) are free to separate and move away from one another, which is called to have status-changing nonlinearity. The stiffness matrice in the solving change dramatically as the parts are touching or separated.

    "},{"location":"welsim/users/connections/#formulation-of-contact","title":"Formulation of contact","text":"

    Since the contact algorithms are complicated, it is recommended to use the default formulation method for your contact analysis. This section describes the theory of contact formulations: Lagrange and Augmented Lagrange methods. Those methods only exist in the structural analysis.

    "},{"location":"welsim/users/connections/#bonded","title":"Bonded","text":"

    For the Non-Separated Bonded contact, the MPC algorithm is applied internally to add constraint equations to the tied nodes on the contact entities (surfaces, edges). The bonded contact has no penetration, no separation behaviors during the motion.

    "},{"location":"welsim/users/connections/#lagrange-method","title":"Lagrange method","text":"

    This formulation adds an extra contact pressure term to satisfy the contact compatibility. Thus the contact force is solved explicitly as an unknown degree of freedom.

    "},{"location":"welsim/users/connections/#augmented-lagrange-method","title":"Augmented lagrange method","text":"

    Augmented Lagrange method is a penalty-based contact formulation. The finite contact force is

    \\[ F_{Normal}=k_{Normal}x_{Penetration}+\\lambda \\]

    where \\(k_{Normal}\\) is the contact stiffness, \\(x_{Penetration}\\) is the penetration depth along the normal direction. The smaller the penetration depth, the more accurate numerical solutions. The exist of term \\(\\lambda\\) is the difference between the traditional penalty method and the augmented Lagrange method.

    "},{"location":"welsim/users/connections/#contact-settings","title":"Contact settings","text":"

    When you select a Contact Pair object in the tree, the contact settings become available in the Properties view. The Target Geometry and Master Geometry properties allow you to scope the contact pairs from the Graphics window. Note that the valid Target and Master Geometries show in different colors. You can change the highlight color in the Display tab of the contact Properties View.

    When you choose the Frictionless or Frictional option in the Contact Type property, the following properties shows:

    • Formulation: Provides two options: Lagrange and Augmented Lagrange methods. The default is the Lagrange method. The Formation property is described in Formulation of Contact.
    • Finite Sliding: Supports the finite sliding as the contact occurs. The default is false.
    • Normal Direction Tolerance: Determines the distance tolerance on the normal direction. The default value is 1e-5.
    • Tangential Direction Tolerance: Determines the distance tolerance on the tangential direction. The default value is 1e-3.
    • Normal Direction Penalty: Determines the penalty tolerance on the normal direction. The Default value is 1e3.
    • Tangential Direction Penalty: Determines the penalty tolerance on the tangential direction. The default value is 1e3.
    "},{"location":"welsim/users/connections/#supported-contact-types","title":"Supported contact types","text":"

    The Table below identifies the supported formulations for the various contact geometries.

    Contact Geometry Face (Master) Edge (Master) Vertex (Master) Face (Target) Yes Yes Not Supported for solving Edge (Target) Yes Yes Not Supported for solving Vertex (Target) Not Supported for solving Not Supported for solving Not Supported for solving"},{"location":"welsim/users/connections/#ease-of-use-contact","title":"Ease of use contact","text":""},{"location":"welsim/users/connections/#flipping-master-and-target-scoping-geometries","title":"Flipping master and target scoping geometries","text":"

    This feature provides you a command to quickly swap master and target geometries that are already scoped in the Properties View. You can achieve this by right clicking on the specific Contact Pair, and choosing Switch Target/Master Contacts from the context menu as shown in Figure\u00a0below.

    Note

    This feature is not applicable to Face to Edge contact where faces and edges are always designated as targets and masters, respectively.

    "},{"location":"welsim/users/geometry/","title":"Specifying geometry","text":""},{"location":"welsim/users/geometry/#geometry-fundamentals","title":"Geometry fundamentals","text":"

    Part is the fundamental object carries the geometry data. An assembly model may contain one or multiple parts. There is no limit of parts in WELSIM application, and large assemblie require more hardware resources to process the geometric operations. All parts object are grouped in the Geometry Group object.

    "},{"location":"welsim/users/geometry/#working-with-parts","title":"Working with parts","text":"

    The part has these attributes:

    • Each part object has a Material property, which determines the assigned material on the part.
    • Parts can be hidden/shown in the Graphics window.
    • Parts can be Suppressed/Unsuppressed for the successive analysis.
    • The imported part can adjust the size of geometry by tuning the Scale property value.
    "},{"location":"welsim/users/geometry/#color-scheme-of-parts","title":"Color scheme of parts","text":"

    The geometry is assigned with predefined random color. However, you can define the color of part to visually identify different components in an assembly. Click the Display tab from the Properties view of the Part Object, and click the Color By property to determine the color scheme. The following lists the available color schemes:

    • Part Color
    • Material

    You can reset the colors back to the default color scheme by right click on the Geometry object in the tree and selecting Reset Body Colors.

    "},{"location":"welsim/users/geometry/#overview","title":"Overview","text":"

    The WELSIM geometry module's interface is similar to that most other features. The graphical user interface of geometry commands is consist of three regions:

    1. Toolbars: Located at the top of the interface, there is a toolbar.
    2. Geometry Menu: Located at the Menu, the Geometry Menu provides all geometry related commands.
    3. Context Menu: Popped up at Geometry tree objects, the context menu provides geometry related commands as shown in Figure\u00a0below.

    "},{"location":"welsim/users/geometry/#creating-primitive-geometry","title":"Creating primitive geometry","text":"

    The system provides built-in commands to allow you to create primitive geometries. The following describes the supported geometries: Box, Cylinder, Plate, and Line.

    "},{"location":"welsim/users/geometry/#box","title":"Box","text":"

    An example of a created box shape is shown in Figure\u00a0[fig:ch3_guide_geom_box].

    "},{"location":"welsim/users/geometry/#cylinder","title":"Cylinder","text":"

    An example of a created cylinder shape is shown in Figure\u00a0[fig:ch3_guide_geom_cylinder].

    "},{"location":"welsim/users/geometry/#plate","title":"Plate","text":"

    An example of a created plate shape is shown in Figure\u00a0[fig:ch3_guide_geom_plate].

    "},{"location":"welsim/users/geometry/#line","title":"Line","text":"

    An example of a created Line shape is shown in Figure\u00a0[fig:ch3_guide_geom_line].

    "},{"location":"welsim/users/geometry/#importing-and-exporting-geometry","title":"Importing and exporting geometry","text":""},{"location":"welsim/users/geometry/#importing","title":"Importing","text":"

    The geometry importing feature supports the STEP and IGES format files, and the STEP file is recommended. The following lists the behaviors of importing geometry:

    • An imported STEP file may lead to creating multiple Part objects in the tree if the file contains an assembly.
    • IGES file contains the surface information only, you need to implement Make Solid command to the imported geometry to obtain the solid geometry.
    • Using the Scale property to tune the size of the imported geometry.
    "},{"location":"welsim/users/geometry/#exporting","title":"Exporting","text":"

    The geometries in the tree can be exported to an external STEP file. The following methods show you how to export:

    • Click the Export... button from the Toolbar.
    • Click the Export... item from the Geometry Menu.
    • Right click on the target geometries and select the Export... from the context menu.
    "},{"location":"welsim/users/geometry/#boolean-operations","title":"Boolean operations","text":"

    The WELSIM geometry module supports fundamental Boolean operations, which allow users to manipulate the shape of geometries. The available operations are Union, Intersection, and Difference. You can select multiple geometry objects from the tree list and press the Boolean commands to implement the operations. You can hold Ctrl or Shift keys to select multiple geometry objects from the project tree.

    "},{"location":"welsim/users/geometry/#union","title":"Union","text":"

    The union operation consolidates two or more geometry into one geometry. An example of Union geometry of a box and cylinder shape is shown in Figure\u00a0below.

    "},{"location":"welsim/users/geometry/#intersection","title":"Intersection","text":"

    The intersection operation keeps the commonly shared portions of two or more geometries. An example of Intersection geometry of a box and cylinder shape is shown in Figure\u00a0below.

    "},{"location":"welsim/users/geometry/#difference","title":"Difference","text":"

    The Difference operation subtracts the secondly selected geometry from the first selected geometry. Thus the selection order plays an important role in the final generated geometry. You can see the results of two different selection orders in Figures\u00a0below.

    "},{"location":"welsim/users/geometry/#geometry-commands","title":"Geometry commands","text":"

    In addition to the fundamental geometry commands, the following lists the commands that may be applied in the geometry modeling:

    "},{"location":"welsim/users/geometry/#generate-solid","title":"Generate solid","text":"

    In the most of analysis, the model needs to be solid to generate the 3D solid finite element. If the imported geometry only contains the surface data, the mesher cannot generate solid elements. In this scenario, you need to convert a surface geometry to solid geometry. The Generate Solid command provides you with a tool to complete this conversion.

    To convert a surface to solid geometry, you can follow the steps below:

    1. Select the surface geometry objects from the tree.
    2. Click the Generate Solid command from the Geometry Menu, or right click on the selected geometry objects, and select the Generate Solid command from the context menu.
    "},{"location":"welsim/users/geometry/#part-structure-types","title":"Part structure types","text":""},{"location":"welsim/users/geometry/#solid-bodies","title":"Solid bodies","text":"

    The solid bodies including parts and assembly support all simulation features of WELSIM application.

    "},{"location":"welsim/users/geometry/#surface-bodies","title":"Surface bodies","text":"

    The surface bodies are treated as Shell structure in the structural and thermal analyses. In the Properties View of the Shell part, you need to specify the thickness of the shell, as shown in Figure\u00a0below.

    "},{"location":"welsim/users/gui/","title":"Application user interface","text":"

    This section describes the fundamental components of the WELSIM application interface, their usage, and behaviors.

    "},{"location":"welsim/users/gui/#welsim-application-window","title":"WELSIM application window","text":"

    The functional components of the graphical user interface include the following as listed in Table\u00a0below.

    Window Component Description Main Menus This menu includes all application level actions such as File and About Standard Toolbar This toolbar contains commonly used actions such as Mesh and Solve Graphics Toolbar This toolbar contains graphics related actions such as Zoom and Selection Project Explorer (Tree) Window This window contains a list of simulation objects that represents the modeling settings. Since it contains the branches and trunk, this windows is also called tree outline. The context menu for each object could vary. The object can be renamed, deleted, duplicated, copied and pasted Properties Window This window displays the properties of each object in the tree list. The user can view or edit the property values Graphics View This window shows and manipulates the visual content of the simulation entities. This window can display: 3D geometry, mesh, annotation, coordinate system symbol, spreadsheet, etc Output Window This window display the messages from the system or solvers Tabular Data Window This window lists the data that is input from user or output from the solvers. The listed data is always consistent with the curves in the Chart window Chart Window This window plots the graphics that is input from user or output from the solvers. The curves are always consistent with the table data in the Tabular Data window Context Menu This menu shows up as user right mouse button click on objects, graphics, toolbars, etc. Different entities may show different context Status Bar This widget shows the message and status on the bottom area of the application interface"},{"location":"welsim/users/gui/#windows-management","title":"Windows management","text":"

    The WELSIM window owns panes that can carry project objects, properties, graphics, output, tabular data, and chart views.Window management functionalities enable you to dock, hide, show, move, and resize the windows.

    "},{"location":"welsim/users/gui/#hiding-and-showing","title":"Hiding and showing","text":"

    The windows can be hidden or shown by setting the view controller. As shown in Figure\u00a0[tab:ch3_guide_gui_windows], there are two ways to control the window views:

    1. Browse the View Menu > Windows, toggle the windows that you would show or hide.
    2. Right mouse button clicks on the Toolbar, you can toggle the windows.

    You also can click the cross button on the title bar to hide the window.

    "},{"location":"welsim/users/gui/#docking-and-undocking","title":"Docking and undocking","text":"

    You can drag a window's title bar to move a window pane. Once you start to drag the window, the activated window is moving with your mouse. You can release the button on the target area to settle the new docking area. You can double-click a window's title bar to move it around the screen. The size of the window can be adjusted easily by dragging the borders or corners. You also can click the undocking button on the title bar to undock the window.

    "},{"location":"welsim/users/gui/#moving-and-resizing","title":"Moving and resizing","text":"

    You can drag a window's title bar to move and undock a window pane. Once you start to drag the window, the potential dock target area appears in the allowed space. At this moment, you can release the button to dock the window on the target area.

    "},{"location":"welsim/users/gui/#main-windows","title":"Main windows","text":"

    Besides the menu and toolbar widgets of the user interface, some other widgets are available. Those windows appear by default or when specific options are activated. The availability of those windows is controlled by the VIEW\u202f>\u202fWindows menu. This section discusses the following windows:

    • Project Explorer (Tree list)
    • Properties View
    • Graphics Window
    • Output Window
    • Tabular Data Window
    • Chart Window
    • Spreadsheet Window

    As the user selects a tree object in the Project Explorer window, all attributes for the selected object in Properties View, Tabular Data, and Chart Window are displayed or updated. The Properties window contains two tabs, and the Data tab shows the attributes about the object data, the Display tab lists the specifications about the graphics. The Graphics window shows the three-dimensional geometry model, depending on the tree object selection, shows information about the object details, highlighted areas, and annotations. The Output window displays the messages from the system or solvers. The Spreadsheet window shows the worksheet data for specific tree objects.

    Those user interface components are described in the following sections:

    "},{"location":"welsim/users/gui/#project-explorer","title":"Project explorer","text":"

    The object Tree list represents the logical steps of the conducted simulation study. All branches relate to the parenting object. For instance, a key object called Study contains Study Settings and boundary condition objects. The user can right click on an object to activate a context menu that relates to the clicked object. The objects can be copied, pasted, duplicated, and renamed.

    An example of the Project Explorer window is shown in Figure\u00a0below.

    Note

    The tree outline contains all elements that applied in the simulation study. The root object displays the number of projects in the solution. The Material project node includes all material specification. The FEM project contains the analysis settings, multiple FEM projects are allowed in the solution.

    "},{"location":"welsim/users/gui/#knowing-the-tree-objects","title":"Knowing the tree objects","text":"

    The tree objects in the Project Explorer window have the following conventions:

    • Object Icon appears to the left of the object in the tree list. The icon is intended for users to identify the type of object. For example, icons for computational results always consist of three colors (red, green, and blue), which can help distinguish other objects.
    • A right-head arrow symbol to the left of the object indicates that this object contains child sub-objects. Clicking the arrow to expand the object and display the children.
    • A down-head arrow symbol to the left of the object indicates that the object expends all child objects. Clicking the arrow to collapse the sub-objects.
    • To delete an object from the tree list, you can right click on the target object and select Delete.
    "},{"location":"welsim/users/gui/#object-status-symbols","title":"Object status symbols","text":"

    The status icons are smaller than the tree object icon and located to the right bottom corner of the object icon. These symbols are intend to provide a quick visual reference to the status of the object. The details of the status symbols are described in Table\u00a0below.

    Status Name Symbol Icon Description Underdefined A study object or its child objects requires user input values Error A fixed supported object may stop the simulation due to the confliction with other settings, user needs to resolve the confliction to continue the modeling OK A mesh settings object is well defined or any action about this object is succeed Suppressed An object is suppressed, such object becomes deactivated and won't participate the simulation. User can unsuppress the object Needs to be Updated An answers object or its child objects are not evaluated. Waiting for user to update"},{"location":"welsim/users/gui/#suppressingunsuppressing-objects","title":"Suppressing/Unsuppressing objects","text":"

    Most of the objects in the Project Explorer window can be suppressed or unsuppressed by users. A suppressed object means that it is excluded from the further analysis. For example, suppressing a boundary condition excludes the boundary condition from the study and the further solutions. You also can unsuppress the object with the restored object attributes.

    There are two ways to suppress/unsuppress an object:

    • Right-click the object, and then select Suppress from the context menu. Or
    • In the property view of the object, set the Suppressed option to True. Conversely, you can unsuppress objects by setting the Suppressed option to False.
    "},{"location":"welsim/users/gui/#properties-view","title":"Properties view","text":"

    The Properties View is located in the bottom left corner of the main user interface by default, and the user can change the location by dragging the window pane. This view window provides the user with details and information that relate to the selected object in the Project Explorer. Some properties are read-only that cannot be changed by the users, and some properties allow users to input values. An example of Properties View of the object is shown in Figures\u00a0below.

    "},{"location":"welsim/users/gui/#features","title":"Features","text":"

    The features of the Properties View include:

    • Resizable and movable.
    • Drop-down cells for Boolean or Enumeration list.
    • Buttons to display a dialog box (such as color picker).
    • OK/Cancel buttons for geometry selection.
    • Property cell can change background color according to the content.
    "},{"location":"welsim/users/gui/#group-property","title":"Group property","text":"

    The Group Property is a read-only and occupy the entire row of the Properties pane, as shown in Figure below.

    The group provides you better user experience by organizing the properties into distinct categories.

    "},{"location":"welsim/users/gui/#undefined-or-invalid-properties","title":"Undefined or invalid properties","text":"

    In the Properties View, the undefined or invalid fields are highlighted in yellow as shown in Figure\u00a0below.

    Once the property is well defined and becomes valid, highlight yellow color disappears.

    "},{"location":"welsim/users/gui/#drop-down-list","title":"Drop-down list","text":"

    The combo property shows the drop-down list as user clicks the attribute as shown in Figure below.

    Note

    You can adjust the width of the columns by dragging the separator between the columns.

    "},{"location":"welsim/users/gui/#text-entry","title":"Text entry","text":"

    In the text entry field, you can input strings, numbers, or integers, depending on the type of the cell as shown in Figure\u00a0below.

    The invalid value for the specific cell will be discarded, or the cell shows red background.

    "},{"location":"welsim/users/gui/#geometry-selection","title":"Geometry selection","text":"

    Geometry Selection allows users to scope topological entities from the graphics window. An example of Geometry Selection property is shown in Figure\u00a0below.

    After selecting appropriate geometry entities, you can click the OK button to set the current selection into the field. Clicking the Cancel button does not change the pre-existing selection.

    "},{"location":"welsim/users/gui/#graphics-window","title":"Graphics window","text":"

    The Graphics window displays the geometry, annotation, mesh, result, etc. The components in the graphics window could be:

    • 3D Graphics
    • A scale rule
    • A legend and a coutour controller (for result display)
    • 2D Annotations (for boundary conditions, result display)
    • 3D Annotations (for boundary conditions)
    • Global coordinate system symbol
    • Graphical toolbar
    • Multi-purpose tabs
    • WELSIM logo and version number

    An example view of the Grpahics window is shown in Figure\u00a0below.

    "},{"location":"welsim/users/gui/#tabular-data-window","title":"Tabular data window","text":"

    Tabular Data window is designed in better reviewing the input and output data. When you select the following objects in the tree window, both Tabular Data and Chart windows display data on the interface.

    • Boundary conditions
    • Body conditions
    • Results
    • Probe Results

    The listed data in Tabular Data window is consistent with the curves in the Chart window. As an example shown in Figure below, you can see the maximum and minimum values at all time steps are consistent between those two windows.

    "},{"location":"welsim/users/gui/#chart-window","title":"Chart window","text":"

    The Chart window displays the curves for the selected tree object. The curves are consistent with the data in the Tabular Data window. An example of Chart window drawing the maximum and minimum values along time is shown in Figure\u00a0below.

    "},{"location":"welsim/users/gui/#spreadsheet-window","title":"Spreadsheet window","text":"

    The spreadsheet window provides object data in the form of tables, charts, or text to you. This widget usually contains the summarized data for a collection of properties. Note that not all objects contain a spreadsheet window, only the object that has large data may own a spreadsheet window. The behaviors of the spreadsheet window are:

    1. A spreadsheet designed to show large data on one field does not automatically display the data. You can open the spreadsheet window by double-clicking specific objects, such as Material and Study Setting objects.
    2. A new tab shows up as the spreadsheet window is open. You can close the window by clicking the cross button on the tab, or by pressing the OK button on the spreadsheet.

    An example of the spreadsheet window is shown in Figure\u00a0below.

    "},{"location":"welsim/users/gui/#output-window","title":"Output window","text":"

    The output window prompts you with feedback concerning the results of your actions in using WELSIM. In the current version, the output window mainly displays the message from the solvers. An example of output window displaying the solver messages is shown in Figure\u00a0below.

    The Output window pane contains several buttons, there are:

    • Save Output Text: saves the output text into an external file.
    • Clear Text: clears the text field.
    • Stop Interprocess: discontinues the solver process.
    "},{"location":"welsim/users/gui/#main-menus","title":"Main menus","text":"

    The main menus contain the following items as shown in Figure\u00a0below.

    "},{"location":"welsim/users/gui/#file-menu","title":"File menu","text":"

    The FILE menu includes the following actions:

    • New: Creates a new finite element analysis project.
    • Open: Resumes the WELSIM solution from an external \u201c*.wsdb\u201d file.
    • Save: stores the WELSIM solution to an external \u201c.wsdb\u201d file.
    • Save As: stores the WELSIM solution to another external \u201c.wsdb\u201d file.
    • Close Project: deletes the current finite element project.
    • Close All: deletes all projects in the solution.
    • Quit: Exit the application.

    The items of the File menu is shown in Figure\u00a0below.

    "},{"location":"welsim/users/gui/#view-menu","title":"View menu","text":"

    The VIEW menu includes the following actions:

    • Zooms: adjusts display scale of the graphics field, contains sub-items: Zoom Extents, Zoom In, Zoom Out, Box Zoom.
    • Views: changes the viewpoint to the graphics display field. Includes sub-items: Isometric, Top, Right, Front.
    • Graphics Window: changes the mode of the graphics window. Includes sub-items: Docked, Undocked, and Full Screen.
    • Toolbars: determines to show the toolbars on the uesr interface. The available toolbars include File, Material, Geometry, FEM, Structural, Thermal, Electromagnetic, Tools, and Help.
    • Windows: controls the display of the windows. The options that can be toggled are Project Explorer, Properties, Output, Tabular Data, and Chart windows.
    • Status Bar: toggles the display of the status bar to the bottom of the main window.

    The items of the View menu is shown in Figure\u00a0below.

    "},{"location":"welsim/users/gui/#material-menu","title":"Material menu","text":"

    The MATERIAL menu includes the following actions:

    • New Material Project: adds a new material project if the tree has no material project.
    • Add Material: defines a new material object.
    • Export Materials: outputs material data into an external file with JSON format.

    The items of the Material Menu is shown in Figure\u00a0below.

    "},{"location":"welsim/users/gui/#geometry-menu","title":"Geometry menu","text":"

    The GEOMETRY menu includes the following actions:

    • Import: creates new geometries from the external files with STEP or IGES format.
    • Export: saves geometries into external STEP file.
    • Add Box: creates a new 3D box shape.
    • Add Cylinder: creates a new 3D cylinder shape.
    • Add Plate: creates a new 3D plate shape.
    • Add Line: creates a new 3D line shape.
    • Generate Solid: create a 3D solid shape according to the enclosed surface shape.
    • Union: consolidates multiple geometries into one geometry.
    • Intersection: creates a geometry that is the common area of multiple geometries.
    • Difference: creates a geometry that is differentiated between the selected geometries.
    • Show: displays the selected geometry objects.
    • Hide: hides the selected geometry objects.
    • Show All: displays all geometries.
    • Hide All: hides all geometries.

    The items of the Geometry Menu is shown in Figure\u00a0below.

    "},{"location":"welsim/users/gui/#fem-menu","title":"FEM menu","text":"

    The FEM Menu includes the following actions:

    • Mesh All: generates the mesh for the entire domain.
    • Clear Generated Mesh: removes all generated mesh.
    • Check Mesh: examines the quality of the generated mesh.
    • Add Mesh Settings: adds a global mesh settings object to the tree.
    • Add Mesh Method: adds a local mesh method object to the tree.
    • Mesh Method: generates the mesh for the geometries that are scoped in the mesh method object.
    • Connections: adds a Connections object if no connection object is presented.
    • Add Contact: adds a Contact Pair object to the tree.
    • Add Study Settings: adds a Study Settings object to the tree if no study settings object is presented.
    • Compute: solves the finite element model.
    • Clear Calculated Solution: remove the solved data in the current project.
    • User Defined Result: adds a user-defined result object to the tree.
    • Evaluate Result: evaluates the selected result objects.
    • Evaluate All: evaluate all result objects in current project.
    • Clear Result: remove the generated result data.
    • Export Result: export the result data into an external file in ASCII format.

    The items of the FEM Menu is shown in Figure\u00a0below.

    "},{"location":"welsim/users/gui/#structural-menu","title":"Structural menu","text":"

    The STRUCTURAL menu includes the following actions:

    • Constraint: adds a fixed support boundary condition object. It essentially sets displacement to zero.
    • Displacement: adds a displacement boundary condition object.
    • Force: adds a force boundary condition object.
    • Pressure: adds a pressure boundary condition object.
    • Fixed Rotation: adds a fixed rotation boundary condition object, specifically for the shell model.
    • Velocity: adds a velocity boundary condition object, specifically for the transient structural analysis.
    • Acceleration: adds a velocity boundary condition object, specifically for the transient structural analysis.
    • Body Force: adds a body force condition object.
    • Acceleration: adds a body acceleration condition object.
    • Earth Gravity: adds a standard earth gravity condition object.
    • Rotational Velocity: adds a rotational velocity object.
    • Displacement Result: adds a displacement result object.
    • Stress Result: adds a stress result object.
    • Strain Result: adds a strain result object.
    • Velocity Result: adds a velocity result object. It is available for the transient structural analysis.
    • Acceleration Result: adds an acceleration result object. It is available for the transient structural analysis.
    • Rotation Result: adds a ratation result object. It is available for the shell structure.
    • Reaction Force Probe: adds a force reaction probe result.
    • Reaction Moment Probe: adds a moment reaction probe result. It is available for the shell structure.

    The items of the Structural menu is shown in Figure\u00a0below.

    "},{"location":"welsim/users/gui/#thermal-menu","title":"Thermal menu","text":"

    The THERMAL menu includes the following actions:

    • Temperature: adds a temperature boundary condition object.
    • Heat Flux: adds a heat flux boundary condition object.
    • Convection: adds a heat convection boundary condition object.
    • Radiation: adds a heat radiation boundary condition object.
    • Initial Temperature: adds a initial temperature condition object. It is available for transient thermal analysis.
    • Temperature Result: adds a temperature result object.

    The items on the Thermal menu is shown in Figure\u00a0below.

    "},{"location":"welsim/users/gui/#electromagnetic-menu","title":"Electromagnetic menu","text":"

    The ELECTROMAGNETIC menu includes the following actions:

    • Ground: adds a ground boundary condition object. It essentially sets the voltage to zero.
    • Voltage: adds a voltage boundary condition object.
    • Symmetry: adds a symmetry boundary condition object.
    • Zero Charge: adds a zero charge boundary condition object.
    • Surface Charge Density: adds a surface charge density boundary condition object.
    • Electric Displacement: adds an electric displacement boundary condition object.
    • Insulating: adds an insulating boundary condition object. It essentially sets zero magnetic potential.
    • Magnetic Potential: adds a magnetic potential boundary condition object.
    • Magnetic Flux Density: adds a magnetic flux density boundary condition object.
    • Voltage Result: adds a voltage result object.
    • Electric Field Result: adds an electric field result object.
    • Electric Displacement Result: adds an electric displacement result object.
    • Magnetic Potential Result: adds a magnetic potential result object.
    • Magnetic Field Result: adds a magnetic field result object.
    • Magnetic Induction Field Result: adds a magnetic induction field result object.
    • Energy Density Result: adds an energy density result object.

    The items of the Electromagnetic menu is shown in Figure\u00a0below.

    "},{"location":"welsim/users/gui/#tools-menu","title":"Tools menu","text":"

    The TOOLS menu includes the following actions:

    • Export Input Script: generates solver input scripts to the designated directory.
    • Reveal Files in Explorer: opens the local directory that contains project files.

    The items of the Tools menu is shown in Figure\u00a0below.

    "},{"location":"welsim/users/gui/#help-menu","title":"Help menu","text":"

    The HELP menu includes the following actions:

    • Documentation: opens the default internet web browser, and visits online documentation.
    • Website: opens the default internet web browser, and visits official website.
    • License Manager: opens WELSIM license manager interface. You can activate the application with the license key or update the license here.
    • About: provides copyright and application version information.

    The items of the Help menu is shown in Figure\u00a0below.

    "},{"location":"welsim/users/gui/#toolbars","title":"Toolbars","text":"

    Toolbars are displayed across the top of the main user interface. Toolbars are dockable, and you can drag the toolbar to your preferred field.

    "},{"location":"welsim/users/gui/#file-toolbar","title":"File toolbar","text":"

    The File toolbar contains application-level commands as shown in Figure\u00a0below. Each icon button and its description follows:

    • : creates a new finite element analysis project.
    • : saves solution into an external \u201c*.wsdb\u201d file.
    • : resumes solution from an external \u201c*.wsdb\u201d file.
    • : closes the current analysis project.

    "},{"location":"welsim/users/gui/#material-toolbar","title":"Material toolbar","text":"

    The Material toolbar contains material-related simulation commands as shown in Figure\u00a0below. Each icon button and its description follows:

    • : creates a new material object.
    • : exports all material data into an external JSON file.

    "},{"location":"welsim/users/gui/#geometry-toolbar","title":"Geometry toolbar","text":"

    The Geometry toolbar contains geometry-related commands as shown in Figure below. Each icon button and its description follows:

    • : imports the geometries from an external STEP or IGES file.
    • : exports the geometries into an external STEP file.
    • : creates a box shape.
    • : creates a cylinder shape.
    • : creates a plate shape.
    • : creates a line shape.
    • : consolidates the selected geometries into one part.
    • : creates geometry from the commonly shared field of multiple geometries.
    • : creates geometry from the difference among multiple geometries.

    "},{"location":"welsim/users/gui/#fem-toolbar","title":"FEM toolbar","text":"

    The FEM toolbar contains finite element analysis commands as shown in Figure\u00a0below. Each icon button and its description follows:

    • : generates the mesh for the entire domain.
    • : clear the generated mesh.
    • : examines the mesh quality.
    • : creates a mesh method object, which is used for the local mesh settings.
    • : generates the mesh for the scoped geometries in mesh method object.
    • : creates a new contact pair object.
    • : solves the finite element model.
    • : creates a new user-defined result object.
    • : evaluates the selected result objects.
    • : evaluates all result objects in current project.

    "},{"location":"welsim/users/gui/#structural-toolbar","title":"Structural toolbar","text":"

    The Structural toolbar contains structural analysis commands as shown in Figure\u00a0below. Each icon button and its description follows:

    • : creates a fixed support boundary condition object.
    • : creates a displacement boundary condition object.
    • : creates a force boundary condition object.
    • : creates a pressure boundary condition object.
    • : creates a fixed rotation boundary condition object.
    • : creates a velocity boundary condition object. It is available for the transient structural analysis.
    • : creates a acceleration boundary condition object. It is available for the transient structural analysis.
    • : creates a body force domain condition object.
    • : creates an acceleration domain condition object.
    • : creates a standard earth gravity domain condition object.
    • : creates a rotational velocity domain condition object.
    • : creates a displacement result object.
    • : creates a stress result object.
    • : creates a strain result object.
    • : creates a velocity result object. It is available for the transient structural analysis.
    • : creates a velocity result object. It is available for the transient structural analysis.
    • : creates a rotation result object. It is available for the shell model.
    • : creates a force reaction probe object.
    • : creates a moment reaction probe object. It is available for the shell model.

    "},{"location":"welsim/users/gui/#thermal-toolbar","title":"Thermal toolbar","text":"

    The Thermal toolbar contains thermal analysis commands as shown in Figure\u00a0below. Each icon button and its description follows:

    • : creates a temperature boundary condition object.
    • : creates a heat flux boundary condition object.
    • : creates a heat convection boundary condition object.
    • : creates a heat radiation boundary condition object.
    • : creates an initial temperature boundary condition object. It is available for the transient thermal analysis.
    • : creates a temperature result object.

    "},{"location":"welsim/users/gui/#electromagnetic-toolbar","title":"Electromagnetic toolbar","text":"

    The Electromagnetic toolbar contains electric and magnetic analyses commands as shown in Figure\u00a0below. Each icon button and its description follows:

    • : creates a ground boundary condition object.
    • : creates a velocity boundary condition object.
    • : creates a symmetry boundary condition object.
    • : creates a zero charge boundary condition object.
    • : creates a surface charge density boundary condition object.
    • : creates an electric displacement boundary condition object.
    • : creates an insulating boundary condition object.
    • : creates a magnetic potential boundary condition object.
    • : creates a magnetic flux density boundary condition object.
    • : creates a voltage result object.
    • : creates an electric field result object.
    • : creates an electric displacement result object.
    • : creates a vector magnetic potential result object.
    • : creates a magnetic field result object.
    • : creates a magnetic induction field result object.
    • : creates an electromagnetic energy density result object.

    "},{"location":"welsim/users/gui/#tool-toolbar","title":"Tool toolbar","text":"

    The Tool toolbar contains assistance commands as shown in Figure below. Each icon button and its description follows:

    To be added ...\n
    "},{"location":"welsim/users/gui/#help-toolbar","title":"Help toolbar","text":"

    The Help toolbar contains assistance commands as shown in Figure\u00a0below. Each icon button and its description follows:

    • : opens the default internet web browser, and visits online documentation.
    • : opens the default internet web browser, and visits official website.
    • : opens WELSIM license manager interface. You can activate the application with the license key or update the license here.
    • : displays the copyrights and version information of WELSIM application.

    "},{"location":"welsim/users/gui/#graphics-toolbar","title":"Graphics toolbar","text":"

    The Graphics toolbar contains graphical operation commands as shown in Figure\u00a0below. Each icon button and its description follows:

    • : fits the entire model in the graphics window.
    • : displays a closer view of the geometries.
    • : displays a more distant view of the geometries.
    • : displays the selected area of a model in a box that you define.
    • : displays the 3D model in an isometric view.
    • : displays the 3D model in an XY-plane view.
    • : displays the 3D model in a YZ-plane view.
    • : displays the 3D model in an XZ-plane view.
    • : set the volume selectable.
    • : set the face selectable.
    • : set the edge selectable.
    • : set the vertex selectable.

    "},{"location":"welsim/users/gui/#working-with-graphics","title":"Working with graphics","text":"

    The following lists the tips for working with WELSIM graphics:

    • You can use the ruler, presented at the bottom of the graphics window, to estimate the scale of the geometry size.
    • You can rotate the view of geometries by holding and dragging the left mouse button.
    • You can select or deselect multiple topological entities by pressing CTRL or SHIFT key.
    • You can pan the view by dragging your right mouse button or arrow keys.
    • You can zoom in/out the view by scrolling the mouse wheel or using \u00b1 and CTRL keys.
    • You can rotate the view by using the left mouse button.
    • You can open a context menu of views by right-clicking on the graphics field.
    "},{"location":"welsim/users/gui/#preselecting-geometry","title":"PreSelecting geometry","text":"

    This section discusses the pre-selection features in the Graphics window.

    "},{"location":"welsim/users/gui/#highlighting","title":"Highlighting","text":"

    As you hover the cursor over a geometry entity, the graphics highlights the selection and shows the location of the pointer. The pre-selection is controlled by the selection filter, and only the allowed entity types can be pre-selected and highlighted.

    As shown in Figure\u00a0below, the face are highlighted in green color at pre-selection mode.

    "},{"location":"welsim/users/gui/#selecting-geometry","title":"Selecting geometry","text":"

    This section discusses how to select and pick geometry in the Graphics window.

    "},{"location":"welsim/users/gui/#picking","title":"Picking","text":"

    You can pick visible geometries by left clicking on the entities. A valid picking sets the geometry selection property for specific objects, such as boundary conditions.

    You can hold the Ctrl or Shift key down to add or remove multiple selections from the current selections. A pick in the free space clears the current selection.

    "},{"location":"welsim/users/gui/#selection-filters","title":"Selection filters","text":"

    The selection filters control the user selection mode and provide an easy interface for users to pick or select the geometry entities. A pressed button in the selection filter toolbar denotes a selectable geometry type. The following describes the filters.

    • Volumes: Allows selection of the entire body. Highlighted by body surfaces in green. Depressing this filter releases the Faces, Edges, and Vertices filters.
    • Faces: Allows selection of faces. Highlighted by surfaces in green. Depressing this filter releases the Volumes filters.
    • Edges: Allows selection of edges. Highlighted by lines in green. Depressing this filter releases the Volumes filters.
    • Vertices: Allows selection of vertices. Highlighted by points in green. Depressing this filter releases the Volumes filters.
    "},{"location":"welsim/users/gui/#controlling-graphical-view","title":"Controlling graphical view","text":"

    The section describes the controlling and manipulating the graphical view with mouse and keys.

    • Zoom: Middle scrolling.
    • Pan: Right clicking, or arrow keys.
    • Rotate: Left clicking and dragging.
    "},{"location":"welsim/users/gui/#view-annotations","title":"View annotations","text":"

    Graphics window may contain these types of annotations:

    • 2D annotation: statically locates at the left top of the graphics windows. This annotation shows texts about the object type and name and color indicator for specific objects such as boundary conditions.

    • 3D annotation: dynamically locates on the geometry area, the position can be changed as the user rotates, zooms or pans the view.

    "},{"location":"welsim/users/objects/","title":"Objects reference","text":"

    This reference provides a specification for the objects in the tree.

    "},{"location":"welsim/users/objects/#answers","title":"Answers","text":"

    The Answers object customizes the solution properties and contains all result-level objects. The Properties View of the Answers object is shown in Figure\u00a0below.

    "},{"location":"welsim/users/objects/#tree-dependencies","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: FEM Project.
    • Valid Child Tree Objects: Results.
    "},{"location":"welsim/users/objects/#insertion-options","title":"Insertion options","text":"

    Appears by default when you create a new FEM project.

    "},{"location":"welsim/users/objects/#object-properties","title":"Object properties","text":"

    The Properties View for this object include the following:

    Property Name Description ID A read-only field denotes the ID of this object Class Label A read-only field denotes the class name Solver Method A drop-down field allows you to select a solver from the options: CG(Conjugate Gradient), BiCGStab, GMRES, GPBiCG, MUMPS, Direct, DIRECTmkl, where MUMPS, Direct, and DIRECTmkl are direct solvers, and the rest are iterative solvers. The default solver is MUMPS Number of Iterations A number field defines the maximum number of the linear algebra solver iterations. The default is 10000 Residual Threshold A number field defines the residual threshold for the linear algebra solver. The default is 1e-7 Output Time Log A Boolean field outputs the log for each time step. The default is False Output Iteration Log A Boolean field outputs the log each iteration step. The default is False Generate Result Files A Boolean field generates ASCII format result file. The default is False Output Frequency A number field determines the frequency of the result data output. The default value is 1, which outputs result data every step."},{"location":"welsim/users/objects/#body-conditions","title":"Body conditions","text":"

    Body condition type objects enable you to impose the body condition onto the geometry bodies.

    "},{"location":"welsim/users/objects/#application-objects","title":"Application objects","text":"

    Body Force, Acceleration, Earth Gravity, Rotational Velocity

    "},{"location":"welsim/users/objects/#tree-dependencies_1","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: Study.
    • Valid Child Tree Objects: None.
    "},{"location":"welsim/users/objects/#insertion-options_1","title":"Insertion options","text":"

    You can use any of the following methods to insert body conditions:

    • Click the item from the standard Toolbar.
    • Click the item from the Menu.
    • Right click on the Study level objects, and choose the target object from the pop-up context menu.
    "},{"location":"welsim/users/objects/#object-properties_1","title":"Object properties","text":"

    The properties may vary for different body conditions. See the Setting Up Boundary Conditions section for more information about body conditions.

    "},{"location":"welsim/users/objects/#boundary-conditions","title":"Boundary conditions","text":"

    Boundary condition type objects enable you to impose the boundary condition onto the geometry entities, such as faces, edges, and vertices.

    "},{"location":"welsim/users/objects/#application-objects_1","title":"Application objects","text":"

    Displacement, Fixed Support, Fixed Rotation, Pressure, Force, Velocity, Acceleration, Temperature, Heat Flux, Convection, Radiation, Voltage, Ground, Symmetry, Zero Charge, Surface Charge Density, Electric Displacement, Insulating, Magnetic Potential, Magnetic Flux Density

    "},{"location":"welsim/users/objects/#tree-dependencies_2","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: Study.
    • Valid Child Tree Objects: None.
    "},{"location":"welsim/users/objects/#insertion-options_2","title":"Insertion options","text":"

    You can use any of the following methods to insert boundary condition:

    • Click the item from the standard Toolbar.
    • Click the item from the Menu.
    • Right click on the Study level objects, and choose the target object from the pop-up context menu.
    "},{"location":"welsim/users/objects/#object-properties_2","title":"Object properties","text":"

    The properties may vary for different body conditions. See the Setting up Boundary Conditions section for more information about Boundary Conditions.

    "},{"location":"welsim/users/objects/#box","title":"Box","text":"

    The Box object defines a shape that is generated by the built-in modeler. An example of Box object and properties are illustrated in Figure\u00a0below.

    "},{"location":"welsim/users/objects/#tree-dependencies_3","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: Geometry Group.
    • Valid Child Tree Objects: None.
    "},{"location":"welsim/users/objects/#insertion-options_3","title":"Insertion options","text":"

    Appears when you create a box shape. You can use any of the following methods to insert a Box:

    • Click the Add Box item from the standard Toolbar.
    • Click the Add Box item from the Geometry Menu.
    • Right click on the Geometry level objects, and choose the Add Box from the pop-up context menu.
    "},{"location":"welsim/users/objects/#object-properties_3","title":"Object properties","text":"

    The Properties View for this object include the following:

    Property Name Description ID A read-only field denotes the ID of this object Class Label A read-only field denotes the class name Suppressed Include (False - default) or exclude (True) the geometry from the analysis Length A vector component field to determine the length, width, and height of the box. The default value is 10 Origin A vector component field to determine the location of origin. The default vector is 0 Material A drop-down field to assign the material for the selected part. The available material candidates are defined in the Material Project Source A read-only field indicates the shape is generated internally"},{"location":"welsim/users/objects/#connections","title":"Connections","text":"

    The Connections object is a group-type object that may contain the connection objects between two or more parts. The currently supported children object types are Contact Pair.

    "},{"location":"welsim/users/objects/#tree-dependencies_4","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: FEM Project.
    • Valid Child Tree Objects: Contact Pair.
    "},{"location":"welsim/users/objects/#insertion-options_4","title":"Insertion options","text":"

    Connections object is automatically inserted as you add a contact pair object to the tree.

    "},{"location":"welsim/users/objects/#object-properties_4","title":"Object properties","text":"

    The Properties View for this object include the following:

    Property Name Description ID A read-only field denotes the ID of this object Class Label A read-only field denotes the class name Suppressed A Boolean field to include (False - Default) or exclude (True) the object in the analysis"},{"location":"welsim/users/objects/#contact-pair","title":"Contact pair","text":"

    This object defines a contact pair between parts.

    "},{"location":"welsim/users/objects/#tree-dependencies_5","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: Connections.
    • Valid Child Tree Objects: None.
    "},{"location":"welsim/users/objects/#insertion-options_5","title":"Insertion options","text":"

    You can use any of the following methods to insert contact pairs:

    • Click the item from the standard Toolbar.
    • Click the item from the FEM Menu.
    • Right click on the Connections level objects, and select Add Contact command from the pop-up context menu.
    "},{"location":"welsim/users/objects/#object-properties_5","title":"Object properties","text":"

    The Properties View for this object include the following:

    Property Name Description ID A read-only field denotes the ID of this object Class Label A read-only field denotes the class name Suppressed A Boolean field to include (False - Default) or exclude (True) the object in the analysis Master Geometry A Geometry Selection field to scope geometry entities, such as faces, edges Target Geometry A Geometry Selection field to scope geometry entities, such as faces, edges Contact Type A drop-down enumeration field to select a type from three options: Bonded, Frictionless, and Frictional Formulation A drop-down enumeration field to selection contact formulation from two options: Lagrange and Augmented Lagrange. This property is only available for Frictionless or Frictional contact type Finite Sliding A Boolean field to turn on (True) or off (False - default) the finite sliding algorithm. This property is only available for Frictionless or Frictional contact type Normal Direction Tolerance A number field to determine the distance tolerance in the normal direction. The default value is 1e-5 Tangential Direction Tolerance A number field to determine the distance tolerance in the tangential direction. The default value is 1e-5 Normal Direction Penalty A number field to determine the penalty value in the normal direction. The default value is 1e3 Tangential Direction Penalty A number field to determine the penalty value in the tangential direction. The default value is 1e3"},{"location":"welsim/users/objects/#cylinder","title":"Cylinder","text":"

    The Cylinder object defines a shape that is generated by the built-in modeler. An example of Cylinder object and properties are illustrated in Figure\u00a0below.

    "},{"location":"welsim/users/objects/#tree-dependencies_6","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: Geometry Group.
    • Valid Child Tree Objects: None.
    "},{"location":"welsim/users/objects/#insertion-options_6","title":"Insertion options","text":"

    Appears when you create a Cylinder shape. You can use any of the following methods to insert a Cylinder:

    • Click the Add Cylinder item from the standard Toolbar.
    • Click the Add Cylinder item from the Geometry Menu.
    • Right click on the Geometry level objects, and choose the Add Cylinder from the pop-up context menu.
    "},{"location":"welsim/users/objects/#object-properties_6","title":"Object properties","text":"

    The Properties View for this object include the following:

    Property Name Description ID A read-only field denotes the ID of this object Class Label A read-only field denotes the class name Suppressed Include (False - default) or exclude (True) the geometry from the analysis Normal A vector component field to determine the direction of the cylinder. The default value is (0,0,1) Radius A number component field to determine the radius of the cylinder base. The default value is 10 Height A number component field to determine the height of the cylinder. The default value is 30 Angle A number component field to determine the sweeping angle of the cylinder circle. The default value 360 gives a full cylinder Origin A vector component field to determine the location of origin. The default vector is 0 Material A drop-down field to assign the material for the selected part. The available material candidates are defined in the Material Project Source A read-only field indicates the shape is generated internally"},{"location":"welsim/users/objects/#fem-project","title":"FEM project","text":"

    The FEM Project object represents an independent analysis, which contains Geometry, Mesh, Study, and Answers objects. The Connections object is not created until you add a contact pair object. An example of FEM Project and properties are illustrated in Figure\u00a0[fig:ch3_guide_obj_fem_proj].

    "},{"location":"welsim/users/objects/#tree-dependencies_7","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: Solution.
    • Valid Child Tree Objects: Geometry Group, Mesh Group, Connections, Study, Answers.
    "},{"location":"welsim/users/objects/#insertion-options_7","title":"Insertion options","text":"

    Appears by default when you create a new FEM project.

    "},{"location":"welsim/users/objects/#object-properties_7","title":"Object properties","text":"

    The Properties View for this object include the following:

    Property Name Description ID A read-only field denotes the ID of this object Class Label A read-only field denotes the class name Numerical Method A read-only field to indicate the Finite Element Method applied in this project Dimension A read-only field to indicate a 3D analysis of this project Physics Type A drop-down enumeration field for you to select the physics type. The available options are Structural, Thermal, and Electromagnetic. The default is Structural. Note that change this property may change the validation of existing objects and display of object's properties Analysis Type A drop-down enumeration field for you to select the analysis type. Depending on the Physics Type, the available options vary. For the Structural analysis, the options are Static, Transient, and Modal. For the Thermal analysis, the options are Steady-State and Transient. For the Electromagnetic analysis, the options are ElectroStatic and MagnetoStatic Ambient Temperature A number field to determine the environment temperature for the analysis, the default value is 22.3"},{"location":"welsim/users/objects/#geometry-group","title":"Geometry group","text":"

    Geometry Group object contains the geometries in the form of a part or assembly. All imported and created geometries are included in this group-level object as shown in Figure\u00a0below.

    "},{"location":"welsim/users/objects/#tree-dependencies_8","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: FEM Project.
    • Valid Child Tree Objects: Part, Box, Cylinder, Plane, Line.
    "},{"location":"welsim/users/objects/#insertion-options_8","title":"Insertion options","text":"

    Appears by default when you create a new FEM project.

    "},{"location":"welsim/users/objects/#object-properties_8","title":"Object properties","text":"

    The Properties View for this object include the following:

    Property Name Description ID A read-only field denotes the ID of this object Class Label A read-only field denotes the class name"},{"location":"welsim/users/objects/#initial-temperature","title":"Initial temperature","text":"

    Initial Temperature defines the temperature status at the beginning of the simulation for transient thermal analysis. An example of Initial Temperature and its properties are shown in Figure\u00a0below.

    "},{"location":"welsim/users/objects/#tree-dependencies_9","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: Study.
    • Valid Child Tree Objects: None.
    "},{"location":"welsim/users/objects/#insertion-options_9","title":"Insertion options","text":"

    You can use any of the following methods to insert initial temperature:

    • Click the item from the standard Toolbar.
    • Click the item from the FEM Menu.
    • Right click on the Study level objects, and choose Insert Conditions... > Initial Temperature command from the pop-up context menu.

    Note

    Inserting initial condition command is only applicable when the Physics Type and Analysis Type properties of FEM Project object are Thermal and Transient, respectively.

    "},{"location":"welsim/users/objects/#object-properties_9","title":"Object properties","text":"

    The Properties View for this object include the following:

    Property Name Description ID A read-only field denotes the ID of this object Class Label A read-only field denotes the class name Suppressed A Boolean field to include (False - Default) or exclude (True) the object in the analysis Scoping Method A read-only field shows All Initial Temperature A number field to define the temperature value. The default is 22.3"},{"location":"welsim/users/objects/#line","title":"Line","text":"

    The Line object defines a shape that is generated by the built-in modeler. An example of Line object and properties are illustrated in Figure\u00a0below.

    "},{"location":"welsim/users/objects/#tree-dependencies_10","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: Geometry Group.
    • Valid Child Tree Objects: None.
    "},{"location":"welsim/users/objects/#insertion-options_10","title":"Insertion options","text":"

    Appears when you create a line shape. You can use any of the following methods to insert a Line:

    • Click the Add Line item from the standard Toolbar.
    • Click the Add Line item from the Geometry Menu.
    • Right click on the Geometry level objects, and choose the Add Line from the pop-up context menu.
    "},{"location":"welsim/users/objects/#object-properties_10","title":"Object properties","text":"

    The Properties View for this object include the following:

    Property Name Description ID A read-only field denotes the ID of this object Class Label A read-only field denotes the class name Suppressed Include (False - default) or exclude (True) the geometry from the analysis Start Point A vector component field to determine one point of a line. The default value is 0 End Point A vector component field to determine another point of a line. The default value is (10, 10, 0) Material A drop-down field to assign the material for the selected part. The available material candidates are defined in the Material Project Source A read-only field indicates the shape is generated internally"},{"location":"welsim/users/objects/#material","title":"Material","text":"

    A Material object defines a material data using the associated properties and spreadsheet data. You can define multiple material objects in the WELSIM application. An example of a Material object and its properties and spreadsheet are shown in Figure\u00a0below.

    "},{"location":"welsim/users/objects/#tree-dependencies_11","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: Material Project.
    • Valid Child Tree Objects: None.
    "},{"location":"welsim/users/objects/#insertion-options_11","title":"Insertion options","text":"

    You can use any of the following methods to insert material:

    • Click the Add Material item from the standard Toolbar.
    • Click the Add Material item from the Material Menu.
    • Right click on the Material level objects, and choose Add Material command from the pop-up context menu.
    "},{"location":"welsim/users/objects/#object-properties_11","title":"Object properties","text":"

    The Properties View for this object include the following:

    Property Name Description ID A read-only field denotes the ID of this object Class Label A read-only field denotes the class name Suppressed A Boolean field to include (False - Default) or exclude (True) the object in the analysis"},{"location":"welsim/users/objects/#spreadsheet","title":"Spreadsheet","text":"

    The Material object is able to display the Spreadsheet window, which provides a friendly user interface for defining all material properties as shown in Figure\u00a0below. You can double click or right click on the Material object and select the Edit command to display the spreadsheet window.

    "},{"location":"welsim/users/objects/#material-project","title":"Material project","text":"

    The Material Project object holds all material definition objects.

    "},{"location":"welsim/users/objects/#tree-dependencies_12","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: Solution.
    • Valid Child Tree Objects: Material.
    "},{"location":"welsim/users/objects/#insertion-options_12","title":"Insertion options","text":"

    Appears by default when you create a new FEM project.

    "},{"location":"welsim/users/objects/#object-properties_12","title":"Object properties","text":"

    The Properties View for this object include the following:

    Property Name Description ID A read-only field denotes the ID of this object Class Label A read-only field denotes the class name"},{"location":"welsim/users/objects/#mesh-group","title":"Mesh group","text":"

    Mesh Group manages all meshing features and tools for the project. An example of mesh object and properties is shown in Figure\u00a0below.

    "},{"location":"welsim/users/objects/#tree-dependencies_13","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: FEM Project.
    • Valid Child Tree Objects: Mesh Settings, Mesh Method.
    "},{"location":"welsim/users/objects/#insertion-options_13","title":"Insertion options","text":"

    Appears by default when you create a new FEM project.

    "},{"location":"welsim/users/objects/#object-properties_13","title":"Object properties","text":"

    The Properties View for this object include the following:

    Property Name Description ID A read-only field denotes the ID of this object Class Label A read-only field denotes the class name Number of Nodes A read-only output field to show the number of generated nodes. The value is automatically updated as the mesh is completed Number of Elements A read-only output field to show the number of generated elements. The value is automatically updated as the mesh is completed Number of Tetrahedrons A read-only output field to show the number of generated tetrahedrons. The value is automatically updated as the mesh is completed Number of Triangles A read-only output field to show the number of generated triangles. The value is automatically updated as the mesh is completed"},{"location":"welsim/users/objects/#mesh-method","title":"Mesh method","text":"

    In the multi-body analysis, different parts may need different mesh density due to the various sizes of geometries. Mesh Method object helps you fine tuning the mesh for the specifically scoped geometries. An example of Mesh Method object is shown in Figure\u00a0below.

    "},{"location":"welsim/users/objects/#tree-dependencies_14","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: Mesh Group.
    • Valid Child Tree Objects: None.
    "},{"location":"welsim/users/objects/#insertion-options_14","title":"Insertion options","text":"

    You can use any of the following methods to insert Mesh Method:

    • Click the item from the standard Toolbar.
    • Click the item from the FEM Menu.
    • Right click on the Mesh level objects, and choose Add Mesh Method command from the pop-up context menu.
    "},{"location":"welsim/users/objects/#object-properties_14","title":"Object properties","text":"

    The Properties View for this object include the following:

    Property Name Description ID A read-only field denotes the ID of this object Class Label A read-only field denotes the class name Scoping Method A read-only field indicates the scoping method Geometry A geometry selection field to scope the geometry entities (volume/body only) Maximum Size A number field determines the maximum size of the generated finite element Quadratic A read-only field to show the order of the generated element. This property is determined by the Quadratic property in the global Mesh Settings object Mesh Density A drop-down enumeration field to determine the mesh density for the scoped geometries. The options are Very Coarse, Coarse, Regular, Fine, Very Fine, and User Defined. The default is Regular. If you select User Defined, additional properties Growth Rate, Segments per Edge, and Segments per Radius are shown Growth Rate A number field determines the change of mesh density in spatial. The default value is 0.3 Segments per Edge A number field determines the number of element segments per edge. The default value is 1. The higher value, the more dense mesh Segments per Radius A number field determines the number of element segments per radius. The default value is 2. The higher value, the more dense mesh Number of Nodes A read-only output field to show the number of generated nodes. The value is updated as the mesh is completed Number of Elements A read-only output field to show the number of generated elements. The value is updated as the mesh is completed Number of Tetrahedrons A read-only output field to show the number of generated tetrahedrons. The value is updated as the mesh is completed Number of Triangles A read-only output field to show the number of generated triangles. The value is updated as the mesh is completed"},{"location":"welsim/users/objects/#mesh-settings","title":"Mesh settings","text":"

    The Mesh Settings object is a global setting for the meshing operations. You change the global mesh settings by tuning the properties of this object. An example of Mesh Settings object is shown in Figure\u00a0[fig:ch3_guide_obj_mesh_settings].

    "},{"location":"welsim/users/objects/#tree-dependencies_15","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: Mesh Group.
    • Valid Child Tree Objects: None.
    "},{"location":"welsim/users/objects/#insertion-options_15","title":"Insertion options","text":"

    Appears by default when you create a new FEM project.

    "},{"location":"welsim/users/objects/#object-properties_15","title":"Object properties","text":"

    The Properties View for this object include the following:

    Property Name Description ID A read-only field denotes the ID of this object Class Label A read-only field denotes the class name Maximum Size A number field to determine the maximum size of the generated finite element Quadratic A Boolean field to determine the linear element (False) or bilinear element (True) Mesh Density A drop-down enumeration field to determine the mesh density for the scoped geometries. The options are Very Coarse, Coarse, Regular, Fine, Very Fine, and User Defined. The default is Regular. If you select User Defined, additional properties Growth Rate, Segments per Edge, and Segments per Radius are shown Growth Rate A number field indicate the change of mesh density in spatial. The default value is 0.3 Segments per Edge A number field indicate the element segment per edge. The default value is 1. The higher value, the more dense mesh Segments per Radius A number field indicate the element segment per radius. The default value is 2. The higher value, the more dense mesh"},{"location":"welsim/users/objects/#part","title":"Part","text":"

    The Part object defines a component of the geometry that is imported from an external CAD file. An example of Part object and properties are illustrated in Figure\u00a0[fig:ch3_guide_obj_part].

    "},{"location":"welsim/users/objects/#tree-dependencies_16","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: Geometry Group.
    • Valid Child Tree Objects: None.
    "},{"location":"welsim/users/objects/#insertion-options_16","title":"Insertion options","text":"

    Appears when you import geometry from external files. You can use any of the following methods to insert Part:

    • Click the item from the standard Toolbar.
    • Click the Import item from the Menu.
    • Right click on the Geometry level objects, and choose the Insert... from the pop-up context menu.
    "},{"location":"welsim/users/objects/#object-properties_16","title":"Object properties","text":"

    The Properties View for this object include the following:

    Property Name Description ID A read-only field denotes the ID of this object Class Label A read-only field denotes the class name Suppressed Include (False - default) or exclude (True) the part from the analysis Scale A number field to manipulate the size of the imported geometry. The default value is 1 Origin A vector component field to determine the location of origin. The default vector is 0 Material A drop-down field to assign the material for the selected part. The available material candidates are defined in the Material Project Structure Type A drop-down field to define the structure type. The available options are Solid, Shell, Beam, and Truss. The default is Solid Source A read-only field indicates the name of the imported geometry file"},{"location":"welsim/users/objects/#plate","title":"Plate","text":"

    The Plate object defines a shape that is generated by the built-in modeler. An example of Plate object and properties are illustrated in Figure\u00a0[fig:ch3_guide_obj_part].

    "},{"location":"welsim/users/objects/#tree-dependencies_17","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: Geometry Group.
    • Valid Child Tree Objects: None.
    "},{"location":"welsim/users/objects/#insertion-options_17","title":"Insertion options","text":"

    Appears when you create a plate shape. You can use any of the following methods to insert a Plate:

    • Click the Add Plate item from the standard Toolbar.
    • Click the Add Plate item from the Geometry Menu.
    • Right click on on the Geometry level objects, and choose the Add Plate from the pop-up context menu.
    "},{"location":"welsim/users/objects/#object-properties_17","title":"Object properties","text":"

    The Properties View for this object include the following:

    Property Name Description ID A read-only field denotes the ID of this object Class Label A read-only field denotes the class name Suppressed Include (False - default) or exclude (True) the geometry from the analysis Length A vector component field to determine the length vector of the plate. The default value is (10, 0, 0) Width A vector component field to determine the width vector from the origin. The default vector is (0, 5, 0) Material A drop-down field to assign the material for the selected part. The available material candidates are defined in the Material Project Thickness A number field to determine the thickness of the plate. The default value is 0.01 Source A read-only field indicates the shape is generated internally"},{"location":"welsim/users/objects/#results","title":"Results","text":"

    The Result objects define the simulation output for displaying and analyzing the results from a solution.

    "},{"location":"welsim/users/objects/#application-objects_2","title":"Application objects","text":"

    Deformation, Stress, Strain, Acceleration, Velocity, Rotation, Reaction Force, Reaction Moment, Temperature, Voltage, Electric Field, Electric Displacement, Electromagnetic Energy Density, Magnetic Potential, Magnetic Flux Density, Magnetic Field, User-Defined Result.

    "},{"location":"welsim/users/objects/#tree-dependencies_18","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: Answers.
    • Valid Child Tree Objects: None.
    "},{"location":"welsim/users/objects/#insertion-options_18","title":"Insertion options","text":"

    Appears by default when you start the WELSIM application.

    "},{"location":"welsim/users/objects/#object-properties_18","title":"Object properties","text":"

    The properties may vary for different result types. The following lists the properties that may be shown for the most of Result objects. See the Using results section for more information.

    Property Name Description ID A read-only field denotes the ID of this object Class Label A read-only field denotes the class name Suppressed Include (False - default) or exclude (True) the result object from the analysis Result By Determines the result loading type Set Number Determines the set number to retrieve the result data Maximum Value The maximum result value at the current step Minimum Value The minimum result value at the current step"},{"location":"welsim/users/objects/#solution","title":"Solution","text":"

    The Solution object acts as a root object in the WELSIM application. Only one Solution can exist per simulation session, and one solution can contain multiple FEM projects.

    "},{"location":"welsim/users/objects/#tree-dependencies_19","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: None - highest level in the tree.
    • Valid Child Tree Objects: FEM Project.
    "},{"location":"welsim/users/objects/#insertion-options_19","title":"Insertion options","text":"

    Appears by default when you create a new FEM project.

    "},{"location":"welsim/users/objects/#study","title":"Study","text":"

    The Study object holds all analysis related objects such as Study Settings, Boundary Conditions, Body Conditions, and Initial Conditions. An example of Study object is shown in Figure\u00a0[fig:ch3_guide_obj_study].

    "},{"location":"welsim/users/objects/#tree-dependencies_20","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: FEM Project.
    • Valid Child Tree Objects: Boundary Conditions, Body Conditions, Initial Temperature.
    "},{"location":"welsim/users/objects/#insertion-options_20","title":"Insertion options","text":"

    Appears by default when you create a new FEM project.

    "},{"location":"welsim/users/objects/#object-properties_19","title":"Object properties","text":"

    The Properties View for this object include the following:

    Property Name Description ID A read-only field denotes the ID of this object Class Label A read-only field denotes the class name Number of Steps A number field to determine the total number of steps. The default value is 1. The input value must be positive Current Step A number field to determine the current step for the successive settings. The default value is 1. The input value must be less than or equal to the Number of Steps. Note that Current Step property of Study object is adjustable, and determines the Current Step properties in other objects such as Study Settings, and Boundary Conditions Current End Time a number field to determine the end time of the current step. The value must be larger than that of the last step"},{"location":"welsim/users/objects/#study-settings","title":"Study Settings","text":"

    The Study Settings object allows you to define analysis and solving settings to customize a specific simulation model. An example of Study Settings object is shown in Figure\u00a0[fig:ch3_guide_obj_study_settings].

    "},{"location":"welsim/users/objects/#tree-dependencies_21","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: Study.
    • Valid Child Tree Objects: None.
    "},{"location":"welsim/users/objects/#insertion-options_21","title":"Insertion options","text":"

    Appears by default when you create a new FEM project.

    "},{"location":"welsim/users/objects/#object-properties_20","title":"Object properties","text":"

    The properties of Study Settings vary for different Physics and Analysis types. The following lists the available properties according to Analysis Type:

    • Static Structural and Thermal: Current Step (Read-Only), Number of SubSteps, Relative Tolerance, Absolute Tolerance, Maximum Iterations.
    • Transient Structural and Thermal: Current Step (Read-Only), Auto-Timing, Number of SubSteps, Time Incremental (Shown as Auto Timing is False), Relative Tolerance, Absolute Tolerance, Maximum Iterations.
    • Modal Structural: Number of Modes, Lancos Tolerance, Lancos Iterations.
    • ElectroStatic and MagnetoStatic: Current Step (Read-Only), Relative Tolerance, Absolute Tolerance, Maximum Iterations.
    "},{"location":"welsim/users/objects/#spreadsheet_1","title":"Spreadsheet","text":"

    The Study Settings object can display the Spreadsheet window, which provides a friendly user interface to review properties at all steps as shown in Figure\u00a0[fig:ch3_guide_obj_study_settings]. You can double click or right click on the Study Settings object and select the Edit command to display the Spreadsheet window.

    "},{"location":"welsim/users/overview/","title":"Overview","text":"

    This chapter is the user guide for working with WELSIM application, which is used to perform various types of structural, thermal, and electromagnetic analyses. The entire simulation process is tied together by a unified graphical user interface.

    "},{"location":"welsim/users/overview/#overview","title":"Overview","text":"

    WELSIM application enables you to investigate design alternative efficiently. You can modify any aspect of analysis or vary parameters, then update the project to the see results of the change in the modeling. A typical modeling process is composed of defining the model, and boundary conditions applied to it, computing for the simulation's response to the conditions, then evaluating the solutions with a variety of tools.

    The WELSIM software application has a tree structure that consists of \u201cobjects\u201d that enable you to define simulation conditions. By clicking the objects, you activate the associated properties in the property window, and you can use the corresponding command and tools to conduct the simulation study. The following sections describe in details to use the WELSIM to set up and implement simulation studies.

    "},{"location":"welsim/users/results/","title":"Using results","text":"

    This section describes the details of a result. The help for Results is classified by the physics and analysis types.

    "},{"location":"welsim/users/results/#introduction-to-the-results","title":"Introduction to the results","text":"

    You can generate results to understand the behaviors of the analyzed model. The advantages of using results in WELSIM application are:

    • Illustrates result contour over the simulation domain for various solution quantities, such as stress, deformation, temperature, voltage, etc.
    • Probe results to calculate the abstract engineering quantities, such as reaction forces.
    • Displays the minimum and maximum values over time in Chart and Tabular Data windows.
    • Allows customized results using User-Defined Results.
    • Export result data to external files.
    "},{"location":"welsim/users/results/#result-application","title":"Result application","text":"

    Applying results can be achieved by

    • Right-click on the Answer object or its children objects in the tree, select Insert Results from the pop-up context menu and then choose from the result options.
    • Click the result object from the Menu or Toolbar.
    "},{"location":"welsim/users/results/#result-definitions","title":"Result definitions","text":"

    This section describes the fundamental features in result definitions.

    "},{"location":"welsim/users/results/#result-controller","title":"Result controller","text":"

    In the multi-step or transient analysis, the solution contains result data at various steps. Result By property provides a controller to select the desired step data to display. You can determine to show the result by Set Number or Time/Frequency. The default is by Set Number. Additional properties such as Set Number, Time, or Frequency shows up as you define the Result By property.

    "},{"location":"welsim/users/results/#clear-generated-data","title":"Clear generated data","text":"

    You can clear results data from the database using the Clear Result command from the Toolbar, Menu, or the right-click context menu on a result object.

    You also can clear entire solution data from the database using the Clear Calculated Data command from the Toolbar, Menu, or the right-click context menu on an Answers object. These two commands from the context menu are shown in Figure\u00a0[fig:ch3_guide_rst_clear_data].

    "},{"location":"welsim/users/results/#display-controller","title":"Display controller","text":"

    You can select the Graphics tab on the result Properties View pane. As shown in Figure\u00a0[fig:ch3_guide_rst_display_prop], the following properties are available to adjust the contour display:

    • Line Width: determines the line width of the mesh frame.
    • Show Mesh: Show (True) or hide (False - default) the mesh frames on the result contour.
    • Show Backface: Show (True - default) result contour on the back face.
    • Show Deformation: Show (True) or ignore (False - default) the structural deformation on the result contour. This option is only valid for the structural analysis.
    • Deformation Scale: Determines the scale of the deformation, the default value 1 denotes the true deformation. This option is only valid as Show Deformation is True.

    "},{"location":"welsim/users/results/#structural-results","title":"Structural results","text":"

    The following structural results are described in this section.

    "},{"location":"welsim/users/results/#deformation","title":"Deformation","text":"

    Physical deformation of the modeling geometries can be calculated and plotted in the form of contour. This result is available for all structural analysis. The following gives the properties of result object:

    • Type: The available options are Deformation X, Deformation Y, Deformation Z, and Total Deformation. The default is Total Deformation, which essentially shows the magnitude of the deformation vector.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.
    "},{"location":"welsim/users/results/#stress","title":"Stress","text":"

    The stress quantities provide mechanical insights to the given model and material of a part or an assembly under a specific structural loading environment. A general 3D stress state contains three normal and three shear stresses. The stress quantities in WELSIM application are the nodal values and available for all structural analysis. The equivalent stress (also called von-Mises stress) is related to the principal stresses by the equation:

    \\[ \\sigma_{VM}=\\left[\\dfrac{(\\sigma_{11}-\\sigma_{22})^{2}+(\\sigma_{22}-\\sigma_{33})^{2}+(\\sigma_{33}-\\sigma_{11})^{2}+6(\\sigma_{12}^{2}+\\sigma_{23}^{2}+\\sigma_{31}^{2})}{2}\\right]^{1/2} \\]

    The following gives the properties of result object:

    • Type: The available options are Normal Stress X, Normal Stress Y, Normal Stress Z, Shear Stress XY, Shear Stress YZ, Shear Stress XZ, and von-Mises Stress. The default is von-Mises Stress.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.
    "},{"location":"welsim/users/results/#strain","title":"Strain","text":"

    The strain quantities provide deformation insights to the given model and material of a part or an assembly under a specific structural loading environment. This result is available for all structural analysis.

    The available properties for strain result are:

    • Type: The available options are Normal Strain X, Normal Strain Y, Normal Strain Z, Shear Strain XY, Shear Strain YZ, and Shear Strain XZ. The default is Normal Strain X.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.
    "},{"location":"welsim/users/results/#acceleration","title":"Acceleration","text":"

    The acceleration quantities demonstrate the acceleration of the given model and material of a part or an assembly under a specific structural loading environment. This result is available for transient structural analysis.

    The available properties for acceleration result are:

    • Type: The available options are Acceleration X, Acceleration Y, Acceleration Z, and Total Acceleration. The default is Total Acceleration.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Note

    Acceleration result is only available for the transient structural analysis.

    "},{"location":"welsim/users/results/#velocity","title":"Velocity","text":"

    The velocity quantities demonstrate the velocity of the given model and material of a part or an assembly under a specific structural loading environment. This result is available for transient structural analysis.

    The available properties for velocity result are:

    • Type: The available options are Velocity X, Velocity Y, Velocity Z, and Total Velocity. The default is Total Velocity.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Note

    Velocity result is only available for the transient structural analysis.

    "},{"location":"welsim/users/results/#rotation","title":"Rotation","text":"

    The rotation quantities demonstrate the rotation of the given model and material of a part or an assembly under a specific structural loading environment. This result is available for only shell structure.

    The available properties for rotation result are:

    • Type: The available options are Rotation XY, Rotation YZ, Rotation XZ, and Total Rotation. The default is Total Rotation.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Note

    Rotation result is only available for the shell structural analysis.

    "},{"location":"welsim/users/results/#reaction-force-probe","title":"Reaction Force Probe","text":"

    The reaction force provides an insight to abstract reaction force of the given model and material of a part or an assembly under a specific structural loading environment. This result is available for structural analysis.

    The available properties for a reaction force probe are:

    • Type: The available options are Reaction Force X, Reaction Force Y, Reaction Force Z, and Total Reaction Force. The default is Total Reaction Force.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Note

    This probe result does not show contour on the geometry. The primary output data is the Maximum Value and Minimum Value displayed in the Properties View window.

    "},{"location":"welsim/users/results/#reaction-moment-probe","title":"Reaction Moment Probe","text":"

    The reaction moment provides an insight to abstract quantities of the given model and material of a part or an assembly under a specific structural loading environment. This result is available for only shell structure.

    The available properties for reaction moment probe are:

    • Type: The available options are Reaction Moment X, Reaction Moment Y, Reaction Moment Z, and Total Reaction Moment. The default is Total Reaction Moment.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Note

    Reaction moment probe result is only available for the shell structural analysis.

    Reaction moment probe result does not show contour on the geometry. The primary output data is the Maximum Value and Minimum Value displayed in the Properties View window.

    "},{"location":"welsim/users/results/#thermal-results","title":"Thermal results","text":"

    The following thermal results are described in this section:

    "},{"location":"welsim/users/results/#temperature","title":"Temperature","text":"

    The temperature, a scalar quantity, provides an insight to the temperature distribution throughout the structure. Temperature results can be displayed as a contour plot.

    The available properties for temperature are:

    • Type: The sole available option is Temperature. This field is read-only.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.
    "},{"location":"welsim/users/results/#electric-results","title":"Electric results","text":""},{"location":"welsim/users/results/#voltage","title":"Voltage","text":"

    The voltage, a scalar quantity, provides an insight to the electric potential distribution throughout the conductor bodies.

    The available properties for voltage are:

    • Type: The sole available option is Voltage. This is a read-only field.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.
    "},{"location":"welsim/users/results/#electric-field","title":"Electric Field","text":"

    The electric field, a vector component quantity, provides an insight to the electric field intensity distribution throughout the bodies.

    The available properties for Electric Field are:

    • Type: The available options are Electric Field X, Electric Field Y, Electric Field Z, Total Electric Field. The default Total Electric Field option displays the total magnitude of the vectors as a contour.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.
    "},{"location":"welsim/users/results/#current-density","title":"Current Density","text":""},{"location":"welsim/users/results/#electric-displacement","title":"Electric Displacement","text":"

    The electric displacement, a vector component quantity, provides an insight to the electric displacement intensity distribution throughout the bodies. This quantity has the constitutive relation with Electric Field as shown in equation below:

    \\[ D=\\epsilon E \\]

    where D is the electric displacement, E is the electric field, and \\(\\epsilon\\) is the electric permittivity. The available properties for Electric Displacement are:

    • Type: The available options are Electric Displacement X, Electric Displacement Y, Electric Displacement Z, Total Electric Displacement. The default Total Electric Displacement option displays the total magnitude of the vectors as a contour.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.
    "},{"location":"welsim/users/results/#energy-density","title":"Energy Density","text":"

    The energy density, a scalar quantity, provides an insight to the electromagnetic energy throughout the simulation bodies.

    The available properties for energy density are:

    • Type: The sole available option is Energy Density. This is a read-only field.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.
    "},{"location":"welsim/users/results/#magnetic-results","title":"Magnetic results","text":"

    The magnetostatic analysis provides fundamental result quantities for you to investigate the field.

    "},{"location":"welsim/users/results/#electric-potential","title":"Electric Potential","text":""},{"location":"welsim/users/results/#magnetic-potential","title":"Magnetic Potential","text":"

    Magnetic Potential vector components are computed throughout the simulation domain. The available properties for Magnetic Potential are:

    • Type: The available options are Magnetic Potential X, Magnetic Potential Y, Magnetic Potential Z, Total Magnetic Potential. The default Total Magnetic Potential option displays the total magnitude of the vectors as a contour.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.
    "},{"location":"welsim/users/results/#magnetic-flux-density","title":"Magnetic Flux Density","text":"

    Magnetic Flux Density vector components are computed throughout the simulation domain. The available properties for Magnetic Flux Density are:

    • Type: The available options are Magnetic Flux Density X, Magnetic Flux Density Y, Magnetic Flux Density Z, Total Magnetic Flux Density. The default Total Magnetic Flux Density option displays the total magnitude of the vectors as a contour.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.
    "},{"location":"welsim/users/results/#magnetic-field","title":"Magnetic Field","text":"

    Magnetic Field vector components are computed throughout the simulation domain. The available properties for Magnetic Field are:

    • Type: The available options are Magnetic Field X, Magnetic Field Y, Magnetic Field Z, Total Magnetic Field. The default Total Magnetic Field option displays the total magnitude of the vectors as a contour.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.
    "},{"location":"welsim/users/results/#user-defined-results","title":"User-Defined Results","text":"

    This section describes the use of the User-Defined Result feature in WELSIM application. The user-defined result provides you with more flexible result evaluation methods. In addition to the system-provided result types, the User-Defined Result allows you to plot more broad kinds of results with the given expression.

    Like other result types that display contours, chart, and data, the User-Defined results:

    • Need you to input a supported Expression to retrieve the result data.
    • Need you to specify a set, time, or frequency in the Properties View window.
    • Display Maximum and Minimum values in the Properties View window.
    • Display Maximum and Minimum data over time in Tabular Data and Chart windows.

    Applying a User-Defined Result can be done using one of the following methods:

    • Select the User-Defined Result item from the Menu of FEM.
    • Select the User-Defined Result button from the standard Toolbar.
    • Right-click the Solution or Result object, and select the User-Defined Result item.

    An example of User Defined Result properties view is shown in Figure\u00a0[fig:ch3_guide_user_defined_rst_prop].

    "},{"location":"welsim/users/results/#user-defined-result-expressions","title":"User Defined Result expressions","text":"

    The property Expression accepts the capital string values, and the lower case letters are converted automatically to the capital letters. The following lists the supported Expressions used in the WELSIM application:

    Expression Result description UVW Total deformation for structural analysis U Directional deformation X for structural analysis V Directional deformation Y for structural analysis W Directional deformation Z for structural analysis SIGVM von-Mises stress for the structural analysis SIG00 Normal stress X for the structural analysis SIG11 Normal stress Y for the structural analysis SIG22 Normal stress Z for the structural analysis SIG01 Shear stress XY for the structural analysis SIG12 Shear stress YZ for the structural analysis SIG02 Shear stress XZ for the structural analysis EPS00 Normal strain X for the structural analysis EPS11 Normal strain Y for the structural analysis EPS22 Normal strain Z for the structural analysis EPS01 Shear strain XY for the structural analysis EPS12 Shear strain YZ for the structural analysis EPS02 Shear strain XZ for the structural analysis RFT Total reaction force for the structural analysis RFX Directional reaction force X for the structural analysis RFY Directional reaction force Y for the structural analysis RFZ Directional reaction force Z for the structural analysis RMT Total reaction moment for the shell structural analysis RMX Directional reaction moment X for the shell structural analysis RMY Directional reaction moment Y for the shell structural analysis RMZ Directional reaction moment Z for the shell structural analysis ENEEL Total energy for the structural analysis V123 Total velocity for the transient structural analysis V1 Directional velocity X for the transient structural analysis V2 Directional velocity Y for the transient structural analysis V3 Directional velocity Z for the transient structural analysis A123 Total acceleration for the transient structural analysis A1 Directional acceleration X for the transient structural analysis A2 Directional acceleration Y for the transient structural analysis A3 Directional acceleration Z for the transient structural analysis ROTT Total rotation for shell structural analysis ROTX Directional rotation X for shell structural analysis ROTY Directional rotation Y for shell structural analysis ROTZ Directional rotation Z for shell structural analysis TEMP Temperature for thermal analysis EM_U Voltage for electromagnetic analysis EM_ET Total electric field intensity for electromagnetic analysis EM_EX Directional electric field intensity X for electromagnetic analysis EM_EY Directional electric field intensity Y for electromagnetic analysis EM_EZ Directional electric field intensity Z for electromagnetic analysis EM_DT Total electric displacement for electromagnetic analysis EM_DX Directional electric displacement X for electromagnetic analysis EM_DY Directional electric displacement Y for electromagnetic analysis EM_DZ Directional electric displacement Z for electromagnetic analysis EM_EN Energy density for electromagnetic analysis EM_HT Total magnetic field intensity for electromagnetic analysis EM_HX Directional magnetic field intensity X for electromagnetic analysis EM_HY Directional magnetic field intensity Y for electromagnetic analysis EM_HZ Directional magnetic field intensity Z for electromagnetic analysis EM_BT Total magnetic flux density for electromagnetic analysis EM_BX Directional magnetic flux density X for electromagnetic analysis EM_BY Directional magnetic flux density Y for electromagnetic analysis EM_BZ Directional magnetic flux density Z for electromagnetic analysis EM_AT Magnitude of a magnetic potential vector for electromagnetic analysis EM_A_x Magnetic potential vector component X for electromagnetic analysis EM_A_y Magnetic potential vector component Y for electromagnetic analysis EM_A_z Magnetic potential vector component Z for electromagnetic analysis"},{"location":"welsim/users/results/#result-tools","title":"Result tools","text":""},{"location":"welsim/users/results/#result-legend","title":"Result legend","text":"

    The result legend feature helps you display the result range and contour colors in a specific design. The legend component is shown in the left of the Graphics window. As shown in Figure below, the legend displays the following information:

    • Project Name
    • Result Object Name
    • Result Type
    • Unit
    • Time
    • Current Date and Time

    The Legend style can be adjusted by right-clicking on the Legend field. As shown in Figure\u00a0below, the Context Menu contains items:

    • Banded: Displays the contour in banded colors. It is mutually exclusive to the Smooth option. The default is toggled Off.
    • Smooth: Displays the contour in smooth colors. It is mutually exclusive to the Banded option. The default is toggled On.
    • User-Defined Max/Min: Allows you to manually set the Minimum and Maximum values on the result legend, the contour on the bodies can be updated accordingly. Once this option is toggled, a popped-up dialog lets you input the specific minimum and maximum values. You can revert the manual minimum and maximum values by toggling off this option. The min/max input dialog is shown below.
    • Logarithmic Scale: Set legend markers in a logarithmic scale order. The default is toggled Off.
    • Scientific Notation: Use the scientific notation. The default is On.
    • Digits: Determines the number of digits after the decimal symbol, the range is between 1 and 7. The default value is 3.
    • Labels: Determines the number of legend markers, the range is between 6 and 14. The default value is 11.
    • Color Scheme: Provides you four color options: Rainbow, Reverse Rainbow, Grayscale, Reverse Grayscale. The default is Rainbow.
    • Reset All: Resets all settings to the default.

    Note

    For the option of user-defined max/min settings, the input maximum value must be greater than the minimum value.

    "},{"location":"welsim/users/results/#exporting-results","title":"Exporting results","text":"

    The data associated with result objects can be exported in ASCII (.txt or .dat) file format by right-clicking on the desired result object and selecting the Export Result option. Once executed, you are asked to define a filename and select the directory to save the file.

    Note

    The desired result object must have been successfully evaluated before exporting the result data.

    "},{"location":"welsim/users/steps/","title":"Steps for using the application","text":"

    This section discusses the workflow in performing simulation analysis in the WELSIM application.

    "},{"location":"welsim/users/steps/#creating-analysis-environment","title":"Creating analysis environment","text":"

    All analyses in WELSIM are represented by one independent analysis environment. After creating a new project environment, you can choose the analysis type and define the parameters to conduct the simulation study.

    "},{"location":"welsim/users/steps/#unit-system-behavior","title":"Unit system behavior","text":"

    The WELSIM provides eight types of unit systems for you to chose. You can select the preferred unit system from File > Preferences > General > Units. Once the unit system is chosen, quantity units of FEM objects are fixed. However, user still can select different unit for the quantity defined in material module. The material quantity will be converted to the system units at solve.

    "},{"location":"welsim/users/steps/#defining-materials","title":"Defining materials","text":"

    In simulation analysis, a geometry's attribute is influenced by the material properties that are assigned to the body. When you create a new FEM project, a material project and a structural steel material object are created automatically. This material project can include multiple material objects, which contains the material properties for the successive analysis. The system-generated structural steel can be used directly.

    You can add new materials by either one of the methods below:

    • Click the Add Material button from Toolbar.
    • Click the Add Material item from the Material Menu.
    • Right click on the Material Project tree object, and choose Add Material item from the pop-up context menu.
    "},{"location":"welsim/users/steps/#editing-material-properties","title":"Editing material properties","text":"

    To manage material properties, you can

    • double click on the material object in the tree, or
    • right click on the material object and select Edit item from the pop-up context menu as shown in Figure\u00a0below.

    "},{"location":"welsim/users/steps/#defining-material-properties","title":"Defining material properties","text":"

    In the material definition panel, two tabs display on the left sub-window as shown in Figure\u00a0below. The Library tab gives you a quick method to add a bundle of properties for the specific type of material. The Build allows you to add each preferred property one by one.

    "},{"location":"welsim/users/steps/#defining-analysis-type","title":"Defining analysis type","text":"

    There are several analysis types are supported in WELSIM. You can define the analysis type while performing an analysis. For example, if the temperature is to be calculated, you would choose a thermal analysis. In the FEM project object, you can set the Physics Type and Analysis Type from the Properties View window as shown in Figure\u00a0below. The currently available physics and analysis types are:

    • Structural: Static, Transient, Modal
    • Thermal: Steady-State, Transient
    • Electromagnetics: Electostatic, Magnetostatic

    "},{"location":"welsim/users/steps/#generating-geometries","title":"Generating geometries","text":"

    There are two ways of generating geometries in the WELSIM application. You can either create primitive shapes using built-in tools or import an existing STEP/IGES file. Since the built-in tool only can create primitive shapes such as box and cylinder, it is recommended to create your complex geometry in an external application and import the CAD file into WELSIM.

    "},{"location":"welsim/users/steps/#create-primitive-shapes","title":"Create primitive shapes","text":"

    The following lists the primitive shapes that WELSIM build-in tool can create:

    • 3D box
    • 3D cylinder
    • 3D plate
    • 3D line
    "},{"location":"welsim/users/steps/#import-geometry-files","title":"Import geometry files","text":"

    For the complex geometry or practical designs, you can create your geometry in an external CAD application, and import to WELSIM application via STEP or IGES file. The properties view of the imported geometry allows you to define the geometry attributes, as shown in Figure\u00a0below.

    "},{"location":"welsim/users/steps/#defining-part-behaviors","title":"Defining part behaviors","text":"

    The primitive and imported parts have slightly different behaviors, but the primary attributes are the same. This section describes the behaviors of the imported part.

    "},{"location":"welsim/users/steps/#geometry-scale","title":"Geometry scale","text":"

    The Scale determines the size change of the imported geometry, and the current geometry size is the original size multiplied by the scale value. The default value is 1. Increasing the scale value enlarges the geometry, reducing this value causes the geometry smaller. The scale ruler on the bottom of the Graphics Window provides a reference for users to recognize the current size of the geometry.

    "},{"location":"welsim/users/steps/#spatial-parameters","title":"Spatial parameters","text":"

    For the imported geometry, the Spatial Parameters allows the user to adjust the origin of geometries. The default value is the origin of global coordinates (0, 0, 0).

    "},{"location":"welsim/users/steps/#material-assignment","title":"Material assignment","text":"

    Once you have defined the material objects and created the geometry, you can assign the specific material to the selected geometry object. Click Material property, and the cell displays all candidate materials in the drop-down list as shown in Figure\u00a0below. Each entry includes the material object name and ID.

    "},{"location":"welsim/users/steps/#structure-type","title":"Structure type","text":"

    The Structure Type provides a topological reference for you to differentiate the solid, shell, and beam geometries. The default structural type is Solid.

    "},{"location":"welsim/users/steps/#source-file-name","title":"Source file name","text":"

    The read-only Source property shows the information of the imported geometry file name. It provides a reference for you to identify the specific imported CAD file.

    "},{"location":"welsim/users/steps/#applying-mesh","title":"Applying mesh","text":"

    Meshing is the process that your geometry is spatially discretized into finite elements and nodes. The quality of the mesh directly influences the final solutions. You can automatically mesh the geometry domains, and generate 3D tetrahedral elements (Tet10 and Tet4), or 3D triangle elements (Tri6 and Tri3).

    If your model does not mesh, the system applies the default settings and automatically meshes the domains at solve time. However, it is recommended to mesh the domain before solving since the system provides a reference for you to examine the mesh. Mesh Settings controls are available to assist you in adjusting the mesh density and quality.

    In the multi-body analysis, you can apply local Mesh Method object and scope the target bodies to achieve a finer or coarser mesh comparing to other bodies.

    "},{"location":"welsim/users/steps/#defining-connections","title":"Defining connections","text":"

    In some analyses, you may need to set up the connections such as contact. The available connection features are:

    • Contact Pair: defines two parts are bonded or may contact during the motion. It is supported for both structural and thermal analyses.
    "},{"location":"welsim/users/steps/#defining-study-settings","title":"Defining study settings","text":"

    The Study and Study Settings objects are inserted automatically when you started a new FEM project in the step of Creating Analysis Environment. These two objects define the necessary conditions for the solving, such as steps, substeps, end time, convergence tolerance, etc.

    You can create multiple steps in the properties of the Study object. As shown in Figure\u00a0below, the property Number of Steps determines the total steps in the analysis. The Current Step property of determines the current step that other properties are defining on.

    The spreadsheet for the Study Settings object displays the related properties for all steps.

    "},{"location":"welsim/users/steps/#defining-initial-conditions","title":"Defining initial conditions","text":"

    Based on the chosen analysis type, you can define the initial conditions to the analysis. The following initial conditions are supported:

    • Initial Temperature: For a transient thermal analysis, you can specify an initial temperature object. The properties view of initial temperature is shown in Figure\u00a0below.

    "},{"location":"welsim/users/steps/#applying-boundary-conditions","title":"Applying boundary conditions","text":"

    You can impose various boundary conditions based on the types of analysis. For instance, the structural analysis allows you to impose pressure, force, displacement, and other boundary conditions. The thermal analysis enable you to impose thermal flux and temperature boundary conditions.

    The body conditions are imposed on the volumes instead of surfaces or edges. For example, the standard earth gravity, acceleration, and rotational velocity act on the bodies.

    The boundary and body conditions act according to the steps. For the multi-step analysis, the magnitude of those conditions can vary. The Tabular Data and Chart windows show related data and curves to represent the input values along time/steps.

    For the transient analysis, the Initial Status property provides options for the user to define the boundary value at the beginning of the simulation. As shown in Figure\u00a0below, you can choose the initial value to be None or Equal to Step 1.

    "},{"location":"welsim/users/steps/#solving","title":"Solving","text":"

    The WELSIM application contains the integrated solvers. These solvers are essentially executable applications and can be instantiated by the front-end using inter-processing scheme. During the solving process, the front-end program generates the input scripts, mesh data file and feeds these files to the solvers. After calculation, the front-end interface can consume the generated result files and displays the resulting contour on the GUI.

    Depended on the analysis type, the following solvers are available in WELSIM:

    • WelSimFemSolver1: solves the structural and thermal problems.
    • WelSimFemSolver2: solves the electromagnetic problems.
    "},{"location":"welsim/users/steps/#solution-progress","title":"Solution progress","text":"

    The overall solution progress can be indicated by the Output window, where you can view the output information from the solvers. If an calculation is completed successfully, you can see the similar message below in the Output window:

    WelSimFemSolver2 Completed !!\n

    "},{"location":"welsim/users/steps/#evaluating-results","title":"Evaluating results","text":"

    The WELSIM application provides fully integrated result review module, and you can evaluate simulation results with no need of other software tools. Depends on the analysis type, various results are available for you to examine solutions. The Using Results section lists all available results that may be used in the post-processing.

    The following lists the methods to add result objects:

    • Right click a Answers or Result object in the tree, and choose the target result item from the context menu.
    • Click the result button from the Menu or Toolbar.

    The following steps are to evaluate results:

    • Select the target result object in the tree.
    • If the solution is calculated, you can review the result by clicking the Evaluate button from the toolbar, menu, or the right-clicking context menu.

    The following result types are available:

    • Contour results: Displays a contour plot of result over geometry surface.
    • Probe results: Displays an annotation of the target area, and shows results in the Properties view.

    See the Using Results section for more details on results.

    "},{"location":"welsim/users/steps/#saving-analysis-project","title":"Saving analysis project","text":"

    You can save the solution with all settings into an external file, and open this file later or on a different computer that has WELSIM installed. The persisted data include two parts:

    • WELSIM database file (*.wsdb).
    • Associated data folder, the folder name is consistent with the database file.

    Note

    The saved database file (*.wsdb) contains the information of objects and their properties. The geometry data is saved as external STEP files. The mesh and result object settings are saved. However, the mesh and result data are not included yet. You need to perform meshing and solving to obtain those data in a resumed project.

    "},{"location":"welsim/users/study/","title":"Configuring study settings","text":"

    This section describes the Study and Study Settings configuration.

    "},{"location":"welsim/users/study/#general-settings","title":"General settings","text":"

    When you start a new FEM Project, the Study and Study Settings objects are inserted in the tree automatically. With these objects selected, you can define many solving options in the Properties View window. For example, you can define the properties of Steps, Substeps, Solver, etc.

    "},{"location":"welsim/users/study/#step-controls","title":"Step controls","text":"

    Step Controls define the analysis steps for both static and transient analysis. These properties in the Study object has such characteristics:

    • Number of Steps must be positive.
    • Current Step must be less than or equal to the Number of Steps. Note that Current Step property of Study object is adjustable, and determines the Current Step properties in other objects such as Study Settings, and boundary conditions.
    • Current End Time must be greater than the Current End Time in the last step.
    "},{"location":"welsim/users/study/#nonlinear-controls","title":"Nonlinear controls","text":"

    For the nonlinear analysis, the properties of the Nonlinear Settings Controls determine the convergence of the solution. Those properties are mainly related to the Newton-Raphson algorithm.

    • Relative Tolerance: The default value is 1e-4.
    • Absolute Tolerance: The default value is 1e-5.
    • Maximum Iterations: The default value is 40.
    "},{"location":"welsim/users/study/#solver-controls","title":"Solver controls","text":"

    Solver Controls determines the attributes of the linear algebra solvers. The following lists the related properties:

    • Solver Method: provides user to select a solver from the options Conjugate Gradient, BiCGStab, GMRES, GPBiCG, MUMPS, Direct, DIRECTmkl, where MUMPS, Direct, and DIRECTmkl are the direct solver, and the rest are iterative solver. The default solver is MUMPS.
    • Number of Iterations: defines the maximum number of the linear algebra solver iterations.
    • Residual Threshold: defines the residual threshold for the linear algebra solver.
    "},{"location":"welsim/users/study/#output-controls","title":"Output controls","text":"

    The Output Controls determines the output rules of solving and results. The available options are:

    • Output Time Log: outputs the log for each time step. The default is false.
    • Output Iteration Log: outputs the log each iteration step. The default is false.
    • Generate Result Files: generates ASCII format result file. The default is false.
    • Output Frequency: determines the frequency of the result data output. The default value is 1, which outputs result data every step.
    • Reorder Result Element: changes the higher order elements to the linear elements in the mesh data of the result file. The deatil is false.
    "},{"location":"welsim/vm/electromagnetic/","title":"Electromagnetic","text":"

    To be added...

    "},{"location":"welsim/vm/introduction/","title":"Introduction","text":"

    WELSIM Verification Manual presents a collection of test cases that demonstrate a number of the capabilities of the WELSIM analysis environment. The available tests are engineering problems that provide independent verification, usually a closed form equation. Many of them are classical engineering problems.

    "},{"location":"welsim/vm/introduction/#introduction","title":"Introduction","text":""},{"location":"welsim/vm/introduction/#index-of-test-cases","title":"Index of test cases","text":"

    The following lists all verification cases tested with WELSIM application. Each case entry describes the test case number, element type, analysis type, and solution options.

    • VM001: Solid Element, Static Structural, Linear.
    • VM002: Solid Element, Static Structural, Linear.
    • VM003: Solid Element, Steady-State Thermal, Linear.
    "},{"location":"welsim/vm/structural/","title":"Structural","text":""},{"location":"welsim/vm/structural/#statically-inteterminate-reaction-force-analysis-vm001","title":"Statically inteterminate reaction force analysis VM001","text":"

    An assembly of three cylinder bars is supported at both end surfaces. Forces \\(F_{1}\\) and \\(F_{2}\\) is applied on the middle of the assembly as shown in Figure\u00a0[fig:ch5_vm_001_schematic].

    The input data about material, geometry, and loads are given in Table\u00a0[tab:ch5_vm_001_parameters].

    Material Properties Geometric Properties Boundary Conditions Young's Modulus E=2e11 h=10 \\(F_{1}\\)=2000 Mass Density \\(\\rho\\)=7850 a=3 \\(F_{2}\\)=1000 Poission's Ratio v=0.3 b=3

    The geometries and imposed boundary conditions are shown in Figure\u00a0[fig:ch5_vm_001_bc].

    The result comparison is given in Table\u00a0[tab:ch5_vm_001_result].

    Results Theory WELSIM Error (%) Z Reaction Force at Top Fixed Support 1800 1810 0.556 Z Reaction Force at Bottom Fixed Support 1200 1202 0.167

    This test case project file is located at [vm/VM_WELSIM_001.wsdb].

    "},{"location":"welsim/vm/structural/#rectangular-plate-with-circular-hole-subjected-to-tensile-pressure-vm002","title":"Rectangular plate with circular hole subjected to tensile pressure VM002","text":"

    A rectangular plate with a circular hole is fixed along one of the end faces. A tensile pressure load is imposed on another end face as shown in Figure\u00a0[fig:ch5_vm_002_schematic].

    The input data about material, geometry, and loads are given in Table\u00a0[tab:ch5_vm_002_parameters].

    Material Properties Geometric Properties Boundary Conditions Young's Modulus E=2e11 a=15 Pressure P=1e4 Poission's Ratio v=0.3 b=7.5 c=2.5 d=5 thickness=1

    The geometries and imposed boundary conditions are shown in Figure\u00a0[fig:ch5_vm_002_bc].

    The result comparison is given in Table\u00a0[tab:ch5_vm_002_result].

    Results Theory WELSIM Error (%) Maximum Normal X Stress 3.125e4 3.156e4 0.992

    This test case project file is located at %Installation Directory%/vm/VM_WELSIM_002.wsdb.

    "},{"location":"welsim/vm/thermal/","title":"Thermal","text":""},{"location":"welsim/vm/thermal/#heat-transfer-in-a-composite-wall-vm003","title":"Heat transfer in a composite wall VM003","text":"

    An assembly wall consists of fire brick and insulating brick. The temperature and surface convection coefficient are given for both end surfaces. The simulation tries to find the temperature distribution of the assembly. The schematic view of the model is shown in Figure\u00a0[fig:ch5_vm_003_schematic].

    The input data about material, geometry, and loads are given in Table\u00a0[tab:ch5_vm_003_parameters].

    Material Properties Geometric Properties Boundary Conditions Thermal conductivity of fire brick wall: \\(k_{F}\\) = 1.852e-5 a=14 Convection coefficient \\(h_{F}\\)=2.315e-5 Thermal conductivity of insulating wall: \\(k_{A}\\)=2.315e-6 b=9 Ambient temperature \\(T_{F}\\)=3000 cross-section=1x1 Convection coefficient \\(h_{A}\\)=3.858e-6 Ambient temperature \\(T_{A}\\)=80

    The geometries and imposed boundary conditions are shown in Figure\u00a0[fig:ch5_vm_003_bc].

    The result comparison is given in Table\u00a0[tab:ch5_vm_003_result].

    Results Theory WELSIM Error (%) Minimum Temperature 336 336.724 0.215 Maximum Temperature 2957 2957.216 0.007

    Info

    This test case file is located at vm/VM_WELSIM_003.wsdb.

    "}]} \ No newline at end of file +{"config":{"lang":["en"],"separator":"[\\s\\-\\.]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Welcome","text":"

    WELSIM was born out of a vision to create a general-purpose simulation utility that could successfully enable a wide range of engineering and science communities to conduct simulation with more confidence. Customers use our software to help ensure the integrity of their innovations. WELSIM comes with an all-in-one user interface and self-integrated features. It is a long-term-support product that aims to accurately model engineering problems using the prestigious open source solvers.

    "},{"location":"#why-welsim","title":"Why WELSIM","text":"
    • Support 3D structural, thermal, fluid, and electromagnetic analyses that reveal physics-based results. Convenient data interface to export mesh or result files.
    • No wait. You can download and use WELSIM immediately.
    • The secure software program and no collection of your data. No need for an internet connection to run the program.
    • The ease-of-use graphical interface requires no learning curve.
    • Friendly pricing options. Free trial. No hidden fees. No commitments.
    "},{"location":"#where-to-start","title":"Where to start","text":"

    Engineers can do a thousand things with the WELSIM simulation solutions. We recommend starting with:

    • Quick start to quickly review the steps of using WELSIM.
    • Windows and Linux installation guides to install the software on your computer.

    If you already use WELSIM:

    • User's manual - learn about WELSIM user interfaces and how to use them for everything else.
    • Theory - learn about math theory and numerical algorithms used in WELSIM.

    If you are interested in our free engineering software:

    • CurveFitter - learn about the curve fitting tool.
    • MatEditor - learn about the engineering material data tool.
    • UnitConverter - learn about the engineering unit convertion tool.
    • BeamSection - learn about the beam cross-section tool.

    Last Updated: Oct. 14th, 2024

    "},{"location":"features/","title":"Features","text":"

    As a general-purpose engineering simulation software program, WELSIM contains tons of features those allow you to conduct various simulation studies.

    "},{"location":"features/#specification","title":"Specification","text":"Specification Description Operaton system Microsoft Windows 10/11, 64-bit; Linux: Ubuntu 22.04 LTS and higher versions, 64-bit; 3D rendering driver: OpenGL 3.2 or higher Physical memory At least 4 GB, and 32 GB and higher is recommended Geometry modules Imported geometry formats: STEP, IGES, STL, GDS Built-in geometry generation: Box, Cylinder, Sphere, Plane, Line, Circle, Vertex Boolean operations: Union, Intersection, Cut Supported automatic mesh Tet10, Tet4, Tri6, Tri3
    • Project data: file with suffix \"wsdb\" and the associated folder (same file name).
    • Export mesh formats: UNV, MFEM, SU2, VTK.
    • Export result formats: VTK, Tecplot, Plain Text.
    • Export solver scripts: FrontISTR, OpenRadioss, MFEM, SU2, Palace, etc.
    "},{"location":"features/#structural","title":"Structural","text":"Structural analysis Description Types Static, transient, and modal Materials Isotropic elastic, hyper-elastic, plastic, visco-elastic, and creep Deformation types Small, and finite Contact types bonded, frictionless, and frictional; small and finite sliding Boundary conditions constraints, displacement, force, pressure, velocity, acceleration Body conditions body force, acceleration, standard earth gravity, rotational velocity Results deformations, stresses, strains, velocity, acceleration Probe results reaction force (total, x, y, z)
    • Nonlinear materials.
    • Contact analysis.
    • Multi-body analysis.
    • Multi-step quasi-static analysis.
    • Implicit dynamics.
    "},{"location":"features/#explicit-structural-dynamics-using-openradioss","title":"Explicit Structural Dynamics (using OpenRadioss)","text":"Structural analysis Description Materials Isotropic elasto-plastic (Johnson-Cook, Zerillii-Armstrong, Gray, Cowper-Symonds, Yoshida-Uemori, Hensel-Spittel, voce), Isotropic linear elastic (Hooke's law, Johnson-Cook), hyper-elastic (Ogden, Neo-Hookean, Mooney\u2013Rivlin), visco-elastic (Boltamann, Generalized Maxwell-Kelvin), creep, explosive (JWL), Rock (Drucker-Prager), Hill orthotropic Equation of state Compaction, Gruneisen, ideal gas, linear, LSZK, Murnaghan, NASG, Noble, Polynomial, Puff, Sesame, Tillotson Failure models Alter, Biquad, Chang, Cockcroft, EMC, Energy, Fabric, forming limit diagram, Gurson, Hashin, Johnson, Ladeveze, Mullins effect with Ogden and Roxburgh criteria, NXT, orthotropic biquad, Puck, Spalling, Wierzbicki Element type Solid, shell Contact types bonded, frictionless, and frictional; small and finite sliding Boundary conditions constraints, displacement, force, pressure, velocity, acceleration, etc. Body conditions rigid body, body force, acceleration, standard earth gravity, rotational velocity, etc. Results deformations, stresses, strains, velocity, acceleration, etc"},{"location":"features/#thermal","title":"Thermal","text":"Thermal analysis Description Types Static, and transient Materials linear and nonlinear Initial conditions Initial temperature Boundary conditions temperature, convection, radiation, heat flux, heat flow, perfectly insulated Body conditions Internal heat generation Results temperature
    • Multi-body analysis.
    • Temperature-dependent nonlinear material.
    • Implicit transient analysis.
    • Orthotropic thermal conductivity material.
    • Heat flux results.
    "},{"location":"features/#computational-fluid-dynamics-through-su2","title":"Computational Fluid Dynamics (through SU2)","text":"Fluid analysis Description Types Steady-state, and transient Governing equation Euler, Navier-Stokes, RANS Boundary conditions wall, inlet, outlet, pressure, velocity, temperature, convection, heat flux Results velocity, pressure, mass density, pressure coefficient, mach number, energy
    • incompressible fluids.
    • compressible fluids.
    "},{"location":"features/#electromangetic","title":"Electromangetic","text":"Electromagnetic analysis Description Types Electrostatic, magnetostatic, eigenmode, driven, full-wave transient Materials linear Boundary conditions ground, voltage, symmetry, zero charge, surface charge density, electric displacement, insulting, magnetic vector potential, magnetic flux density Results voltage, electric field, electric displacement, magnetic vector potential, magnetic flux density, magnetic field, energy density
    • Vector result display.
    • Parallel computing.
    • Multi-body analysis.
    • Nonlinear materials.
    "},{"location":"features/#need-new-features","title":"Need new features?","text":"

    Feel free to send questions, comments, requests, bug reports, and success stories. Asking for a new feature usually results in adding the request to the TODO list or, if it already is in the list, in assigning higher priority to it.

    "},{"location":"glossary/","title":"Glossary","text":""},{"location":"glossary/#a","title":"A","text":"
    • ACCELERATION\uff1a The second time derivative of the displacement (the first time derivative of the velocity).
    • ADAPTIVE FINITE ELEMENT METHOD/ADAPTIVE MESHING\uff1a An adaptive finite element solver iteratively performs finite element analysis, determines the areas of the mesh where the solution is not sufficiently accurate and refines the mesh in those areas until the solution obtains the prescribed degree of accuracy. Adaptive Meshing involves automatically improving the mesh where necessary to meet specified convergence criteria.
    • ASPECT RATIO: The ratio of the longest to shortest side lengths on an element.
    • ASSEMBLY: Geometric:Two or more parts mated together. FEA: The process of assembling the element matrices together to form the global matrix. Typically element stiffness matrices are assembled to form the complete stiffness matrix of the structure.
    • AUTOMATIC MESH GENERATION: The process of generating a mesh of elements over the volume that is being analyzed. There are two forms of automatic mesh generation: Free Meshing -Where the mesh has no structure to it. Free meshing generally uses triangular and tetrahedral elements. Mapped Meshing -Where large regions, if not all, of the volume is covered with regular meshes. This can use any form of element. Free meshing can be used to fill any shape. Mapped meshing can only be used on some shapes without elements being excessively distorted.
    • AXISYMMETRY: If a shape can be defined by rotating a cross- section about a line (e.g. a cone) then it is said to be axisymmetric. This can be used to simplify the analysis of the system. Such models are sometimes called two and a half dimensional since a 2D cross- section represents a 3D body.
    "},{"location":"glossary/#b","title":"B","text":"
    • BARLOW POINTS\uff1a The set of Gauss integration points that give the best estimates of the stress for an element. For triangles and tetrahedra these are the full Gauss integration points. For quadrilateral and brick elements they are the reduced Gauss points.
    • BASIS SPACE\uff1a When an element is being constructed it is derived from a simple regular shape in non-dimensional coordinates. The coordinates used to define the simple shape form the basis space. In its basis space a general quadrilateral is a 2\u00d72 square and a general triangle is an isosceles triangle with unit side lengths.
    • BEAM ELEMENT: A line element that has both translational and rotational degrees of freedom. It represents both membrane and bending actions.
    • BENDING: Bending behavior is where the strains vary linearly from the centerline of a beam or center surface of a plate or shell.There is zero strain on the centerline for pure bending. Plane sections are assumed to remain plane. If the stresses are constant normal to the centerline then this is called membrane behavior.
    • BENDING STRESS: A compressive and/or tensile stress resulting from the application of a nonaxial force to a structural member.
    • BODY FORCE VECTOR: Mechanical loadings within the interior of the volume, typically inertia loadings in a stiffness analysis.
    • BOUNDARY CONDITIONS: The boundary conditions of a function are values of the function at the edge of the range of some of its variables. Knowledge of some of the boundary conditions is needed to solve an engineering problem or to find an unknown function.
    • BOUNDARY ELEMENT/INTEGRAL: A method of solving differential equations by taking exact solutions to the field equations loaded by a point source and then finding the strengths of sources distributed around the boundary of the body required to satisfy the boundary conditions on the body.
    • BUBBLE FUNCTIONS: Element shape functions that are zero along the edges of the element. They are non-zero within the interior of the element.
    • BUCKLING (SNAP THROUGH): The situation where the elastic stiffness of the structure is cancelled by the effects of compressive stress within the structure. If the effect of this causes the structure to suddenly displace a large amount in a direction normal to the load direction then it is classical bifurcation buckling. If there is a sudden large movement in the direction of the loading it is snap through buckling.
    "},{"location":"glossary/#c","title":"C","text":"
    • CAE: computer aided engineering.
    • CENTRAL DIFFERENCE METHOD: A method for numerically integrating second order dynamic equations of motion. It is widely used as a technique for solving non-linear dynamic problems.
    • CHARACTERISTIC VALUE: Same as the eigenvalue.
    • CHARACTERISTIC VECTOR: Same as the eigenvector.
    • CHOLESKY FACTORISATION (SKYLINE): A method of solving a set of simultaneous equations that is especially well suited to the finite element method. It is sometimes called a skyline solution. Choose to optimize the profile o f the matrix if a renumbering scheme is used.
    • COEFFICIENT OF VISCOUS DAMPING: The system parameter relating force to velocity.
    • COMPATIBILITY OF STRAINS: Compatibility of strain is satisfied if strains that are continuous before loading are continuous after.
    • COMPLETE DISPLACEMENT FIELD: When the functions interpolating the field variable (typically the displacements) form a complete nth order polynomial in all directions.
    • COMPLEX EIGENVALUES: The eigenvectors of a damped system. For proportionally damped systems they are the same as the undamped eigenvectors. For non-proportionally damped systems with damping in all modes less th an critical they are complex numbers and occur as complex conjugate pairs.
    • COMPLEX EIGENVECTORS: The eigenvalues of any damped system. If the damping is less than critical they will occur as complex conjugate pairs even for proportionally damped systems. The real part of the complex eigenvalue is a measure of the damping in the mode and should always be negative. The imaginary part is a measure of the resonant frequency.
    • COMPOSITE MATERIAL: A material that is made up of discrete components, typically a carbon-epoxy composite material or a glass-fiber material. Layered material and foam materials are also forms of composite materials.
    • COMPUTATIONAL FLUID DYNAMICS (CFD): A computer-based numerical study of turbulent fluid flow using approximate methods such as the finite element method, the fine difference method, the boundary element method, the finite volume methods, and so on.
    • CONDITION NUMBER: The ratio of the highest eigenvalue to the lowest eigenvalue of a matrix. The exponent of this number gives a measure of the number of digits required in the computation to maintain numerical accuracy. The higher the condition number the more chance of numerical error and the slower the rate of convergence for iterative solutions.
    • CONDITIONAL/UNCONDITIONAL STABILITY: Any scheme for numerically integrating dynamic equations of motion in a step-by- step form is conditionally stable if there is a maximum time step value that can be used. It is unconditionally stable (but not necessarily accurate) if any length of time step can be used.
    • CONJUGATE GRADIENT METHOD: A method for solving simultaneous equations iteratively. It is closely related to the Lanczos method for finding the first few eigenvalues and eigenvectors of a set of equations.
    • CONSISTENT DISPLACEMENTS AND FORCES: The displacements and forces act at the same point and in the same direction so that the sum of their products give a work quantity. If consistent displacements and forces are used the resulting stiffness and mass matrices are symmetric.
    • CONSTANT STRAIN CONSTANTSTRESS: For structural analysis an element must be able to reproduce a state of constant stress and strain under a suitable loading to ensure that it will converge to the correct solution. This is tested for using the patch test.
    • CONSTITUTIVE RELATIONSHIPS: The equations defining the material behavior for an infinitesimal volume of material. For structures these are the stress -strain laws and include Hookes law for elasticity and the Prandle-Reuss equations for plasticity.
    • CONSTRAINT EQUATIONS (MULTI POINT CONSTRAINTS): If one group of variables can be defined in terms of another group then the relationship between the two are constraint equations. Typically the displacements on the face of an element can be constrained to remain plane but the plane itself can move.
    • CONSTRAINTS: Known values of, or relationships between, the displacements in the coordinate system.
    • CONTACT PROBLEMS: A contact problem occurs when two bodies that are originally apart can come together, or two bodies that are originally connected can separate.
    • CONTINUOUS MASS MODELS: The system mass is distributed between the degrees of freedom. The mass matrix is not diagonal.
    • CONTOUR PLOTTING: A graphical representation of the variation of a field variable over a surface, such as stress, displacement, or temperature. A contour line is a line of constant value for the variable. A contour band is an area of a single color for values of the variable within two limit values.
    • CONVERGENCE REQUIREMENTS: For a structural finite element to converge as the mesh is refined it must be able to represent a state of constant stress and strain free rigid body movements exactly. There are equivalent requirements for other problem types.
    • CRANK-NICHOLSON SCHEME: A method for numerically integrating first order dynamic equations of motion. It is widely used as a technique for solving thermal transient problems.
    • CRITICAL ENERGY RELEASE: This is a material property defining the minimum energy that a propagating crack must release in order for it to propagate. Three critical energies, or modes of crack propagation, have been identified. Mode 1 is the two surfaces of the crack moving apart. Mode 2 is where the two surfaces slide from front to back. Mode 3 is where the to surfaces slide sideways.
    • CRITICALLY DAMPED SYSTEM CRITICAL DAMPING: The dividing line between under damped and over damped systems where the equation of motion has a damping value that is equal to the critical damping.
    • CYCLIC SYMMETRY: A generalization of axisymmetry. The structure is composed of a series of identical sectors that are arranged circumferentially to form a ring. A turbine disc with blades attached is atypical example.
    "},{"location":"glossary/#d","title":"D","text":"
    • DAMPED EIGENVALUES: Same as complex eigenvalues.
    • DAMPED EIGENVECTORS: Same as complex eigenvectors.
    • DAMPED NATURAL FREQUENCY: The frequency at which the damped system vibrates naturally when only an initial disturbance is applied.
    • DAMPING: Any mechanism that dissipates energy in a vibrating system.
    • DAMPING FACTOR (DECAY FACTOR): The damping factor is the ratio of the actual damping to the critical damping. It is often specified as a percentage. If the damping factor is less than one then the system can undergo free vibrations. The free vibrations will decay to zero with time. If the damping factor is greater than one then the decay is exponential and no vibrations occur. For most structures the damping factor is very small.
    • DEGENERATE ELEMENTS: Elements that are defined as one shape in the basis space but they are a simpler shape in the real space. A quadrilateral can degenerate into a triangle. A brick element can degenerate into a wedge, a pyramid or a tetrahedron. Degenerate elements should be avoided in practice.
    • DEGREES OF FREEDOM: The number of equations of equilibrium for the system. In dynamics, the number of displacement quantities which must be considered in order to represent the effects of all of the significant inertia forces. Degrees of freedom define the ability of a given node to move in any direction in space. There are six types of DOF for any given node: 3 possible translations (one each in the X,Y and Z directions) and 3 possible rotations (one rotation about each of the X,Y, and X axes). DOF are defined and restricted by the elements and constraints associated with each node.
    • DET(J) DET J: The Jacobian matrix is used to relate derivatives in the basis space to the real space. The determinant of the Jacobian \u2013 det(j) -is a measure of the distortion of the element when mapping from the basis to the real space.
    • DEVIATORIC STRESS STRESS DEVIATORS: A measure of stress where the hydrostatic stress has been subtracted from the actual stress. Material failures that are flow failures (plasticity and creep) fail independently of the hydrostatic stress. The failure is a function of the deviatoric stress.
    • DIAGONAL GENERALIZED MATRIX: The eigenvectors of a system can be used to define a coordinate transformation such that, in these generalized coordinates the coefficient matrices (typically mass and stiffness) are diagonal.
    • DIE-AWAY LENGTH: If there is a stress concentration in a structure the high stress will reduce rapidly with distance from the peak value. The distance over which it drops to some small value is called the die-away length. A fine mesh is required over this die-away length for accurate stress results.
    • DIRECT INTEGRATION: The name for various techniques for numerically integrating equations of motion. These are either implicit or explicit methods and include central difference, Crank-Nicholson, Runge-Kutta, Newmark beta and Wilson theta.
    • DISCRETE PARAMETER MODELS (DISCRETISED APPROACH): The model is defined in terms of an ordinary differential equation and the system has a finite number of degrees of freedom.
    • DISCRETIZATION: The process of dividing geometry into smaller pieces (finite elements) to prepare for analysis, i.e. Meshing.
    • DISPLACEMENT METHOD (DISPLACEMENT SOLUTION) :A form of discrete parameter model where the displacements of the system are the basic unknowns.
    • DISPLACEMENT: The distance, translational and rotational, that a node travels from its initial position to its post-analysis position. The total displacement is represented by components in each of the 3 translational directions and the 3 rotational directions.
    • DISPLACEMENT PLOTS: Plots showing the deformed shape of the structure. For linear small deflection problems the displacements are usually multiplied by a magnifying factor before plotting the deformed shape.
    • DISPLACEMENT VECTOR: The nodal displacements written as a column vector.
    • DOMAIN: In mathematics, a domain is the set of independent variables for which a function is defined. In finite element analysis, a domain is a continuous system (region) over which the laws of physics govern. In structural engineering, a domain could be a beam or a complete building frame. In mechanical engineering, a domain could be a piece of machine parts or a thermal field.

    • DRUCKER-PRAGER EQUIVALENT STRESSES: An equivalent stress measure for friction materials (typically sand). The effect of hydrostatic stress is included in the equivalent stress.

    • DYNAMIC ANALYSIS: An analysis that includes the effect of the variables changing with time as well as space.

    • DYNAMIC FLEXIBILITY MATRIX: The factor relating the steady state displacement response of a system to a sinusoidal force input. It is the same as the recep tance.

    • DYNAMIC MODELLING: A modeling process where consideration as to time effects in addition to spatial effects are included. A dynamic model can be the same as a static model or it can differ significantly depending upon the nature of the problem.
    • DYNAMIC RESPONSE: The time dependent response of a dynamic system in terms of its displacement, velocity or acceleration at any given point of the system.
    • DYNAMIC STIFFNESS MATRIX: If the structure is vibrating steadily at a frequency w then the dynamic stiffness is (K+iwC w2M) It is the inverse of the dynamic flexibility matrix.
    • DYNAMIC STRESSES\uff1aStresses that vary with time and space.
    • DYNAMIC SUBSTRUCTURING\uff1a Special forms of substructuring used within a dynamic analysis. Dynamic substructuring is always approximate and causes some loss of accuracy in the dynamic solution.
    "},{"location":"glossary/#e","title":"E","text":"
    • EIGENVALUE PROBLEM\uff1a Problems that require calculation of eigenvalues and eigenvectors for their solution. Typically solving free vibration problems or finding buckling loads.
    • ELASTIC FOUNDATION\uff1a If a structure is sitting on a flexible foundation the supports are treated as a continuous elastic foundation. The elastic foundation can have a significant effect upon the structural response.
    • ELASTIC STIFFNESS\uff1a If the relationship between loads and displacements is linear then the problem is elastic. For a multi-degree of freedom system the forces and displacements are related by the elastic stiffness matrix.
    • ELECTRIC FIELDS\uff1a Electro-magnetic and electro-static problems form electric field problems.
    • ELEMENT\uff1a An element is a portion of the problem domain, and is typically some simple shape like a triangle or quadrilateral in 2D, or tetrahedron or hex solid in 3D.

    • ELEMENT ASSEMBLY\uff1a Individual element matrices have to be assembled into the complete stiffness matrix. This is basically a process of summing the element matrices. This summation has to be of the correct form. For the stiffness method the summation is based upon the fact that element displacements at common nodes must be the same.

    • ELEMENT STRAINS/STRESSES\uff1a Stresses and strains within elements are usually defined at the Gauss points (ideally at the Barlow points) and the node points. The most accurate estimates are at the reduced Gauss points (more specifically the Barlow points). Stresses and strains are usually calculated here and extrapolated to the node points.
    • ENERGY METHODS HAMILTONS PRINCIPLE\uff1a Methods for defining equations of equilibrium and compatibility through consideration of possible variations of the energies of the system. The general form is Hamiltons principle and sub-sets of this are the principle of virtual work including the principle of virtual displacements (PVD) and the principle of virtual forces (PVF).
    • ENGINEERING/MATHEMATICAL NORMALIZATION\uff1a Each eigenvector (mode shape or normal mode) can be multiplied by an arbitrary constant and still satisfy the eigenvalue equation. Various methods of scaling the eigenvector are used Engineering normalization -The vector is scaled so that the largest absolute value of any term in the eigenvector is unity. This is useful for inspecting printed tables of eigenvectors. Mathematical normalization -The vector is scaled so that the diagonal modal mass matrix is the unit matrix. The diagonal modal stiffness matrix is the system eigenvalues. This is useful for response calculations.
    • EQUILIBRIUM EQUATIONS\uff1aInternal forces and external forces must balance. At the infinitesimal level the stresses and the body forces must balance. The equations of equilibrium define these force balance conditions.
    • EQUILIBRIUM FINITE ELEMENTS\uff1a Most of the current finite elements used for structural analysis are defined by assuming displacement variations over the element. An alternative approach assumes the stress variation over the element. This leads to equilibrium finite elements.
    • EQUIVALENT MATERIAL PROPERTIES\uff1a Equivalent material properties are defined where real material properties are smeared over the volume of the element. Typically, for composite materials the discrete fiber and matrix material properties are smeared to give average equivalent material properties.
    • EQUIVALENT STRESS\uff1a A three dimensional solid has six stress components. If material properties have been found experimentally by a uniaxial stress test then the real stress system is related to this by combining the six stress components to a single equivalent stress. There are various forms of equivalent stress for different situations. Common ones are Tresca, Von-Mises, Mohr-Coulomb and Drucker-Prager.
    • EULERIAN/LAGRANGIAN METHOD\uff1a For non-linear large deflection problems the equations can be defined in various ways. If the material is flowing though a fixed grid the equations are defined in Eulerian coordinates. Here the volume of the element is constant but the mass in the element can change. If the grid moves with the body then the equations are defined in Lagrangian coordinates. Here the mass in the element is fixed but the volume changes.
    • EXACT SOLUTIONS\uff1a Solutions that satisfy the differential equations and the associated boundary conditions exactly. There are very few such solutions and they are for relatively simple geometries and loadings.
    • EXPLICIT/IMPLICIT METHOD\uff1a These are methods for integrating equations of motion. Explicit methods can deal with highly non-linear systems but need small steps. Implicit methods can deal with mildly nonlinear problems but with large steps.
    • EXTRAPOLATION INTERPOLATION\uff1a The process of estimating a value of a variable from a tabulated set of values. For interpolation values inside the table are estimated. For extrapolation values outside the table are estimated. Interpolation is generally accurate and extrapolation is only accurate for values slightly outside the table. It becomes very inaccurate for other cases.
    "},{"location":"glossary/#f","title":"F","text":"
    • FACETED GEOMETRY\uff1a If a curved line or surface is modeled by straight lines or flat surfaces then the modeling is said to produce a faceted geometry.
    • FAST FOURIER TRANSFORM\uff1a A method for calculating Fourier transforms that is computationally very efficient.
    • FIELD PROBLEMS\uff1a Problems that can be defined by a set of partial differential equations are field problems. Any such problem can be solved approximately by the finite element method.
    • FINITE DIFFERENCES\uff1a A numerical method for solving partial differential equations by expressing them in a difference form rather than an integral form. Finite difference methods are very similar to finite element methods and in some cases are identical.
    • FINITE ELEMENT MODELING (FEM)\uff1a The process of setting up a model for analysis, typically involving graphical generation of the model geometry, meshing it into finite elements, defining material properties, and applying loads and boundary conditions.
    • FINITE VOLUME METHODS\uff1a A technique related to the finite element method. The equations are integrated approximately using t he weighted residual method, but a different form of weighting function is used from that in the finite element method. For the finite element method the Galerkin form of the weighted residual method is used.
    • FIXED BOUNDARY CONDITIONS\uff1a All degrees of freedom are restrained for this condition. The nodes on the fixed boundary can not move: translation or rotation.
    • FLEXIBILITY MATRIX FORCE METHOD\uff1a The conventional form of the finite element treats the displacements as unknowns, which leads to a stiffness matrix form. Alternative methods treating the stresses (internal forces) as unknowns lead to force methods with an associated flexibility matrix. The inverse of the stiffness matrix is the flexibility matrix.
    • FORCED RESPONSE\uff1a The dynamic motion results from a time varying forcing function.
    • FORCING FUNCTIONS\uff1a The dynamic forces that are applied to the system.
    • FOURIER EXPANSIONS FOURIER SERIES\uff1a Functions that repeat themselves in a regular manner can be expanded in terms of a Fourier series.
    • FOURIER TRANSFORM\uff1a A method for finding the frequency content of a time varying signal. If the signal is periodic it gives the same result as the Fourier series.
    • FOURIER TRANSFORM PAIR\uff1aThe Fourier transform and its inverse which, together, allow the complete system to be transformed freely in either direction between the time domain and the frequency domain.
    • FRAMEWORK ANALYSIS\uff1a If a structure is idealized as a series interconnected line elements then this forms a framework analysis model. If the connections between the line elements a re pins then it is a pin-jointed framework analysis. If the joints are rigid then the lines must be beam elements.
    • FREE VIBRATION\uff1a The dynamic motion which results from specified initial conditions. The forcing function is zero.
    • FREQUENCY DOMAIN\uff1a The structures forcing function and the consequent response is defined in terms of their frequency content. The inverse Fourier transform of the frequency domain gives the corresponding quantity in the time domain.
    • FRONTAL SOLUTION WAVEFRONT SOLUTION\uff1a A form of solving the finite element equations using Gauss elimination that is very efficient for the finite element form of equations.
    "},{"location":"glossary/#g","title":"G","text":"
    • GAP/CONTACT ELEMENT: These are special forms of non-linear element that have a very high stiffness in compression and a low stiffness in tension. They are used to model contact conditions between surfaces. Most of these elements also contain a model for sliding friction between the contacting surfaces. Some gap elements are just line springs between points and others are more general forms of quadrilateral or brick element elements. The line spring elements should only be used in meshes of first order finite elements.
    • GAUSS POINT EXTRAPOLATION GAUSS POINT STRESSES: Stresses calculated internally within the element at the Gauss integration points are called the Gauss point stresses. These stresses are usually more accurate at these points than the nodal points.

    • GAUSS POINTS GAUSS WEIGHTS: The Gauss points are the sample points used within the elements for the numerical integration of the matrices and loadings. They are also the points at which the stresses can be recovered. The Gauss weights are associated factors used in the numerical integration process. They represent the volume of influence of the Gauss points. The positions of the Gauss points, together with the associated Gauss weights, are available in tables for integrations of polynomials of various orders.

    • GAUSSIAN ELIMINATION: A form of solving a large set of simultaneous equations. Within most finite element systems a form of Gaussian elimination forms the basic solution process.
    • GAUSSIAN INTEGRATION GAUSSIAN QUADRATURE: A form of numerically integrating functions that is especially efficient for integrating polynomials. The functions are evaluated at the Gauss points, multiplied by the Gauss weights and summed to give the integral.
    • GENERALIZED COORDINATES: A set of linearly independent displacement coordinates which are consistent with the constraints and are just sufficient to describe any arbitrary configuration of the system. Generalized coordinates are usually patterns of displacements, typically the system eigenvectors.
    • GENERALIZED MASS: The mass associated with a generalized displacement.
    • GENERALIZED STIFFNESS: The stiffness associated with a generalized displacement.
    • GEOMETRIC PROPERTIES: Various shape dependent properties of real structures, such as thickness, cross sectional area, sectional moments of inertia, centroid location and others that are applied as properties of finite elements.
    • GEOMETRIC/STRESS STIFFNESS: The component of the stiffness matrix that arises from the rotation of the internal stresses in a large deflection problem. This stiffness is positive for tensile stresses and negative for compressive stresses. If the compressive stresses are sufficiently high then the structure will buckle when the geometric stiffness cancels the elastic stiffness.
    • GEOMETRICAL ERRORS: Errors in the geometrical representation of the model. These generally arise from the approximations inherent in the finite element approximation.
    • GLOBAL STIFFNESS MATRIX: The assembled stiffness matrix of the complete structure.

    • GROSS DEFORMATIONS: Deformations sufficiently high to make it necessary to include their effect in the solution process. The problem requires a large deflection non-linear analysis.

    • GOVERNING EQUATIONS: The governing equations for a system are the equations derived from the physics of the system. Many engineering systems can be described by governing equations, which determine the system's characteristics and behaviors.
    • GUARD VECTORS: The subspace iteration (simultaneous vector iteration) method uses extra guard vectors in addition to the number of vectors requested by the user. These guard the desired vectors from being contaminated by the higher mode vectors and speed up convergence.
    • GUI: GUI stands for graphical user interface, which provides a visual tool to build a finite element model for a domain with complex geometry and boundary conditions.
    "},{"location":"glossary/#h","title":"H","text":"
    • HARDENING STRUCTURE: A structure where the stiffness increases with load.
    • HARMONIC LOADING: A dynamic loading that is periodic and can be represented by a Fourier series.
    • HEAT CONDUCTION: The analysis of the steady state heat flow within solids and fluids. The equilibrium balance between internal and external heat flows.
    • HERMITIAN SHAPE FUNCTIONS: Shape functions that provide both variable and variable first derivative continuity (displacement and slope continuity in structural terms) across element boundaries.
    • HEXAHEDRON ELEMENTS: Type of 3D element which has six quadrilateral faces.
    • HIGH/LOW ASPECT RATIO: The ratio of the longest side length of a body to the shortest is termed its aspect ratio. Generally bodies with high aspect ratios (long and thin) are more ill conditioned for numerical solution than bodies with an aspect ratio of one.
    • HOOKES LAW: The material property equations relating stress to strain for linear elasticity. They involve the material properties of Young\u2019s modulus and Poisson ratio.
    • HOURGLASS MODE: Zero energy modes of low order quadrilateral and brick elements that arise from using reduced integration. These modes can propagate through the complete body.
    • H-CONVERGENCE: Convergence towards a more accurate solution by subdividing the elements into a number of smaller elements. This approach is referred to as H-convergence because of improved discretization due to reduced element size.
    • H-METHOD: A finite element method which requires an increasing number of elements to improve the solution.
    • H/P-REFINEMENT: Making the mesh finer over parts or all of the body is termed h-refinement. Making the element order higher is termed p-refinement.
    • HYBRID ELEMENTS: Elements that use stress interpolation within their volume and displacement interpolation around their boundary.
    • HYDROSTATIC STRESS: The stress arising from a uniform pressure load on a cube of material. It is the average value of the direct stress components at any point in the body.
    • HYSTERETIC DAMPING: A damping model representing internal material loss damping. The energy loss per unit cycle is independent of frequency. It is only valid for harmonic response.
    "},{"location":"glossary/#i","title":"I","text":"
    • ILL-CONDITIONING ERRORS: Numerical (rounding) errors that arise when using ill-conditioned equations.
    • ILL-CONDITIONING ILL-CONDITIONED EQUATIONS: Equations that are sensitive to rounding errors in a numerical operation. The numerical operation must also be defined. Equations can be ill conditioned for solving simultaneous equations but not for finding eigenvalues.
    • IMPULSE RESPONSE FUNCTION: The response of the system to an applied impulse.
    • IMPULSE RESPONSE MATRIX: The matrix of all system responses to all possible impulses. It is always symmetric for linear systems. It is the inverse Fourier transform of the dynamic flexibility matrix.
    • INCREMENTAL SOLUTION: A solutions process that involves applying the loading in small increments and finding the equilibrium conditions at the end of each step. Such solutions are generally used for solving non-linear problems.
    • INELASTIC MATERIAL BEHAVIOR: A material behavior where residual stresses or strains can remain in the body after a loading cycle, typically plasticity and creep.
    • INERTANCE (ACCELERANCE): The ratio of the steady state acceleration response to the value of the forcing function for a sinusoidal excitation.
    • INERTIA FORCE: The force that is equal to the mass times the acceleration.
    • INITIAL BUCKLING: The load at which a structure first buckles.
    • INITIAL STRAINS: The components of the strains that are non-elastic. Typically thermal strain and plastic strain.
    • INTEGRATION BY PARTS: A method of integrating a function where high order derivative terms are partially integrated to reduce their order.
    • INTERPOLATION FUNCTIONS SHAPE FUNCTIONS: The polynomial functions used to define the form of interpolation within an element. When these are expressed as interpolations associated with each node they become the element shape functions.
    • ISOPARAMETRIC ELEMENT: Elements that use the same shape functions (interpolations) to define the geometry as were used to define the displacements. If these elements satisfy the convergence requirements of constant stress representation and strain free rigid body motions for one geometry then it will satisfy the conditions for any geometry.
    • ISOTROPIC MATERIAL: Materials where the material properties are independent of the co-ordinate system.
    "},{"location":"glossary/#j","title":"J","text":"
    • JACOBI METHOD: A method for finding eigenvalues and eigenvectors of a symmetric matrix.
    • JACOBIAN MATRIX: A square matrix relating derivatives of a variable in one coordinate system to the derivatives of the same variable in a second coordinate system. It arises when the chain rule for differentiation is written in matrix form.
    • J-INTEGRAL METHODS: A method for finding the stress intensity factor for fracture mechanics problems.
    • JOINTS: The interconnections between components. Joints can be difficult to model in finite element terms but they can significantly affect dynamic behavior.
    "},{"location":"glossary/#k","title":"K","text":"
    • KINEMATIC BOUNDARY CONDITIONS: The necessary displacement boundary conditions for a structural analysis. These are the essential boundary conditions in a finite element analysis.
    • KINEMATICALLY EQUIVALENT FORCES (LOADS): A method for finding equivalent nodal loads when the actual load is distributed over a surface of a volume. The element shape functions are used so that the virtual work done by the equivalent loads is equal to the virtual work done by the real loads over the same virtual displacements. This gives the most accurate load representation for the finite element model. These are the non-essential stress boundary conditions in a finite element analysis.
    • KINEMATICALLY EQUIVALENT MASS: If the mass and stiffness are defined by the same displacement assumptions then a kinematically equivalent mass matrix is produced. This is not a diagonal (lumped) mass matrix.
    • KINETIC ENERGY: The energy stored in the system arising from its velocity. In some cases it can also be a function of the structural displacements.
    "},{"location":"glossary/#l","title":"L","text":"
    • LAGRANGE INTERPOLATION LAGRANGE SHAPE FUNCTIONS\uff1a A method of interpolation over a volume by means of simple polynomials. This is the basis of most of the shape function definitions for elements.
    • LAGRANGE MULTIPLIER TECHNIQUE\uff1a A method for introducing constraints into an analysis where the effects of the constraint are represented in terms of the unknown Lagrange multiplying factors.
    • LANCZOS METHOD\uff1a A method for finding the first few eigenvalues and eigenvectors of a set of equations. It is very well suited to the form of equations generated by the finite element method. It is closely related to the method of conjugate gradients used for solving simultaneous equations iteratively.
    • LEAST SQUARES FIT\uff1a Minimization of the sum of the squares of the distances between a set of sample points and a smooth surface . The finite element method gives a solution that is a least squares fit to the equilibrium equations.
    • LINEAR DEPENDENCE\uff1a One or more rows (columns) of a matrix are linear combinations of the other rows (columns). This means that the matrix is singular.
    • LINEAR ANALYSIS\uff1a Linear Finite Element Analysis is based on the following assumptions: (1) Static; (2) Small displacements; (3) Material is linearly elastic.
    • LINEAR SYSTEM\uff1a When the coefficients of stiffness, mass and damping are all constant then the system is linear. Superposition can be used to solve the response equation.
    • LOADINGS\uff1aThe loads applied to a structure that result in deflections and consequent strains and stresses.
    • LOCAL STRESSES\uff1a Areas of stress that are significantly different from (usually higher than) the general stress level.
    • LOWER BOUND SOLUTION UPPER BOUND SOLUTION\uff1a The assumed displacement form of the finite element solution gives a lower bound on the maximum displacements and strain energy (i.e. these are under estimated) for a given set of forces. This is the usual form of the finite element method. The assumed stress form of the finite element solution gives an upper bound on the maximum stresses and strain energy (i.e. these are over estimated) for a given set of displacements.
    • LUMPED MASS MODEL: When the coefficients of the mass matrix are combined to produce a diagonal matrix. The total mass and the position of the structures center of gravity are preserved.
    "},{"location":"glossary/#m","title":"M","text":"
    • MASS: The constant(s) of proportionality relating the acceleration(s) to the force(s). For a discrete parameter multi degree of freedom model this is usually given as a mass matrix.
    • MASS ELEMENT: An element lumped at a node representing the effect of a concentrated mass in different coordinate directions.
    • MASS MATRIX: The matrix relating acceleration to forces in a dynamic analysis. This can often be approximated as a diagonal matrix with no significant loss of accuracy.
    • MASTER FREEDOMS: The freedoms chosen to control the structural response when using a Guyan reduction or sub structuring methods.
    • MATERIAL LOSS FACTOR: A measure of the damping inherent within a material when it is dynamically loaded.
    • MATERIAL PROPERTIES: The physical properties required to define the material behavior for analysis purposes. For stress analysis typical required material properties are Young\u2019s modulus, Poisson\u2019s ratio, density and coefficient of linear expansion. The material properties must have been obtained by experiment.
    • MATERIAL STIFFNESS MATRIX MATERIAL FLEXIBILITY MATRIX: The material stiffness matrix allows the stresses to be found from a given set of strains at a point. The material flexibility is the inverse of this, allowing the strains to be found from a given set of stresses. Both of these matrices must be symmetric and positive definite.
    • MATRIX DISPLACEMENT METHOD: A form (the standard form) of the finite element method where displacements are assumed over the element. This gives a lower bound solution.
    • MATRIX FORCE METHOD: A form of the finite element method where stresses (internal forces) are assumed over the element. This gives an upper bound solution.
    • MATRIX INVERSE: If matrix A times matrix B gives the unit matrix then A is the inverse of B (B is the inverse of A). A matrix has no inverse if it is singular.
    • MATRIX NOTATION MATRIX ALGEBRA: A form of notation for writing sets of equations in a compact manner. Matrix notation highlights the generality of various classes of problem formulation and solution. Matrix algebra can be easily programmed on a digital computer.
    • MATRIX PRODUCTS: Two matrices A and B can be multiplied together if A is of size (j*k) and B is of size (k*l). The resulting matrix is of size (j*l).
    • MATRIX TRANSPOSE: The process of interchanging rows and columns of a matrix so that the j\u2019th column becomes the j\u2019th row.
    • MEAN SQUARE CONVERGENCE: A measure of the rate of convergence of a solution process. A mean square convergence indicates a rapid rate of convergence.
    • MEMBRANE: Membrane behavior is where the strains are constant from the center line of a beam or center surface of a plate or shell. Plane sections are assumed to remain plane. A membrane line element only has stiffness along the line, it has zero stiffness normal to the line. A membrane plate has zero stiffness normal to the plate. This can cause zero energy (no force required) displacements in these normal directions. If the stresses vary linearly along the normal to the centerline then this is called bending behavior.

    • Mesh (Grid): The elements and nodes, together, form a mesh (grid), which is the central data structure in FEA.

    • MESH DENSITY MESH REFINEMENT: The mesh density indicates the size of the elements in relation to the size of the body being analyzed. The mesh density need not be uniform all over the body There can be areas of mesh refinement (more dense meshes) in some parts of the body. Making the mesh finer is generally referred to as h -refinement. Making the element order higher is referred to as p -refinement.
    • MESH GENERATION ELEMENT GENERATION: The process of generating a mesh of elements over the structure. This is normally done automatically or semi-automatically.
    • MESH SPECIFICATION: The process of choosing and specifying a suitable mesh of elements for an analysis.
    • MESH SUITABILITY: The appropriate choice of element types and mesh density to give a solution to the required degree of accuracy.
    • MINDLIN ELEMENTS: A form of thick shell element.
    • MOBILITY: The ratio of the steady state velocity response to the value of the forcing function for a sinusoidal excitation.
    • MODAL DAMPING: The damping associated with the generalized displacements defined by the eigenvectors. Its value has no physical significance since the eigenvector contains an arbitrary normalizing factor.
    • MODAL MASS: The mass associated with the generalized displacements defined by the eigenvectors. Its value has no physical significance since the eigenvector contains an arbitrary normalizing factor but the ratio of modal stiffness to modal mass is always the eigenvalue.
    • MODAL STIFFNESS: The stiffness associated with the generalized displacements defined by the eigenvectors. Its value has no physical significance since the eigenvector contains an arbitrary normalizing factor but the ratio of modal stiffness to modal mass is always the eigenvalue.
    • MODAL TESTING: The experimental technique for measuring resonant frequencies (eigenvalues) and mode shapes (eigenvectors).
    • MODE PARTICIPATION FACTOR: The generalized force in each modal equation of a dynamic system.
    • MODE SHAPE: Same as the e igenvector. The mode shape often refers to the measure mode, found from a modal test.
    • MODELLING: The process of idealizing a system and its loading to produce a numerical (finite element) model.
    • MODIFIED NEWTON-RAPHSON: A form of the Newton-Raphson process f or solving non-linear equations where the tangent stiffness matrix is held constant for some steps. It is suitable for mildly non-linear problems.
    • MOHR COULOMB EQUIVALENT STRESS: A form of equivalent stress that includes the effects of friction in granular (e.g. sand) materials.
    • MULTI DEGREE OF FREEDOM: The system is defined by more than one force/displacement equation.
    • MULTI-POINT CONSTRAINTS: Where the constraint is defined by a relationship between more than one displacement at different node points.
    "},{"location":"glossary/#n","title":"N","text":"
    • NATURAL FREQUENCY: The frequency at which a structure will vibrate in the absence of any external forcing. If a model has n degrees of freedom then it has n natural frequencies. The eigenvalues of a dynamic system are the squares of the natural frequencies.
    • NATURAL MODE: Same as the eigenvector.
    • NEWMARK METHOD NEWMARK BETA METHOD: An implicit solution method for integrating second order equations of motion. It can be made unconditionally stable.
    • NEWTON COTES FORMULAE: A family of methods for numerically integrating a function.
    • NEWTON-RAPHSON NON-LINEAR SOLUTION: A general technique for solving non-linear equations. If the function and its derivative are known at any point then the Newton-Raphson method is second order convergent.
    • NODAL VALUES: The value of variables at the node points. For a structure typical possible nodal values are force, displacement, temperature, velocity, x, y, and z.
    • NODE: A node is a point in the domain, and is often the vertex of several elements. A node is also called a nodal point. computers to generate finite element mesh automatically. There are many different algorithms for automatic mesh generation. Click here to see some automatically generated mesh samples.
    • NON-CONFORMING ELEMENTS: Elements that do not satisfy compatibility either within the element or across element boundaries or both. Such elements are not generally reliable although they might give very good solutions in some circumstances.
    • NON-HOLONOMIC CONSTRAINTS: Constraints that can only be defined at the level of infinitesimal displacements. They cannot be integrated to give global constraints.
    • NON-LINEAR SYSTEM/ANALYSIS: Nonlinear Finite Element Analysis considers material nonlinearity and/or geometric nonlinearity of an engineering system. Geometric nonlinear analysis is also called large deformation analysis.
    • NON-STATIONARY RANDOM: A force or response that is random and its statistical properties vary with time.
    • NON-STRUCTURAL MASS: Mass that is present in the system and will affect the dynamic response but it is not a part of the structural mass (e.g. the payload).
    • NORM: A scalar measure of the magnitude of a vector or a matrix.
    • NUMERICAL INTEGRATION: The process of finding the approximate integral of a function by numerical sampling and summing. In the finite element method the element matrices are usually formed by the Gaussian quadrature form of numerical integration.
    "},{"location":"glossary/#o","title":"O","text":"
    • OPTIMAL SAMPLING POINTS: The minimum number of Gauss points required to integrate an element matrix. Also the Gauss points at which the stresses are most accurate (see reduced Gauss points).
    • OVER DAMPED SYSTEM: A system which has an equation of motion where the damping is greater than critical. It has an exponentially decaying, non-oscillatory impulse response.
    • OVERSTIFF SOLUTIONS: Lower bound solutions. These are associated with the assumed displacement method.
    "},{"location":"glossary/#p","title":"P","text":"
    • PARTICIPATION FACTOR: The fraction of the mass that is active for a given mode with a given distribution of dynamic loads. Often this is only defined for the specific load case of inertia (seismic) loads.
    • PATCH TEST: A test to prove that a mesh of distorted elements can represent constant stress situations and strain free rigid body motions (i.e. the mesh convergence requirements) exactly.
    • PDEs: partial differential equations.
    • PERIODIC RESPONSE FORCE: A response (force) that regularly repeats itself exactly.
    • PHASE ANGLE: The ratio of the in phase component of a signal to its out of phase component gives the tangent of the phase angle of the signal relative to some reference.
    • PLANE STRAIN/STRESS: A two dimensional analysis is plane stress if the stress in the third direction is assumed zero. This is valid if the dimension of the body in this direction is very small, e.g. a thin plate. A two dimensional analysis is plane strain if the strain in the third direction is assumed zero. This is valid if the dimension of the body in this direction is very large, e.g. a cross- sectional slice of a long body.
    • PLATE BENDING ELEMENTS: Two-dimensional shell elements where the in plane behavior of the element is ignored. Only the out of plane bending is considered.
    • POISSONS RATIO: The material property in Hooke s law relating strain in one direction arising from a stress in a perpendicular direction to this. Poissons' ratio can be defined in WELSIM material module.
    • POST-PROCESSING: The interrogation of the results after the analysis phase. This is usually done with a combination of graphics and numerics.
    • POTENTIAL ENERGY: The energy associated with the static behavior of a system. For a structure this is the strain energy.
    • POWER METHOD: A method for finding the lowest or the highest eigenvalue of a system.
    • PRANDTL-REUSS EQUATIONS: The equations relating an increment of stress to an increment of plastic strain for a metal undergoing plastic flow.
    • PREPROCESSING: The process of preparing finite element input data involving model creation, mesh generation,material definition, and load and boundary condition application.
    • PRIMARY COMPONENT: Those parts of the structure that are of direct interest for the analysis. Other parts are secondary components.
    • PRINCIPAL CURVATURE: The maximum and minimum radii of curvature at a point.
    • PRINCIPAL STRESSES: The maximum direct stress values at a point. They are the eigenvalues of the stress tensor.
    • PROPORTIONAL DAMPING: A damping matrix that is a linear combination of the mass and stiffness matrices. The eigenvectors of a proportionally damped system are identical to those of the undamped system.
    • P-METHOD: A method of finite element analysis that uses P- convergence to iteratively minimize the error of analysis.
    • QR METHOD: A technique for finding eigenvalues. This is currently the most stable method for finding eigenvalues but it is restricted in the size of problem that it can solve.
    • RANDOM VIBRATIONS: The applied loading is only known in terms of its statistical properties. The loading is nondeterministic in that its value is not known exactly at any time but its mean, mean square, variance and other statistical quantities are known.
    "},{"location":"glossary/#r","title":"R","text":"
    • RANK DEFICIENCY: A measure of how singular a matrix is.
    • RAYLEIGH DAMPING: Damping that is proportional to a linear combination of the stiffness and mass. This assumption has no physical basis but it is mathematically convenient to approximate low damping in this way when exact damping values are not known.
    • RAYLELGH QUOTIENT: The ratio of stiffness times displacement squared (2*strain energy) to mass times displacement squared. The minimum values of the Rayleigh quotient are the eigenvalues.
    • REACTION FORCES: The forces generated at support points when a structure is loaded. Reaction force is supported in WELSIM.
    • REFERENCE TEMPERATURE: The reference temperature defines the temperature at which strain in the design does not result from thermal expansion or contraction. For many situations, reference temperature is adequately defined as room temperature. Define reference temperature in the properties of an environment.
    • REDUCED INTEGRATION: If an element requires an l*m*n Gauss rule to integrate the element matrix exactly then (l-1)(m-1)(n-1) is the reduced integration rule. For many elements the stresses are most accurate at the reduced integration points. For some elements the matrices are best evaluated by use of the reduced integration points. Use of reduced integration for integrating the elements can lead to zero energy and hour glassing modes.
    • RESPONSE SPECTRUM METHOD: A method for characterizing a dynamic transient forcing function and the associated solution technique. It is used for seismic and shock type loads.
    • RIGID BODY DEFORMATIONS: A non-zero displacement pattern that h as zero strain energy associate with it.
    • RIGID BODY DISPLACEMENT: A non-zero displacement pattern that has zero strain energy associate with it.
    • RIGID BODY MODES: If a displaced shape does not give rise to any strain energy in the structure then this a rigid body mode. A general three-dimensional unsupported structure has 6 rigid body modes, 3 translation and 3 rotation.
    • RIGID LINKS/OFFSETS: This is a connection between two non-coincident nodes assuming that the connection is infinitely stiff. This allows the degrees of freedom at one of the nodes (the slave node) to be deleted from the system. It is a form of multi-point constraint.
    • ROUNDOFF ERROR: Computers have a fixed word length and hence only hold numbers to a certain number of significant figures. If two close numbers are subtracted one from another then the result loses the first set of significant figures and hence loses accuracy. This is round off error.
    "},{"location":"glossary/#s","title":"S","text":"
    • SECANT STIFFNESS: The stiffness defined by the slope of the line from the origin to the current point of interest on a load/deflection curve.
    • SECONDARY COMPONENTS: Components of a structure not of direct interest but they may have some influence of the behavior of the part of the structure that is of interest (the primary component) and have to be included in the analysis in some approximate form.
    • SEEPAGE FLOW: Flows in porous materials
    • SEISMIC ANALYSIS: The calculation of the dynamic displacement and stress response arising from earthquake excitations.
    • SELECTED REDUCED INTEGRATION: A form of Gaussian quadrature where different sets of Gauss points are used for different strain components.
    • SELF ADJOINT EQUATIONS: A form of matrix products that preserves symmetry of equations. The product A*B*A(transpose) is self -adjoint if the matrix B is symmetric. The result of the product will be symmetric for any form of A that is of a size compatible with B. This form o f equation occurs regularly within the finite element method. Typically it means that for a structural analysis the stiffness (and mass) matrices for any element or element assembly will be symmetric.
    • SELF EQUILIBRATING LOADS: A load set is self -equilibrating if all of its resultants are zero. Both translation and moment resultants are zero.
    • SEMI-LOOF ELEMENT: A form of thick shell element.
    • SHAKEDOWN: If a structure is loaded cyclically and initially undergoes some plastic deformation then it is said to shakedown if the behavior is entirely elastic after a small number of load cycles.
    • SIMULTANEOUS VECTOR ITERATION: A method for finding the first few eigenvalues and eigenvectors of a finite element system. This is also known as subspace vector iteration.
    • SINGLE DEGREE OF FREEDOM: The system is defined by a single force/displacement equation.
    • SINGLE POINT CONSTRAINT: Where the constraint is unique to a single node point.
    • SINGULAR MATRIX: A square matrix that cannot be inverted.
    • SKEW DISTORTION (ANGULAR DISTORTION): A measure of the angular distortion arising between two vectors that are at right angles in the basis space when these are mapped to the real coordinate space. If this angle approaches zero the element becomes ill-conditioned.
    • SOLUTION DIAGNOSTICS: Messages that are generated as the finite element solution progresses. These should always be checked for relevance but the are often only provided for information purposes
    • SOLUTION EFFICIENCY: A comparative measure between two solutions of a given problem defining which is the \u2018best\u2019. The measures can include accuracy, time of solution, memory requirements and disc storage space.
    • SPARSE MATRIX METHODS: Solution methods that exploit the sparse nature of finite element equations. Such methods include the frontal solution and Cholesky (skyline) factorization for direct solutions, conjugate gradient methods for iterative solutions and the Lanczos method and subspace iteration (simultaneous vector iteration) for eigenvalue solutions.
    • SPECTRAL DENSITY: The Fourier transform of the correlation function. In random vibrations it gives a measure of the significant frequency content in a system. White noise has a constant spectral density for all frequencies.
    • SPLINE CURVES: A curve fitting technique that preserves zero, first and second derivative continuity across segment boundaries.
    • STATIC ANALYSIS: Analysis of stresses and displacements in a structure when the applied loads do not vary with time.
    • STATICALLY DETERMINATE STRUCTURE: A structure where all of the unknowns can be found from equilibrium considerations alone.
    • STATICALLY EQUIVALENT LOADS: Equivalent nodal loads that have the same equilibrium resultants as the applied loads but do not necessarily do the same work as the applied loads.
    • STATICALLY INDETERMINATE STRUCTURE REDUNDANT: A structure where all of the unknowns can not be found from equilibrium considerations alone. The compatibility equations must also be used. In this case the structure is said to be redundant.
    • STATIONARY RANDOM EXCITATION: A force or response that is random but its statistical characteristics do not vary with time.
    • STEADY-STATE HEAT TRANSFER: Determination of the temperature distribution of a mechanical part having reached thermal equilibrium with the environmental conditions. There are no time varying changes in the resulting temperatures.
    • STIFFNESS: A set of values which represent the rigidity or softness of a particular element. Stiffness is determined by material type and geometry.
    • STIFFNESS MATRIX: The parameter(s) that relate the displacement(s) to the force(s). For a discrete parameter multi degree of freedom model this is usually given as a stiffness matrix.
    • STRAIN: A dimensionless quantity calculated as the ratio of deformation to the original size of the body.
    • STRAIN ENERGY: The energy stored in the system by the stiffness when it is displaced from its equilibrium position.
    • STRESS: The intensity of internal forces in a body (force per unit area) acting on a plane within the material of the body is called the stress on that plane.
    • STRESS ANALYSIS: The computation of stresses and displacements due to applied loads. The analysis may be elastic, inelastic, time dependent or dynamic.
    • STRESS AVERAGING STRESS SMOOTHING: The process of filtering the raw finite element stress results to obtain the most realistic estimates of the true state of stress.
    • STRESS CONCENTRATION: A local area of the structure where the stresses are significantly higher than the general stress level. A fine mesh of elements is required in such regions if accurate estimates of the stress concentration values are required.
    • STRESS CONTOUR PLOT: A plot of a stress component by a series of color filled contours representing regions of equal stress. WELSIM can plot stress contour.
    • STRESS DISCONTINUITIES/ERROR ESTIMATES: Lines along which the stresses are discontinuous. If the geometry or loading changes abruptly along a line then the true stress can be discontinuous. In a finite element solution the element assumptions means that the stresses will generally be discontinuous across element boundaries. The degree of discontinuity can then be used to form an estimate of the error in the stress within the finite element calculation.
    • STRESS EXTRAPOLATION: The process of taking the stress results at the optimum sampling points for an element and extrapolating these to the element node points.
    • STRESS INTENSITY FACTORS: A measure of the importance of the stress at a sharp crack tip (where the actual stress values will be infinite) used to estimate if the crack will propagate.
    • STRESS/STRAIN VECTOR/TENSOR: The stress (strain) vector is the components of stress (strain) written as a column vector. For a general three dimensional body this is a (6\u00d71) matrix. The components of stress (strain) written in tensor form. For a general three dimensional body this forms a (3\u00d73) matrix with the direct terms down the diagonal and the shear terms as the off-diagonals.
    • STRESS-STRAIN LAW: The material property behavior relating stress to strain. For a linear behavior this is Hookes law (linear elasticity). For elastic plastic behavior it is a combination of Hookes law and the Prandtl-Reuss equations.
    • SUBSPACE VECTOR ITERATION: A method for finding the first few eigenvalues and eigenvectors of a finite element system. This is also known as simultaneous vector iteration.
    • SUBSTRUCTURING: An efficient way of solving large finite element analysis problems by breaking the model into several parts or substructures, analyzing each one individually, and then combining them for the final results.
    • SUBSTRUCTURING SUPER ELEMENT METHOD: Substructuring is a form of equation solution method where the structure is split into a series of smaller structures -the substructures. These are solved to eliminate the internal freedoms and the complete problem solved by only assembling the freedoms on the common boundaries between the substructures. The intermediate solution where the internal freedoms of a substructure have been eliminated gives the super element matrix for the substructure.
    • SURFACE MODELING: The geometric modeling technique in which the model is created in terms of its surfaces only without any volume definition.
    "},{"location":"glossary/#t","title":"T","text":"
    • TEMPERATURE CONTOUR PLOTS: A plot showing contour lines connecting points of equal temperature.
    • TETRAHEDRON/TETRAHEDRAL ELEMENT: A three dimensional four sided solid element with triangular faces.
    • THERMAL CAPACITY: The material property defining the thermal inertia of a material. It relates the rate of change of temperature with time to heat flux.
    • THERMAL CONDUCTIVITY: The material property relating temperature gradient to heat flux. Temperature-dependent thermal conductivity is supported in WELSIM.
    • THERMAL LOADS: The equivalent loads on a structure arising from thermal strains. These in turn arise from a temperature change.
    • THERMAL STRAINS: The components of strain arising from a change in temperature.
    • THERMAL STRESS ANALYSIS: The computation of stresses and displacements due to change in temperature.
    • THIN/THICK SHELL ELEMENT: In a shell element the geometry is very much thinner in one direction than the other two. It can then be assumed stresses can only vary linearly at most in the thickness direction. If the through thickness shear strains can be taken as zero then a thin shell model is formed. This uses the Kirchoff shell theory If the transverse shear strains are not ignored then a thick shell model is formed. This uses the Mindlin shell theory. For the finite element method the thick shell theory generates the most reliable form of shell elements. There are two forms of such elements, the Mindlin shell and the Semi-Loof shell.
    • TIME DOMAIN: The structures forcing function and the consequent response is defined in terms of time histories. The Fourier transform of the time domain gives the corresponding quantity in the frequency domain.
    • TRANSIENT FORCE: A forcing function that varies for a short period of time and then settles to a constant value.
    • TRANSIENT RESPONSE: The component of the system response that does not repeat itself regularly with time.
    • TRANSITION ELEMENT: Special elements that have sides with different numbers of nodes. They are used to couple elements with different orders of interpolation, typically a transition element with two nodes on one edge and three on another is used to couple a 4-node quad to an 8-node quad.
    • TRANSIENT HEAT TRANSFER: Heat transfer problems in which temperature distribution varies as a function of time.
    • TRIANGULAR ELEMENTS: Two dimensional or surface elements that have three edges.
    • TRUSS ELEMENT: A one dimensional line element defined by two nodes resisting only axial loads.
    "},{"location":"glossary/#u","title":"U","text":"
    • ULTIMATE STRESS: The failure stress (or equivalent stress) for the material.
    • UNDAMPED NATURAL FREQUENCY: The square root of the ratio of the stiffness to the mass (the square root of the eigenvalue). It is the frequency at which an undamped system vibrates naturally. A system with n degrees of freedom has n natural frequencies.
    • UNDER DAMPED SYSTEM: A system which has an equation of motion where the damping is less than critical. It has an oscillatory impulse response.
    • UPDATED/TOTAL LAGRANGIAN: The updated Lagrangian coordinate system is one where the stress directions are referred to the last known equilibrium state. The total Lagrangian coordinate system is one where the stress directions are referred to the initial geometry. Both algorithms are supported in WELSIM.
    "},{"location":"glossary/#v","title":"V","text":"
    • VARIABLE BANDWIDTH (SKYLINE): A sparse matrix where the bandwidth is not constant. Some times called a skyline matrix.
    • VIRTUAL DISPLACEMENTS: An arbitrary imaginary change of the system configuration consistent with its constraints.
    • VIRTUAL WORK/DISPLACEMENTS/FORCES: Techniques for using work arguments to establish equilibrium equations from compatibility equations (virtual displacements) and to establish compatibility equations from equilibrium (virtual forces).
    • VISCOUS DAMPING: The damping is viscous when the damping force is proportional to the velocity.
    • VOLUME/VOLUMETRIC DISTORTION: The distortion measured by the determinant of the Jacobian matrix, det J.
    • VON MISES STRESS: An \u201caveraged\u201d stress value calculated by adding the squares of the 3 component stresses (X, Y and Z directions) and taking the square root of their sums. This value allows for a quick method to locate probable problem areas with one plot.
    • VON MISES/TRESCA EQUIVALENT STRESS: Equivalent stress measures to represent the maximum shear stress in a material. These are used to characterize flow failures (e.g. plasticity and creep) in WELSIM. From test results the VonMises form seems more accurate but the Tresca form is easier to handle.
    "},{"location":"glossary/#w","title":"W","text":"
    • WHIRLING STABILITY: The stability of rotating systems where centrifugal and Coriolis are also present.
    • WILSON THETA METHOD: An implicit solution method for integrating second order equations of motion. It can be made unconditionally stable.
    "},{"location":"glossary/#y","title":"Y","text":"
    • YOUNG\u2019S MODULUS: The material property relating a uniaxial stress to the corresponding strain.
    "},{"location":"glossary/#z","title":"Z","text":"
    • ZERO ENERGY/STIFFNESS MODES: Non-zero patterns of displacements that have no energy associated with them. No forces are required to generate such modes, Rigid body motions are zero energy modes. Buckling modes at their buckling loads are zero energy modes. If the elements are not fully integrated they will have zero energy displacement modes. If a structure has one or more zero energy modes then the matrix is singular.
    "},{"location":"license/","title":"License","text":""},{"location":"license/#welsim-license","title":"WELSIM License","text":"

    WELSIM SOFTWARE LICENSE AGREEMENT Copyright (C) 2017-2024 WELSIMULATION LLC Version effective date: August 10, 2017

    READ THIS SOFTWARE LICENSE AGREEMENT CAREFULLY BEFORE PROCEEDING. THIS IS A LEGALLY BINDING CONTRACT BETWEEN LICENSEE AND LICENSOR FOR LICENSEE TO USE THE PROGRAM(S), AND IT INCLUDES DISCLAIMERS OF WARRANTY AND LIMITATIONS OF LIABILITY. WELSIMULATION LLC IS WILLING TO LICENSE THE SOFTWARE ONLY UPON THE CONDITION THAT YOU ACCEPT ALL OF THE TERMS CONTAINED IN THIS SOFTWARE LICENSE AGREEMENT. PLEASE READ THE TERMS CAREFULLY. BY CLICKING ON \"I AGREE\" OR BY INSTALLING THE SOFTWARE, YOU WILL INDICATE YOUR AGREEMENT WITH THEM. IF YOU ARE ENTERING INTO THIS AGREEMENT ON BEHALF OF A COMPANY OR OTHER LEGAL ENTITY, YOUR ACCEPTANCE REPRESENTS THAT YOU HAVE THE AUTHORITY TO BIND SUCH ENTITY TO THESE TERMS, IN WHICH CASE \"YOU\" OR \"YOUR\" SHALL REFER TO YOUR ENTITY. IF YOU DO NOT AGREE WITH THESE TERMS, OR IF YOU DO NOT HAVE THE AUTHORITY TO BIND YOUR ENTITY, THEN WELSIMULATION LLC IS UNWILLING TO LICENSE THE SOFTWARE, AND YOU SHOULD NOT INSTALL THE SOFTWARE.

    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

    THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC LICENSE (\"AGREEMENT\"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.

    This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages or consequences arising from the use of this software.

    1. Parties. The parties to this Agreement are you, the licensee (\"You\") and WELSIMULATION LLC. If You are not acting on behalf of Yourself as an individual, then \"You\" means Your company or organization. A company or organization shall in either case mean a single business entity, and shall not include its affiliates or wholly owned subsidiaries.

    2. The Software. The accompanying materials including, but not limited to, source code, binary executables, documentation, images, and scripts, which are distributed by WELSIMULATION LLC, and derivatives of that collection and/or those files are referred to herein as the \"Software\".

    3. Restrictions. WELSIMULATION LLC encourages You to promote use of the Software. However this Agreement does not grant permission to use the trade names, trademarks, service marks, or product names of WELSIMULATION LLC, except as required for reasonable and customary use in describing the origin of the Software. In particular, You cannot use any of these marks in any way that might state or imply that WELSIMULATION LLC endorses Your work, or might state or imply that You created the Software covered by this Agreement. Except as expressly provided herein, you may not:

      1. modify or translate the Software;
      2. reverse engineer, decompile, or disassemble the Software, except to the extent this restriction is expressly prohibited by applicable law;
      3. create derivative works based on the Software;
      4. merge the Software with another product;
      5. copy the Software; or
      6. remove or obscure any proprietary rights notices or labels on the Software.
    4. Ownership. WELSIMULATION LLC and its suppliers own the Software and all intellectual property rights embodied therein, including copyrights and valuable trade secrets embodied in the Software's design and coding methodology. The Software is protected by United States copyright laws and international treaty provisions. This Agreement provides You only a limited use license, and no ownership of any intellectual property.

    5. Infringement Indemnification. You shall defend or settle, at Your expense, any action brought against WELSIMULATION LLC based upon the claim that any modifications to the Software or combination of the Software with products infringes or violates any third party right; provided, however, that: (i) WELSIMULATION LLC shall notify Licensee promptly in writing of any such claim; (ii) WELSIMULATION LLC shall not enter into any settlement or compromise any such claim without Your prior written consent; (iii) You shall have sole control of any such action and settlement negotiations; and (iv) WELSIMULATION LLC shall provide You with commercially reasonable information and assistance, at Your request and expense, necessary to settle or defend such claim. You agree to pay all damages and costs finally awarded against WELSIMULATION LLC attributable to such claim.

    6. No warranty The program is provided on an 'as is' basis, without warranties or conditions of any kind, either express or implied including, without limitation, any warranties or conditions of title, non-infringement, merchantability or fitness for a particular purpose. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.

    7. Licensee Outside The U.S. If You are located outside the U.S.,then the following provisions shall apply: (i) The parties confirm that this Agreement and all related documentation is and will be in the English language; and (ii) You are responsible for complying with any local laws in your jurisdiction which might impact your right to import, export or use the Software, and You represent that You have complied with any regulations or registration procedures required by applicable law to make this license enforceable.

    8. Assignment. Except as expressly provided herein neither this Agreement nor any rights granted hereunder, nor the use of any of the software may be assigned, or otherwise transferred, in whole or in part, by Licensee, without the prior written consent of WELSIMULATION LLC. WELSIMULATION LLC may assign this Agreement in the event of a merger or sale of all or substantially all of the stock of assets of WELSIMULATION LLC without the consent of Licensee. Any attempted assignment will be void and of no effect unless permitted by the foregoing. This Agreement shall inure to the benefit of the parties permitted successors and assigns.

    9. Miscellaneous. This Agreement constitutes the entire understanding of the parties with respect to the subject matter of this Agreement and merges all prior communications, representations, and agreements. WELSIMULATION LLC reserves the right to change this Agreement at any time, which change shall be effective immediately.

    10. General If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.

    If Recipient institutes patent litigation against a Contributor with respect to a patent applicable to software (including a cross-claim or counterclaim in a lawsuit), then any patent licenses granted by that Contributor to such Recipient under this Agreement shall terminate as of the date such litigation is filed. In addition, if Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 3(b) shall terminate as of the date such litigation is filed.

    All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.

    "},{"location":"misc/","title":"MISC","text":""},{"location":"misc/#comparison-explicit-and-implicit-time-integrations","title":"Comparison explicit and implicit time integrations","text":"\u663e\u5f0f\u7b97\u6cd5 \u9690\u5f0f\u7b97\u6cd5 \u9002\u7528\u95ee\u9898 \u52a8\u529b\u5b66\uff08\u52a8\u6001\uff09 \u9759\u529b\u5b66\uff08\u9759\u6001\uff09\u548c\u52a8\u529b\u5b66\uff08\u52a8\u6001\uff09 \u963b\u5c3c \u4eba\u5de5\u963b\u5c3c \u6570\u503c\u963b\u5c3c \u65f6\u95f4\u6b65\u6c42\u89e3\u65b9\u6cd5 \u77e9\u9635\u4e58\u6cd5 \u7ebf\u6027\u65b9\u7a0b\u7ec4 \u7ec4\u88c5\u521a\u5ea6\u77e9\u9635 \u5426 \u662f \u6570\u636e\u5b58\u50a8\u9700\u6c42 \u5c0f \u5927 \u6bcf\u6b65\u8ba1\u7b97\u901f\u5ea6 \u5feb \u4e2d \u8fed\u4ee3\u6536\u655b\u6027 \u65e0 \u6709 \u786e\u5b9a\u6027 \u6709\u786e\u5b9a\u89e3 \u53ef\u80fd\u662f\u75c5\u6001\u65e0\u786e\u5b9a\u89e3 \u65f6\u95f4\u7a33\u5b9a\u6027 \u6709\u6761\u4ef6 \u65e0\u6761\u4ef6 \u65f6\u95f4\u6b65 \u5c0f \u5927 \u8ba1\u7b97\u7cbe\u5ea6 \u4f4e \u9ad8 Explicit method Implicit method Target problems Dynamic(transient) Static and dynamic(transient) Damping Artificial damping Numerical damping Time stepping method Matrix multiplication Linear algebra equations Assemble stiffness matrix No Yes Data storage requirement Small Large Solving speed each step Quick Mediate Iteration convergence No Yes Solution Certain solution Could be uncertain solution Stability Conditionally stable Unconditionally stable Time step Small Large Accuracy Low High \u5e94\u529b-\u5e94\u53d8\u66f2\u7ebf\u542b\u6709 \u9002\u7528\u7684Mooney-Rivlin\u51fd\u6570 \u53c2\u6570\u6b63\u5b9a\u6027\u8981\u6c42 \u6ca1\u6709\u62d0\u70b9(\u5355\u66f2\u7387) 2-\u62163-\u53c2\u6570 C10 + C01 > 0 1\u4e2a\u62d0\u70b9(\u53cc\u66f2\u7387) 5-\u53c2\u6570

    C10 + C01 > 0C20 > 0C02 < 0C20 + C11 + C02 > 0

    2\u4e2a\u62d0\u70b9 9-\u53c2\u6570

    C10 + C01 > 0C30>0C03 < 0C30 + C21 + C12 + C03 > 0

    Strain-stress curve Suitable Mooney-Rivlin model Parameter requirement for positive definiteness No inflection point (single curvature) 2- or 3-parameter C10 + C01 > 0 One inflection point (double curvature) 5-parameter

    C10 + C01 > 0C20 > 0C02 < 0C20 + C11 + C02 > 0

    Two inflection points 9-parameter

    C10 + C01 > 0C30>0C03 < 0C30 + C21 + C12 + C03 > 0

    "},{"location":"support/","title":"Support","text":"

    Thanks so much for choosing WELSIM! At WELSIM, we want all engineers and scientists to excel. We believe that given the right tools and guidance, all engineers can be highly productive. We strive to provide tools that give their users super powers and we\u2019re happy to provide any guidance we can to help you use them most effectively. If you have any questions or need any help of any kind, don\u2019t hesitate to contact us in whatever way is most convenient for you.

    • Contact form at https://welsim.com/contact
    • info@welsim.com

    We exist to help you be as productive you can be. Let us know how we can help you. Happy simulation!

    "},{"location":"beamsection/beamsection_getstart/","title":"Getting Started","text":"

    Using BeamSection is straightforward, this section shows you how to calculate the beam properties step by step.

    "},{"location":"beamsection/beamsection_getstart/#graphical-interface","title":"Graphical Interface","text":"

    An overview of the Graphical User Interface (GUI) with notation is shown in the figure below.

    "},{"location":"beamsection/beamsection_getstart/#menu","title":"Menu","text":"

    This section provides you basic actions in using CurveFitter. The actions include:

    • Exit: Quits the program.
    • Help: Runs your default web browser and visits official website welsim.com/curvefit.
    • About: Displays About dialog and shows software and hardware information.
    "},{"location":"beamsection/beamsection_getstart/#toolbox","title":"Toolbox","text":"

    This section lists all available curves for you to choose from. The default curve is the straight line (first-order polynomial). The curves are grouped by the characteristics as follows.

    "},{"location":"beamsection/beamsection_getstart/#basic-curves","title":"Basic Curves","text":"

    Straight line, Natural logarithm, Exponential, Power, Gaussian

    "},{"location":"beamsection/beamsection_getstart/#polynomial-curves","title":"Polynomial Curves","text":"

    2nd Order Polynomial, 3rd Order Polynomial, 4th Order Polynomial, 5th Order Polynomial

    "},{"location":"beamsection/beamsection_getstart/#nonlinear-curves","title":"Nonlinear Curves","text":"

    Symmetrical Sigmoidal, Asymmetrical Sigmoidal, Rectangular Hyperbola, Basic Exponential, Half-Life Exponential, Proportional Rate Growth or Decrease

    "},{"location":"beamsection/beamsection_getstart/#hyperelastic-material-model-curves","title":"Hyperelastic Material Model Curves","text":"

    Arruda-Boyce, Gent, Mooney-Rivlin 2, 3, 5, and 9 Parameters, Neo-Hookean, Ogden 1st-3rd Orders, Polynomial 1st-3rd Orders, Yeoh 1st-3rd Orders

    "},{"location":"beamsection/beamsection_getstart/#electromagnetic-model-curves","title":"Electromagnetic Model Curves","text":"

    Electrical Steel, Power Ferrite

    "},{"location":"beamsection/beamsection_getstart/#curve-description","title":"Curve Description","text":"

    This section contains details about the selected curve, such as the function or energy functional, parameters to fit, variable descriptions.

    For the hyperelastic model curves, additional Hyperelastic Test Data checkboxes shows in this seciton. It allows users to set/edit the test data at different deformations.

    "},{"location":"beamsection/beamsection_getstart/#fitted-parameters","title":"Fitted Parameters","text":"

    This section outputs the fitted parameters for users. You also can edit the constants in the line edit widget and review the curves in the Chart window.

    "},{"location":"beamsection/beamsection_getstart/#actions","title":"Actions","text":"

    There are three actions provided for users to analyze or fit the test data.

    • Check button: examines the input data in the tabular data window.
    • Solve button: solves the curve fitting based on the input tabular data. The check process is implemented before the solution. If the curve fitting succeeded, the fitted constants will be set in the Fitted Parameters section, the curves will be plotted in the Chart window as well.
    • Update Chart button: allows you to update the curves in the Chart window with the current constants.
    "},{"location":"beamsection/beamsection_getstart/#chart-windows","title":"Chart Windows","text":"

    This section displays the test data dots and fitted curves in the same window, these dots and curves can be differentiated by legends and colors. Zoom in and out showing area are supported. You also can set the logarithmic axis for the curve display.

    "},{"location":"beamsection/beamsection_getstart/#workflow","title":"Workflow","text":"

    This section demonstrates the procedures in applying curve fitting. The steps are followed:

    1. Select the designated curve type from the toolbox.

    2. Edit table data or import data from an external file.

    3. Review the test data in the Chart.

    4. Check the input data (Optional). A pop-up message box indicates the status of the input data.

    5. Solve the curves with the input tabular data. If it succeeded, the Constants line edits are filled with fitted parameters, and the Chart window displays the fitted curves along with the test data. These fitted parameters are the answers that we want.

    6. Adjust parameters to evaluate the similar curves (Optional). You can change the parameters and hit the Update Chart button to see the new curves with modified parameters.

    Note

    Your test data is critical for your fitted constants, please ensure that the test data cover the entire range of your curve expreience.

    "},{"location":"beamsection/beamsection_overview/","title":"Beam Cross-Section Overview","text":"

    BeamSection is a free beam cross-section software program for engineers. This tool provides you comprehensive beam property calculations those are often used in engineering simulation and practice.

    "},{"location":"beamsection/beamsection_overview/#questions-or-comments","title":"Questions or Comments?","text":"
    • Fill Contact Form
    • or email us at info@welsim.com

    Feel free to send questions, comments, requests, bug reports, and success stories. Asking for a new feature usually results in adding the request to the TODO list or, if it already is in the list, in assigning higher priority to it.

    "},{"location":"curvefitter/curvefit_getstart/","title":"Getting Started","text":"

    Using CurveFitter is straightforward, this section shows you how to conduct the curve fitting step by step.

    "},{"location":"curvefitter/curvefit_getstart/#graphical-interface","title":"Graphical Interface","text":"

    An overview of the Graphical User Interface (GUI) with notation is shown in the figure below.

    "},{"location":"curvefitter/curvefit_getstart/#menu","title":"Menu","text":"

    This section provides you basic actions in using CurveFitter. The actions include:

    • Exit: Quits the program.
    • Help: Runs your default web browser and visits official website welsim.com/curvefit.
    • About: Displays About dialog and shows software and hardware information.
    "},{"location":"curvefitter/curvefit_getstart/#toolbox","title":"Toolbox","text":"

    This section lists all available curves for you to choose from. The default curve is the straight line (first-order polynomial). The curves are grouped by the characteristics as follows.

    "},{"location":"curvefitter/curvefit_getstart/#basic-curves","title":"Basic Curves","text":"

    Straight line, Natural logarithm, Exponential, Power, Gaussian

    "},{"location":"curvefitter/curvefit_getstart/#polynomial-curves","title":"Polynomial Curves","text":"

    2nd Order Polynomial, 3rd Order Polynomial, 4th Order Polynomial, 5th Order Polynomial

    "},{"location":"curvefitter/curvefit_getstart/#nonlinear-curves","title":"Nonlinear Curves","text":"

    Symmetrical Sigmoidal, Asymmetrical Sigmoidal, Rectangular Hyperbola, Basic Exponential, Half-Life Exponential, Proportional Rate Growth or Decrease

    "},{"location":"curvefitter/curvefit_getstart/#hyperelastic-material-model-curves","title":"Hyperelastic Material Model Curves","text":"

    Arruda-Boyce, Gent, Mooney-Rivlin 2, 3, 5, and 9 Parameters, Neo-Hookean, Ogden 1st-3rd Orders, Polynomial 1st-3rd Orders, Yeoh 1st-3rd Orders

    "},{"location":"curvefitter/curvefit_getstart/#electromagnetic-model-curves","title":"Electromagnetic Model Curves","text":"

    Electrical Steel, Power Ferrite

    "},{"location":"curvefitter/curvefit_getstart/#curve-description","title":"Curve Description","text":"

    This section contains details about the selected curve, such as the function or energy functional, parameters to fit, variable descriptions.

    For the hyperelastic model curves, additional Hyperelastic Test Data checkboxes shows in this seciton. It allows users to set/edit the test data at different deformations.

    "},{"location":"curvefitter/curvefit_getstart/#fitted-parameters","title":"Fitted Parameters","text":"

    This section outputs the fitted parameters for users. You also can edit the constants in the line edit widget and review the curves in the Chart window.

    "},{"location":"curvefitter/curvefit_getstart/#actions","title":"Actions","text":"

    There are three actions provided for users to analyze or fit the test data.

    • Check button: examines the input data in the tabular data window.
    • Solve button: solves the curve fitting based on the input tabular data. The check process is implemented before the solution. If the curve fitting succeeded, the fitted constants will be set in the Fitted Parameters section, the curves will be plotted in the Chart window as well.
    • Update Chart button: allows you to update the curves in the Chart window with the current constants.
    "},{"location":"curvefitter/curvefit_getstart/#tabular-data-windows","title":"Tabular Data Windows","text":"

    This section enables you to edit and review the table data. For most of curves, the tables have two columns. The frequency-dependent curves have a sub-table for each frequency row. You can input tabular values cell by cell, or import a plain text or Excel file to input massive data. The external file formats are depicted here.

    You also can export the tabular data to an external file in plain text or Excel format.

    "},{"location":"curvefitter/curvefit_getstart/#chart-windows","title":"Chart Windows","text":"

    This section displays the test data dots and fitted curves in the same window, these dots and curves can be differentiated by legends and colors. Zoom in and out showing area are supported. You also can set the logarithmic axis for the curve display.

    "},{"location":"curvefitter/curvefit_getstart/#workflow","title":"Workflow","text":"

    This section demonstrates the procedures in applying curve fitting. The steps are followed:

    1. Select the designated curve type from the toolbox.

    2. Edit table data or import data from an external file.

    3. Review the test data in the Chart.

    4. Check the input data (Optional). A pop-up message box indicates the status of the input data.

    5. Solve the curves with the input tabular data. If it succeeded, the Constants line edits are filled with fitted parameters, and the Chart window displays the fitted curves along with the test data. These fitted parameters are the answers that we want.

    6. Adjust parameters to evaluate the similar curves (Optional). You can change the parameters and hit the Update Chart button to see the new curves with modified parameters.

    Note

    Your test data is critical for your fitted constants, please ensure that the test data cover the entire range of your curve expreience.

    "},{"location":"curvefitter/curvefit_io/","title":"I/O File Format","text":"

    The I/O file format is consistent to the Import/Export format in MatEditor module. For more details please refer to the Import/Export Tabular Data

    "},{"location":"curvefitter/curvefit_overview/","title":"Curve Fitter Overview","text":"

    CurveFitter is a free software program for nonlinear curve fitting of analytical functions to experimental data. It provides tools for linear, polynomial, exponential, power, Schulz-Flory, nonlinear, hyperelastic materials, magnetic core loss curve fitting along with validation, and goodness-of-fit tests. The easy-to-use graphical user interface enables you to start fitting projects with no learning curves. You can summarize and present your results with customized fitting reports. There are many time-saving options such as an import-export feature which allows you to quickly input/output massive tabular data from/to external files.

    Curve fitting is one of the most widely used analysis methods in science and technology. Curve fitting examines the relationship between one or more predictors (independent variables) and a response variable (dependent variable), with the goal of defining a \"best fit\" model of the relationship. It is reportedly used in crystallography, chromatography, photoluminescence and photoelectron spectroscopy, infrared, Raman spectroscopy, and finite element analysis.

    "},{"location":"curvefitter/curvefit_overview/#specification","title":"Specification","text":"

    The system requirements for running CurveFitter are given in the table below.

    Specification Description Operation system Microsoft Windows 10 to 11; 64-bit Physical memory At least 4 GB Import/Export file format Plain text, Excel

    The supported functions/curves are listed in the table below.

    Category Materials Basic Straight line, Natural logarithm, Exponential, Power, Gaussian Polynomial 2nd-5th Order Polynomial Schulz-Flory 1nd-6th Order Schulz-Flory Nonlinear Symmetrical Sigmoidal, Asymmetrical Sigmoidal, Rectangular Hyperbola, Basic Exponential, Half-Life Exponential, Proportional Rate Growth or Decrease Hyperelastic material model Arruda-Boyce, Gent, Mooney-Rivlin 2 3 5 and 9 Parameters, Neo-Hookean, 1st-3rd Order Ogden, 1st-3rd Order Polynomial, 1st-3rd Order Yeoh Electromagnetic Core loss Model Electrical Steel, Power Ferrite (Steinmetz)"},{"location":"curvefitter/curvefit_overview/#linear-polynomial-regression","title":"Linear, Polynomial Regression","text":"

    Linear and Polynomial regressions in CurveFitter make use of the least-square method to fit a linear model function or a polynomial model function to data, respectively.

    "},{"location":"curvefitter/curvefit_overview/#nonlinear-curve-fitting","title":"Nonlinear Curve Fitting","text":"

    CurveFitter's nonlinear fit tool is powerful, flexible, and easy to use. This tool includes more than 10 built-in fitting functions, selected from a wide range of categories and disciplines.

    "},{"location":"curvefitter/curvefit_overview/#hyperelastic-material-model-fitting","title":"Hyperelastic Material Model Fitting","text":"

    CurveFitter's hyperelastic model fitting tool allows you to obtain material constants from the uniaxial, biaxial, or shear test data. You can choose the available test data type by toggling the corresponding checkbox. The supported hyperelastic models are: Arruda-Boyce, Gent, Mooney-Rivlin, Neo-Hookean, Ogden, Polynomial, and Yeoh. The input test data is engineering strain and engineering stress.

    "},{"location":"curvefitter/curvefit_overview/#magnetic-core-loss-model-fitting","title":"Magnetic Core Loss Model Fitting","text":"

    Core Loss Model fitting tool enables you to fit the parameters in estimating energy loss analysis. The tabular data window contains both regular tables and sub-tables for you to input multiple frequency-based data. The chart supports the logarithmic axis to better review the frequency-based curves.

    "},{"location":"curvefitter/curvefit_overview/#questions-or-comments","title":"Questions or Comments?","text":"
    • Fill Contact Form
    • or email us at info@welsim.com

    Feel free to send questions, comments, requests, bug reports, and success stories. Asking for a new feature usually results in adding the request to the TODO list or, if it already is in the list, in assigning higher priority to it.

    "},{"location":"curvefitter/curvefit_theory/","title":"Curve Fitting Theory","text":"

    The section shows you the theoretical details of each curve or function.

    "},{"location":"curvefitter/curvefit_theory/#basic-curves","title":"Basic Curves","text":"

    The group of Basic contains all commonly used curves.

    "},{"location":"curvefitter/curvefit_theory/#straight-line","title":"Straight line","text":"

    The function of this curve is given by

    \\[ y(x)=a+bx \\]

    where \\(a\\) and \\(b\\) are constants to fit, \\(x\\) and \\(y\\) are the test data pair. This function is also called 1st order polynomial.

    "},{"location":"curvefitter/curvefit_theory/#natural-logarithm","title":"Natural logarithm","text":"

    The function of this curve is given by

    \\[ y(x)=a+b \\cdot ln(x) \\]

    where \\(a\\) and \\(b\\) are constants to fit, \\(x\\) and \\(y\\) are the test data pair.

    Note

    Independent variable \\(x\\) must be larger than zero.

    "},{"location":"curvefitter/curvefit_theory/#exponential","title":"Exponential","text":"

    The function of this curve is given by

    \\[ y(x)=ae^{bx} \\]

    where \\(a\\) and \\(b\\) are constants to fit, \\(x\\) and \\(y\\) are the test data pair.

    Note

    Dependent variable \\(y\\) must be larger than zero.

    "},{"location":"curvefitter/curvefit_theory/#power","title":"Power","text":"

    The function of this curve is given by

    \\[ y(x)=ax^{b} \\]

    where \\(a\\) and \\(b\\) are constants to fit, \\(x\\) and \\(y\\) are the test data pair.

    Note

    Variables \\(x\\) and \\(y\\) must be larger than zero.

    "},{"location":"curvefitter/curvefit_theory/#gaussian","title":"Gaussian","text":"

    The function of this curve is given by

    \\[ y(x)=a \\exp{(-\\dfrac{(x-b)^2}{2c^2})} \\]

    where \\(a\\), \\(b\\), and \\(c\\) are constants to fit, \\(x\\) and \\(y\\) are the test data pair.

    Note

    Dependent variables \\(y\\) must be larger than zero.

    "},{"location":"curvefitter/curvefit_theory/#polynomial-curves","title":"Polynomial Curves","text":"

    The group of Polynomial contains polynomial curves. The first-order polynomial is located in the Basic group as Straight Line.

    "},{"location":"curvefitter/curvefit_theory/#2nd-order-polynomial","title":"2nd Order Polynomial","text":"

    The function of this curve is given by

    \\[ y(x)=a+bx+cx^2 \\]

    where \\(a\\), \\(b\\), and \\(c\\) are constants to fit, \\(x\\) and \\(y\\) are the test data pair.

    "},{"location":"curvefitter/curvefit_theory/#3rd-order-polynomial","title":"3rd Order Polynomial","text":"

    The function of this curve is given by

    \\[ y(x)=a+bx+cx^2+dx^3 \\]

    where \\(a\\), \\(b\\), \\(c\\), and \\(d\\) are constants to fit, \\(x\\) and \\(y\\) are the test data pair.

    "},{"location":"curvefitter/curvefit_theory/#4th-order-polynomial","title":"4th Order Polynomial","text":"

    The function of this curve is given by

    \\[ y(x)=a+bx+cx^2+dx^3+ex^4 \\]

    where \\(a\\), \\(b\\), \\(c\\), \\(d\\), and \\(e\\) are constants to fit, \\(x\\) and \\(y\\) are the test data pair.

    "},{"location":"curvefitter/curvefit_theory/#5th-order-polynomial","title":"5th Order Polynomial","text":"

    The function of this curve is given by

    \\[ y(x)=a+bx+cx^2+dx^3+ex^4+ex^5 \\]

    where \\(a\\), \\(b\\), \\(c\\), \\(d\\), \\(e\\), and \\(f\\) are constants to fit, \\(x\\) and \\(y\\) are the test data pair.

    "},{"location":"curvefitter/curvefit_theory/#schulz-flory-functions","title":"Schulz-Flory functions","text":"

    Schulz Flory distribution function to describe relative ratios of polymers after a polymerization process. The function of this curve is given by

    \\[ y(x) = \\sum_{i=1}^{n} ln(10) \\dfrac{a_i}{b_i^2} \\exp{(4.6x-\\dfrac{\\exp{(2.3x)}}{b_i})} \\]

    where \\(a_i\\) and \\(b_i\\) are constants to fit, \\(x\\) and \\(y\\) are the test data pair. The parameter must satisfy the condition: \\(0<a_i<1\\).

    "},{"location":"curvefitter/curvefit_theory/#nonlinear-curves","title":"Nonlinear Curves","text":"

    The group of Nonlinear curves contains nonlinear curves that do not belong to the polynomial.

    "},{"location":"curvefitter/curvefit_theory/#symmetrical-sigmoidal","title":"Symmetrical Sigmoidal","text":"

    The function of this curve is given by

    \\[ y(x)=d + \\dfrac{a-d}{1+(\\dfrac{x}{c})^b} \\]

    where \\(a\\), \\(b\\), \\(c\\), and \\(d\\) are constants to fit, \\(x\\) and \\(y\\) are the test data pair.

    "},{"location":"curvefitter/curvefit_theory/#asymmetrical-sigmoidal","title":"Asymmetrical Sigmoidal","text":"

    The function of this curve is given by

    \\[ y(x)=d + \\dfrac{a-d}{ (1+(\\dfrac{x}{c})^b)^m } \\]

    where \\(a\\), \\(b\\), \\(c\\), \\(d\\), and \\(m\\) are constants to fit, \\(x\\) and \\(y\\) are the test data pair.

    "},{"location":"curvefitter/curvefit_theory/#rectangular-hyperbola","title":"Rectangular Hyperbola","text":"

    The function of this curve is given by

    \\[ y(x)=\\dfrac{V_{max}x}{ K_m + x} \\]

    where \\(V_{max}\\) and \\(K_m\\) are constants to fit, \\(x\\) and \\(y\\) are the test data pair.

    "},{"location":"curvefitter/curvefit_theory/#basic-exponential","title":"Basic Exponential","text":"

    The function of this curve is given by

    \\[ y(x)=a + be^{-cx} \\]

    where \\(a\\), \\(b\\), and \\(c\\) are constants to fit, \\(x\\) and \\(y\\) are the test data pair.

    "},{"location":"curvefitter/curvefit_theory/#half-life-exponential","title":"Half-Life Exponential","text":"

    The function of this curve is given by

    \\[ y(x)=a + \\dfrac{b}{2^{(\\dfrac{x}{c})}} \\]

    where \\(a\\), \\(b\\), and \\(c\\) are constants to fit, \\(x\\) and \\(y\\) are the test data pair.

    "},{"location":"curvefitter/curvefit_theory/#proportional-rate-growth-or-decrease","title":"Proportional Rate Growth or Decrease","text":"

    The function of this curve is given by

    \\[ y(x)=Y_0 + \\dfrac{V_0}{K}(1-e^{-Kx}) \\]

    where \\(Y_0\\), \\(V_0\\), and \\(K\\) are constants to fit, \\(x\\) and \\(y\\) are the test data pair.

    "},{"location":"curvefitter/curvefit_theory/#log-normal-particle-size-distribution","title":"Log-Normal Particle Size Distribution","text":"

    The function of this curve is given by

    \\[ \\dfrac{dy(x)}{d\\ln{x}}=\\dfrac{C_t}{\\sigma_g\\sqrt{2}\\pi} \\exp{(-\\dfrac{(\\ln{x}-\\ln{D_m})^2}{2\\ln{\\sigma_g}^2})} \\]

    where \\(D_m\\), \\(\\sigma_g\\), and \\(C_t\\) are constants to fit, x and y are test data pair. In the computation, the Left-Hand-Side term (\\(dy(x)/d\\ln{x}\\)) is calculated using finite difference scheme.

    Note

    Independent variables \\(x\\) must be larger than zero. The number of input x-y pairs must be large than 3.

    "},{"location":"curvefitter/curvefit_theory/#hyperelastic-material-model-curves","title":"Hyperelastic Material Model Curves","text":"

    The group of hyperelastic material models contains the commonly used hyperelastic models in the finite element analysis. The test data pair is engineering strain and stress.

    "},{"location":"curvefitter/curvefit_theory/#arruda-boyce","title":"Arruda-Boyce","text":"

    The form of the strain-energy potential for Arruda-Boyce model is

    \\[ \\begin{array}{ccl} W & = & \\mu[\\dfrac{1}{2}(\\bar{I}_{1}-3)+\\dfrac{1}{20\\lambda_{m}^{2}}(\\bar{I_{1}^{2}}-9)+\\dfrac{11}{1050\\lambda_{m}^{4}}(\\bar{I_{1}^{3}}-27)\\\\ & + & \\dfrac{19}{7000\\lambda_{m}^{6}}(\\bar{I_{1}^{4}}-81) + \\dfrac{519}{673750\\lambda_{m}^{8}}(\\bar{I_{1}^{5}}-243)] \\end{array} \\]

    where \\(\\mu\\) is the initial shear modulus of the material, \\(\\lambda_{m}\\) is limiting network stretch.

    "},{"location":"curvefitter/curvefit_theory/#gent","title":"Gent","text":"

    The form of the strain-energy potential for the Gent model is:

    \\[ W=-\\frac{\\mu J_{m}}{2}\\mathrm{ln}\\left(1-\\frac{\\bar{I}_{1}-3}{J_{m}}\\right) \\]

    where \\(\\mu\\) is the initial shear modulus of the material, \\(J_m\\) is limiting value of \\(\\bar{I}_1-3\\).

    "},{"location":"curvefitter/curvefit_theory/#mooney-rivlin-2-3-5-and-9-parameters","title":"Mooney-Rivlin 2 3 5 and 9 Parameters","text":"

    This model includes two-, three-, five-, and nine-terma Mooney-Rivlin models. The form of the strain-energy potential for a two-parameter Mooney-Rivlin model is

    \\[ W=C_{10}\\left(\\bar{I}_{1}-3\\right)+C_{01}\\left(\\bar{I}_{2}-3\\right) \\]

    where \\(C_{10}\\), \\(C_{01}\\), and \\(D_{1}\\) are the material constants.

    The form of strain-energy potential for a three-parameter Mooney-Rivlin model is

    \\[ W=C_{10}\\left(\\bar{I}_{1}-3\\right)+C_{01}\\left(\\bar{I}_{2}-3\\right)+C_{11}\\left(\\bar{I}_{1}-3\\right)\\left(\\bar{I}_{2}-3\\right) \\]

    where \\(C_{10}\\), \\(C_{01}\\), and \\(C_{11}\\) are material constants.

    The form of strain-energy potential for a five-parameter Mooney-Rivlin model is

    \\[ \\begin{array}{ccl} W & = & C_{10}\\left(\\bar{I}_{1}-3\\right)+C_{01}\\left(\\bar{I}_{2}-3\\right)+C_{20}\\left(\\bar{I}_{1}-3\\right)^{2}\\\\ & + & C_{11}\\left(\\bar{I}_{1}-3\\right)\\left(\\bar{I}_{2}-3\\right)+C_{02}\\left(\\bar{I}_{2}-3\\right)^{2} \\end{array} \\]

    where \\(C_{10}\\), \\(C_{01}\\), \\(C_{20}\\), \\(C_{11}\\), and \\(C_{02}\\) are material constants.

    The form of strain-energy potential for a nine-parameter Mooney-Rivlin model is

    \\[ \\begin{array}{ccl} W & = & C_{10}\\left(\\bar{I}_{1}-3\\right)+C_{01}\\left(\\bar{I}_{2}-3\\right)+C_{20}\\left(\\bar{I}_{1}-3\\right)^{2}\\\\ & + & C_{11}\\left(\\bar{I}_{1}-3\\right)\\left(\\bar{I}_{2}-3\\right)+C_{02}\\left(\\bar{I}_{2}-3\\right)^{2}+C_{30}\\left(\\bar{I}_{1}-3\\right)^{3}\\\\ & + & C_{21}\\left(\\bar{I}_{1}-3\\right)^{2}\\left(\\bar{I}_{2}-3\\right)+C_{12}\\left(\\bar{I}_{1}-3\\right)\\left(\\bar{I}_{2}-3\\right)^{2}+C_{03}\\left(\\bar{I}_{2}-3\\right)^{3} \\end{array} \\]

    where \\(C_{10}\\), \\(C_{01}\\), \\(C_{20}\\), \\(C_{11}\\), \\(C_{02}\\), \\(C_{30}\\), \\(C_{21}\\), \\(C_{12}\\), and \\(C_{03}\\) are material constants.

    "},{"location":"curvefitter/curvefit_theory/#neo-hookean","title":"Neo-Hookean","text":"

    The Neo-Hookean model is a well-known hyperelastic model with an expanded linear rule (Hooke rule) having isotropy so that it can respond to finite deformation problems. The elastic potential is as follows.

    \\[ W=\\frac{\\mu}{2}(\\bar{I}_{1}-3) \\]

    where \\(\\mu\\) is initial shear modulus of materials.

    "},{"location":"curvefitter/curvefit_theory/#ogden","title":"Ogden","text":"

    The strain-energy potential of the Ogden compressible foam model is based on the principal stretches of left Cauchy strain tensor, which has the form:

    \\[ W=\\sum_{i=1}^{N}\\frac{\\mu_{i}}{\\alpha_{i}}\\left(\\bar{\\lambda}_{1}^{\\alpha_{i}}+\\bar{\\lambda}_{2}^{\\alpha_{i}}+\\bar{\\lambda}_{3}^{\\alpha_{i}}-3\\right)+\\sum_{k=1}^{N}\\frac{1}{D_{k}}\\left(J-1\\right)^{2k} \\]

    where N determines the order of the polynomial, \\(\\mu_i\\), \\(\\alpha_i\\) are material constants. The reduced principal strench is defined by:

    \\[ \\bar{\\lambda}_{p}=J^{-\\frac{1}{3}}\\lambda_p,\\; J=(\\lambda_{1}\\lambda_{2}\\lambda_{3})^{\\frac{1}{2}} \\]

    When parameters N=1, \\(\\alpha_1\\)=2, the Ogden model is converted to the neo-Hookean model. When parameters N=2, \\(\\alpha_1\\)=2 and \\(\\alpha_2\\)=-2, the Ogden model is converted to the 2-parameter Mooney-Rivlin model.

    "},{"location":"curvefitter/curvefit_theory/#polynomial","title":"Polynomial","text":"

    The polynomial form of strain-energy potential is:

    \\[ W=\\sum_{i+j=1}^{N}c_{ij}\\left(\\bar{I}_{1}-3\\right)^{i}\\left(\\bar{I_{2}}-3\\right)^{j} \\]

    where \\(N\\) determines the order of the polynomial, \\(c_{ij}\\) are material constants.

    The Polynomial model is converted to following models with specific parameters:

    Parameters of Polynomial model Equivalent model N=1, \\(C_{01}\\)=0 neo-Hookean N=1 2-parameter Mooney-Rivlin N=2 5-parameter Mooney-Rivlin N=3 9-parameter Mooney-Rivlin"},{"location":"curvefitter/curvefit_theory/#yeoh","title":"Yeoh","text":"

    The Yeoh model is also called the reduced polynomial form. The strain-energy potential is

    \\[ W=\\sum_{i=1}^{N}c_{i0}\\left(\\bar{I}_{1}-3\\right)^{i} \\]

    where N denotes the order of the polynomial, \\(C_{i0}\\) are material constants. When N=1, Yeoh becomes neo-Hookean model.

    "},{"location":"curvefitter/curvefit_theory/#electromagnetic-model-curves","title":"Electromagnetic Model Curves","text":"

    This group includes the commonly used fitting curves in the electromagnetic analysis.

    "},{"location":"curvefitter/curvefit_theory/#electrical-steel","title":"Electrical Steel","text":"

    The iron-core loss without DC flux bias is expressed as the following:

    \\[ p_v=P_h+P_c+P_e=K_{f} f (B_m)^2 + K_c (fB_m)^2 + K_e(fB_m)^{1.5} \\]

    where

    • \\(B_m\\) is the amplitude of the AC flux component,
    • \\(f\\) is the frequency,
    • \\(K_h\\) is the hysteresis core loss coefficient,
    • \\(K_c\\) is the eddy-current core loss coefficient, and
    • \\(K_e\\) is the excess core loss coefficient,
    "},{"location":"curvefitter/curvefit_theory/#power-ferrite","title":"Power Ferrite","text":"

    The iron-core loss is expressed as the Steinmetz approximation

    \\[ p_v=C_m f^x B_m^y \\]

    where \\(p_v\\) is the average power density, \\(f\\) is the excitation frequency, and \\(B_m\\) is the peak flux density, is commonly used to characterize core loss data for sinusoidal excitation, but can also be applied to square-wave data.

    To linearize the equation for curve fitting, we used base-10 logarithms. The equation above can be rewritten to

    \\[ log(p_v)=c + x\\cdot log(f) + y \\cdot(B_m) \\]

    where \\(c=log(C_m)\\).

    "},{"location":"install/licensing/","title":"WELSIM licensing guide","text":""},{"location":"install/licensing/#preface","title":"Preface","text":"

    This document contains information for running the WELSIM License Manager with all WelSimulation LLC products.

    "},{"location":"install/licensing/#supported-hardware-platforms","title":"Supported hardware platforms","text":"

    This document details information about licensing WelSimulation LLC products on the hardware platforms listed below.

    • Linux x64 (linx64)
    • Windows x64 (winx64)

    For specific operating system requirements, contact the customer support for the product and platform you are running.

    "},{"location":"install/licensing/#conventions-used-in-this-document","title":"Conventions used in this document","text":"

    Computer prompts and responses and user input are printed using this font:

    /welsim_com/shared_files/licensing/welslic_admin\n

    Wild card arguments and variables are italicized. Commands appear in bold face.

    "},{"location":"install/licensing/#introduction","title":"Introduction","text":"

    WelSimulation LLC uses the internal license manager for all of its licensed products. The communication between the WELSIM applications and license manager occurs through an internal process. The communication is nearly transparent; you should not see any noticeable difference in your day-to-day operation of WELSIM products.

    You do not need to run the license manager installation. The license manager is installed together with the WELSIM application package.

    "},{"location":"install/licensing/#the-licensing-process","title":"The licensing process","text":"

    The licensing process for WELSIM is as follows:

    1. Install the software.
    2. Start the software and generate your unique Computer ID, send the Computer ID to info@welsim.com.
    3. After you receive your license file, run the License Manager Wizard from Toolbar of WELSIM application.
    4. Set up the licensing environment and input license. See Activating the WELSIM.
    "},{"location":"install/licensing/#explanation-of-licensing-terms","title":"Explanation of licensing terms","text":"

    The main components of the licensing are:

    • License file
    • Application program (WELSIM)

    These components are explained in more detail in the following sections.

    "},{"location":"install/licensing/#the-license-file","title":"The license file","text":"

    Licensing data is stored in a text file called the license file. The license file is created by WelSimulation LLC and is installed by the end user. It contains information about the version, signature, and date.

    The default and recommended location for the WELSIM license file (wsimkey.dat) is in the %APPDATA%/WELSIM directory. The application can automatically place the license file at this location after activation. End users can manually copy the license file to that directory, although are not suggested.

    "},{"location":"install/licensing/#license-file-format","title":"License file format","text":"

    License files usually contain eight lines. You cannot modify any these data items in the license files.

    Note

    Everything in the license key should be entered exactly as supplied. All data in the license file is case sensitive, unless otherwise indicated.

    "},{"location":"install/licensing/#application-line","title":"Application line","text":"

    The application line specifies the application name. Normally a license file for WELSIM application uses the \u201c[WELSIM]\u201d. The example of the application line is:

    [WELSIM]\n

    "},{"location":"install/licensing/#license-version-line","title":"License version line","text":"

    The license version line specifies the version of current license file. The example of the this line is shown below:

    license_verion = 100\n

    "},{"location":"install/licensing/#license-signature-line","title":"License signature line","text":"

    A license signature line describes the password key to use a product. The example of the signature line is:

    license_signature = Tvp919deAq5od+nCUjRF15mgeBIKCLgscLgvR8eFYAlBrqqcjETIyuY0Lu/brYbOKYrIPOXqFzWn8asLqieImA== \n

    "},{"location":"install/licensing/#computer-id-line","title":"Computer ID line","text":"

    The computer ID line is the string generated from client's computer. The example of the Computer ID line is:

    client_signature = KXfe-uAAA-KXfe-uQAA\n

    "},{"location":"install/licensing/#application-version-lines","title":"Application version lines","text":"

    The application version lines include two parts, one is the start version number and another is the end version. The example of the application version lines are:

    from_sw_version = 100\nto_sw_version = 100\n

    "},{"location":"install/licensing/#effective-date-lines","title":"Effective date lines","text":"

    The effective date lines include both start and end date. The example of the effective date lines are:

    from_date = 2017-07-02\nto_date = 2018-08-02\n

    "},{"location":"install/licensing/#sample-license-files","title":"Sample license files","text":"

    A sample license file is shown here. This file is for WELSIM v1.8 and later tasks.

    [WELSIM]\nlicense_version = 100\nlicense_signature = Tvp919deAq5od+nCUjRF15mgeBIKCLgscLgvR8eFYAlBrqqcjETIyuY0Lu/brYbOKYrIPOXqFzWn8asLqieImA==\nclient_signature = KXfe-uAAA-KXfe-uQAA\nfrom_sw_version = 100\nto_sw_version = 100\nfrom_date = 2023-07-02\nto_date = 2024-07-02\n

    "},{"location":"install/licensing/#recognizing-a-welsim-license-file","title":"Recognizing a WELSIM license file","text":"

    If you receive a license file and are not sure if it is a WELSIM license file, you can determine if it is by looking at the contents of the license file. If it is a WELSIM license file, then

    • In the first line of the license file, the string field is WELSIM.
    "},{"location":"install/licensing/#installing-the-welsim-license-manager","title":"Installing the WELSIM license manager","text":"

    The WelSim License Manager is included in the WELSIM application installation. As the user installs the application, the license manager is already installed.

    "},{"location":"install/licensing/#troubleshooting","title":"Troubleshooting","text":"

    This section lists problems and error messages that you may encounter while setting up licensing. The possible error messages are:

    • LICENSE_FILE_NOT_FOUND
    • LICENSE_SERVER_NOT_FOUND
    • ENVIRONMENT_VARIABLE_NOT_DEFINED
    • FILE_FORMAT_NOT_RECOGNIZED
    • LICENSE_MALFORMED
    • PRODUCT_NOT_LICENSED
    • PRODUCT_EXPIRED
    • LICENSE_CORRUPTED
    • IDENTIFIERS_MISMATCH

    An example of the license message error message is shown in Figure\u00a0[fig:ch10_license_not_found].

    "},{"location":"install/linux/","title":"Linux installation guide","text":""},{"location":"install/linux/#installation-prerequisites-for-linux","title":"Installation prerequisites for Linux","text":"

    This document describes the steps necessary to correctly install and configure WELSIM application on Linux platforms. These products include:

    • WELSIM Application
    • License manager
    "},{"location":"install/linux/#system-prerequisites","title":"System prerequisites","text":"

    WELSIM application is supported on the Linux platforms and operating system levels listed in Table\u00a0below.

    Platform Operating system Availability Linux x64 Ubuntu 22.04 LTS or higher Download

    Note

    1. If you run WELSIM on Ubuntu, we recommand Ubuntu 22.04 LTS or higher with the latest libstdc++ and libfortran libraries.
    "},{"location":"install/linux/#disk-space-and-memory-requirements","title":"Disk space and memory requirements","text":"

    You will need the disk space shown in Table\u00a0below for installation and proper functioning.

    Product Disk space Memory WELSIM application at least 1 GB at least 4 GB"},{"location":"install/linux/#platform-details","title":"Platform details","text":"

    For all 64-bit Linux platforms, the libraries listed below should be installed.

    • libxcb-xinerama0
    • libstdc++
    • gcc-c++
    • glibc
    • libfortran
    • openmpi-bin
    • libomp-dev
    "},{"location":"install/linux/#installing-the-welsim-for-a-linux-system","title":"Installing the WELSIM for a Linux system","text":"

    This section explains how to download and install WELSIM.

    You can install WELSIM as root, or non-root; however, if you are root user, you can install the application in the system directory. The application can be used by different users.

    "},{"location":"install/linux/#product-download-instructions","title":"Product download instructions","text":"

    To download the installation files from our website, you will need to agree the US Export Restrictions. You only need to download one installer file.

    1. From the website1, select the Linux version of WELSIM and click the download button on the webpage.
    2. The downloaded installer file has the name like: WelSim%version%SetupUbuntu.run. For example, the installer of 2024R1 is WelSim28SetupUbuntu.run.
    3. Begin the product installation as described in the next section.
    "},{"location":"install/linux/#production-installation","title":"Production installation","text":"

    1.Navigate to the directory where you placed the installer file. Run the commands below in a terminal window. Note that we take the version of 2024R1 as an example, if you are installing a different version, replace the installer name in the command line below.

    $ chmod +x WelSim28SetupUbuntu.run\n$ ./WelSim28SetupUbuntu.run\n

    Note

    Running the installer requires the libxcb-xinerama0 library installed in your system.

    2.The WELSIM installation Launcher appears as shown below.

    3.Click the Next button to start the installation on your computer.

    4.The installation folder setting appears as shown below. You can input your designated directory or keep the default one. After specifying the directory, Click Next.

    5.The component selection interface appears as shown below. You can select the components that you want to install. The user can keep the default selection, and know the occupied disk space for this installation. Click Next.

    6.The license agreement appears as shown below. Read the agreement, and if you agree to the terms and conditions, select I Agree. Click Next.

    7.The installation needs your conformation to start as shown below. Click Install.

    8.The installation completed as shown below. Click Next.

    "},{"location":"install/linux/#starting-the-software-on-linux","title":"Starting the software on Linux","text":"

    After installation, starting the WELSIM software application is straightforward. Here are steps:

    1.Install the dependencies to your Ubuntu OS

    sudo apt update\nsudo apt upgrade\nsudo apt install openmpi-bin libomp-dev\n

    2.Allocate the installed WELSIM application folder, double click the executable file runWelSim.

    Note

    If the WELSIM does not start, the executable file may have no exectuable attribute on your machine. You could open a terminal window and type commends below.

    $ chmod +x runWelSim.sh\n$ ./runWelSim.sh \n

    3.WELSIM application starts, the GUI shows the system information in Figure\u00a0below.

    "},{"location":"install/linux/#uninstalling-the-software","title":"Uninstalling the software","text":"

    To uninstall WELSIM, you can browse file explorer into the installation folder, and double click on the Uninstaller. Following the instructions on the Uninstaller, you can remove the application from your computer.

    You also can simply delete the installation folder to uninstall the WELSIM.

    1. https://welsim.com/download \u21a9

    "},{"location":"install/windows/","title":"Windows installation guide","text":""},{"location":"install/windows/#installation-prerequisites-for-windows","title":"Installation prerequisites for Windows","text":"

    This document describes the steps essential to correctly install and configure WELSIM on Windows platform.

    "},{"location":"install/windows/#system-prerequisites","title":"System prerequisites","text":"

    WELSIM is supported on the following Windows platforms and operating system levels.

    Platform Operating System Platform Architecture Availability x64 Windows 11 winx64 Download"},{"location":"install/windows/#disk-space-and-memory-requirements","title":"Disk space and memory requirements","text":"

    You will need the disk space shown in Table\u00a0[tab:ch11_win_disk_space] for installation and proper functioning. The numbers listed here are the maximum amount of disk space you will need.

    Product Disk Space Memory WELSIM 1 GB at least 4GB"},{"location":"install/windows/#software-prerequisites","title":"Software prerequisites","text":"

    You need to have the following software installed on your system. These software prerequisites will be installed automatically when you launch the product installation. If you have finished an installation successfully, the prerequisites executable are located under the %Installed Folder%\\Prerequisites directory.

    • Microsoft Visual C++ 2015-2022 Redistributable(x64)
    • Intel Visual Fortran Redistributables, 2022
    • Microsoft MPI Redistributable, 10.0
    "},{"location":"install/windows/#digital-signatures","title":"Digital signatures","text":"

    WELSIM installer and executable files are signed with digital certificates. The signer name is: WelSimulation LLC.

    "},{"location":"install/windows/#platform-details","title":"Platform details","text":""},{"location":"install/windows/#compiler-requirements-for-windows-systems","title":"Compiler requirements for Windows systems","text":"

    The compiler requirements for Windows systems are listed in Table\u00a0[tab:ch12_win_compiler_req].

    No. WELSIM Compilers 1 Visual Studio 2022 (including the Microsoft C++ compiler) 2 Intel Visual Fortran 2022 compiler

    Note

    Those compilers are not required if you only use WELSIM application.

    "},{"location":"install/windows/#installing-the-welsim-for-a-windows-system","title":"Installing the WELSIM for a Windows system","text":"

    This section includes the steps required for installing WELSIM and licensing configuration on one Windows machine.

    "},{"location":"install/windows/#downloading-the-installation-file","title":"Downloading the installation file","text":"

    To download the installation files from our website, you will need to agree the US Export Restrictions.

    You only need to download one installer file.

    1. From the website, select the Windows version of WELSIM and click the download button on the webpage.
    2. The downloaded installer file has the name: WelSim28Setup.exe
    3. Begin the product installation as described in the next section.
    "},{"location":"install/windows/#installing-welsim","title":"Installing WELSIM","text":"
    1. Navigate to the directory where you placed the installer file. Run the installer by double click.
    2. The WELSIM installation Launcher appears as shown in Figure\u00a0below.
    3. Click the Next button to start the installation on your computer.
    4. The license agreement appears as shown in Figure\u00a0below. Read the agreement, and if you agree to the terms and conditions, select I Agree. Click Next.
    5. The installation folder setting appears as shown in the figure below. You can input your designated directory or keep the default one. After specifying the directory, Click Next.
    6. The prerequesites libraries installation appears as shown in the figure below. Your system requires these libraries to run the WELSIM application. Click Yes.
    7. The installation completed as shown in the figure\u00a0below. Click Finish.

    Note

    WELSIM relies on the latest version of Microsoft MPI. If the Microsoft MPI redistributable installation conflicts with your pre-existing MS MPI libraries, please uninstall the pre-existing MPI from the Control Panel and reinstall the WELSIM.

    "},{"location":"install/windows/#activating-the-welsim","title":"Activating the WELSIM","text":"

    In this section, assuming you already received the license file wsimkey.dat. To activate WELSIM on your computer with client licensing, you can follow the steps below:

    1. Start WELSIM application on your computer.
    2. Click the License Manager from the menu: HELP -> License Manager
    3. WELSIM License Manager user interface appears. There are five buttons on the interface:
      1. Generate Computer ID: generate user's unique ID for license key generation.
      2. Evaluate: click to continue using the trial version.
      3. Exit: quit the License Manager with no software activation.
      4. Buy Now: open your default internet browser and direct your visit to the pricing page.
      5. Enter Code: If you have received the license key file, click this button to import the license file.
    4. If the user are running software at the first time, generate the Computer ID by clicking the button of \u201cGenerate Computer ID\u201d, and send this string (format of xxxx-xxxx-xxxx-xxxx) to info@welsim.com. The user will receive the license key within 24 hours.
    5. After receiving the license file (wsimkey.dat), click \u201cEnter Code\u201d button to import the license. In the License Code interface, the user can paste the license content from clipboard, or directly import the license from file.
    6. Click OK button to activate the WELSIM. A successfully activated software is shown in figure\u00a0below.

    "},{"location":"install/windows/#starting-the-software","title":"Starting the software","text":"

    After installation, starting the WELSIM software is straightforward. Here are three methods:

    1. Double click the shortcut of WELSIM, if you toggle the option \u201cCreate Desktop Shortcut\u201d during the last step of installation.
    2. Click the shortcut of WELSIM from the Start menu. From Start -> WELSIM ->WELSIM v1.8.
    3. Browse the directory of installation, double click the runWelSim.exe file.

    As shown in the figure\u00a0below, WESLIM application is started successfully on the Windows operation system.

    "},{"location":"install/windows/#uninstalling-the-software","title":"Uninstalling the software","text":"

    Uninstalling the software is straightforward. The user can run the unint.exe from one of methods below:

    1. Click the shortcut of WELSIM uninstaller from the Start menu. From Start -> WELSIM ->Uninstall.
    2. Browse the directory of installation, double click the uninst.exe file.
    3. Unstall the WELSIM application from the system Control Panel.
    "},{"location":"legal/","title":"Legal notice","text":""},{"location":"legal/#copyright-and-trademark-information","title":"Copyright and trademark information","text":"

    \u00a92023 WelSimulation LLC. All rights reserved. Unauthorized use, distribution or duplication is prohibited.

    WELSIM and any and all WelSimulation LLC brand, product, service and feature names, logos and slogans are registered trademarks or trademarks of WelSimulation LLC. or its subsidiaries in the United States or other countries. All other brand, product, service and feature names or trademarks are the property of their respective owners.

    "},{"location":"legal/#disclaimer-notice","title":"Disclaimer notice","text":"

    THIS WELSIM SOFTWARE PRODUCT AND PROGRAM DOCUMENTATION INCLUDE TRADE SECRETS AND ARE CONFIDENTIAL AND PROPRIETARY PRODUCTS OF WELSIMULATION LLC, ITS SUBSIDIARIES, OR LICENSORS. The software products and documentation are furnished by WelSimulation LLC, its subsidiaries, or affiliates 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.

    "},{"location":"legal/#us-government-rights","title":"U.S. government rights","text":"

    For U.S. Government users, except as specifically granted by the WelSimulation LLC software license agreement, the use, duplication, or disclosure by the United States Government is subject to restrictions stated in the WelSimulation LLC software license agreement.

    "},{"location":"legal/#third-party-software","title":"Third-party software","text":"

    This product may contain the following licensed software which requires reproduction of the following notices.

    • ABAQUS is a registered trademark of ABAQUS, Inc

    • Copyright 1984-1989, 1994 Adobe Systems Incorporated. Copyright 1988, 1994 Digital Equipment Corporation. Permission to use,copy,modify,distribute and sell this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notices appear in all copies and that both those copyright notices and this permission notice appear in supporting documentation, and that the names of Adobe Systems and Digital Equipment Corporation not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Adobe Systems & Digital Equipment Corporation make no representations about the suitability of this software for any purpose. It is provided \"as is\" without express or implied warranty.

    • Adobe and Acrobat are registered trademarks of Adobe Systems Incorporated

    • Apache commons CLI, Apache Commons Compress, Apache Commons DBCP, and Apache Commons Pool ([http://commons.apache.org||http://commons.apache.org]) - Copyright 2001-2008 The Apache Software Foundation Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. See Apache License for a complete listing of the Apache License.

    • Boost C++ Libraries [http://www.boost.org] is licensed under the Boost Software License V1 [http://www.boost.org/users/license.html]

    • Coin3D is a high-level, retained-mode toolkit for effective 3D graphics development. It is API compatible with Open Inventor 2.1. Coin3D is Free Software, published under the BSD 3-clause license.

    • cpp (GCC): Copyright (C) 2003 Free Software Foundation, Inc.

    • CrashRpt is a light-weight open-source error reporting library for C++ applications running in Windows.

    • DXF is a trademark of Autodesk, Inc

    • Eigen is a high-level C++ library of template headers for linear algebra, matrix and vector operations, geometrical transformations, numerical solvers and related algorithms. Eigen is published under MPL2 license.

    • Fmt is an open-source formatting library for C++. It can be used as a safe and fast alternative to (s)printf and IOStreams.

    • FreeType2: Portions of this software are copyright 1996-2002, 2006 The FreeType Project ([http://www.freetype.org]). All rights reserved.

    • FrontISTR is an open-source large-scale parallel finite element method program for nonlinear structural analysis. It is published under MIT license.

    • GNU Fortran and Standard C++ library http://gcc.gnu.org is licensed under The GNU General Public License (GPL) Version 2 June 1991 Copyright \u00a9 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGR4AM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. See GNU GENERAL PUBLIC LICENSE (GPL) for a complete listing of the GNU GENERAL PUBLIC LICENSE.

    • gzip http://www.gzip.org is licensed under The GNU General Public License (GPL) Version 2 June 1991 Copyright \u00a9 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGR4AM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. See GNU GENERAL PUBLIC LICENSE (GPL) for a complete listing of the GNU GENERAL PUBLIC LICENSE.

    • Gzstream is a small C++ library, basically just a wrapper, that provides the functionality of the zlib C-library in a C++ iostream. It is freely available under the LGPL license.

    • HDF5 (Hierarchical Data Format 5) Software Library and Utilities Copyright 2006-2008 by The HDF Group (THG). NCSA HDF5 (Hierarchical Data Format 5) Software Library and Utilities Copyright 1998-2006 by the Board of Trustees of the University of Illinois. All rights reserved. Contributors: National Center for Supercomputing Applications (NCSA) at the University of Illinois, Fortner Software, Unidata Program Center (netCDF), The Independent JPEG Group (JPEG), Jean-loup Gailly and Mark Adler (gzip), and Digital Equipment Corporation (DEC). Redistribution and use in source and binary forms, with or without modification, are permitted for any purpose (including commercial purposes) provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the following disclaimer in the documentation and/or materials provided with the distribution. 3. In addition, redistributions of modified forms of the source or binary code must carry prominent notices stating that the original code was changed and the date of the change. 4. All publications or advertising materials mentioning features or use of this software are asked, but not required, to acknowledge that it was developed by The HDF Group and by the National Center for Supercomputing Applications at the University of Illinois at Urbana-Champaign and credit the contributors. 5. Neither the name of The HDF Group, the name of the University, nor the name of any Contributor may be used to endorse or promote products derived from this software without specific prior written permission from THG, the University, or the Contributor, respectively. DISCLAIMER: THIS SOFTWARE IS PROVIDED BY THE HDF GROUP (THG) AND THE CONTRIBUTORS \"AS IS\" WITH NO WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED. In no event shall THG or the Contributors be liable for any damages suffered by the users arising out of the use of this software, even if advised of the possibility of such damage. Portions of HDF5 were developed with support from the University of California, Lawrence Livermore National Laboratory (UC LLNL). The following statement applies to those portions of the product and must be retained in any redistribution of source code, binaries, documentation, and/or accompanying materials: This work was partially produced at the University of California, Lawrence Livermore National Laboratory (UC LLNL) under contract no. W-7405-ENG-48 (Contract 48) between the U.S. Department of Energy (DOE) and The Regents of the University of California (University) for the operation of UC LLNL. DISCLAIMER: This work was prepared as an account of work sponsored by an agency of the United States Government. Neither the United States Government nor the University of California nor any of their employees, makes any warranty, express or implied, or assumes any liability or responsibility for the accuracy, completeness, or usefulness of any information, apparatus, product, or process disclosed, or represents that its use would not infringe privately- owned rights. Reference herein to any specific commercial products, process, or service by trade name, trademark, manufacturer, or otherwise, does not necessarily constitute or imply its endorsement, recommendation, or favoring by the United States Government or the University of California. The views and opinions of authors expressed herein do not necessarily state or reflect those of the United States Government or the University of California, and shall not be used for advertising or product endorsement purposes.

    • IGES is a trademark of IGES Data Analysis, Inc

    • Intel is a registered trademark of Intel Corporation

    • JsonCpp is a C++ library that allows manipulating JSON values. It is freely availble under MIT license.

    • Mesa Library license requirements: Copyright (C) 1999-2005 Brian Paul All Rights Reserved. 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 BRIAN PAUL 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. Mesa Component Licenses also apply. Reference http://mesa3d.sourceforge.net/.

    • METIS 4.0.1 Copyright 1997, Regents of the University of Minnesota. METIS was written by George Karypis (karypis@cs.umn.edu). Our policy regarding the distribution of METIS with third-party applications is as follows: Non-commerical applications METIS can be freely distributed provided that proper references are included and the original documentation and copyright notice is included. Commercial applications METIS cab be freekt distributed provided that proper references are included, the original documentation and copyright notice is included and METIS is a relatively small portion of the overall application. In either case, permission to distribute/include METIS with your application must be obtained by sending email to metis@cs.umn.edu.

    • Microsoft, Windows, Windows 2000 and Windows XP are registered trademarks of Microsoft Corporation.

    • MPICH2 Copyright Notice + 2002 University of Chicago Permission is hereby granted to use, reproduce, prepare derivative works, and to redistribute to others. This software was authored by: Argonne National Laboratory Group W. Gropp: (630) 252-4318; FAX: (630) 252-5986; e-mail: gropp@mcs.anl.gov E. Lusk: (630) 252-7852; FAX: (630) 252-5986; e-mail: lusk@mcs.anl.gov Mathematics and Computer Science Division Argonne National Laboratory, Argonne IL 60439

    • MUMPS is a software application for the solution of large sparse systems of linear algebraic equations on distributed memory parallel computers. It is freely available under CeCILL-C license.

    • NASTRAN is a registered trademark of the National Aeronautics and Space Administration.

    • NetCDF is a set of software libraries and self-describing, machine-independent data formats that support the creation, access, and sharing of array-oriented scientific data.

    • NetGen is an automatic 3d tetrahedral mesh generator under GNU LGPL.

    • Open CASCADE is open source software for 3D surface and solid modeling, visualization, data exchange, and rapid application development. It is published under LGPL.

    • Open License Manager is a license manager written in C/C++ for Windows and Linux environments. It is pulished under BSD3 license.

    • OpenSSL OpenSSL is a robust, commercial-grade, and full-featured toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols. OpenSSL is licensed under an Apache-style license.

    • PETSc is a suite of data structures and routines for the scalable (parallel) solution of scientific applications modeled by partial differential equations. It is published under 2-clause BSD license.

    • Pro/ENGINEER is a registered trademark of Parametric Technology Corporation.

    • Pthread a multi-thread library. It is freely available under MIT license.

    • QT is a multiplatform C++ GUI toolkit. It is freely available under LGPL. See [http://www.qt.io] for more information.

    • Visualization Toolkit (VTK) is an open-source, freely available software system for 3D computer graphics, image processing and visualization. It is published under 3-Clause BSD license.

    • Xerces-C++ is a validating XML parser written in a portable subset of C++. Xerces-C++ is made available under the Apache Software License, Version 2.0.

    • ZLIB 1.1.3 Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler.

    "},{"location":"legal/LGPL/","title":"GNU Lesser Genreal Public License (LGPL)","text":""},{"location":"legal/LGPL/#version-3-gnu-lesser-general-public-license","title":"Version 3 GNU Lesser General Public License","text":"

    Version 3, 29 June 2007

    Copyright \u00a9 2007 Free Software Foundation, Inc. http://fsf.org/

    Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

    This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below.

    1. Additional Definitions. As used herein, \u201cthis License\u201d refers to version 3 of the GNU Lesser General Public License, and the \u201cGNU GPL\u201d refers to version 3 of the GNU General Public License.

      \u201cThe Library\u201d refers to a covered work governed by this License, other than an Application or a Combined Work as defined below.

      An \u201cApplication\u201d is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library.

      A \u201cCombined Work\u201d is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the \u201cLinked Version\u201d.

      The \u201cMinimal Corresponding Source\u201d for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version.

      The \u201cCorresponding Application Code\u201d for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work.

    2. Exception to Section 3 of the GNU GPL. You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL.

    3. Conveying Modified Versions.

      If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version:

      1. under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or

      2. under the GNU GPL, with none of the additional permissions of this License applicable to that copy.

    4. Object Code Incorporating Material from Library Header Files. The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following:

      1. Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License.

      2. Accompany the object code with a copy of the GNU GPL and this license document.

    5. Combined Works. You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following:

      1. Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License.
      2. Accompany the Combined Work with a copy of the GNU GPL and this license document.
      3. For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document.
      4. Do one of the following:

        1. Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.

        2. Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version.

      5. Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.)

    6. Combined Libraries. You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following:

      1. Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License.
      2. Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work.
    7. Revised Versions of the GNU Lesser General Public License. The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.

      Each version is given a distinguishing version number. If the Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License \u201cor any later version\u201d applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation.

      If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library.

    "},{"location":"legal/LGPL/#version-21","title":"Version 2.1","text":"

    GNU LESSER GENERAL PUBLIC LICENSE (LGPL) Version 2.1, February 1999 Copyright \u00a9 1991, 1999, Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

    WelSimulation LLC will provide you with a complete machine-readable copy of the source code, valid for three years. The source code can be obtained by contacting WelSimulation LLC at info@welsim.com.

    Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. NO WARRANTY BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

    "},{"location":"legal/LGPL/#gnu-lesser-general-public-license","title":"GNU Lesser General Public License","text":"

    Version 2.1

    Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

    Preamble

    The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users.

    This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below.

    When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things.

    To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it.

    For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights.

    We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library.

    To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others.

    Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license.

    Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs.

    When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library.

    We call this license the \"Lesser\" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances.

    For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License.

    In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system.

    Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library.

    The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a \"work based on the library\" and a \"work that uses the library\". The former contains code derived from the library, whereas the latter must be combined with the library in order to run.

    GNU LESSER GENERAL PUBLIC LICENSE

    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

    1. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called \"this License\"). Each licensee is addressed as \"you\".

    A \"library\" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables.

    The \"Library\", below, refers to any such software library or work which has been distributed under these terms. A \"work based on the Library\" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term \"modification\".)

    \"Source code\" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library.

    Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does.

    1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library.

    You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.

    1. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:

      1. The modified work must itself be a software library.
      2. You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change.
      3. You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License.\\
      4. If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful.

    (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.)

    These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.

    Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library.

    In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.

    1. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices.

    Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy.\\noindent

    This option is useful when you wish to copy part of the code of the Library into a program that is not a library.

    1. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange.

    If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code.

    1. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a \"work that uses the Library\". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License.

    However, linking a \"work that uses the Library\" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a \"work that uses the library\". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables.

    When a \"work that uses the Library\" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law.

    If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.)

    Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself.

    1. As an exception to the Sections above, you may also combine or link a \"work that uses the Library\" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications.

      You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things:

      1. Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable \"work that uses the Library\", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.)

      2. Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with.

      3. Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution.

      4. If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place.

      5. Verify that the user has already received a copy of these materials or that you have already sent this user a copy.

      For an executable, the required form of the \"work that uses the Library\" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.

      It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute.

    2. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things:

      1. Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above.

      2. Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work.

    3. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

    4. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it.

    5. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License.

    6. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library.

    If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances.

    It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.

    This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.

    1. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.

    2. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.

    Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and \"any later version\", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation.

    1. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.

    2. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

    3. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

    END OF TERMS AND CONDITIONS

    "},{"location":"legal/contact/","title":"WelSimulation LLC contact information","text":"

    WelSimulation LLC

    1840 Mayview Rd. Suite 208

    Bridgeville, PA 15017

    USA

    Email: info@welsim.com

    Website: https://welsim.com

    Phone: +1 724-914-8722

    "},{"location":"legal/trademarks/","title":"WELSIM Trademarks List","text":"
    • WELSIM\u00ae
    "},{"location":"mateditor/mat_core_loss/","title":"Core loss model","text":"

    The core loss combines eddy current losses and hysteresis losses for a transient solution type. It is a post-processing calculation, based on already calculated transient magnetic field quantities. It is applicable for the evaluation of core losses in steel laminations (frequently used in applications such as electric machines, transformers) or in power ferrites.

    Hysteresis loss is associated with loss density fields in 2D and 3D eddy current solutions only. Hysteresis loss is short for magnetic hysteresis loss and represents power loss in some magnetic materials (electric steels or ferrites) in alternating (sinusoidal) magnetic fields. This loss is due to a phenomenon called \"magnetic viscosity\" which causes the B and H fields to have a phase shift between them. In the B-H plane, for linear materials, the relationship between these two fields describes an ellipse. The hysteresis loss is proportional to the area of the ellipse.

    "},{"location":"mateditor/mat_core_loss/#core-loss-models-for-an-electromagnetic-material","title":"Core loss models for an electromagnetic material","text":"

    MatEditor provides two core loss models: electrical steel and power ferrite. The coefficients are given in the table below.

    Type Associated properties Electrical Steel Hystersis coefficient \\(K_h\\), Classcial eddy coefficient \\(K_c\\), Excess coefficient \\(K_e\\). Power Ferrite Steinmetz coefficients \\(C_m\\), \\(X\\), and \\(Y\\).

    Note

    In Transient Solver, X must be less than Y.

    "},{"location":"mateditor/mat_core_loss/#calculating-properties-for-core-loss-b-p-curve","title":"Calculating properties for core loss (B-P curve)","text":"

    To be able to extract parameters from the loss characteristics (B-P Curve), you first set the Core Loss Model of the material to Electrical Steel or Power Ferrite as a material property in the Property View.

    Additional parameters appear in the following table Core Loss Model (\\(K_h\\), \\(K_c\\), and \\(K_e\\) for electrical steel, and \\(C_{m}\\), \\(X\\), and \\(Y\\) for power ferrite). If the P-B test data is already presented in the current material, you can add curve fitting property from the RMB context menu. This allows the electrical steel coefficients \\(K_h\\), \\(K_c\\), and \\(K_e\\), or the power ferrite coefficients \\(C_m\\), \\(X\\), and \\(Y\\) to be derived from a manufacturer-provided core loss curve.

    Node

    The accuracy in inputting the data for B-P Curve for the electrical steel material has a significant effect on the correctness of the analyses to the electromagnetic devices. You should input the data for B-P Curve according to accurate data provided by material manufacturers. Typically core material suppliers provide the average loss over a cycle for a peak B, of sinusoidal nature. Therefore for BP curve input in WelSim, B (Tesla) should be peak and P should be average.

    As the input data (value or unit) changes, the following parameters are not automatically updated unless you resolve the curve fitting:

    • \\(K_h\\) - Hysteresis Coefficient
    • \\(K_c\\) - Classical Eddy Coefficient
    • \\(K_e\\) - Excess Coefficient
    • \\(C_m\\) - Steinmetz Coefficient
    • \\(X\\) - Steinmetz Coefficient
    • \\(Y\\) - Steinmetz Coefficient
    "},{"location":"mateditor/mat_core_loss/#calculate-core-loss-coefficients-from-loss-curves","title":"Calculate core loss coefficients from loss curves","text":"

    This section introduces how to calculate core loss coefficients for electrical steel and power ferrite materials according to the given P-B test data.

    1. Add P-B Test Data material property, and edit the frequency-based data. You also can import the data from a plain text or Excel file. Check the data curves by clicking the row of frequency. Click the header of the frequency column displays all curves in the chart.

    2. Add Core Loss Model material property, and set the Core Loss Model Type of the property to Electrical Steel or Power Ferrite.

    3. Add Curve Fitting sub-property from the RMB context menu.

    4. Solve the curve fit from the RMB context menu.

    5. If the solve succeeds. The calculated parameters will be shown in the table.

    6. Copy the solved values to the properties from RMB context menu. You also can review the calculated curves in the chart.

    7. Display curves in the logarithmic axis (optional).

    "},{"location":"mateditor/mat_core_loss/#computation-of-electrical-steel-core-loss-from-loss-curves","title":"Computation of electrical steel core loss from loss curves","text":"

    The iron-core loss without DC flux bias is expressed as the following:

    \\[ p_v=P_h+P_c+P_e=K_{f} f (B_m)^2 + K_c (fB_m)^2 + K_e(fB_m)^{1.5} = K_1B_m^2+K_2B_m^{1.5} \\]

    where

    • \\(B_m\\) is the amplitude of the AC flux component,
    • \\(f\\) is the frequency,
    • \\(K_h\\) is the hysteresis core loss coefficient,
    • \\(K_c\\) is the eddy-current core loss coefficient, and
    • \\(K_e\\) is the excess core loss coefficient,
    • \\(K_1=K_ff+K_cf^2\\),
    • \\(K_2=K_ef^{1.5}\\).

    Minimize the quadratic form to obtain \\(K_h\\) , \\(K_c\\), and \\(K_e\\) directly.

    \\[ err(K_h,K_c,K_e)=\\sum_{i=1}^m \\sum_{j=1}^{n_i} \\left[p_{ij}-\\left(K_{h}f_{i}B_{mij}^2 +K_{c}\\left(fB_{mij}\\right)^{2}+ K_{e}\\left(f_iB_{mij}\\right)^{1.5} \\right) \\right]^2=min \\]

    where \\(m\\) is the number of loss curves, \\(n_i\\) is the number of points of the \\(i\\)-th loss curve, and \\(p_{ij} = f(f_i , B_{mij})\\) is two dimensional lookup table for loss curves.

    Note

    Since the manufacturer-provided loss curve is obtained under sinusoidal flux conditions at a given frequency, these coefficients can be derived in the frequency domain.

    "},{"location":"mateditor/mat_core_loss/#computation-of-power-ferrite-core-loss-from-loss-curves","title":"Computation of power ferrite core loss from loss curves","text":"

    The principles of the computation algorithm are summarized as follows. The iron-core loss is expressed as the Steinmetz approximation

    \\[ p_v=C_m f^x B_m^y \\]

    where \\(p_v\\) is the average power density, \\(f\\) is the excitation frequency, and \\(B_m\\) is the peak flux density, is commonly used to characterize core loss data for sinusoidal excitation, but can also be applied to square-wave data.

    To linearize the equation for curve fitting, we used base-10 logarithms. The equation above can be rewritten to

    \\[ log(p_v)=c + x\\cdot log(f) + y \\cdot(B_m) \\]

    where \\(c=log(C_m)\\).

    Minimize the quadratic form to obtain \\(C\\), \\(x\\) and \\(y\\).

    \\[ err(C_m,x,y)=\\sum_{i=1}^{m}\\sum_{j=1}^{n_i}\\left[log(p_{vij})-\\left(c+xlog(f_i)+ylog(B_{mij}) \\right) \\right]^2=min \\]

    where \\(m\\) is the number of loss curves, \\(n_i\\) is the number of points of the \\(i\\)-th loss curve, and \\(P_{vij} = f(f_i , B_{mij})\\) is two dimensional lookup table for multi-frequency loss curves. Then \\(C_m\\) is calculated from the equation \\(c=log(C_m)\\).

    "},{"location":"mateditor/mat_file_format/","title":"Material library file format","text":"

    Material library data follows the MatML 3.1 Schema for saving material data to external libraries on disk. More information about MatML can be found at http://matml.org. For an example of the format see the Export individual data item in the Perform Basic Tasks in Material section and then open the file with a text/xml editor.

    "},{"location":"mateditor/mat_gui/","title":"Graphical user interface","text":"

    The MatEditor workspace is an independent interface and display relavant items as you configured.

    "},{"location":"mateditor/mat_gui/#layout-reference","title":"Layout reference","text":"

    Presented below are two layout configurations for the MatEditor view. The first configuration is displayed by clicking on \"Library\" tab in toolbox. The second configure is shown by clicking on \"Build\" tab in toolbox. You can switch this two layout mode by clicking the tabs.

    Legend Name Description A Menu Bar Operations for MatEditor. B Toolbar Selected operations that often used for MatEditor. C Material Outline Pane Material items that are created in MatEditor. D Library Outline Pane Displays the available prebuild material sources. E Property Outline Pane Displays the available material property sources that can be included into a material. F Properties Pane Displays the properties of the current material. G Table Pane Shows the tabular data for the selected item in the Properties pane. H Chart Pane Shows the chart of the item selected in the Properties pane."},{"location":"mateditor/mat_gui/#menu-bar","title":"Menu bar","text":"

    The following items in the menu bar are provided by MatEditor:

    "},{"location":"mateditor/mat_gui/#file","title":"File","text":"
    • New: Create a new material object in the tree window.
    • Open: Retrieve material data from an external XML file. This command remove all existing material data in the system.
    • Save: Save current material data into an external XML file.
    • Save as: Save current material data into an designated folder and in a specific XML file name.
    • Export material data: Output selected material data into an exteral XML file.
    • Import material data: Input material data from an external XML file. The existing material data will not be removed.
    • Exit: Close the software.
    "},{"location":"mateditor/mat_gui/#edit","title":"Edit","text":"
    • Activate: Set the selected material object as current.
    • Duplicate: Create a new material object and copy all propeties from the selected to the newly created material.
    • Delete: Remove the selected material object(s).
    • Delete all: Remove all material objects.
    "},{"location":"mateditor/mat_gui/#units","title":"Units","text":"

    This menu provides all avilable unit systems and units. Once one unit (system) is chosen, the default unit is determined. The units for the newly created material data will be automatically set to the chosen unit(system).

    "},{"location":"mateditor/mat_gui/#help","title":"Help","text":"
    • Help: Direct the user to the online user manual.
    • About: Display the software and hardware information dialog.
    "},{"location":"mateditor/mat_gui/#toolbar","title":"Toolbar","text":"

    The following item in the toolbar is provided by MatEditor:

    Icon Name Description New Create a new material object in the tree window. Open Retrieve material data from an external XML file. This command remove all existing material data in the system. Save Save current material data into an external XML file. Help Direct the user to the online user manual. About Display the software and hardware information dialog."},{"location":"mateditor/mat_gui/#toolbox","title":"Toolbox","text":"

    MatEditor Toolbox contains two tabs: Library and Build. These two tabs function as:

    • Library: contains default material data that allows user to directly use. Clicking this tab displays the Library Outline Pane.
    • Build: contains all supported material properties that enable user to compose material data. Clicking this tab displays the Property Outline Pane.
    "},{"location":"mateditor/mat_gui/#material-outline-pane","title":"Material outline pane","text":"

    The Outline pane shows an outline of the contents of the created material data source. You can perform the following actions in this pane:

    • Create a new material
    • Delete a material
    • Rename a material
    • Edit a material
    • Duplicate a material
    "},{"location":"mateditor/mat_gui/#items-status","title":"Items status","text":"

    The itmes column shows the name of the items contained in the data source. When the name of material object is in bold, the material is activated for editing.

    "},{"location":"mateditor/mat_gui/#library-outline-pane","title":"Library outline pane","text":"

    The Library Outline pane shows an outline of availble predefined materials. These materials are grouped into several categories.

    "},{"location":"mateditor/mat_gui/#property-outline-pane","title":"Property outline pane","text":"

    The Property Outline pane shows an outline of availble material properties. These material properties are grouped into several categories.

    "},{"location":"mateditor/mat_gui/#properties-pane","title":"Properties pane","text":"

    The Properties pane shows the properties for the item selected in the Property Outline pane. You can perform the following actions in this pane:

    • Add additional properties, tabular data (from the Property Outline and Table panes)
    • Delete a property
    • Modify constant data
    • Suppress a property
    "},{"location":"mateditor/mat_gui/#property-column","title":"Property column","text":"

    The property column lists the properties for the item selected in the Property Outline pane. Clicking a property will change the contents of the Table pane and Chart pane.

    "},{"location":"mateditor/mat_gui/#material-property","title":"Material property","text":"

    The status of the material property is indicated as follows:

    • : The material property is described in a single property data (see the Material Definitions topic).
    "},{"location":"mateditor/mat_gui/#value-column","title":"Value column","text":"

    The value column is used to change data for a property or indicates that the data for the property is tabular ().

    "},{"location":"mateditor/mat_gui/#unit-column","title":"Unit column","text":"

    The unit column displays the unit of the data shown in the value column . If the column is editable (see Units Menu), changing the unit will convert the value into the selected unit (there is no net change in the data, so the solution is still valid).

    "},{"location":"mateditor/mat_gui/#suppression-column","title":"Suppression column","text":"

    The suppression column shows the suppression status of the item and may also be used to switch the status (see Suppression).

    "},{"location":"mateditor/mat_gui/#table-pane","title":"Table pane","text":"

    The Table pane shows the tabular data for the item selected in the Properties pane. If there are independent variables (for instance, Temperature) for the selected item and the item is constant, you may change it to a table by entering a value into the independent variables data cell. If a row is shown with an index of *, you may add additional rows of data.

    Note

    You also can change the unit by clicking the header of table

    "},{"location":"mateditor/mat_gui/#chart-pane","title":"Chart pane","text":"

    The Chart pane shows the chart of the selected item in the Properties pane. The chart data is idenital to the table data.

    "},{"location":"mateditor/mat_hyperelasticity_curvefit/","title":"Curve Fitting","text":""},{"location":"mateditor/mat_hyperelasticity_curvefit/#calculate-material-constants-from-test-data","title":"Calculate material constants from test data","text":"

    This section introduces how to calculate material coefficients for the selected hyperelastic models according to the given uniaxial, biaxial, shear, and volumetric test data. Enginering strain and stress pair is used for input data.

    1. Add Uniaxial Test Data, Biaxial Test Data, or Shear Test Data material property, and edit the strain-stress data. You also can import the data from a plain text or Excel file. Set the temperature value if it is available. Check the data points by clicking the row of temperature.

    2. Add one of hyperelastic material properties from the toolbox, the supported hyperelastic models include Neo-Hookean, Mooney-Rivlin, Arruda-Boyce, Blatz-Ko, Gent, Ogden, Polynomial, and Yeoh. An example of Mooney-Rivlin 9 is given here.

    3. Add Curve Fitting sub-property from the RMB context menu.

    4. Solve the curve fit from the RMB context menu.

    5. If the solve succeeds. The calculated parameters will be shown in the table.

    6. Copy the solved values to the properties from RMB context menu. You also can review the calculated curves in the chart.

    Note

    1. The test data should cover the entire strain range in the following simulation.
    2. It is recommended to input all uniaxial, biaxial, and shear test data if those data are available from the experiments.
    "},{"location":"mateditor/mat_io/","title":"Mutually exclusive properties 1","text":"

    Some properties are mutually exclusive of each other and require that only one property in the mutually exclusive set be unsuppressed. The addition or removing of the suppression for one of these properties automatically suppresses the other mutually exclusive properties.

    For example, defining Isotropic Elasticity and Orthotropic Elasticity for the same material represents redundant elasticity behavior. Only one behavior can be active for the material. When such a conflict occurs, the property defined last is used and the previously defined, conflicting property is automatically suppressed.

    The properties that are mutually exclusive are grouped in the following table.

    Group Material Property Elastic properties Isotropic Elasticity, Orthotropic Elasticity, Anisotropic Elasticity, Mooney-Rivlin, Neo-Hookean, Polynomial, Yeoh, Ogden, Arruda-Boyce, Gent, Blatz-Ko, Ogden Foam, Extended Tube, Mullins Effect Plastic properties Bilinear Isotropic Hardening, Multilinear Isotropic Hardening, Bilinear Kinematic Hardening, Multilinear Kinematic Hardening Thermal conductivity properties Thermal Conductivity Isotropic, Thermal Conductivity Orthotropic Resistivity properties Isotropic Resistivity, Orthotropic Resistivity Electric permittivity properties Isotropic Relative Permittivity, Orthotropic Relative Permittivity Dielectric loss properties Isotropic Dielectric Loss Tangent, Orthotropic Dielectric Loss Tangent Magnetic permeability properties Isotropic Relative Permeability, Orthotropic Relative Permeability Magnetic loss properties Isotropic Relative Imaginary Permeability, Isotropic Magnetic Loss Tangent, Orthotropic Magnetic Loss Tangent"},{"location":"mateditor/mat_io_openradioss/","title":"OpenRadioss format","text":"

    The format of exported material scripts is based on the OpenRadioss version 2022, more details please refer to the OpenRadioss user reference manual.

    The import of OpenRadioss scripts is not supported yet in MatEditor/WELSIM.

    "},{"location":"mateditor/mat_io_openradioss/#supported-openradioss-units","title":"Supported OpenRadioss units","text":"

    At present, MatEditor supports eight types of unit systems commonly used in engineering simulation, which are as follows.

    • Metric kg-m-s
    • Metric g-cm-s
    • Metrickg-mm-s
    • Metric tonne-mm-s
    • Metric decatonne-mm-s
    • Metric kg-um-s
    • US Customary lbm-ft-s
    • US Customary lbm-in-s
    • Metric g-cm-us
    "},{"location":"mateditor/mat_io_openradioss/#supported-openradioss-materials","title":"Supported OpenRadioss materials","text":""},{"location":"mateditor/mat_io_openradioss/#basic","title":"Basic","text":"
    • Density
    • Linear Elasticity
    "},{"location":"mateditor/mat_io_openradioss/#hyperelasticity-and-viscoelasticity","title":"Hyperelasticity and Viscoelasticity","text":"
    • LAW34 \u2014 Boltzmann
    • LAW35 \u2014 Maxwell-Kelvin-Voigt
    • LAW40 \u2014 Maxwell-Kelvin
    • LAW42 \u2014 Odgen \u00bd/3
    • LAW92 \u2014 Arruda-Boyce
    • LAW94 \u2014 Yeoh \u00bd/3
    • LAW100 \u2014 Polynomial, Neo-Hookean, Mooney-Rivlin2
    "},{"location":"mateditor/mat_io_openradioss/#plasticity","title":"Plasticity","text":"
    • LAW2 \u2014 Johnson-Cook
    • PLAS_ZERIL \u2014 Zerilli-Armstrng
    • LAW32 \u2014 Hill
    • LAW36 \u2014 Rate-Dependent Multilinear Hardening
    • LAW44 \u2014 Cowper-Symonds
    • LAW93 \u2014 Orthotropic Hill
    • LAW48 \u2014 Zhao
    • LAW49 \u2014 Steinberg-Guinan
    • LAW52 \u2014 Gurson
    • LAW57 \u2014 Barlet3
    • LAW78 \u2014 Yoshida-Uemori
    • LAW79 \u2014 Johnson-Holmquist
    • LAW84 \u2014 Swift-Voce
    • LAW103 \u2014 Hensel-Spittel
    • LAW110 \u2014 Vegter
    "},{"location":"mateditor/mat_io_openradioss/#failure-models","title":"Failure Models","text":"
    • ALTER \u2014 Glass Failure
    • BIQUD \u2014 BiQuadratic
    • COCKCROFT \u2014 Cockcroft
    • CONNECT-Connect
    • EMC \u2014 ExtendedMohr-Coulomb
    • ENERGY-Energy
    • FABRIC \u2014 Fabric
    • FLD \u2014 Forming Limit Diagram
    • GURSON \u2014 Gurson
    • HASHIN \u2014 Hashin
    • HC_DSSE \u2014 Ladeveze Delamination
    • JOHNSON-Johnson-Cook
    • MULLINS_OR \u2014 Mullins Effect
    • NXT \u2014 NXT
    • ORTHBIQUAD \u2014 Orthotropic Biquad
    • ORTHSTRAIN \u2014 Orthotropic Strain
    • PUCK \u2014 Puck
    • TBUTCHER \u2014 Tuler-Butcher
    • TENSSTRAIN \u2014 Tensile Strain
    • WILKINS \u2014 Wilkins
    • WIERZBICKI \u2014 Wierzbicki
    "},{"location":"mateditor/mat_io_openradioss/#equation-of-state-eos","title":"Equation of State (EOS)","text":"
    • Compaction EOS
    • Gruneisen EOS
    • Ideal Gas EOS
    • Linear EOS
    • LSZK EOS
    • Murnaghan EOS
    • NASG EOS
    • Nobel-Abel EOS
    • Osborne EOS
    • Polynomial EOS
    • Puff EOS
    • Stiff-Gas EOS
    "},{"location":"mateditor/mat_io_openradioss/#fluids","title":"Fluids","text":"
    • LAW06 - Kinematic Viscosity
    • ALE - ALE

    More materials will be added upon user request.

    "},{"location":"mateditor/mat_mutually_exclusive/","title":"Mutually exclusive properties","text":"

    Some properties are mutually exclusive of each other and require that only one property in the mutually exclusive set be unsuppressed. The addition or removing of the suppression for one of these properties automatically suppresses the other mutually exclusive properties.

    For example, defining Isotropic Elasticity and Orthotropic Elasticity for the same material represents redundant elasticity behavior. Only one behavior can be active for the material. When such a conflict occurs, the property defined last is used and the previously defined, conflicting property is automatically suppressed.

    The properties that are mutually exclusive are grouped in the following table.

    Group Material Property Elastic properties Isotropic Elasticity, Orthotropic Elasticity, Anisotropic Elasticity, Mooney-Rivlin, Neo-Hookean, Polynomial, Yeoh, Ogden, Arruda-Boyce, Gent, Blatz-Ko, Ogden Foam, Extended Tube, Mullins Effect Plastic properties Bilinear Isotropic Hardening, Multilinear Isotropic Hardening, Bilinear Kinematic Hardening, Multilinear Kinematic Hardening Thermal conductivity properties Thermal Conductivity Isotropic, Thermal Conductivity Orthotropic Resistivity properties Isotropic Resistivity, Orthotropic Resistivity Electric permittivity properties Isotropic Relative Permittivity, Orthotropic Relative Permittivity Dielectric loss properties Isotropic Dielectric Loss Tangent, Orthotropic Dielectric Loss Tangent Magnetic permeability properties Isotropic Relative Permeability, Orthotropic Relative Permeability Magnetic loss properties Isotropic Relative Imaginary Permeability, Isotropic Magnetic Loss Tangent, Orthotropic Magnetic Loss Tangent"},{"location":"mateditor/mat_overview/","title":"Overview","text":"

    Material Module serves as a database for material properties used in analysis projects. The module not only provides a material library but allow you to create a material using the given properties. The properties view of a Material object is the primary user interface designed to let you create, save, and retrieve material models. The well-defined material object can be saved and used in the subsequent projects.

    Note

    The WELSIM Material module and MatEditor share the same features. For the completed and latest content, you can refer to the manual of MatEditor.

    "},{"location":"mateditor/mat_overview/#graphical-user-interface","title":"Graphical user interface","text":"

    The ease-of-use Material Module contains the following graphical user interface components:

    • Toolbox: provdies two options (Library and Build tabs) for you to edit material data.
    • Library outline pane: lists predefined materials for you to quickly add material data.
    • Property outline pane: shows an outline of the contents of the togglable material properties. You can add a property data entry to the material by toggling on the property entry or remove property by toggling off the property entry.
    • Properties view pane: displays all properties that are going to be added to the Material Object. You can tune the property values at this pane.
    • Table pane: allows you to define and review tabular data for material properies.
    • Chart pane: displays the property tabular data in vivid.
    "},{"location":"mateditor/mat_overview/#predefined-materials","title":"Predefined materials","text":"

    WELSIM also provide predefined materials, which covers most of commonly used materials. Users can choose these materials and apply to the successive finite element analysis.

    Category Materials General Materials Structural Steel, Stainless Steel, Aluminum Alloy, Concrete, Copper Alloy, Gray Cast Iron, Titanium Alloy Nonlinear Materials Aluminum Alloy NL, Concrete NL, Copper Alloy NL, Stainless Steel NL, Structural Steel NL, Titanium Alloy NL Hyperelastic Materials Elastomer Mooney-Rivlin, Elastomer Neo-Hookean, Elastomer Ogden, Elastomer Yeoh, Neoprene Rubber Thermal Materials Brass, Bronze, Copper, Diamond, Ferrite, Nodular Cast Iron, Solder, Teflon, Tungsten, Wood Electromagnetic Materials SS416, Supermendure Other Materials Water Liquid, Argon, Ash"},{"location":"mateditor/mat_overview/#material-properties","title":"Material properties","text":"

    The supported material properties are listed in the table below.

    Category Materials Basic Density, Isotropic Thermal Expansion, Isotropic Instantaneous Thermal Expansion, Orthotropic Thermal Expansion, Orthotropic Instantaneous Thermal Expansion, Constant Damping Coefficient Linear Elastic Isotropic Elasticity, Orthotropic Elasticity, Viscoelastic Hyperelastic Test Data Uniaxial Test Data, Biaxial Test Data, Shear Test Data, Volumetric Test Data, SimpleShear Test Data, Uniaxial Tension Test Data, Uniaxial Compression Test Data Hyperelastic Arruda-Boyce, Blatz-Ko, Gent, Mooney-Rivlin 2, Mooney-Rivlin 3, Mooney-Rivlin 5, Mooney-Rivlin 9, Neo-Hookean, Ogden 1st Order, Ogden 2nd Order, Ogden 3rd Order, Polynomial 1st Order, Polynomial 2nd Order, Polynomial 3rd Order, Yeoh 1st Order, Yeoh 2nd Order, Yeoh 3rd Order Plasticity Bilinear Isotropic Hardening, Multilinear Isotropic Hardening, Bilinear Kinematic Hardening, Multilinear Kinematic Hardening, Anand Viscoplasticity Creep Strain Hardening, Time Hardening, Generalized Exponential, Generalized Graham, Generalized Blackburn, Modified Time Hardening, Modified Strain Hardening, Generalized Garofalo, Exponential Form, Norton, Combined Time Hardening, Rational Polynomial, Generalized Time Hardening Visco-elastic Prony Shear Relaxation, Prony Volumetric Relaxation Other Mechanical Strain Life Parameters, Compressive Ultimate Strength, Compressive Yield Strength, LaRc0304 Constants, Orthotropic Strain Limits, Orthotropic Stress Limits, Puck Constants, Tensile Ultimate Strength, Tensile Yield Strength, Tsai-Wu Constants, Shape Memory Effect, Drucker-Prager Strength Piecewise, Drucker-Prager Strength Linear, Ideal Gas EOS, Crushable Foam, Nonlinear Elastic Model Damage, Plakin Special Hardening, Tensile Pressure Failure, Crack Softening Failure Thermal Enthalpy, Isotropic Thermal Conductivity, Orthotropic Thermal Conductivity, Specific Heat Electromagnetics B-H Curve, Isotropic Relative Permeability, Orthotropic Relative Permeability, Isotropic Resistivity, Orthotropic Resistivity"},{"location":"mateditor/mat_overview/#working-with-material-data","title":"Working with material data","text":""},{"location":"mateditor/mat_overview/#exporting","title":"Exporting","text":"

    You can export the complete material data to an external XML file. The following format is supported for export:

    • XML in WELSIM Material (MatML 3.1) schema.
    • JSON in WELSIM Material schema.
    • OpenRadioss input script
    "},{"location":"mateditor/mat_properties/","title":"Libraries and properties","text":""},{"location":"mateditor/mat_properties/#definitions","title":"Definitions","text":"

    We make use of the following terminology for materials:

    Term Definition Material An identifier that contains a property or multiple properties Property An identifier the singular information (for example, Density) Property data An identifier for tabular data (for example, Thermal Conductivity)"},{"location":"mateditor/mat_properties/#sample-libraries","title":"Sample libraries","text":"

    MatEditor provides sample material data categorized into several libraries. However, you still need to validate that the data is consistent with the material you are using in your analysis.

    The following materials are included:

    • General Materials: A library of general use materials and consists mostly of metals.
    • General Nonlinear Materials: A library of general use nonlinear materials for performing nonlinear analyses.
    • Hyperelastic Materials: A library of materials containing test data which can be used to represent hyperelastic materails. The data doesn't correspond to any particular material.
    • Thermal Materials: A library of materials containing thermal data.
    • Electromagnetic Materials: A library of materials containing electromagnetic data, specific for use in an electromagnetic analysis.
    "},{"location":"mateditor/mat_properties/#supported-properties","title":"Supported properties","text":"

    The supported material properties are listed by category here.

    "},{"location":"mateditor/mat_properties/#basics","title":"Basics","text":"
    • Density
    • Isotropic Thermal Expansion
    • Isotropic Instantaneous Thermal Expansion
    • Orthotropic Thermal Expansion
    • Orthotopic Instantaneous Thermal Expansion
    • Constant Damping Coefficient
    "},{"location":"mateditor/mat_properties/#linear-elastic","title":"Linear Elastic","text":"
    • Isotropic Elasticity
    • Orthotropic Elasticity
    • Viscoelastic
    "},{"location":"mateditor/mat_properties/#hyperelastic-test-data","title":"Hyperelastic Test Data","text":"
    • Uniaxial Test Data
    • Biaxial Test Data
    • Shear Test Data
    • Volumetric Test Data
    • Simple Shear Test Data
    • Uniaxial Tension Test Data
    • Uniaxial Compression Test Data
    "},{"location":"mateditor/mat_properties/#hyperelastic","title":"Hyperelastic","text":"
    • Arruda-Boyce
    • Blatz-Ko
    • Gent
    • Mooney-Rivlin 2
    • Mooney-Rivlin 3
    • Mooney-Rivlin 5
    • Mooney-Rivlin 9
    • Neo-Hookean
    • Ogden 1st Order
    • Ogden 2nd Order
    • Ogden 3rd Order
    • Polynomial 1st Order
    • Polynomial 2nd Order
    • Polynomial 3rd Order
    • Yeoh 1st Order
    • Yeoh 2nd Order
    • Yeoh 3rd Order
    "},{"location":"mateditor/mat_properties/#plasticity","title":"Plasticity","text":"
    • Bilinear Isotropic Hardening
    • Multilinear Isotropic Hardening
    • Bilinear Kinematic Hardening
    • Multilinear Kinematic Hardening
    • Anand Viscoplasticity
    "},{"location":"mateditor/mat_properties/#creep","title":"Creep","text":"
    • Strain Hardening
    • Time Hardening
    • Generalized Exponential
    • Generalized Graham
    • Generalized Blackburn
    • Modified Time Hardening
    • Modified Strain Hardening
    • Generalized Garofalo
    • Exponential Form
    • Norton
    • Combined Time Hardening
    • Rational Polynomial
    • Generalized Time Hardening
    "},{"location":"mateditor/mat_properties/#visco-elastic","title":"Visco-elastic","text":"
    • Prony Shear Relaxation
    • Prony Volumetric Relaxation
    "},{"location":"mateditor/mat_properties/#thermal","title":"Thermal","text":"
    • Enthalpy
    • Isotropic Thermal Conductivity
    • Orthotropic Thermal Conductivity
    • Specific Heat
    "},{"location":"mateditor/mat_properties/#electromagnetics","title":"Electromagnetics","text":"
    • B-H Curve
    • Isotropic Relative Permeability
    • Orthotropic Relative Permeability
    • Isotropic Resistivity
    • Orthotropic Resistivity
    • Isotropic Relative Permittivity
    • Orthotropic Relative Permittivity
    • Isotropic Dielectric Loss Tangent
    • Isotropic Magnetic Loss Tangent
    • Isotropic Relative Imaginary Permeability
    • Orthotropic Dielectric Loss Tangent
    • Orthotropic Magnetic Loss Tangent
    "},{"location":"mateditor/mat_table_data/","title":"Import/Export Tabular Data","text":"

    Import and export tabular data is supported in MatEditor, CurveFitter and WELSIM, this feature facilitates you to input and output massive tabular data with no need to manually input and output data, specifically test data for the hyperelastic and magnetic core loss materials.

    The import and export buttons are allocated on the top of the Tabular Data Window, as shown in the figure below:

    "},{"location":"mateditor/mat_table_data/#default-file-format","title":"Default file format","text":"

    The default file format used in MatEditor/CurveFitter/WELSIM contains a header block that gives the quantity name, unit, and dependency. This header data allows you to define the units from the external file. The latest version supports both plain text and Excel formats. Both formats share a similar schema. The details of each format are discussed below.

    • The comment line starts with ### symbol and will be ignored by the reader.
    • The first row lists the quantity names.
    • The second row shows the units. For the dimensionless quantity, dash symbol - is used.
    • The third row gives the dependency of the quantity, which could be independent, dependent, subindependent, or subdependent.
    • The kernel test data start from the fourth row.

    Note

    The number of columns of import data must match the pre-defined headers.

    The plain text data file looks like below:

    An example of Excel file is shown below:

    "},{"location":"mateditor/mat_table_data/#format-with-no-header-data","title":"Format with no header data","text":"

    MatEditor/CurveFitter/WELSIM also supports the external data that contains no header information (pure value data). You need to ensure unit consistency when importing such data files. Both plain text and Excel file formats are supported.

    The plain text file with no header dat looks like below:

    Note

    Due to the lack of the header information, the units of the imported data is determined by the current units of the Table. In addition, the pivoting column may not be set if the file does not contain such data. The number of columns must be identicial to that of the pre-defined table quantities.

    "},{"location":"mateditor/mat_table_data/#examples","title":"Examples","text":"

    The examples of the import/export tabular data are available at our GitHub page.

    "},{"location":"mateditor/mat_theory/","title":"Material Theory","text":"

    Some properties are mutually exclusive of each other and require that only one property in the mutually exclusive set be unsuppressed. The addition or removing of the suppression for one of these properties automatically suppresses the other mutually exclusive properties.

    For example, defining Isotropic Elasticity and Orthotropic Elasticity for the same material represents redundant elasticity behavior. Only one behavior can be active for the material. When such a conflict occurs, the property defined last is used and the previously defined, conflicting property is automatically suppressed.

    The properties that are mutually exclusive are grouped in the following table.

    Group Material Property Elastic properties Isotropic Elasticity, Orthotropic Elasticity, Anisotropic Elasticity, Mooney-Rivlin, Neo-Hookean, Polynomial, Yeoh, Ogden, Arruda-Boyce, Gent, Blatz-Ko, Ogden Foam, Extended Tube, Mullins Effect Plastic properties Bilinear Isotropic Hardening, Multilinear Isotropic Hardening, Bilinear Kinematic Hardening, Multilinear Kinematic Hardening Thermal conductivity properties Thermal Conductivity Isotropic, Thermal Conductivity Orthotropic Resistivity properties Isotropic Resistivity, Orthotropic Resistivity Electric permittivity properties Isotropic Relative Permittivity, Orthotropic Relative Permittivity Dielectric loss properties Isotropic Dielectric Loss Tangent, Orthotropic Dielectric Loss Tangent Magnetic permeability properties Isotropic Relative Permeability, Orthotropic Relative Permeability Magnetic loss properties Isotropic Relative Imaginary Permeability, Isotropic Magnetic Loss Tangent, Orthotropic Magnetic Loss Tangent"},{"location":"mateditor/mat_theory_eos/","title":"Equations of State (EOS)","text":"

    MatEditor allows you to define the EOS material properties. The supported properties are listed below.

    • Compaction
    • Gruneisen
    • Ideal Gas
    • Linear
    • LSZK (Landau-Stanyukovich-Zeldovich-Kompaneets)
    • Murnaghan
    • NASG (Noble-Abel Stiffened Gas)
    • Noble-Abel
    • Osborne
    • Polynomial
    • Puff
    • Stiff Gas
    • Tillotson
    "},{"location":"mateditor/mat_theory_eos/#compaction-eos","title":"Compaction EOS","text":"

    Plastic compaction is along path defined by equation:

    \\[ p=C_0 + C_1 \\mu +C_2 \\mu^2 + C_3 \\mu^3 \\]

    where \\(P\\) is the hydrodynamic pressure in material. \\(\\mu\\) is the volumetric strain that can be obtained by \\(\\mu=\\dfrac{\\rho}{\\rho_0}-1\\).

    Unloading bulk modulus \\(B\\) is the bulk modules for the unloading process.

    Pressure Shift \\(P_{sh}\\) is used to model the relative pressure formulation.

    "},{"location":"mateditor/mat_theory_eos/#gruneisen-eos","title":"Gruneisen EOS","text":"

    In the Gruneisen EOS model, the hydrodynamic pressure is described by the following equations:

    For the compressed material, \\(\\mu\\)>0

    \\[ p = \\dfrac{\\rho_0C^2\\mu[1+(1-\\dfrac{\\gamma_0}{2})\\mu-\\dfrac{\\alpha}{2}\\mu^2]}{[1-(S_1-1)\\mu-S_2\\dfrac{\\mu^2}{\\mu+1}-S_3\\dfrac{\\mu^3}{(\\mu+1)^2}]^2} + (\\gamma_0+\\alpha\\mu)E \\]

    For the expanding material, \\(\\mu\\)<0 $$ p = \\rho_0C^2\\mu + (\\gamma_0+\\alpha\\mu)E $$

    where the \\(\\mu=\\dfrac{\\rho}{\\rho_0}-1\\).

    "},{"location":"mateditor/mat_theory_eos/#ideal-gas-eos","title":"Ideal Gas EOS","text":"

    The pressure in the Ideal Gas model can be represented by the function:

    \\[ p = (\\gamma-1)(1+\\mu)E \\]

    where unitless parameter \\(\\gamma\\) is determined by the heat capacity \\(C_v\\) and \\(C_p\\), \\(\\gamma=\\dfrac{C_p}{C_v}\\). The initial heat capacity \\(C_v\\) is calculated from the initial conditions:

    \\[ C_v=\\dfrac{E_0}{\\rho_0T_0} \\]"},{"location":"mateditor/mat_theory_eos/#linear-eos","title":"Linear EOS","text":"

    The pressure in linear EOS is given by

    \\[ p = p_0 + B\\mu \\]

    where \\(p_0\\) i initial pressure and \\(B\\) is the initial bulk modulus. Linear EOS is a simplified form of polynomial EOS:

    \\[ p=C_0+C_1\\mu + C_2\\mu + C_3\\mu + (C_4+C_5)E_0 \\]

    where, \\(C_0=p_0\\), \\(C_1=B\\), \\(C_2=C_3 = C_4 = C_5 = 0\\).

    Bulk modulus is usually treated as \\(B=\\rho_0c_0^2\\), where \\(c_0\\) is the initial sound speed.

    "},{"location":"mateditor/mat_theory_eos/#lszk-landau-stanyukovich-zeldovich-kompaneets-eos","title":"LSZK (Landau-Stanyukovich-Zeldovich-Kompaneets) EOS","text":"

    This EOS model is the short for the Landau-Stanyukovich-Zeldovich-Kompaneets EOS, used for the detonation modeling. The pressure is given by

    \\[ p = (\\gamma-1)\\rho e + a \\rho^b \\]

    where \\(\\rho\\) is the mass density, \\(e\\) is the internal energy density by mass, \\(b\\) is the material parameter.

    "},{"location":"mateditor/mat_theory_eos/#murnaghan-eos","title":"Murnaghan EOS","text":"

    This EOS is also known as Tait EOS. The pressure is defined by

    \\[ p = \\dfrac{K_0}{K_1}[(\\dfrac{V}{V_0})^{-K_1}-1] \\]

    where \\(K_0\\), \\(K_1\\) are material parameters, \\(V\\) is the volume.

    This model is also expressed in terms of the compressibility \\(\\mu\\):

    \\[ p = p_0 + \\dfrac{K_0}{K_1}[(1+\\mu)^{K_1}-1] \\]

    Note

    Murnaghan EOS is independent to the energy.

    "},{"location":"mateditor/mat_theory_eos/#nasg-noble-abel-stiffened-gas-eos","title":"NASG (Noble-Abel Stiffened Gas) EOS","text":"

    The pressure can be computing by

    \\[ p = \\dfrac{(\\gamma-1)(1+\\mu)(E-\\rho_0q)}{1-b\\rho_0(1+\\mu)} - \\gamma p_{\\infty} \\]

    where \\(p_{\\infty}\\) is the stiffness parameter.

    "},{"location":"mateditor/mat_theory_eos/#noble-abel-eos","title":"Noble-Abel EOS","text":"

    This EOS can apply to dense gases at high pressure, as the volume occupied by the moledules is no longer negligible.

    \\[ p = \\dfrac{(\\gamma-1)(1+\\mu)E}{1-b\\rho_0(1+\\mu)} \\]

    where \\(\\gamma=\\dfrac{C_p}{C_v}\\)

    Note

    Covolume parameter b is usually in the range between [0.9e-3, 1.1e-3] \\(m^3/kg\\).

    "},{"location":"mateditor/mat_theory_eos/#osborne-eos","title":"Osborne EOS","text":"

    This EOS is also called quadratic EOS.

    $$ p = \\dfrac{A_1\\mu+A_2\\mu |\\mu| + (B_0+B_1\\mu+B_2\\mu^2)E + (C_0 + C_1\\mu)E^2 }{E+D_0} $$ where \\(E\\) is the internal energy by initial volume.

    "},{"location":"mateditor/mat_theory_eos/#polynomial-eos","title":"Polynomial EOS","text":"

    The pressure for the linear polynomial EOS can be calculated by

    \\[ p=C_0+C_1\\mu + C_2\\mu + C_3\\mu + (C_4+C_5)E \\]

    where \\(E\\) is the internal energy density by volume.

    Note

    For the expanding status (\\(\\mu\\)<0), the term \\(C_2\\mu^2\\)=0.

    "},{"location":"mateditor/mat_theory_eos/#puff-eos","title":"Puff EOS","text":"

    This EOS model describes pressure accroding to the compressibility \\(\\mu\\) and sublimation energy density by volume \\(E_s\\).

    When \\(\\mu\\geq\\) 0:

    \\[ p = (C_1\\mu+C_2\\mu^2+C_3\\mu^3)(1-\\dfrac{\\gamma\\mu}{2})+\\gamma(1+\\mu)E \\]

    when \\(\\mu\\)<0 and \\(E\\geq E_s\\):

    \\[ p = (T_1\\mu+T_2\\mu^2)(1-\\dfrac{\\gamma\\mu}{2})+\\gamma(1+\\mu)E \\]

    when \\(\\mu\\)<0 and \\(E<E_s\\):

    \\[ p = \\eta[H+(\\gamma_0-H)\\sqrt{\\eta}][E-E_s(1-exp(\\dfrac{N(\\eta-1)}{\\eta^2}))] \\]

    with \\(N=\\dfrac{C_1\\eta}{\\gamma_0E_s}\\).

    "},{"location":"mateditor/mat_theory_eos/#stiffened-gas-eos","title":"Stiffened Gas EOS","text":"

    This EOS was originally designed to simulate water for underwater explosions.

    The pressure can be calculated by $$ p = (\\gamma-1)(1+\\mu)E - \\gamma p_{\\star} $$

    where \\(E=\\dfrac{E_{int}}{V_0}\\), \\(\\mu=\\dfrac{\\rho}{\\rho_0}-1\\). The additional pressure term \\(p^{\\star}\\) is introduced here.

    This EOS can be derived from the Polynomial EOS: $$ p=C_0+C_1\\mu + C_2\\mu + C_3\\mu + (C_4+C_5)E $$ when \\(C_0 = -\\gamma p^{\\star}\\), \\(C_1=C_2=C3=0\\), \\(C_4=C_5=\\gamma-1\\), \\(E_0=\\dfrac{P_0-C_0}{C_4}\\).

    "},{"location":"mateditor/mat_theory_eos/#tillotson-eos","title":"Tillotson EOS","text":"

    The pressure is defined by

    $$ p = C_1\\mu + C_2\\mu^2 +(a+\\dfrac{b}{\\omega})\\eta E $$ with \\(\\omega=1+\\dfrac{E}{E_r}\\eta^2\\) for the region \\(\\mu \\geq\\) 0.

    $$ p = C_1\\mu+(a+\\dfrac{b}{\\omega})\\eta E $$ for the region \\(\\mu<0\\), \\(\\dfrac{V}{V_0}<V_s\\), and \\(E<E_s\\).

    and $$ p = C_1 e^{\\beta x} e^{-\\alpha x^2}\\mu + (a + \\dfrac{be^{-\\alpha x^2}}{\\omega}) \\eta E $$

    "},{"location":"mateditor/mat_theory_failure/","title":"Failure Models","text":"

    MatEditor allows you to define the failure material properties. The supported properties are listed below.

    • Glass
    • Bi-Quadratic
    • Cockcroft
    • Connect
    • Extended Mohr-Coulomb
    • Energy
    • Fabric
    • Forming Limit Diagram
    • Hashin
    • Hosford-Coulomb
    • Johnson-Cook
    • Ladeveze delamination
    • Mullins Effect
    • NXT
    • Orthotropic Bi-Quadratic
    • Orthotropic Strain
    • Puck
    • Tuler-Butcher
    • Tensile Strain
    • Wierzbicki
    • Wilkins
    "},{"location":"mateditor/mat_theory_failure/#bi-quadratic","title":"Bi-Quadratic","text":"

    The failure strain is described by two parabolic functions that user input.

    "},{"location":"mateditor/mat_theory_failure/#cockcroft","title":"Cockcroft","text":"

    A nonlinear stress-strain based failure criterion with linear damage accumulation.

    \\[ C_0 = \\int _0 ^{\\bar{\\epsilon}_f} max(\\sigma_1, 0) \\cdot d\\bar{\\epsilon} \\]

    where \\(\\epsilon_1\\) is the first principal tension stress, \\(\\bar{\\epsilon}\\) is the equivalent strain.

    "},{"location":"mateditor/mat_theory_failure/#extended-mohr-coulomb","title":"Extended Mohr-Coulomb","text":"

    The failure criteria is calculated as:

    \\[ D = \\sum \\dfrac{\\Delta \\bar{\\epsilon}_p}{\\bar{\\epsilon}_{p,fail}} \\]

    where effective failure strain is

    \\[ \\bar{\\epsilon}_{p,fail} = b \\cdot (1+c)^{\\frac{1}{n}} \\cdot \\{[\\dfrac{1}{2}((f_1-f_2)^a + (f_2-f_3)^a + (f_1 - f_3)^a )]^{\\frac{1}{a}} + c(2\\eta+f_1+f_3) \\}^{-\\frac{1}{n}} \\]

    the coefficient b is computed as

    \\[ b = b_0[1+\\gamma ln(\\dfrac{\\dot{\\bar{\\epsilon}}_p}{\\dot{\\bar{\\epsilon}}_0})] \\quad if\\, \\dot{\\bar{\\epsilon}}_p > \\dot{\\bar{\\epsilon}}_0 \\]

    or

    \\[ b = b_0 \\quad if\\, \\dot{\\bar{\\epsilon}}_p \\le \\dot{\\bar{\\epsilon}}_0 \\]"},{"location":"mateditor/mat_theory_failure/#energy","title":"Energy","text":"

    The damage is defined as

    \\[ D = \\dfrac{E-E_1}{E_2 - E_1} \\]

    where the energy density is the current internal energy of the element divided by the current element volume.

    "},{"location":"mateditor/mat_theory_failure/#fabric","title":"Fabric","text":"

    The failure and damage is defined independently in each direction (\\(i\\)=1,2)

    \\[ D_i = \\dfrac{\\epsilon_i - \\epsilon_{fi}}{\\epsilon_{ri} - \\epsilon_{fi}} \\]

    where \\(\\epsilon_i \\ge \\epsilon_{fi}\\).

    "},{"location":"mateditor/mat_theory_failure/#hashin","title":"Hashin","text":"

    This model can be used for the composite materials.

    The damage factor is calculated as

    \\[ D = Max(F_1,F_2,F_3, F_4, F_5) \\quad for\\quad uni-directional\\, lamina\\, model \\] \\[ D = Max(F_1,F_2,F_3, F_4, F_5, F_6, F_7) \\quad for\\quad fabric\\, lamina\\, model \\]"},{"location":"mateditor/mat_theory_failure/#for-the-uni-directional-lamina-model","title":"For the uni-directional lamina model:","text":"

    Tensile/shear fiber mode:

    \\[ F_1 = (\\dfrac{\\langle\\sigma_{11}\\rangle}{\\sigma_1^t})^2 + (\\dfrac{\\sigma_{12}^2 + \\sigma_{13}^2}{{\\sigma_{12}^f}^2}) \\]

    Compression fiber mode:

    \\[ F_2 = (\\dfrac{\\langle \\sigma_a \\rangle}{ \\sigma_1^c})^2 \\]

    with \\(\\sigma_{\\alpha} = -\\sigma_{11}+\\langle -\\dfrac{\\sigma_{22}+\\sigma_{33}}{2} \\rangle\\).

    Crush mode:

    \\[ F_3 = (\\dfrac{\\langle p \\rangle}{\\sigma_c})^2 \\]

    with \\(p=-\\dfrac{\\sigma_{11}+\\sigma_{22}+\\sigma_{33}}{3}\\).

    Failure matrix mode:

    \\[ F_4 = (\\dfrac{\\langle \\sigma_{22} \\rangle}{\\sigma_2^t})^2 + (\\dfrac{\\sigma_{23}}{S_{23}})^2 + (\\dfrac{\\sigma_{12}}{S_{12}})^2 \\]

    Delamination mode:

    \\[ F_5 = S^2_{del}[(\\dfrac{\\langle \\sigma_{33} \\rangle}{\\sigma^t_2})^2 + (\\dfrac{\\sigma_{23}}{\\tilde{S}_{23}})^2 + (\\dfrac{\\sigma_{12}}{S_{12}})^2 ] \\]"},{"location":"mateditor/mat_theory_failure/#for-the-fabirc-lamina-model","title":"For the fabirc lamina model:","text":"

    Tensile/shear fiber mode

    \\[ F_1 = (\\dfrac{\\langle\\sigma_{11}\\rangle}{\\sigma_1^t})^2 + (\\dfrac{\\sigma_{12}^2 + \\sigma_{13}^2}{{\\sigma_{a}^f}^2}) \\] \\[ F_2 = (\\dfrac{\\langle\\sigma_{22}\\rangle}{\\sigma_2^t})^2 + (\\dfrac{\\sigma_{12}^2 + \\sigma_{23}^2}{{\\sigma_{b}^f}^2}) \\]

    Compression fiber mode:

    \\[ F_3 = (\\dfrac{\\langle \\sigma_a \\rangle}{ \\sigma_1^c})^2 \\] \\[ F_4 = (\\dfrac{\\langle \\sigma_b \\rangle}{ \\sigma_2^c})^2 \\]

    Crush mode:

    \\[ F_5 = (\\dfrac{\\langle p \\rangle}{\\sigma_c})^2 \\]

    Shear failure matrix mode:

    \\[ F_6 = (\\dfrac{\\sigma_12}{\\sigma_12^m})^2 \\]

    Matrix failure mode:

    \\[ F_7 = S^2_{del}[(\\dfrac{\\langle \\sigma_{33} \\rangle}{\\sigma^t_3})^2 + (\\dfrac{\\sigma_{23}}{\\tilde{S}_{23}})^2 + (\\dfrac{\\sigma_{12}}{S_{12}})^2 ] \\]"},{"location":"mateditor/mat_theory_failure/#hosford-coulomb","title":"Hosford-Coulomb","text":"

    The failure strain is described y the Hosford-Coulomb function.

    The damage is defined as

    \\[ D = \\sum \\dfrac{\\Delta \\bar{\\epsilon}_p} {\\bar{\\epsilon}^{pr}_{HC}(\\eta) } \\]

    where the strain is calcualted as

    \\[ \\bar{\\epsilon}^{pr}_{HC}(\\eta, \\theta) = b(1+c)^{\\frac{1}{n_f}} \\{[\\dfrac{1}{2}((f_1-f_2)^a + (f_2-f_3)^a + (f_1-f_3)^a)]^{\\frac{1}{a}} + c(a\\eta + f_1 +f_2) \\}^{\\frac{1}{n_f}} \\]"},{"location":"mateditor/mat_theory_failure/#johnson-cook","title":"Johnson-Cook","text":"

    The failure strain is calculated by the constutitive relation:

    \\[ \\epsilon_f = [D_1+D_2exp(D_3\\sigma^*)] [1+D_4 ln(\\dot{\\epsilon}^*)] (1 + D_5 T^*) \\]

    The damage factor is defined as

    \\[ D = \\sum \\dfrac{\\Delta \\epsilon_p}{\\epsilon_f} \\]"},{"location":"mateditor/mat_theory_failure/#ladeveze-delamination","title":"Ladeveze Delamination","text":"

    This is the Ladeveze failure model for delamination (interlaminar fracture). The damage parameters are defined as

    \\[ Y_{d_3} = \\dfrac{\\partial E_D}{\\partial d_3} \\vert _{\\sigma=cst}=\\dfrac{1}{2} \\dfrac{\\langle\\sigma_{33}\\rangle^2}{K_3(1-d_3)^2} \\quad Mode\\,I \\] \\[ Y_{d_2} = \\dfrac{\\partial E_D}{\\partial d_2} \\vert _{\\sigma=cst}=\\dfrac{1}{2} \\dfrac{\\langle\\sigma_{32}\\rangle^2}{K_2(1-d_2)^2} \\quad Mode\\,II \\] \\[ Y_{d_1} = \\dfrac{\\partial E_D}{\\partial d_1} \\vert _{\\sigma=cst}=\\dfrac{1}{2} \\dfrac{\\langle\\sigma_{31}\\rangle^2}{K_1(1-d_1)^2} \\quad Mode\\,III \\]

    The damage value can be

    \\[ D = \\dfrac{k}{a}[1- exp(-a\\langle w(Y)-d\\rangle)] \\]"},{"location":"mateditor/mat_theory_failure/#mullins-effect","title":"Mullins Effect","text":"

    This failure model is used with the hyperelastic materials. The stress during the first loading process is equal to the undamaged stress. Upon unloading and reloading the strss is multiplied by a positive softening factor as

    \\[ \\sigma = \\eta dev(\\sigma) - pI \\]

    where dev(\\(\\sigma\\)) is the deviatoric part of the stress, \\(p\\) is the hydrostatic pressure. The damage factor \\(\\eta\\) is given as

    \\[ \\eta = 1 - \\dfrac{1}{R} erf(\\dfrac{W_{max}-W}{m+\\beta W_{max}}) \\]

    where \\(erf\\) is the Gauss error function.

    "},{"location":"mateditor/mat_theory_failure/#nxt","title":"NXT","text":"

    This model describes the forming limit baed on stresses. This failure is used for shell elements only.

    An instability factor is defined as:

    \\[ \\lambda_f=\\dfrac{\\sigma/h - (\\sigma/h)_{SR}}{(\\sigma/h)_{3D}-(\\sigma/h)_{SR}} + 1 \\]

    The material is defined as free if \\(0<\\lambda_f<1\\), warning if \\(1<\\lambda_f<2\\), failure if \\(\\lambda_f \\ge 2\\).

    "},{"location":"mateditor/mat_theory_failure/#orthotropic-bi-quadratic","title":"Orthotropic Bi-Quadratic","text":"

    The failure strain is described by two parabolicfunctions calculated using curve fitting from user input failure strains.

    "},{"location":"mateditor/mat_theory_failure/#orthotropic-strain","title":"Orthotropic Strain","text":"

    A damage factor is the maximum over time and is calculated for each direction and stress state via:

    \\[ d_ijl = \\dfrac{\\epsilon_{ijf\\_l}}{\\epsilon_{ijl}} \\cdot \\dfrac{\\epsilon_{ijl}-\\alpha\\cdot\\epsilon_{ijd\\_l}}{\\epsilon_{ijf\\_l}-\\epsilon_{ijd\\_l}} \\]

    where the direction is indicated by using the common \\(ij\\) notation and loading state is either compression (\\(l=c\\)) or tension (\\(l=t\\)). The parameter \\(\\alpha=factor_{el}\\cdot factor_{rate}\\).

    The element size correction factor is :

    \\[ factor_{el} = Fscale_{el} \\cdot f_{el} \\dfrac{Size_{el}}{El_ref} \\]

    where \\(f_{el}\\) is the element size correction factor function, \\(Size_{el}\\) is the characteristic element size.

    The strain rate factor is

    \\[ factor_{rate} = f_{ijl}(\\dfrac{\\dot{\\epsilon}_{ijl}}{\\dot{\\epsilon}_0}) \\]

    where \\(f_ijl\\) is strain rate factor function, \\(\\dot{\\epsilon}_{ijl}\\) is the current strain rate in direction ij and load case l, and \\(\\dot\\epsilon_0\\) is the reference strate rate.

    Generally, the damange for this model is

    \\[ D = Max(d_{ijl}) = Max(\\dfrac{\\epsilon_{ijf\\_l}}{\\epsilon_{ijl}} \\cdot \\dfrac{\\epsilon_{ijl}-\\alpha\\cdot\\epsilon_{ijd\\_l}}{\\epsilon_{ijf\\_l}-\\epsilon_{ijd\\_l}}) \\]"},{"location":"mateditor/mat_theory_failure/#puck","title":"Puck","text":"

    This failure model can be applied for both solid and shell elements.

    For the fiber fraction failure, the damage parameter \\(e_f\\) is defined by

    \\[ e_f=\\dfrac{\\sigma_{11}}{\\sigma_{1}^t} \\quad for\\, tensile \\]

    or

    \\[ e_f=\\dfrac{|\\sigma_{11}|}{\\sigma_{1}^c} \\quad for\\, compression \\]

    For the inter fiber failure: the damage parameter \\(e_f\\) is

    \\[ e_f=\\dfrac{1}{\\bar{\\sigma}_{12}} [ \\sqrt{(\\dfrac{\\bar{\\sigma}_{12}}{\\sigma_2^t} -p^+_{12})^2\\sigma_{22}^2 + \\sigma_{12}^2}+p^+_{12}\\sigma_{22}] \\quad for\\, Mode\\, A \\]

    or

    \\[ e_f=[(\\dfrac{\\sigma_{12}}{2(1+p^-_{22})\\bar{\\sigma}_{12}})^2 + (\\dfrac{\\sigma_{22}}{\\sigma_2^c})^2](\\dfrac{\\sigma^c_2}{-\\sigma_{22}}) \\quad for\\, Mode\\, C \\]

    or

    \\[ e_f=\\dfrac{1}{\\bar{\\sigma}_{12}} ( \\sqrt{\\sigma_{12}^2+(p^-_{12}\\sigma_{22})^2}+p^-_{12}\\sigma_{22}) \\quad for\\, Mode\\, B \\]

    when the damage parameter \\(e_f \\ge 1.0\\), the stresses are decreased by using an exponential function to avoid numerical instabilities.

    The damage is defined by

    \\[ D = Max(e_f(tensile),e_f(compression), e_f(ModaA), e_f(ModeB), e_f(ModeC) ) \\]"},{"location":"mateditor/mat_theory_failure/#tuler-butcher","title":"Tuler-Butcher","text":"

    An element fails once the damage is greater than specified critical damage value K. For ductile materials, the cumulative damage parameter is:

    \\[ D=\\int_0^t{max(0, \\sigma-\\sigma_r)^{\\lambda})dt}>K \\]

    where \\(\\sigma_r\\) is initial fracture stress, \\(\\sigma\\) maximum principal stress, \\(\\lambda\\) is material constant, \\(t\\) is the time when the element cracks, \\(D\\) is the damage integral, \\(K\\) is the critical value of the damage integral.

    For brittle materials (shells only), the damage parameter is: $$ \\dot{D} = \\dfrac{1}{K}(\\sigma - \\sigma_r)^a $$ $$ \\sigma_r=\\sigma_0(1-D)^b $$ $$ D=D+\\dot{D}\\Delta t $$

    "},{"location":"mateditor/mat_theory_failure/#tensile-strain","title":"Tensile Strain","text":"

    This is a strain-based failure model that is compatible with both solid and shell elements. The damage is calculated by:

    \\[ D = \\dfrac{\\epsilon - \\epsilon_{t1}}{\\epsilon_{t2} - \\epsilon_{t1}} \\]

    where \\(\\epsilon\\) is either the quivlent strain or maximum principal tensile strain.

    "},{"location":"mateditor/mat_theory_failure/#wierzbicki-model","title":"Wierzbicki model","text":"

    This model describes the Bao-Xue-Wierzbicki failure model. The damage is defined by

    \\[ D=\\sum{\\dfrac{\\Delta\\epsilon_{p}}{\\bar{\\epsilon}_f}} \\]

    where the effective failure strain is

    \\[ \\bar{\\epsilon}_f =\\{ \\bar{\\epsilon}_{max}n-[\\bar{\\epsilon}_{max}n - \\bar{\\epsilon}_{min}n](1-\\bar{\\xi}^m)^{\\dfrac{1}{m}} \\}^{\\dfrac{1}{n}} \\]

    where \\(\\bar{\\epsilon}_{max} = C_1 e^{-1C_{2}\\eta}\\), and \\(\\bar{\\epsilon}_{min} = C_{3} e^{-1C_{4}\\eta}\\).

    For solid element, the parameters \\(\\bar{\\xi}\\) and \\(\\bar{\\eta}\\) are defined by the two options.

    The option 1 (default) is : $$ \\bar{\\xi}=\\dfrac{\\sigma_m}{\\sigma_{VM}} \\quad \\bar{\\eta}=\\dfrac{27J_3}{2\\sigma^3_{VM}} $$

    The option 2 is: $$ \\bar{\\xi}=\\dfrac{\\int_0^{\\epsilon_p}\\dfrac{\\sigma_m}{\\sigma_{VM}}d\\epsilon_p}{\\epsilon_p} \\quad \\bar{\\eta}=\\dfrac{\\int_0^{\\epsilon_p} \\dfrac{27J_3}{2\\sigma^3_{VM}} d\\epsilon_p}{\\epsilon_p} $$

    For shell element, the parameters \\(\\bar{\\xi}\\) and \\(\\bar{\\eta}\\) are $$ \\bar{\\xi}=\\dfrac{\\sigma_m}{\\sigma_{VM}} \\quad \\bar{\\eta}=-\\dfrac{27}{2}\\bar{\\eta}(\\bar{\\eta}^2-\\dfrac{1}{3}) $$

    where \\(\\sigma_m\\) is Hydrostatic stress, \\(\\sigma_{VM}\\) is von Mises stress, and \\(J_3\\) is the third invariant deviatoric stress.

    "},{"location":"mateditor/mat_theory_failure/#wilkins-model","title":"Wilkins model","text":"

    The cumulative damage is given by:

    \\[ D_c = \\int W_1 W_2 d \\bar{\\epsilon_p} \\]

    where \\(W_1=(\\dfrac{1}{1-\\dfrac{P}{P_{lim}}})^{\\alpha}\\), \\(W_2=(2-A)^{\\beta}\\), and hydro-pressure \\(P=-\\dfrac{1}{3}\\sum_{j=1}^{3}\\sigma_{jj}\\), \\(A=max(\\dfrac{s_2}{s_1}, \\dfrac{s_2}{s_3})\\). \\(s_1\\), \\(s_2\\), \\(s_3\\) are the deviatoric stresses, and \\(s_1 \\ge s_2 \\ge s_3\\).

    "},{"location":"mateditor/mat_theory_hyper-elasticity/","title":"Hyperelasticity and Curve Fitting","text":""},{"location":"mateditor/mat_theory_hyper-elasticity/#isotropic-hyperelasticity","title":"Isotropic hyperelasticity","text":"

    The elastic potential energy in hyperelastic material can be obtained from the initial state with no stress activation. Therefore, we have the main invariable terms of the right Cauchy-Green deformation tensor C(\\(I_{1}\\), \\(I_{2}\\), \\(I_{3}\\)), or the main invariable of the deformation tensor excluding the volume changes (\\(\\bar{I}_{1}\\), \\(\\bar{I}_{2}\\), \\(\\bar{I}_{3}\\)). The potential can be expressed as \\(\\mathbf{W}=\\mathbf{W}(I_{1},I_{2},I_{3})\\), or \\(\\mathbf{W}=\\mathbf{W}(\\bar{I}_{1},\\bar{I}_{2},\\bar{I}_{3})\\).

    The nonlinear constitutive relation of a hyperelastic material is defined by the relation between the second-order Piola-Kirchhoff stress and the Green-Lagrange strain, the total Lagrange method is more efficient in solving such models.

    When the elastic potential energy \\(W\\) of the hyperelasticity is known, the second Piola-Kirchhoff stress and strain-stress relationship can be calculated as follows

    \\[ S=2\\dfrac{\\partial W}{\\partial C} \\] \\[ C=4\\dfrac{\\partial^{2}W}{\\partial C\\partial C} \\]

    The following are several forms of strain-energy potential (W) provided for the modeling of incompressible or nearly incompressible hyperelastic materials.

    "},{"location":"mateditor/mat_theory_hyper-elasticity/#arruda-boyce-model","title":"Arruda-Boyce model","text":"

    The form of the strain-energy potential for Arruda-Boyce model is

    \\[ \\begin{array}{ccl} W & = & \\mu[\\dfrac{1}{2}(\\bar{I}_{1}-3)+\\dfrac{1}{20\\lambda_{m}^{2}}(\\bar{I_{1}^{2}}-9)+\\dfrac{11}{1050\\lambda_{m}^{4}}(\\bar{I_{1}^{3}}-27)\\\\ & + & \\dfrac{19}{7000\\lambda_{m}^{6}}(\\bar{I_{1}^{4}}-81) + \\dfrac{519}{673750\\lambda_{m}^{8}}(\\bar{I_{1}^{5}}-243)]\\\\ & + & \\dfrac{1}{D_1}(\\dfrac{J^{2}-1}{2}-\\mathrm{ln}J) \\end{array} \\]

    where \\(\\mu\\) is the initial shear modulus of the material, \\(\\lambda_{m}\\) is limiting network stretch, and \\(D_1\\) is the material incompressibility parameter.

    The initial shear modulus is

    \\[ \\mu=\\dfrac{\\mu_{0}}{1+\\dfrac{3}{5\\lambda_{m}^{2}}+\\dfrac{99}{175\\lambda_{m}^{4}}+\\dfrac{513}{875\\lambda_{m}^{6}}+\\dfrac{42039}{67375\\lambda_{m}^{8}}} \\]

    The initial bulk modulus is

    \\[ K=\\dfrac{2}{D_1} \\]

    As the parameter \\(\\lambda_L\\) goes to infinity, the model is equivalent to neo-Hookean form.

    "},{"location":"mateditor/mat_theory_hyper-elasticity/#blatz-ko-foam-model","title":"Blatz-Ko foam model","text":"

    The form of strain-energy potential for the Blatz-Ko model is:

    \\[ W=\\frac{\\mu}{2}\\left(\\frac{I_{2}}{I_{3}}+2\\sqrt{I_{3}}-5\\right) \\]

    where \\(\\mu\\) is the initial shear modulus of material. The initial bulk modulus is defined as :

    \\[ K = \\frac{5}{3}\\mu \\]"},{"location":"mateditor/mat_theory_hyper-elasticity/#gent-model","title":"Gent model","text":"

    The form of the strain-energy potential for the Gent model is:

    \\[ W=-\\frac{\\mu J_{m}}{2}\\mathrm{ln}\\left(1-\\frac{\\bar{I}_{1}-3}{J_{m}}\\right)+\\frac{1}{D_1}\\left(\\frac{J^{2}-1}{2}-\\mathrm{ln}J\\right) \\]

    where \\(\\mu\\) is the initial shear modulus of material, \\(J_m\\) is limiting value of \\(\\bar{I}_1-3\\), \\(D_1\\) is material incompressibility parameter.

    The initial bulk modulus is

    \\[ K=\\dfrac{2}{D_1} \\]

    When the parameter \\(J_m\\) goes to infinity, the Gent model is equivalent to neo-Hookean form.

    "},{"location":"mateditor/mat_theory_hyper-elasticity/#mooney-rivlin-model","title":"Mooney-Rivlin model","text":"

    This model includes two-, three-, five-, and nine-terma Mooney-Rivlin models. The form of the strain-energy potential for a two-parameter Mooney-Rivlin model is

    \\[ W=C_{10}\\left(\\bar{I}_{1}-3\\right)+C_{01}\\left(\\bar{I}_{2}-3\\right)+\\frac{1}{D_1}\\left(J-1\\right)^{2} \\]

    where \\(C_{10}\\), \\(C_{01}\\), and \\(D_{1}\\) are the material constants.

    The form of strain-energy potential for a three-parameter Mooney-Rivlin model is

    \\[ W=C_{10}\\left(\\bar{I}_{1}-3\\right)+C_{01}\\left(\\bar{I}_{2}-3\\right)+C_{11}\\left(\\bar{I}_{1}-3\\right)\\left(\\bar{I}_{2}-3\\right)+\\frac{1}{D_1}\\left(J-1\\right)^{2} \\]

    where \\(C_{10}\\), \\(C_{01}\\), \\(C_{11}\\), and \\(D_1\\) are material constants.

    The form of strain-energy potential for a five-parameter Mooney-Rivlin model is

    \\[ \\begin{array}{ccl} W & = & C_{10}\\left(\\bar{I}_{1}-3\\right)+C_{01}\\left(\\bar{I}_{2}-3\\right)+C_{20}\\left(\\bar{I}_{1}-3\\right)^{2}\\\\ & + & C_{11}\\left(\\bar{I}_{1}-3\\right)\\left(\\bar{I}_{2}-3\\right)+C_{02}\\left(\\bar{I}_{2}-3\\right)^{2}+\\frac{1}{D_1}\\left(J-1\\right)^{2} \\end{array} \\]

    where \\(C_{10}\\), \\(C_{01}\\), \\(C_{20}\\), \\(C_{11}\\), \\(C_{02}\\), and \\(D_1\\) are material constants.

    The form of strain-energy potential for a nine-parameter Mooney-Rivlin model is

    \\[ \\begin{array}{ccl} W & = & C_{10}\\left(\\bar{I}_{1}-3\\right)+C_{01}\\left(\\bar{I}_{2}-3\\right)+C_{20}\\left(\\bar{I}_{1}-3\\right)^{2}\\\\ & + & C_{11}\\left(\\bar{I}_{1}-3\\right)\\left(\\bar{I}_{2}-3\\right)+C_{02}\\left(\\bar{I}_{2}-3\\right)^{2}+C_{30}\\left(\\bar{I}_{1}-3\\right)^{3}\\\\ & + & C_{21}\\left(\\bar{I}_{1}-3\\right)^{2}\\left(\\bar{I}_{2}-3\\right)+C_{12}\\left(\\bar{I}_{1}-3\\right)\\left(\\bar{I}_{2}-3\\right)^{2}+C_{03}\\left(\\bar{I}_{2}-3\\right)^{3}\\\\ & + & \\frac{1}{D_1}\\left(J-1\\right)^{2} \\end{array} \\]

    where \\(C_{10}\\), \\(C_{01}\\), \\(C_{20}\\), \\(C_{11}\\), \\(C_{02}\\), \\(C_{30}\\), \\(C_{21}\\), \\(C_{12}\\), \\(C_{03}\\), and \\(D_1\\) are material constants.

    The initial shear modulus is given by:

    \\[ \\mu=2(C_{10}+C_{01}) \\]

    The initial bulk modulus is

    \\[ K=\\dfrac{2}{D_1} \\]"},{"location":"mateditor/mat_theory_hyper-elasticity/#neo-hookean-model","title":"Neo-Hookean model","text":"

    The Neo-Hookean model is a well-known hyperelastic model with an expanded linear rule (Hooke rule) having isotropy so that it can respond to finite deformation problems. The elastic potential is as follows.

    \\[ W=\\frac{\\mu}{2}(\\bar{I}_{1}-3)+\\dfrac{1}{D_{1}}(J-1)^{2} \\]

    where \\(\\mu\\) is initial shear modulus of materials, \\(D_{1}\\) is the material constant.

    The initial bulk modulus is given by:

    \\[ K=\\dfrac{2}{D_1} \\]"},{"location":"mateditor/mat_theory_hyper-elasticity/#ogden-compressible-foam-model","title":"Ogden compressible foam model","text":"

    The strain-energy potential of the Ogden compressible foam model is based on the principal stretches of left Cauchy strain tensor, which has the form:

    \\[ W=\\sum_{i=1}^{N}\\frac{\\mu_{i}}{\\alpha_{i}}\\left(J^{\\alpha_{i}/3}\\left(\\bar{\\lambda}_{1}^{\\alpha_{i}}+\\bar{\\lambda}_{2}^{\\alpha_{i}}+\\bar{\\lambda}_{3}^{\\alpha_{i}}\\right)-3\\right)+\\sum_{i=1}^{N}\\frac{\\mu_{i}}{\\alpha_{i}\\beta_{i}}\\left(J^{-\\alpha_{i}\\beta_{i}}-1\\right) \\]

    where N determines the order of the polynomial, \\(\\mu_i\\), \\(\\alpha_i\\) are material constants, \\(D_k\\) is incompressiblity parameter. The reduced principal strench is defined by:

    \\[ \\bar{\\lambda}_{p}=J^{-\\frac{1}{3}}\\lambda_p,\\; J=(\\lambda_{1}\\lambda_{2}\\lambda_{3})^{\\frac{1}{2}} \\]

    The initial shear modulus is given by:

    \\[ \\mu=\\dfrac{\\sum_{i=1}^{N}\\mu_{i}\\alpha_{i}}{2} \\]

    The initial bulk modulus K is defined by

    \\[ K = \\sum_{i=1}^{N}\\mu_{i}\\alpha_{i}\\left(\\dfrac{1}{3}+\\beta_{i}\\right) \\]

    When parameters N=1, \\(\\alpha_1\\)=-2, \\(\\mu_1\\)=-\\(\\mu\\), and \\(\\beta\\)=0.5, the Ogden compressible model is converted to the Blatz-Ko model.

    "},{"location":"mateditor/mat_theory_hyper-elasticity/#ogden-model","title":"Ogden model","text":"

    The strain-energy potential of the Ogden compressible foam model is based on the principal stretches of left Cauchy strain tensor, which has the form:

    \\[ W=\\sum_{i=1}^{N}\\frac{\\mu_{i}}{\\alpha_{i}}\\left(\\bar{\\lambda}_{1}^{\\alpha_{i}}+\\bar{\\lambda}_{2}^{\\alpha_{i}}+\\bar{\\lambda}_{3}^{\\alpha_{i}}-3\\right)+\\sum_{k=1}^{N}\\frac{1}{D_{k}}\\left(J-1\\right)^{2k} \\]

    where N determines the order of the polynomial, \\(\\mu_i\\), \\(\\alpha_i\\) are material constants, \\(D_k\\) is incompressiblity parameter. The reduced principal strench is defined by:

    \\[ \\bar{\\lambda}_{p}=J^{-\\frac{1}{3}}\\lambda_p,\\; J=(\\lambda_{1}\\lambda_{2}\\lambda_{3})^{\\frac{1}{2}} \\]

    The initial shear modulus is given by:

    \\[ \\mu=\\dfrac{\\sum_{i=1}^{N}\\mu_{i}\\alpha_{i}}{2} \\]

    The initial bulk modulus K is defined by

    \\[ K = \\dfrac{2}{D_1} \\]

    When parameters N=1, \\(\\alpha_1\\)=2, the Ogden model is converted to the neo-Hookean model. When parameters N=2, \\(\\alpha_1\\)=2 and \\(\\alpha_2\\)=-2, the Ogden model is converted to the 2-parameter Mooney-Rivlin model.

    "},{"location":"mateditor/mat_theory_hyper-elasticity/#polynomial-form","title":"Polynomial form","text":"

    The polynomial form of strain-energy potential is:

    \\[ W=\\sum_{i+j=1}^{N}c_{ij}\\left(\\bar{I}_{1}-3\\right)^{i}\\left(\\bar{I_{2}}-3\\right)^{j}+\\sum_{k=1}^{N}\\frac{1}{D_{k}}\\left(J-1\\right)^{2k} \\]

    where \\(N\\) determines the order of polynomial, \\(c_{ij}\\), \\(D_k\\) are material constants.

    The initial shear modulus is given by:

    \\[ \\mu=2\\left(C_{10}+C_{01}\\right) \\]

    The initial bulk modulus K is defined by

    \\[ K = \\dfrac{2}{D_1} \\]

    The Polynomial model is converted to following models with specific parameters:

    Parameters of Polynomial model Equivalent model N=1, \\(C_{01}\\)=0 neo-Hookean N=1 2-parameter Mooney-Rivlin N=2 5-parameter Mooney-Rivlin N=3 9-parameter Mooney-Rivlin"},{"location":"mateditor/mat_theory_hyper-elasticity/#yeoh-model","title":"Yeoh model","text":"

    The Yeoh model is also called the reduced polynomial form. The strain-energy potential is

    \\[ W=\\sum_{i=1}^{N}c_{i0}\\left(\\bar{I}_{1}-3\\right)^{i}+\\sum_{k=1}^{N}\\frac{1}{D_{k}}\\left(J-1\\right)^{2k} \\]

    where N denotes the order of the polynomial, \\(C_{i0}\\) and \\(D_k\\) are material constants. When N=1, Yeoh becomes neo-Hookean model.

    The initial shear modulus is defined:

    \\[ \\mu=2c_{10} \\]

    The initial bulk modulus is:

    \\[ K=\\frac{2}{D_1} \\]"},{"location":"mateditor/mat_theory_hyper-elasticity/#hyperelasticity-material-curve-fitting","title":"Hyperelasticity Material Curve Fitting","text":"

    The mechanical response of hyperelastic materials is determined by the hyperelastic constants in the strain energy density function of a model. To get correct results during a hyperelastic analysis, it is required to precisely assess the material constants of the materials being tested. These constants are usually derived for a material based on the experimental strain-stress data. The test data are generally taken from several modes of deformation over a wide range of strain values. The material constants could be fit using test data in at least as many deformation states as will be experienced in the finite element analysis.

    For hyperelastic materials, simple deformation tests can be used to characterize the material constants. The six different deformation modes are graphically illustrated in the figure below. Combinations of data from multiple tests will enhance the characterization of the hyperelastic behavior of a material.

    Although these six different deformation states are accepted, we find that upon the addition of hydrostatic stresses, the following modes of deformation are the same:

    1. Uniaxial Tension and Equibiaxial Compression.
    2. Uniaxial Compression and Equibiaxial Tension.
    3. Planar Tension and Planar Compression.

    With these equivalent modes of testing, we now have only three independent deformation modes for which one can get experimental data.

    In the analysis, when the coordinate system is chosen to consistent with the principal directions of deformation, the right Cauchy-Green strain tensor can be written in matrix form by:

    \\[ [C] = \\begin{bmatrix} \\lambda_1^2 & 0 & 0\\\\ 0 & \\lambda_2^2 & 0\\\\ 0 & 0 & \\lambda_3^2 \\end{bmatrix} \\]

    where \\(\\lambda_i\\)=1+\\(\\epsilon_i\\) is principal stretch ratio in the i-th direction, \\(epsilon_i\\) is principal value of the engineering strain tensor in the i-th direction. The principal invariants of right Cauchy-Green strain tensor \\(C_{ij}\\) are:

    \\[ I_1 = \\lambda_1^2+\\lambda_2^2+\\lambda_3^2 \\] \\[ I_2 = \\lambda_1^2\\lambda_2^2 + \\lambda_1^2\\lambda_3^2 + \\lambda_2^2\\lambda_3^2 \\] \\[ I_3 = \\lambda_1^2\\lambda_2^2\\lambda_3^2 \\]

    For the fully incompressible material, the principal invariant \\(I_3\\) is one:

    \\[ \\lambda_1^2\\lambda_2^2\\lambda_3^2=1 \\]"},{"location":"mateditor/mat_theory_hyper-elasticity/#uniaxial-tension-equibiaxial-compression","title":"Uniaxial tension (Equibiaxial compression)","text":"

    For the uniaxial tension deformation, the principal stretch ratios in the directions orthogonal to the 'pulling' axis is identical. Thus, the principal stretches during uniaxial tension \\(\\lambda_i\\) are given by:

    • \\(\\lambda_1=\\)stretch in direction being loaded
    • \\(\\lambda_2=\\lambda_3=\\)stretch in directions not being loaded

    Due to incompressibility:

    \\[ \\lambda_2\\lambda_3=\\lambda^{-1} \\]

    and with

    \\[ \\lambda_2=\\lambda_3=\\lambda_1^{-1/2} \\]

    For uniaxial tension, the first and second strain invariants then become:

    \\[ I_1= \\lambda_1^2+2\\lambda_1^{-1}\\\\ I_2=2\\lambda_1+\\lambda_1^{-2} \\]

    The corresponding engineering stress can be expressed using principal stretch ratio:

    \\[ T_1=2(\\lambda_1-\\lambda_1^{-2})[\\dfrac{\\partial W}{\\partial I_1}+\\lambda_1^{-1}\\dfrac{\\partial W}{\\partial I_2}] \\]"},{"location":"mateditor/mat_theory_hyper-elasticity/#equibiaxial-tension-uniaxial-compression","title":"Equibiaxial tension (Uniaxial compression)","text":"

    During an equibiaxial tension test, the principal stretch ratios in the directions being loaded are identical. Therefore, for quibiaxial tension, the principal stretches, \\(\\lambda_i\\) are given by:

    • \\(\\lambda_1=\\lambda_2=\\)stretch ratio in direction being loaded
    • \\(\\lambda_3=\\)stretch in directions not being loaded

    According to incompressibility, we have

    \\[ \\lambda_3=\\lambda_1^{-2} \\]

    For equibiaxial tension, the first and second strain invariants then become:

    \\[ I_1=2\\lambda_1^2+\\lambda_1^{-4} \\\\ I_2=\\lambda_1^4+2\\lambda_1^{-2} \\]

    The corresponding engineering stress can be expressed using principal stretch ratio:

    \\[ T_1=2(\\lambda_1-\\lambda_1^{-5})[\\dfrac{\\partial W}{\\partial I_1} + \\lambda_1^2\\dfrac{\\partial W}{\\partial I_2}] \\]"},{"location":"mateditor/mat_theory_hyper-elasticity/#pure-shear-uniaxial-tension-and-uniaxial-compression-in-orthogonal-directions","title":"Pure Shear (Uniaxial tension and uniaxial compression in orthogonal directions)","text":"

    For pure shear deformation mode, plane strain is generally assumed so that there is no deformation in the 'wide' direction of the specimen. Including the incompressibility, we have

    \\[ \\lambda_2=1 \\\\ \\lambda_3 = \\lambda_1^{-1} \\]

    For pure shear, the first and second strain invariants are:

    \\[ I_1=I_2=\\lambda_1^2+\\lambda_1^{-2}+1 \\]

    The corresponding engineering stress can be expressed using principal stretch ratio:

    \\[ T_1=2(\\lambda_1 - \\lambda_1^{-3})[\\dfrac{\\partial W}{\\partial I_1} + \\dfrac{\\partial W}{\\partial I_2}] \\]"},{"location":"mateditor/mat_theory_hyper-elasticity/#volumetric-deformation","title":"Volumetric Deformation","text":"

    The volumetric deformation is given as:

    \\[ \\lambda_1=\\lambda_2=\\lambda_3=\\lambda\\\\ J=\\lambda^3 \\]

    As nearly incompressible is assumed, we have:

    \\[ \\lambda \\approx 1 \\]

    The pressure P is directly related to the volume ratio J:

    \\[ P=\\dfrac{\\partial W}{\\partial J} \\]"},{"location":"mateditor/mat_theory_hyper-elasticity/#deformations-for-principal-stretches-based-models","title":"Deformations for principal stretches based models","text":"

    For the models based on the principal stretches, such Ogden model, the strain-stress relation can be obtained by deriving the strain energy with respect to the stretch.

    \\[ \\sigma(\\lambda)=\\dfrac{\\partial W(\\lambda)}{\\partial \\lambda} \\]

    The corresponding engineering stress is:

    \\[ T_1 = \\dfrac{\\partial W(\\lambda_1)}{\\partial \\lambda_1} \\lambda_1^{-1} \\]"},{"location":"mateditor/mat_theory_hyper-elasticity/#material-stability-check","title":"Material stability check","text":"

    Stability checks are critical for the following analysis. A nonlinear material is stable if the secondary work required for an arbitrary change in the deformation is always positive. We usually use the Drucker stability criterion to determine the stability of the hyperelastic materials. Mathematically, this is:

    \\[ d\\sigma_{ij}d\\epsilon_{ij}>0 \\]

    where \\(d\\sigma\\) is the change in the Cauchy stress tensor corresponding to a change in the logarithmic strain.

    The material stability checks can be done at the end of preprocessing but before an analysis actually begins. Checking for the stability of a material can be more conveniently accomplished by checking for the positive definiteness of the material stiffness. The program checks for the loss of stability of six typical stress paths including uniaxial tension and compression, equibiaxial tension and compression, and planar tension and compression. the range of the stretch ratio over which the stability is checked is chosen from 0.1 to 10.

    "},{"location":"mateditor/mat_theory_io/","title":"Theory IO","text":"

    Some properties are mutually exclusive of each other and require that only one property in the mutually exclusive set be unsuppressed. The addition or removing of the suppression for one of these properties automatically suppresses the other mutually exclusive properties.

    For example, defining Isotropic Elasticity and Orthotropic Elasticity for the same material represents redundant elasticity behavior. Only one behavior can be active for the material. When such a conflict occurs, the property defined last is used and the previously defined, conflicting property is automatically suppressed.

    The properties that are mutually exclusive are grouped in the following table.

    Group Material Property Elastic properties Isotropic Elasticity, Orthotropic Elasticity, Anisotropic Elasticity, Mooney-Rivlin, Neo-Hookean, Polynomial, Yeoh, Ogden, Arruda-Boyce, Gent, Blatz-Ko, Ogden Foam, Extended Tube, Mullins Effect Plastic properties Bilinear Isotropic Hardening, Multilinear Isotropic Hardening, Bilinear Kinematic Hardening, Multilinear Kinematic Hardening Thermal conductivity properties Thermal Conductivity Isotropic, Thermal Conductivity Orthotropic Resistivity properties Isotropic Resistivity, Orthotropic Resistivity Electric permittivity properties Isotropic Relative Permittivity, Orthotropic Relative Permittivity Dielectric loss properties Isotropic Dielectric Loss Tangent, Orthotropic Dielectric Loss Tangent Magnetic permeability properties Isotropic Relative Permeability, Orthotropic Relative Permeability Magnetic loss properties Isotropic Relative Imaginary Permeability, Isotropic Magnetic Loss Tangent, Orthotropic Magnetic Loss Tangent"},{"location":"mateditor/mat_theory_plasticity/","title":"Plasticity","text":"

    This section describes the plastic laws in details.

    "},{"location":"mateditor/mat_theory_plasticity/#johnson-cook-model","title":"Johnson-Cook Model","text":"

    In this model the material behaves as a linear-elastic material when the quivalent stress is lower than the plastic yield stress. For higher stress values, the material behavior is plastic, and the true stress is calculated as:

    \\[ \\sigma = (a+b\\epsilon_p^n)(1+c\\cdot ln\\dfrac{\\dot{\\epsilon}}{\\dot{\\epsilon}_0})(1-(\\dfrac{T-T_r}{T_{melt}-T_r})^m) \\]

    where \\(\\epsilon_p\\) is the plastic strain, \\(\\dot{\\epsilon}\\) is strain rate, \\(T\\) is the temperature, \\(T_r\\) is the ambient temperature, \\(T_{melt}\\) is the melting temperature. The plastic yield stress \\(a\\) should always be greater than zero. The plastic hardening exponent \\(n\\) must be less than or equal to 1.

    "},{"location":"mateditor/mat_theory_plasticity/#zerilli-armstrong-model","title":"Zerilli-Armstrong Model","text":"

    The stress during plastic deformation is defined by

    \\[ \\sigma = C_0 + C_1 exp(-C_3 T + C_4 T ln \\dfrac{\\dot{\\epsilon}}{\\dot{\\epsilon}_0} ) + C_5 \\epsilon_p ^n \\]

    where the yield stress \\(C_0\\) should be positive, plastic hardening exponent \\(n\\) must be less than 1.

    "},{"location":"mateditor/mat_theory_plasticity/#hill-model","title":"Hill Model","text":"

    The Hill model describes the orthotropic plastic material. The yield stress can be input by parameters or tabular data. The yield stress is defined as:

    \\[ \\sigma_y = a(\\epsilon_0+\\epsilon_p)^n \\mathrm{max}(\\dot{\\epsilon}, \\dot{\\epsilon}_0)^m \\]

    The maximum elastic stress is given by

    \\[ \\sigma_0 = a(\\epsilon_0)^n (\\dot{\\epsilon}_0)^m \\]

    The yield stress is compresed to the equivalent stress: $$ \\sigma_{eq} = \\sqrt{A_1 \\sigma_1^2 + A_2 \\sigma_2^2 -A_3 \\sigma_1 \\sigma_2 +A_{12} \\sigma_{12}^2} $$

    where parameters \\(A_1\\), \\(A_2\\), \\(A_3\\), and \\(A_{12}\\) are defined by the Lankford constants.

    "},{"location":"mateditor/mat_theory_plasticity/#orthotropic-hill-model","title":"Orthotropic Hill Model","text":"

    This model describes the orthotropic elastic behavior material with Hill plasticity. The yield stress is compared to an equivalent stress for the orthotropic materials. The equivalent stress for solid elements is defined as:

    \\[ \\sigma_{eq} = \\sqrt{F(\\sigma_{22}^2 - \\sigma_{33}^2) + G(\\sigma_{33}^2 - \\sigma_{11}^2) + H(\\sigma_{11} - \\sigma_{22}^2) + 2L\\sigma_{23}^2 + 2M\\sigma_{31}^2 + 2N\\sigma_{12}^2} \\]

    For the shell element, the equivalent yield stress is :

    \\[ \\sigma_{eq} = \\sqrt{(G+H)\\sigma_{11}^2 +(F+H) \\sigma_{22}^2 - 2H \\sigma_{11} \\sigma_{22} + 2N\\sigma_{12}^2} \\]"},{"location":"mateditor/mat_theory_plasticity/#rate-dependent-multilinear-hardening","title":"Rate-Dependent MultiLinear Hardening","text":"

    This model describes an isotropic elasto-plastic material using user-input funcitons for the strain-stress curves at the different strain rates. No yield stress equations are needed because constitutive relations are given by the tabular data.

    "},{"location":"mateditor/mat_theory_plasticity/#cowper-symonds-model","title":"Cowper-Symonds Model","text":"

    Similar to the Johnson-Cook model, Cowper-Symonds law models isotropic elasto-plastic materials. The yield stress is defined by the stress constants, tabular data, or a combination of both. The pure constant formulation is given here:

    \\[ \\sigma = (a+b\\epsilon_p^n)(1+(\\dfrac{\\dot{\\epsilon}}{c})^{\\frac{1}{p}}) \\]

    where the yield stress \\(a\\) should be positive, plastic hardening exponent \\(n\\) must be less than 1.

    "},{"location":"mateditor/mat_theory_plasticity/#zhao-model","title":"Zhao Model","text":"

    Zhao model describes the isotropic plastic strain rate-dependent materials. The strain-stress relation is based on the formula below:

    \\[ \\sigma = (A + B \\epsilon_p^n) + (C-D\\epsilon_p^m)\\cdot \\mathrm{ln}\\dfrac{\\dot{\\epsilon}}{\\dot{\\epsilon}_0}+E_1 \\dot{\\epsilon}^k \\]

    where the yield stress \\(A\\) should be positive, plastic hardening exponent \\(n\\) must be less than 1. If \\(\\dot{\\epsilon} \\le \\dot{\\epsilon}_0\\), the term \\((C-D\\epsilon_p^m)\\cdot \\mathrm{ln}\\dfrac{\\dot{\\epsilon}}{\\dot{\\epsilon}_0}=0\\), the stress becomes:

    \\[ \\sigma = (A + B \\epsilon_p^n) + E_1 \\dot{\\epsilon}^k \\]"},{"location":"mateditor/mat_theory_plasticity/#steinberg-guinan-model","title":"Steinberg-Guinan Model","text":"

    This model defines an isotropic elasto-plastic mateial with thermal softening. When the material approaches melting temperature, the yield strength and shear modulus decrease to zeero. The melting energy is given as

    \\[ E_m = E_c + \\rho_0 C_p T_m \\]

    where \\(E_c\\) is the cold compression energy.

    When the internal energy \\(E\\) is less than \\(Em\\), the shear modulus and the yield stress are :

    \\[ G = G_0 [1 + b_1 p V^{\\frac{1}{3}} - h(T-T_0)] e^{-\\frac{fE}{E-E_m}} \\] \\[ \\sigma_y = \\sigma_0(1+\\beta \\epsilon_p^{\\mathrm{(max)}})^n [1 + b_2 p V^{\\frac{1}{3}} -h(T-T_0)]e^{-\\frac{fE}{E-E_m}} \\]

    where initial shear modulus \\(G_0 = \\dfrac{E_0}{2(1+\\nu)}\\).

    "},{"location":"mateditor/mat_theory_plasticity/#gurson-model","title":"Gurson Model","text":"

    The Gurson law can be used to model visco-elasto-plastic strain rate-depdent porous materials. The yield stress can be obtained from the tabular data or the Cowper-Symond's law, the latter formulation is defined as:

    \\[ \\sigma_M = (A + B \\epsilon_M^n) (1 + (\\dfrac{\\dot{\\epsilon}}{c})^{\\frac{1}{p}}) \\]

    The von Mises critera for the viscoplastic flow are given as

    \\[ \\Omega_{vm} = \\sigma_{qt} - \\sigma_{M}\\sqrt{1 + q_3 f^{*2} - 2q_1 f^{*2} \\mathrm{cosh}(\\dfrac{3q_2\\sigma_m}{2\\sigma_M})} \\]

    or

    \\[ \\Omega_{vm} =\\dfrac{\\sigma^2_{qe}}{\\sigma^2_M} + 2q_1 f^* \\mathrm{cosh}(\\dfrac{3}{2}q_2 \\dfrac{\\sigma_m}{\\sigma_M}) - (1 + q_3 f^{*2}) \\]

    where \\(\\sigma_M\\) is the admissible stress, \\(\\sigma_m\\) is the trace, \\(\\sigma_eq\\) is the von Mises stress, \\(q_1\\), \\(q_2\\), and \\(q_3\\) are the Gurson material constants. The specific coalescence function \\(f*\\) is defined as

    \\[ f^* = f_c + \\dfrac{f_u - f_c}{f_F - f_c}(f - f_c) \\quad \\mathrm{if}\\, f \\gt f_c \\]"},{"location":"mateditor/mat_theory_plasticity/#barlat3-model","title":"Barlat3 Model","text":"

    This is an orthotropic elastoplastic law for modeling anisotropic materials in metal forming process. Thus it is widely applied in the shell elements. The plastic hardening is described by the input parameters or user-defined tabular data. The anisotropic yield criteria F for plane stress is given by:

    \\[ F = a |K_1 + K_2|^m + a |K_1 - K_2|^m + c |2K_2|^m - 2\\sigma_y^m = 0 \\]

    where coefficient \\(K_1 = \\frac{\\sigma_{xx} + h \\sigma_{yy}}{2}\\) and \\(K_2 = \\sqrt{(\\frac{\\sigma_{xx} - h \\sigma_{yy}}{2})^2 + p^2 \\sigma_{xy}^2}\\). The constants \\(a\\), \\(c\\), and \\(h\\) can be obtained from the Lankford constants.

    When the Young's modulus is based on the input parameters. The expression is

    \\[ E(t) = E - (E_0-E_{inf})[1-\\mathrm{exp}(-C_E \\bar{\\epsilon}_p)] \\]

    where \\(E_0\\) is the initial Youngs' modulus, \\(E_{inf}\\) is the asymptotic Young's modulus, and \\(\\bar{\\epsilon}_p\\) is the accumulated equivalent plastic strain.

    "},{"location":"mateditor/mat_theory_plasticity/#yoshida-uemori-model","title":"Yoshida-Uemori Model","text":"

    This model can describe the large strain cyclic plasticity of metals. The law is based on the yielding and bounding surfaces.

    For solid elements, von Mises yield criterion is used as:

    \\[ f = \\dfrac{3}{2} (\\mathbf{s} - \\mathbf{\\alpha}) \\colon (\\mathbf{s} - \\mathbf{\\alpha}) - Y^2 \\]

    For shell elements, Hill or Barlat3 yield criterion is used. The Hill law is expressed as:

    \\[ f_{Hill} = \\varphi(\\mathbf{\\sigma} - \\mathbf{\\alpha})- Y^2 \\]

    where \\(Y\\) is yield stress, and \\(\\mathbf{\\alpha}\\) is total back stress. Let \\(\\mathbf{A}=\\mathbf{\\sigma}-\\mathbf{\\alpha}\\), the function \\(\\varphi\\) becomes

    \\[ \\varphi(A) = A_{xx}^2 - \\dfrac{2r_0}{1+r_0}A_{xx}A_{yy} + \\dfrac{r_0(1+r_{90})}{r_{90}(1+r_0)}A_{yy}^2 + \\frac{r_0 + r_{90}}{r_{90}(1+r_0)}(2r_{45}+1)A_{xy}^2 \\]

    The Barlat law is defined as:

    \\[ f_{Barlat} = \\phi(\\sigma - \\alpha) - 2Y^M \\]

    where \\(M\\) is the exponent in Barlat's yield criterion.

    "},{"location":"mateditor/mat_theory_plasticity/#hohnson-holmquist-model","title":"Hohnson-Holmquist Model","text":"

    This law describes the behaivor of brittle materials, such as glass and ceramics.

    \\[ \\sigma^* = (1-D)\\sigma^*_i + D \\sigma_f^* \\]

    where the equivalent stress of the intact materials \\(\\sigma_i^*\\) can be expressed as

    \\[ \\sigma_i^* = a (P^* + T^*)^n (1 + c\\mathrm{ln}\\dfrac{\\dot{\\epsilon}}{\\dot{\\epsilon}_0}) \\]

    and the equivalent stress of the failed materials \\(\\sigma_f^*\\) is

    \\[ \\sigma_f^* = b(P^*)^m (1+c\\mathrm{ln}\\dfrac{\\dot{\\epsilon}}{\\dot{\\epsilon}_0}) \\]"},{"location":"mateditor/mat_theory_plasticity/#swift-voce-model","title":"Swift-Voce Model","text":"

    Swift-Voce elastoplastic model can combine the Johnson-Cook strain rate hardening and temperature softening. This model can be applied for the orthotropic materials and allows a quadratic non-assoicated flow rule. The yield stress can be calculated using a combination of Swift and Voce models as shown below.

    \\(\\sigma_y = \\{ \\alpha [A(\\bar{\\epsilon}_p + \\epsilon_0)^n] + (1+\\alpha)[K_0 + Q(1-\\mathrm{exp}(-B\\bar{\\epsilon }_p))]\\} (1+C \\mathrm{ln}\\dfrac{\\dot{\\bar{\\epsilon}}_p}{\\dot{\\epsilon}_0}) [1 - (\\dfrac{T-T_{ref}}{T_{melt} - T_{ref}})^m]\\)

    The plastic non-associated flow rule is computed as:

    \\[ \\Delta \\epsilon_p = \\Delta \\bar{\\epsilon}_p \\dfrac{\\partial g(\\sigma)}{\\partial \\sigma} \\]

    where \\(g(\\sigma) = \\sqrt{\\sigma^TG\\sigma}\\).

    "},{"location":"mateditor/mat_theory_plasticity/#hensel-spittel-model","title":"Hensel-Spittel Model","text":"

    The hensel-Spittel yield stress is a function of strain, strain rate, and temperature. This model is often used in hot forging simulations. The yield stress is defined as :

    \\[ \\sigma_y = A_0 e^{m_1 T} \\epsilon^{m_2} \\dot{\\epsilon}^{m_3} e^{\\frac{m_4}{\\epsilon}} (1+\\epsilon)^{m_5T} e^{m_7\\epsilon} \\]

    where true strain \\(\\epsilon = \\epsilon_0 + \\bar{\\epsilon}_p\\), \\(\\dot{\\epsilon}\\) is the true strain rate.

    "},{"location":"mateditor/mat_theory_plasticity/#vegter-model","title":"Vegter Model","text":"

    The yield function is defined as

    \\[ \\phi = \\bar{\\sigma} - \\sigma_Y \\]

    where \\(\\bar{\\sigma}\\) is the interpolated Vegter equivalent stress.

    "},{"location":"mateditor/mat_workflow/","title":"Material workflow","text":"

    This section discusses about the material data, and precedures for working with MatEditor.

    "},{"location":"mateditor/mat_workflow/#material-data","title":"Material data","text":"

    Material data is the source of the material information that is used for the analysis of the system it is contained in. The information in a material data component system is used if shared to an analysis system. MatEditor allows you to view, edit, and add data for use in your analysis system.

    "},{"location":"mateditor/mat_workflow/#importing","title":"Importing","text":"

    You can import data into an system as a new material. The following types of files are supported for import:

    • WELSIM material data format
    • Material(s) file following the MatML 3.1 schema

    Note

    When you import material data, the materials contained in that source will be added to the material outline.

    "},{"location":"mateditor/mat_workflow/#editing","title":"Editing","text":"

    Property and Table panes provide constant and tabular data input. You can edit both constant and tabular data.

    "},{"location":"mateditor/mat_workflow/#constant-data","title":"Constant data","text":"

    You edit constant data by changing the value and/or unit of that data in the Properties pane. The value is modified by clicking the cell in the Value column and typing in the new value. If available, changing the unit will convert the value to correspond to the new unit. If the value entered is invalid or not acceptable it will be indicated in yellow or red to gain users' attention.

    "},{"location":"mateditor/mat_workflow/#tabular-data","title":"Tabular data","text":"

    If Value cell shows a tabular format indication. This data is edited in the Table pane and each datum is a value and unit as one integral piece. If the value entered is invalid or not acceptable it will be indicated in yellow or red to gain users' attention. The unit is shown in the header, and you can change unit if necessary. The units between table header and Property pane column are connnected. Modifying either one of them changes units on both areas.

    "},{"location":"mateditor/mat_workflow/#suppression","title":"Suppression","text":"

    A material property may be defined but suppressed to prevent it from being sent to analysis process in the system. A data item may be suppressed by selecting the dropdown in the suppression column. Suppressed items and its children are shown by a strike through the name (for example, ) and the dropdown being set to True in the suppression column.

    "},{"location":"mateditor/mat_workflow/#perform-material-tasks-in-mateditor","title":"Perform material tasks in MatEditor","text":"

    All material related tasks require that you perform the following basic tasks:

    Task Procedure Create new material. In the Menu or Toolbar, click New Material to add a new material. Add material properties.
    1. Activate the material in the Material Outline pane that is to receive the additional property.
    2. Toggle the property in the Property Outline pane that you want to add.
    Delete material properties.
    1. Activate the material in the Material Outline pane whose property is to be deleted.
    2. Select the material property in the Properties pane.
    3. Right-click and choose Delete or on the menu bar, choose Delete.
    Modify material properties.
    1. Activate the material in the Material Outline pane that contains the property you want to modify.
    2. In the Properties pane change the value or unit for constant data.
    3. Perform one of the following:
      • For constant data, change the value or unit in the Properties pane.
      • For tabular data, change the value or unit(s) in the Table pane.
    Suppress material properties.
    1. Activate the material in the Material Outline pane that contains the property you want to suppress.
    2. Select the dropdown in the suppression column for the property you want to suppress.
    "},{"location":"mateditor/mateditor_overview/","title":"Overview","text":"

    MatEditor is a free material editor software program for engineers. This tool provides you comprehensive material properties those are often used in engineering simulation and finite element analysis.

    "},{"location":"mateditor/mateditor_overview/#specification","title":"Specification","text":"Specification Description Operation system Microsoft Windows 7 to 10; 64-bit Physical memory At least 4 GB

    Supported unit systems :

    • SI: (kg, m, s, K, A, N, V)
    • MKS Standard: (kg, m, s, \u00b0C, A, N, V)
    • NMMTON Standard: (tonne, mm, s, \u00b0C, A, N, mV)
    • BIN Standard: (lbm, in, s, \u00b0F, A, lbf, V)
    • US Engineering: (lb, in, s, R, A, lbf, V)
    • CGS Standard: (g, cm, s, \u00b0C, A, dyne, V)
    • NMM Standard: (kg, mm, s, \u00b0C, mA, N, mV)
    • UMKS Standard: (kg, \u00b5m, s, \u00b0C, mA, \u00b5N, V)
    • NMMDAT Standard: (decatonne, mm, s, \u00b0C, mA, N, mV)
    • BFT Standard: (lbm, ft, s, \u00b0F, A, lbf, V)
    • CGS Consistent: (g, m, s, \u00b0C, A, dyne, V)
    • NMM Consistent: (tonne, m, s, \u00b0C, mA, t\u22c5mm/s2, mV)
    • UMKS Consistent: (kg, m, s, \u00b0C, pA, \u00b5N, pV)
    • BIN Consistent: (slinch, in, s, \u00b0C, A, slinch\u22c5in/s2, V)
    • BFT Consistent: (slug, ft, s, \u00b0C, A, slug\u22c5ft/s2, V)
    • CGuS Standard: (g, cm, \\(\\mu\\)s, \u00b0C, A, dyne, V)
    "},{"location":"mateditor/mateditor_overview/#material-properties","title":"Material properties","text":"

    The supported material properties are listed in the table below.

    Category Materials Basic Density, Isotropic Thermal Expansion, Isotropic Instantaneous Thermal Expansion, Orthotropic Thermal Expansion, Orthotropic Instantaneous Thermal Expansion, Constant Damping Coefficient Linear Elastic Isotropic Elasticity, Orthotropic Elasticity, Viscoelastic Hyperelastic Test Data Uniaxial Test Data, Biaxial Test Data, Shear Test Data, Volumetric Test Data, SimpleShear Test Data, Uniaxial Tension Test Data, Uniaxial Compression Test Data Hyperelastic Arruda-Boyce, Blatz-Ko, Gent, Mooney-Rivlin 2, Mooney-Rivlin 3, Mooney-Rivlin 5, Mooney-Rivlin 9, Neo-Hookean, Ogden 1st Order, Ogden 2nd Order, Ogden 3rd Order, Polynomial 1st Order, Polynomial 2nd Order, Polynomial 3rd Order, Yeoh 1st Order, Yeoh 2nd Order, Yeoh 3rd Order Plasticity Bilinear Isotropic Hardening, Multilinear Isotropic Hardening, Bilinear Kinematic Hardening, Multilinear Kinematic Hardening, Anand Viscoplasticity, Johnson-Cook, Zerilli-Armstrong Creep Strain Hardening, Time Hardening, Generalized Exponential, Generalized Graham, Generalized Blackburn, Modified Time Hardening, Modified Strain Hardening, Generalized Garofalo, Exponential Form, Norton, Combined Time Hardening, Rational Polynomial, Generalized Time Hardening Visco-elastic Prony Shear Relaxation, Prony Volumetric Relaxation Equations of State (EOS) Compaction, Gruneisen, Ideal Gas, Linear, LSZK, Murnaghan, NASG, Noble-Abel, Osborne, Polynomial, Puff, Stiff Gas, Tillotson Failure Johnson Other Mechanical Strain Life Parameters, Compressive Ultimate Strength, Compressive Yield Strength, LaRc0304 Constants, Orthotropic Strain Limits, Orthotropic Stress Limits, Puck Constants, Tensile Ultimate Strength, Tensile Yield Strength, Tsai-Wu Constants, Shape Memory Effect, Drucker-Prager Strength Piecewise, Drucker-Prager Strength Linear, Ideal Gas EOS, Crushable Foam, Nonlinear Elastic Model Damage, Plakin Special Hardening, Tensile Pressure Failure, Crack Softening Failure Thermal Enthalpy, Isotropic Thermal Conductivity, Orthotropic Thermal Conductivity, Specific Heat Electromagnetics B-H Curve, Isotropic Relative Permeability, Orthotropic Relative Permeability, Isotropic Resistivity, Orthotropic Resistivity, Isotropic Relative Permittivity, Orthotropic Relative Permittivity, Isotropic Dielectric Loss Tangent, Isotropic Magnetic Loss Tangent, Isotropic Relative Imaginary Permeability, Orthotropic Dielectric Loss Tangent, Orthotropic Magnetic Loss Tangent Fluid Dynamic Viscosity, Kinematic Viscosity, Lemalar Prandtl Number, Turbulent Prandtl Number, ALE"},{"location":"mateditor/mateditor_overview/#predefined-materials","title":"Predefined materials","text":"

    WELSIM also provide predefined materials, which covers most of commonly used materials. Users can choose these materials and apply to the successive finite element analysis.

    Category Materials General Materials Structural Steel, Stainless Steel, Aluminum Alloy, Concrete, Copper Alloy, Gray Cast Iron, Titanium Alloy Nonlinear Materials Aluminum Alloy NL, Concrete NL, Copper Alloy NL, Stainless Steel NL, Structural Steel NL, Titanium Alloy NL Hyperelastic Materials Elastomer Mooney-Rivlin, Elastomer Neo-Hookean, Elastomer Ogden, Elastomer Yeoh, Neoprene Rubber Thermal Materials Brass, Bronze, Copper, Diamond, Ferrite, Nodular Cast Iron, Solder, Teflon, Tungsten, Wood Electromagnetic Materials SS416, Supermendure, TDK-K1, TDK-M33, TDK-N30, TDK-N41, TDK-N45, TDK-N48, TDK-N49, TDK-N87, TDK-N97, TDK-T38, TDK-T66 Other Materials Water Liquid, Argon, Ash"},{"location":"mateditor/mateditor_overview/#download","title":"Download","text":"

    MatEditor software is available at our official website.

    "},{"location":"mateditor/material_data/","title":"Defining materials","text":"

    This section describes how to create material objects and define material properties in the WELSIM application.

    "},{"location":"mateditor/material_data/#overview","title":"Overview","text":"

    Material Module serves as a database for material properties used in a modeling project. The module not only provides a material library but also allow you to create a material using the given properties. The spreadsheet of a Material object is the primary user interface designed to let you create, save, and retrieve material models. The well-defined material object can be saved and used in the subsequent projects.

    Material Module is shown as a Material Project and Material Objects in the Project Explorer (tree) window. The solution system contains only one Material Project, which acts as a material repository in the modeling system. The Material Project may include multiple Material Objects, where the properties can be added or edited by users.

    To access Material Object properties, you can choose one of the following methods: * Double click on the Material Object. * Right click on a Material Object, and select Edit item from the context menu.

    "},{"location":"mateditor/material_data/#modes-of-operation","title":"Modes of operation","text":"
    • Material for subsequent analysis: You can create a material that can be consumed in the subsequent analysis. For example, a defined material can be assigned to the specific geometry bodies.
    • Material Data for files: You can create a material and export the material data into an external file.

    The data included in the Material Module is automatically saved as you save the project.

    "},{"location":"mateditor/material_data/#user-interface","title":"User interface","text":"

    The Material Editor spreadsheet is an essential portion of the WELSIM user interface, and it displays material-related components that allow users to edit material data easily.

    "},{"location":"mateditor/material_data/#editing-mode","title":"Editing mode","text":"

    Presented in this section are two configurations for the material property editing. The first configuration method is based on the library as shown in Figure\u00a0[fig:ch3_guide_mat_ui_lib], and the second configuration is designed to manually combine the properties for the material object as shown in Figure\u00a0[fig:ch3_guide_mat_ui_build]. You can click on the Library or Build tab to switch these two editing modes.

    Note

    1. You can click on category tabs to browse different materials.
    2. Loading a material dataset from the library removes all pre-existing properties.
    "},{"location":"mateditor/material_data/#build-outline-tab","title":"Build outline tab","text":"

    The Build Outline Tab shows an outline of the contents of the togglable material properties. You can add a property data entry to the material by toggling on the property entry or remove property by toggling off the property entry.

    "},{"location":"mateditor/material_data/#properties-pane","title":"Properties pane","text":"

    The Properties pane displays all properties that are going to be added to the Material Object. You can tune the property values at this pane. The columns in this spreadsheet pane are:

    • Name: A read-only text field to display the property name.
    • Value: A number field to display and input the value.
    • Description: A read-only text field to display the attribute of this property.

    You can delete a property by right-clicking on a row and select Remove Rows from the pop-up context menu.

    The Material Properties pane provides the following command buttons to the bottom of the window:

    • OK: Save the properties and exit the material editor.
    • Apply: Save the current properties to the material database.
    • Cancel: Exit the material editor without Saving.
    • Clear: Remove all properties.
    "},{"location":"mateditor/material_data/#working-with-material-data","title":"Working with material data","text":""},{"location":"mateditor/material_data/#exporting","title":"Exporting","text":"

    You can export the complete material data to an external file. The following format is supported for export:

    • XML in WELSIM Material (MatML 3.1) schema.
    • JSON in WELSIM Material schema.
    • OpenRadioss input script

    To implement the exporting, you can use one of the following methods:

    • Click the Export Materials button from the standard Toolbar.
    • Click the Export Materials item from the Material Menu.
    • Right-click the Material Project and select the Export Materials item from the context menu.
    "},{"location":"mateditor/material_data/#mateditor-applicaiton","title":"MatEditor applicaiton","text":"

    MatEditor is a free application allow you to create and edit material data for the computer aided engineering. It is a smaller and concise application but has most of features that material module of WELSIM has. More details about MatEditor, please visit MatEditor page.

    "},{"location":"unitconverter/unitconverter/","title":"UnitConverter","text":"

    UnitConverter is a free unit conversion software program for engineers. This tool allows you to convert a large number of engineering units quickly and accurately.

    "},{"location":"unitconverter/unitconverter/#specification","title":"Specification","text":"Specification Description Operation system Microsoft Windows 7 to 10; 64-bit Physical memory At least 4 GB

    Supported unit systems :

    • SI: (kg, m, s, K, A, N, V)
    • MKS Standard: (kg, m, s, \u00b0C, A, N, V)
    • NMMTON Standard: (tonne, mm, s, \u00b0C, A, N, mV)
    • BIN Standard: (lbm, in, s, \u00b0F, A, lbf, V)
    • US Engineering: (lb, in, s, R, A, lbf, V)
    • CGS Standard: (g, cm, s, \u00b0C, A, dyne, V)
    • NMM Standard: (kg, mm, s, \u00b0C, mA, N, mV)
    • UMKS Standard: (kg, \u00b5m, s, \u00b0C, mA, \u00b5N, V)
    • NMMDAT Standard: (decatonne, mm, s, \u00b0C, mA, N, mV)
    • BFT Standard: (lbm, ft, s, \u00b0F, A, lbf, V)
    • CGS Consistent: (g, m, s, \u00b0C, A, dyne, V)
    • NMM Consistent: (tonne, m, s, \u00b0C, mA, t\u22c5mm/s2, mV)
    • UMKS Consistent: (kg, m, s, \u00b0C, pA, \u00b5N, pV)
    • BIN Consistent: (slinch, in, s, \u00b0C, A, slinch\u22c5in/s2, V)
    • BFT Consistent: (slug, ft, s, \u00b0C, A, slug\u22c5ft/s2, V)
    • CGuS Standard: (g, cm, \\(\\mu\\)s, \u00b0C, A, dyne, V)
    "},{"location":"unitconverter/unitconverter/#supported-units","title":"Supported units","text":"

    The supported units are listed in the table below.

    Category Materials Base Angle, Current, Length, Mass, Temperature, Time Common Area, Density, Energy, Frequency, Volume Mechanical Acceleration, Angular Acceleration, Angular Velocity, Force, Moment of Inertia, Power, Pressure, Torque, Velocity Thermal Heat Flux Density, Heat Transfer Coefficient, Specific Heat Capacity, Thermal Conductivity, Thermal Expansivity Electrical Capacitance, Electric Charge, Electrical Conductance, Electrical Conductivity, Inductance, Surface Charge Density, Surface Current Density, Voltage, Volume Charge Density Magnetic Magnetic field strength, Magnetic flux density"},{"location":"unitconverter/unitconverter/#download","title":"Download","text":"

    UnitConverter software is available at our official website.

    "},{"location":"welsim/release_notes/","title":"WELSIM release notes","text":"

    This release notes are specific to WELSIM 2024R1 and arranged by the version and features.

    "},{"location":"welsim/release_notes/#upgrading","title":"Upgrading","text":"

    To upgrade WELSIM to the latest version, download the installer from our official website . \u200b

    Since version 2.1, WelSim provides a version checker in the application, users can click Help -> Check for Updates on the menu and know if a new version is available.

    To inspect the currently installed version, open the About dialog in WELSIM application.

    "},{"location":"welsim/release_notes/#changelog","title":"Changelog","text":""},{"location":"welsim/release_notes/#2024r1-28-jan-at-2024","title":"2024R1 (2.8) Jan. at 2024","text":"
    • Import GDSII files and display in the project tree and 3D graphics window.
    • Allow users to choose the layer of selection in 3D geometry picking.
    • Enable ruler to show the micro and nano meter markers to better support micro shapes.
    • Add new 3D EM features: Eigenmode, Transient, and Driven analyses.
    • Include EM solver Palace, and all dependencies, MFEM, GSLib, libCEED, libXSMM, ARPACK-NG, etc. Built Palace on Windows operation system. Set the Palace as the default EM solver. Remove FemSolver1.
    • MatEditor
      • Add a new unit system: Metric (kg, mm, ns, A, N, V).
      • Add new material properties: Material Axes.
      • Add new materials: Sapphire.
    • Upgrade Linux version version to Ubuntu 22.04 LTS, upgrade compiler to GCC11.
    • Upgrade HYPRE from 2.25 to 2.30.
    • Enhancement and improvement.
    "},{"location":"welsim/release_notes/#2023r3-27-sept-at-2023","title":"2023R3 (2.7) Sept. at 2023","text":"
    • Support open-source CFD package Su2 pre-processing:
      • Configure file and Su2 format mesh file.
      • Solver options: EULER, NAVIER_STOKES, RANS, INC_EULER, INC_NAVIER_STOKES, INC_RANS.
      • Time-dependent and steady-state analyses.
      • Free-stream field.
      • Fluid Model: STANDARD_AIR, IDEAL_GAS, VW_GAS, PR_GAS, CONSTANT_DENSITY, INC_IDEAL_GAS, INC_IDEAL_GAS_POLY, FLUID_MIXTURE, SU2_NONEQ, MUTATIONPP.
      • Turbulence models: Spalart-Allmaras (SA), Shear Stress Transport (SST).
      • Markers and Boundary Conditions: Euler (Slip) Wall, Symmetry, Heatflux, Isothermal Wall, Far field, Inlet, Supersonic Inlet, Outlet, etc.
      • Convective Schemes: JST, ROE, AUSM, HLLC, CUSP, MSW, FDS.
      • Limiter Options: SLOPE_LIMITER_FLOW, SLOPE_LIMITER_TURB, BARTH_JESPERSEN, VENKATAKRISHNAN, VENKATAKRISHNAN_WANG, SHARP_EDGES, WALL_DISTANCE, VAN_ALBADA_EDGE.
      • Restart and Visualization Files: RESTART, MESH, CSV, PARAVIEW_MULTIBLOCK, PARAVIEW, SURFACE_CSV, SURFACE_PARAVIEW.
      • Customizing the Screen and History Output: TIME_ITER, OUTER_ITER, INNER_ITER, CUR_TIME, TIME_STEP, WALL_TIME.
    • Pre- and post-processing for OpenRadioss
      • Support multi-step analysis
      • Support output frequency for the engine file.
      • Expose the thickness results option in the animation files.
      • Expose the FLD results option in the animation files.
    • Add the Adaptive Mesh Region condition.
    • Support pressure boundary condition for shell structure.
    • Support RMB context menu for the result color legend bar. The context menu allows user to:
      • Select the type of bar.
      • Toggle the display of date and time, logarithmic scale, deformation scale factor, scientific notation, and semi-transparency.
      • Set the number of digits, number of labels, and color spectrum.
    • Support RMB context menu for the 3D graphics window.
    • Support Isometric view for the dropdown AxisWidget.
    • Expose Ffmpeg executable file path in the Preferences.
    • Expose regression recorder and tester to the end users.
    • Open source all regression test cases.
    • MatEditor:
      • Add JWL material property and Test143.
      • Add Shear Test Data - Viscoelastic, Bulk Test Data - Viscoelastic, and Uniaxial Plastic Strain Test Data material properties.
    • CurveFitter:
      • Add an Output window to display more information to users.
      • Add the Johnson-Cook, Swift, Voce, and Swift-Voce functions in the Nonlinear section.
    • Introduce glog 0.6. Upgrade MFEM from 4.5 to 4.5.2.
    • Enhancement and optimization
    "},{"location":"welsim/release_notes/#2023r2-26-april-at-2023","title":"2023R2 (2.6) April at 2023","text":"
    • Generate solver scripts and associated mesh files for Palace. Support boundary conditions: PEC, PMC, Absorbing, Conductivity, Impedance, LumpedPort, WavePort, SurfaceCurrent, Ground, ZeroCharge. Support material properties: Permeability, Permittivity, LossTan, Conductivity. Support solver settings: Electrostatic, Magnetostatic, Eigenmode, Driven, Transient, Linear. Support mesh formats: Gmsh, MFEM, VTK, Vtu, Nastran.
    • Export mesh files in Gmsh and Nastran formats.
    • Support rigid body condition for the OpenRadioss solver.
    • Support spring boundary condition for the structural analysis.
    • Check geometries before meshing implementation.
    • Add the \u201dOpen Recent\u201c feature to the File menu.
    • Directory persistence for tabular data import and export.
    • Introduce nlohmann/json third-party library.
    • Upgrade MFEM to 4.5 from 4.4, Hypre to 2.25 from 2.12, and FrontISTR to 5.5 from 5.3.
    • Enhancement and optimization.
    "},{"location":"welsim/release_notes/#2023r1-25-jan-at-2023","title":"2023R1 (2.5) Jan. at 2023","text":"
    • Support OpenRadioss pre-processing.
      • Export OpenRadioss solver scripts including starter and engine files.
      • Supported blocks with keywords: MAT, NODE, GRNOD/NODE, BCS, PART, SHELL, BRICK, PROP/SOLID, PROP/SHELL, FUNCT, GRAV, INTER/TYPE7, SURF/SEG, RBODY, TH/PART, TH/INTER, INIVEL.
    • Support OpenRadioss post-processing.
      • Load T01 file.
      • Load A001 files.
      • Display result contours: displacement, velocity, acceleration, stresses, and strains.
      • Generate dynamic analysis result videos.
    • Support explicit structural dynamics using OpenRadioss solver.
    • Support explicit structural dynamics using OpenRadioss solver.
    • Support Contact Search for multi-body analysis.
    • Support Exploded View for multi-body analysis.
    • Optimize the meshing modules and improve the meshing user experience.
    • Refactor the chart module.
    • Support data persistence of mesh and results.
    • Upgrade Windows C++ compiler to Visual Studio 2022, SDK to 10.0.19041
    • Upgrade 3rd party libraries:
      • Qt to 5.15.2
      • OpenCascade to 7.5.3
      • Boost to 1.80, replace nowide with Boost/nowide
    • Start to use the external version name based on the calendar year, such as 2023R1.
    • Enhancements and optimizations.
    "},{"location":"welsim/release_notes/#24-dec-at-2022","title":"2.4 Dec. at 2022","text":"
    • Export MFEM mesh file.
    • Export time-dependent results in Paraview Data format (*.pvd)
    • Export FrontISTR, MFEM, and SU2 input scripts.
    • UnitConverter:
      • Add new units: Energy Density By Area, Energy Density By Volume, Dynamic Viscosity, Kinematic Viscosity, Specific Heat Density By Volume, Specific Volume, Heat Capacity, Stiffness.
      • Add new unit system: g-cm-um.
    • CurveFitter:
      • Support multi-thread parallel computing (OpenMP), add 1st-6th Schulz-Flory functions\u3002
      • Expose solver options to GUI.
    • MatEditor:
      • Add new material: Air.
      • Add new fluid properties: Dynamic Viscosity, Kinematic Viscosity, Lemalar Prandtl Number, Turbulent Prandtl Number.
      • Add new Equation of State properties: EOS Compaction, EOS Gruneisen, EOS Ideal Gas, EOS Ideal Gas VT, EOS Linear, EOS LSZK, EOS Murnaghan, EOS NASG, EOS Noble Abel, EOS Osborne, EOS Polynomial EOS Puff, EOS Sesame, EOS Stiff Gas, EOS Tillotson.
      • Add new plasticity properties: Johnson Cook Strength, Zerilli Armstrong Strength, Hill, Rate-Dependent Multilinear Hardening, Orthotropic Hill, Cowper-Symonds, Zhao, Steinberg-Guinan, Gurson, Barlat3, Yoshida-Uemori, Johnson-Holmquist, Hensel-Spittel, Swift-Voce, and Vegter.
      • Add new Failure Criteria: Glass, Bi-Quadratic, Cockcroft, Connect, Extended Mohr-Coulomb, Energy, Fabric, Forming Limit Diagram, Hashin, Hosford-Coulomb, Johnson-Cook, Ladeveze delamination, Mullins Effect, NXT, Orthotropic Bi-Quadratic, Orthotropic Strain, Puck, Tuler-Butcher, Tensile Strain, Wierzbicki, Wilkins.
      • Add viscoelastic properties: Boltzman, Maxwell-Kelvin-Voigt, Maxwell-Kelvin.
      • Support tooltips for the materials and properties.
      • Support collapse and expand on the selected material properties.
      • Support deletion of the selected material properties.
      • Support Save/Resume.
      • Support writing OpenRadioss material scripts;
    • Upgrade MFEM to 4.4.
    • Upgrade MKL and Fortran Compiler to Intel oneAPI 2022.02.
    • Linux version: new release since v1.9; Upgrade Qt to 5.15.2, MKL to Intel oneAPI 2022.01.
    • Enhancements and optimizations.
    "},{"location":"welsim/release_notes/#23-july-at-2022","title":"2.3 July at 2022","text":"
    • Improve meshing performance; Reduce the size of the temporary mesh data files.
    • Add 2D circular shape geometry creation.
    • Add a Refine Geometry feature.
    • Add new HPC options in the Preference settings.
    • Support new units: Momentum.
    • Upgrade structural solver to 5.3.
    • Upgrade the 3D rendering module to 5.0.3.
    • Upgrade third-party libraries: HDF to 1.12.2, CGNS to 4.3.0, ITK to 5.2.1.
    • Enhancements and optimizations.
    "},{"location":"welsim/release_notes/#22-may-at-2022","title":"2.2 May at 2022","text":"
    • Add screen capture feature.
    • Support video export feature for the spinning view.
    • Add a result VCR controller to the Graph window.
    • Support result animation review and video export.
    • Enhancements and optimizations.
    "},{"location":"welsim/release_notes/#21-dec-at-2021","title":"2.1 Dec. at 2021","text":"
    • Add Sphere, and Torus build-in shape creation.
    • Support Clip Planes for the section view in post-processing.
    • Add vector (Glyph3D arrows) electric field and vector electric flux density results for electrostatic analysis.
    • Add Point Charge, Spherical Charge Density, and Polarization source conditions for electrostatic analysis.
    • Add Cylindrical Magnet, Ring Current source conditions for magnetostatic analysis.
    • Add image-saving feature for the Chart window.
    • Launch independent beam cross-section application - BeamSection.
    • CurveFitter: support R-squared (R2) calculation, enhance solver.
    • Upgrade Eigen to 3.3.9.
    "},{"location":"welsim/release_notes/#20-january-at-2021","title":"2.0 January at 2021","text":"
    • All new 3D graphics module supports 4K display, auto spin/swing, stereo views, etc.
    • New \"Pre-Selection\", \"Show Vertices\", \"Wireframe\", \"Show Mesh\", \"Stop Meshing/Solving\" commands on Menu and Toolbar.
    • A new dimension ruler supports both metric and U.S. customary units.
    • A new bounding box feature for all presented objects in the 3D scene.
    • Optimized meshing module with better performance and usability.
    • Optimized mesh and result 3D rendering.
    • Added a new Selection View to the GUI main window.
    • Upgrade QT framework to 5.12.9, OCCT to 7.4, VTK to 8.2, MUMPS to 5.3.5, PETSc to 3.14.2, etc.
    "},{"location":"welsim/release_notes/#191-july-at-2020","title":"1.9.1 July at 2020","text":"
    • Support curve fitting features for the Core Loss Model and test data.
    • Support curve fitting for the hyperelastic material models and test data.
    • Launch general-purpose curve fitting application - CurveFitter.
    "},{"location":"welsim/release_notes/#19-november-2019","title":"1.9 November, 2019","text":"
    • Support units.
    • Support nonlinear thermal analysis.
    • All new table and graph windows.
    • All new About dialogs with capability of displaying software and hardware information.
    • Launch the engineering material data tool - MatEditor.
    • Launch the engineering unit converter - UnitConverter.
    • Launch online documentation at docs.welsim.com and replaced the PDF documents.
    • Result legend supports user-defined min/max values.
    • Upgrade C++ compiler to vs2017, QT framework to 5.12.2, HDF5 to 1.8.21, Boost to 1.69, OCCT to 7.3, etc.
    • Enhancements and optimizations.
    "},{"location":"welsim/release_notes/#18-december-2018","title":"1.8 December, 2018","text":"
    • Input/Output: Add Nastran and Abaqus input scripts generation; Read generated result files.
    • GUI: Add system preferences database and associated user interface; Enhance Output/Message window, promote more detailed messages.
    • Geometry: New STL geometry object. Import STL files; Add geometry checking feature.
    • Mesh: mesh STL geometry. export mesh data to file.
    • Analysis: Support Vertex scoping for the boundary conditions. Add body heat flux condition for thermal analysis.
    • Upgrade Microsoft MPI to 10.0. General enhancements.
    "},{"location":"welsim/release_notes/#17-july-2018","title":"1.7 July, 2018","text":"
    • Add structural shell analysis, including the associated fixed rotation boundary condition, rotation result, reaction moment probe.
    • Add structural body conditions: body force, acceleration, earth gravity, rotational velocity.
    • Add mesh method object to support distinct mesh density for bodies.
    • Add geometry selection controller on graphics toolbar, support body, face, edge, and vertex selections.
    • Add plane shape creation feature.
    • Add official user manual.
    • General enhancements.
    "},{"location":"welsim/release_notes/#16-april-2018","title":"1.6 April, 2018","text":"
    • Add data persistence module to support project save/resume feature.
    • Add user-defined and reaction force probe results.
    • Add velocity and acceleration boundary conditions and results for transient structural analysis.
    • Add geometry export feature.
    • General enhancements.
    "},{"location":"welsim/release_notes/#15-february-2018","title":"1.5 February, 2018","text":"
    • Launch Linux 64-bit version that supports Ubuntu 16.04 LTS and Fedora 27.
    • Add status engine for the project tree objects, small icon represents the current state of the object.
    • General enhancements.
    "},{"location":"welsim/release_notes/#14-november-2017","title":"1.4 November, 2017","text":"
    • Add 3D static and transient lamellar flow analysis (Deprecated).
    • General enhancements.
    "},{"location":"welsim/release_notes/#13-september-2017","title":"1.3 September, 2017","text":"
    • Add 3D electrostatic analysis with supported boundary conditions: ground, symmetry, voltage, zero charges, surface charge density, electric displacement.
    • Add 3D magnetostatic analysis with supported boundary conditions: insulting, magnetic flux density.
    • General enhancements.
    "},{"location":"welsim/release_notes/#12-august-2017","title":"1.2 August, 2017","text":"
    • Add 3D steady-state and transient thermal analysis with associated boundary conditions.
    • General enhancements.
    "},{"location":"welsim/release_notes/#11-july-2017","title":"1.1 July, 2017","text":"
    • Add chart, tabular data, and output window to GUI.
    • Add multi-body and contact features to structural analysis.
    • Add nonlinear material analysis features with the capabilities of solving hyperelastic, elastoplastic, viscoelastic, and creep materials.
    • Add 3D static, transient, and modal structural analyses.
    • General enhancements.
    "},{"location":"welsim/release_notes/#10-march-2017","title":"1.0 March 2017","text":"
    • Launch all-in-one simulation framework including a graphical user interface, meshers, and solvers.
    • Add 3D linear elastic structural analysis.
    • Add Automatic mesh generator for Tet4 and Tet10 elements.
    • Add geometry creation and CAD model import features.
    • Add graphics, tree, and property windows to the GUI.
    "},{"location":"welsim/troubleshooting/","title":"Troubleshooting","text":"

    If you encounter an issue that cannot be resolved here, please send the project file (*.wsdb and the associated folder), and the system information to info@welsim.com. Your computer information can be acquired by clicking About button on the toolbar.

    "},{"location":"welsim/troubleshooting/#graphical-window-issue","title":"Graphical window issue","text":"

    The graphics window fails to display items, and the context is all black. The screen capture of this issue is shown in Figure\u00a0below.

    • Cause: This issue is due to an unsupported graphics card or driver.

    • Solution: Set the environment variable QT_OPENGL=desktop then restart the WelSim application. The graphics window shall display the context correctly.

    "},{"location":"welsim/troubleshooting/#result-data-matching-issue","title":"Result data matching issue","text":"

    The result fails to display contours due to the dismatched mesh. The error message of this issue is shown in Figure below.

    • Cause: This issue is due to dismatched data between result and mesh.

    • Solution: This could be a software defect, send the model to the info@welsim.com for investigation.

    "},{"location":"welsim/get_started/quick_start/","title":"Quick start","text":"

    This section demonstrates you the primary GUI features and workflow of WELSIM application.

    "},{"location":"welsim/get_started/quick_start/#graphical-user-interface","title":"Graphical user interface","text":""},{"location":"welsim/get_started/quick_start/#overview","title":"Overview","text":"

    The WELSIM application provides you an ease-of-use graphical interface to customize the finite element analysis settings. The primary components of graphical user interface include:

    • Menus
    • Toolbar
    • Project Explorer (Tree) Window
    • Properties View Window
    • Graphics Window
    • Tabular Data Window
    • Chart Window
    • Output Window

    An overview of graphical user interface is shown in Figure below.

    .

    "},{"location":"welsim/get_started/quick_start/#menu-and-toolbar","title":"Menu and toolbar","text":"

    Menus and toolbar contain primary commands of the application as shown in Figure below. Sections Main Menus and Toolbars of have more details.

    .

    "},{"location":"welsim/get_started/quick_start/#graphics-window","title":"Graphics window","text":"

    The Graphics window displays the geometries and associated symbols, text, and annotations. In this window, you can pan, rotate, and zoom the 3D geometries using mouse and key. In addition to the geometries, this window may contain annotation, Graphics Toolbar, coordinate system symbol, ruler, logo, etc. A schematic view of the Graphics window is shown in Figure below.

    .

    "},{"location":"welsim/get_started/quick_start/#material-definition-spreadsheet","title":"Material definition spreadsheet","text":"

    The material module provides a spreadsheet panel for you to define and review material properties. An overview of the material property spreadsheet is shown in Figure\u00a0below.

    .

    "},{"location":"welsim/get_started/quick_start/#geometry-display","title":"Geometry display","text":"

    The Graphics window displays the 3D geometries, meshed elements, result contours, etc. A 3D geometry and object properties are shown in Figure below.

    .

    "},{"location":"welsim/get_started/quick_start/#mesh-display","title":"Mesh display","text":"

    Graphics window displays the mesh as you select the mesh related objects in the tree. The Properties View shows the statistical data of the mesh as shown in Figure\u00a0below.

    .

    "},{"location":"welsim/get_started/quick_start/#boundary-condition-display","title":"Boundary condition display","text":"

    For the boundary conditions, the Graphics window displays the highlighted entities (faces, edges, vertices), the Property View, Tabular Data, and Chart windows show the boundary values over time. The Properties View window also allows you to scope the geometry entities and set values, as shown in Figure\u00a0below.

    .

    "},{"location":"welsim/get_started/quick_start/#solution-display","title":"Solution display","text":"

    After solving, the user interface displays the solution and results. The Graphics window displays the result contour and legend. The Properties View shows the Maximum and Minimum values of the result at the given Set Number. The Tabular Data and Chart Windows illustrate the maximum and minimum values over the time as shown in Figure \u00a0below.

    .

    "},{"location":"welsim/get_started/quick_start/#result-legend","title":"Result legend","text":"

    You can adjust the result contour and legend by right clicking on the legend field and set the parameters in the context menu, as shown in Figure\u00a0below.

    .

    "},{"location":"welsim/get_started/quick_start/#workflow","title":"Workflow","text":"

    Using WELSIM is straightforward. The following gives you the primary workflow steps in starting a finite element analysis project from scratch:

    "},{"location":"welsim/get_started/quick_start/#create-a-new-project","title":"Create a new project","text":"

    Clicking New command from Toolbar or File Menu creates a new simulation project. Several default objects are automatically generated in the tree, and the Graphics window is filled with the 3D modeling interface. The following shows the behaviors of creating a new project:

    • A Material Project and a FEM Project are created simultaneously. The Material Project object holds only Material objects, and the FEM Project object contains all modeling objects that allow users to customize a finite element analysis. Only one Material Project is allowed in the tree, while you can add multiple FEM Projects to conduct multiple simulation studies at one interface.

    • An activated project displays the object name in Bold. You can double click the project object to activate a FEM Project.

    • Many commands on Toolbar and Menu become available as a FEM project is created.

    • Each object provides a unique context menu, and you can right-click to display the context menu. For example, you can rename an object via the context menu.

    • Each object provides unique options in Properties View window, which is automatically updated as you select objects.

    "},{"location":"welsim/get_started/quick_start/#defining-materials","title":"Defining materials","text":"

    In addition to the default Structural Steel material, you can add new materials and define the properties. A Material object represents a material database. The following gives the behaviors of material definition.

    • You can create a new material object by clicking Add Material command from Toolbar or Material Menu. The Material Project many holds multiple Material objects.

    • A newly created Material object requires you to specify the properties. Double-clicking or right-clicking on the material object, you open the Edit spreadsheet.

    • Two methods are available for you to add material properties in the Edit spreadsheet. The Library tab provides you pre-defined material data to directly import. The Build tab lists all available properties for you to add properties one by one.

    "},{"location":"welsim/get_started/quick_start/#importing-or-creating-geometries","title":"Importing or creating geometries","text":"

    You can add geometry data by importing a CAD file or creating primitive shapes using the commands from Toolbar or Geometry Menu.

    • The built-in modeler allows you to create primitive shapes such as Box, Cylinder, Plate, and Line.
    • The supported CAD geometry file formats are: STEP, IGES.
    • The ruler in the Graphics window provides you a reference to estimate the size of geometries.
    • The size of the imported geometry can be adjusted by the tuning the Scale property value.
    "},{"location":"welsim/get_started/quick_start/#meshing","title":"Meshing","text":"

    You can skip meshing at this moment because the system automatically meshes the domain at solving step if no mesh is generated. However, meshing at this step provides you an insight of the mesh quality and a chance to optimize the mesh. You can click the Mesh commands from the Toolbar or FEM Menu to perform the meshing operations.

    • The mesh module supports Tet10, Tet4, Tri6, and Tri3 elements. The default type is the linear element, and you can change the element order by modifying the Quadratic property in Mesh Settings object.
    • For multiple body geometries, you can add a Mesh Method object to make some bodies have different mesh density to the global mesh density, which is defined by the Mesh Settings object.
    • The Toolbar and FEM Menu provide you mesh tools, such as Clear Generated Mesh, Examine Mesh.
    • The mesh density can be adjusted by tuning the properties of Mesh Settings, such as Maximum Size, Mesh Density.
    "},{"location":"welsim/get_started/quick_start/#analysis-settings","title":"Analysis settings","text":"

    You can define the analysis settings in the following order:

    • Set the Physics Type and Analysis Type in the FEM Project object.
    • Determine the Number of Steps, Current Step, and Current End Time properties in Study object.
    • Determine the analysis settings properties in Study Settings object.
    • Determine the solver settings properties in the Answers object.
    "},{"location":"welsim/get_started/quick_start/#imposing-initial-conditions","title":"Imposing initial conditions","text":"

    For the transient analysis, you can define initial conditions. The available initial conditions are

    • Initial Temperature
    "},{"location":"welsim/get_started/quick_start/#imposing-boundary-conditions","title":"Imposing boundary conditions","text":"

    The boundary and body conditions are essential for the conducted analysis. Depending on the Physics Type and Analysis Type, you can insert various condition objects into the tree via the Toolbar or Menu. The following gives the behaviors of the body and boundary conditions.

    • The body and boundary condition value is Step-based.
    • Multiple boundary and body conditions can be jointly imposed on the geometry.
    • In the condition scoping, you can select multiple entities by pressing Ctrl or Shift key. However, the multiple entities for one property field must be the same type of geometry.
    • Graphics window displays the annotation and highlighted geometry entities if a condition object is valid.
    • Tabular Data and Chart windows can show the condition values over time.
    "},{"location":"welsim/get_started/quick_start/#solve","title":"Solve","text":"

    To solve the customized model, you can click the Compute command from the Toolbar or FEM Menu. The behaviors of solving are

    • You may be required to Save the project before performing a solving process. The system needs to save the input scripts and mesh data for solvers.
    • The Output window displays the solver messages. The promoted message indicates the success or failure of the solving process.
    • You can discontinue the solving process by clicking the Stop Interprocess button in the Output pane.
    "},{"location":"welsim/get_started/quick_start/#displaying-results","title":"Displaying results","text":"

    Depending on the Physics Type and Analysis Type, you can insert various result objects into the tree via the Toolbar or Menu. The following gives the behaviors of the solution and results.

    • To display the resulting contour, you can select the target result object, and click the Evaluate from the Toolbar or FEM Menu, or double click the object.
    • You can adjust the contour format by right clicking on the resulting legend.
    • You can clear result contour by clicking Clear Result, or Clear Calculated Solution commands from the Toolbar or FEM Menu.
    "},{"location":"welsim/get_started/quick_start/#completed","title":"Completed","text":"

    The analysis is completed. You can Save the projects to an external \u201cwsdb\u201d file and close the application.

    Note

    The *.wsdb file and associated folder are the WELSIM database for project data persistence, you can open this project file later, on another computer, and on different operation systems.

    "},{"location":"welsim/get_started/electromagnetics/electrostatic/","title":"Electrostatic analysis","text":"

    This example shows you how to conduct a 3D electrostatic analysis for a unibody part.

    "},{"location":"welsim/get_started/electromagnetics/electrostatic/#specifying-analysis","title":"Specifying analysis","text":"

    In the Properties View of the FEM Project object, you set the Physics Type property to Electromagnetic and Analysis Type to Electrostatic. An Electro-Static analysis is defined as shown in Figure\u00a0below.

    "},{"location":"welsim/get_started/electromagnetics/electrostatic/#preparing-geometry","title":"Preparing geometry","text":"

    Next, you can import the geometry file \u201ch_section_unibody.step\u201d by clicking the Import... command from the Toolbar or Geometry Menu. The imported geometry and material property are shown in Figure\u00a0below.

    "},{"location":"welsim/get_started/electromagnetics/electrostatic/#setting-mesh","title":"Setting mesh","text":"

    To obtain a fine mesh for the analysis, you set the Mesh Settings properties Quadratic to True, and Maximum Size to 3e-3.

    Clicking the Mesh command from the Toolbar or FEM Menu, you can mesh the geometries. There are 34,764 nodes, and 20,657 Tet10 elements generated as shown in Figure\u00a0below.

    "},{"location":"welsim/get_started/electromagnetics/electrostatic/#imposing-conditions","title":"Imposing conditions","text":"

    Next, you impose two boundary conditions, a Ground, and Voltage by clicking the corresponding commands from the Toolbar and Electromagnetic Menu. In the Properties View of the Ground object, holding the Ctrl or Shift key and select left bottom and right top surfaces for the Geometry property, as shown in Figure\u00a0below.

    In the Properties View of Voltage object, set the Voltage value to 5, and scope surfaces for the Geometry property, as shown in Figure\u00a0below.

    "},{"location":"welsim/get_started/electromagnetics/electrostatic/#solving-the-model","title":"Solving the model","text":"

    To solve the model, you can click the Compute command from the Toolbar, FEM Menu, or right-click on the Answers object and select Compute command from context menu. Depending on the complexity of the model, the solving process can be completed in seconds to hours. The Output window displays the solver messages and indicates the status of the solving process. As shown in Figure\u00a0[fig:ch2_start_ex1_output_solver], this model is solved successfully.

    "},{"location":"welsim/get_started/electromagnetics/electrostatic/#evaluating-results","title":"Evaluating results","text":"

    To evaluate the deformation of the structure, you can add a Voltage object to the tree by clicking the Voltage item from the Toolbar, Electromagnetic Menu. Next, double-clicking the result object or clicking the Evaluate item from the Toolbar or FEM Menu, you display the contour in the Graphics window as shown in Figure\u00a0below.

    Adding an electric field result object is similar. Clicking the Electric Field result from Toolbar or Electromagnetic Menu, you insert a Electric Field result object to the tree. Evaluating the default Total Electric Field Type, you obtain the magnitude of the electric field vector contour on the body in the Graphics window. The Maximum and Minimum values of field data are displayed in the Properties View window as shown in Figure\u00a0below.

    Info

    This project file is located at examples/quick_electrostatic_01.wsdb.

    "},{"location":"welsim/get_started/structural/structural_modal/","title":"Structural modal analysis","text":"

    This example shows you how to conduct a 3D transient structural analysis for an assembly.

    "},{"location":"welsim/get_started/structural/structural_modal/#defining-materials","title":"Defining materials","text":"

    In this multi-body analysis, we assign Structural Steel and Aluminum materials to different parts. Since a Structural Steel object is already added as you initialize a FEM Project, you only need to insert an aluminum material object by clicking Add Material from Toolbar or FEM Menu.

    To edit the material properties, you can double-click the Material object, or right-click on the Material object and select the Edit command from the context menu. In the material editor, you select the Library tab > General Materials > Aluminum Alloy, then click Import button or double-click the Aluminum Alloy entry. Click the OK to save and exit the material editing.

    You can rename this new material object to Aluminum by press F2 key or right-clicking.

    "},{"location":"welsim/get_started/structural/structural_modal/#specifying-analysis","title":"Specifying analysis","text":"

    In the Properties View of the FEM Project object, you set the Analysis Type property to Modal. A Modal Structural analysis is defined as shown in Figure\u00a0below.

    "},{"location":"welsim/get_started/structural/structural_modal/#preparing-geometry","title":"Preparing geometry","text":"

    Next, you can import the geometry file \u201ch_section_multibody.step\u201d and assign the materials to the corresponding parts. Three Part objects in the Geometry group represent three bodies in the Graphics window, respectively. You assign the Aluminum material to the Part2, which is the connection body in the middle, the rest bodies are assigned with Structural Steel material.

    "},{"location":"welsim/get_started/structural/structural_modal/#setting-mesh","title":"Setting mesh","text":"

    To obtain a fine mesh for the analysis, you set the Mesh Settings properties Quadratic to True, and Maximum Size to 3e-3, as shown in Figure\u00a0below.

    Clicking the Mesh command from the Toolbar or FEM Menu, you can mesh the geometries. There are 42,329 nodes, and 25,920 Tet10 elements generated as shown in Figure\u00a0below.

    "},{"location":"welsim/get_started/structural/structural_modal/#specifying-contacts","title":"Specifying contacts","text":"

    Next, you need to define two Contact Pairs to bond the three parts into one uni-body for the analysis. Clicking the Add Contact command from the Toolbar or FEM Menu, you add two Contact Pair objects into the tree. You can rename these two objects to Contact1 and Contact2, respectively. Then you select the surfaces for Master and Target Geometry properties.

    "},{"location":"welsim/get_started/structural/structural_modal/#defining-analysis-settings","title":"Defining analysis settings","text":"

    In the Properties View of Study Settings object, you can define the analysis details such as Number of Modes. Here, you can use the default settings as shown in Figure\u00a0below.

    "},{"location":"welsim/get_started/structural/structural_modal/#imposing-boundary-conditions","title":"Imposing boundary conditions","text":"

    In this modal analysis, you impose a Constraint (Fixed Support) boundary condition, which can be processed by clicking the corresponding commands from the Toolbar and Structural Menu. In the Properties View of the Constraint object, select the left bottom surface for the Geometry property.

    "},{"location":"welsim/get_started/structural/structural_modal/#solving-the-model","title":"Solving the model","text":"

    To solve the model, you can click the Compute command from the Toolbar, FEM Menu, or right-click on the Answers object and select Compute command from context menu. Depending on the complexity of the model, the solving process can be completed in seconds to hours. The Output window displays the solver messages and indicates the status of the solving process.

    "},{"location":"welsim/get_started/structural/structural_modal/#evaluating-results","title":"Evaluating results","text":"

    To evaluate the deformation of the structure, you can add a Deformation object to the tree by clicking the Deformation item from the Toolbar, Structural Menu. A result object may provide multiple sub-result types. For example, a Deformation result object allows you to specify one deformation type from the candidates Deformation X, Y, Z, and Total.

    After setting the Type property to Deformation Z, double-clicking on the result object displays the resulting contour in the Graphics window as shown in Figure\u00a0below. You also can click the Evaluate item from the Toolbar or FEM Menu to evaluate the result.

    Info

    This project file is located at examples/quick_structural_modal_solid_01.wsdb.

    "},{"location":"welsim/get_started/structural/structural_static/","title":"Static structural analysis","text":"

    This example shows you how to conduct a 3D static structural analysis for an assembly.

    "},{"location":"welsim/get_started/structural/structural_static/#defining-materials","title":"Defining materials","text":"

    In this multi-body analysis, we assign Structural Steel and Aluminum materials to different parts. Since a Structural Steel object is already added as you initialize a FEM Project, you only need to insert an aluminum material object by clicking Add Material from Toolbar or FEM Menu.

    To edit the material properties, you can double-click the Material object, or right-click on the Material object and select the Edit command from the context menu. In the material editor, you select the Library tab > General Materials > Aluminum Alloy, then click Import button or double-click the Aluminum Alloy entry. The material properties are set as shown in Figure below. Click the OK to save and exit the material editing.

    You can rename this new material object to Aluminum by press F2 key or right-clicking.

    .

    "},{"location":"welsim/get_started/structural/structural_static/#specifying-analysis","title":"Specifying analysis","text":"

    Since the Static Structural analysis is the default settings at WELSIM application, you can keep the default settings as shown in Figure below.

    "},{"location":"welsim/get_started/structural/structural_static/#preparing-geometry","title":"Preparing geometry","text":"

    Next, you can import the geometry file \u201ch_section_multibody.step\u201d and assign the materials to the corresponding parts. As shown in Figure\u00a0below, three Part objects in the Geometry group represent three bodies in the Graphics window, respectively. You assign the Aluminum material to the Part2, which is the connection body in the middle, the rest bodies are assigned with Structural Steel material.

    "},{"location":"welsim/get_started/structural/structural_static/#setting-mesh","title":"Setting mesh","text":"

    To obtain a fine mesh for the analysis, you set the Mesh Settings properties Quadratic to True, and Maximum Size to 5e-3, as shown in Figure\u00a0below.

    Next, you add a Mesh Method object from the Toolbar or FEM Menu. In the property of this object, you select the left body for the Geometry property, and set Maximum Size value to 3e-3, , as shown in Figure\u00a0below.

    Clicking the Mesh command from the Toolbar or FEM Menu, you can mesh the geometries. There are 21,117 nodes, and 12,427 Tet10 elements generated as shown in Figure\u00a0below.

    "},{"location":"welsim/get_started/structural/structural_static/#specifying-contacts","title":"Specifying contacts","text":"

    Next, you need to define two Contact Pairs to bond the three parts into one uni-body for the analysis. Clicking the Add Contact command from the Toolbar or FEM Menu, you add two Contact Pair objects into the tree. You can rename these two objects to Contact1 and Contact2, respectively. Then you select the surfaces for Master and Target Geometry properties as shown in Figures\u00a0below.

    "},{"location":"welsim/get_started/structural/structural_static/#imposing-conditions","title":"Imposing conditions","text":"

    Next, you impose two boundary conditions, a Constraint (Fixed Support) and a Pressure by clicking the corresponding commands from the Toolbar and Structural Menu. In the Properties View of the Constraint object, select the left bottom surface for the Geometry property, as shown in Figure\u00a0below.

    In the Properties View of Pressure object, set the Normal Pressure value to 1e7, and scope the right top surface for the Geometry property, as shown in Figure\u00a0below.

    "},{"location":"welsim/get_started/structural/structural_static/#solving-the-model","title":"Solving the model","text":"

    To solve the model, you can click the Compute command from the Toolbar, FEM Menu, or right-click on the Answers object and select Compute command from context menu. Depending on the complexity of the model, the solving process can be completed in seconds to hours. The Output window displays the solver messages and indicates the status of the solving process. As shown in Figure\u00a0[fig:ch2_start_ex1_output_solver], this model is solved successfully.

    "},{"location":"welsim/get_started/structural/structural_static/#evaluating-results","title":"Evaluating results","text":"

    To evaluate the deformation of the structure, you can add a Deformation object to the tree by clicking the Deformation item from the Toolbar, Structural Menu. A result object may provide multiple sub-result types. For example, a Deformation result object allows you to specify one deformation type from the candidates Deformation X, Y, Z, and Total, as shown in Figure\u00a0below.

    After setting the property Type to Total Deformation, double-clicking on the result object displays the resulting contour in the Graphics window. You can click the Evaluate item from the Toolbar or FEM Menu to evaluate the result.

    Adding a stress result object is similar. Clicking the Stress result from Toolbar or Structural Menu, you insert a stress object to the tree. Evaluating the default von-Mises Stress Type, you obtain the von-Mises stress contour on bodies in the Graphics window. The Maximum and Minimum values of stress data are displayed in the Properties View, Tabular Data, and Chart windows.

    Info

    This project file is located at examples/quick_structural_static_solid_01.wsdb.

    "},{"location":"welsim/get_started/structural/structural_transient/","title":"Transient structural analysis","text":"

    This example shows you how to conduct a 3D transient structural analysis for an assembly.

    "},{"location":"welsim/get_started/structural/structural_transient/#defining-materials","title":"Defining materials","text":"

    In this multi-body analysis, we assign Structural Steel and Aluminum materials to different parts. Since a Structural Steel object is already added as you initialize a FEM Project, you only need to insert an aluminum material object by clicking Add Material from Toolbar or FEM Menu.

    To edit the material properties, you can double-click the Material object, or right-click on the Material object and select the Edit command from the context menu. In the material editor, you select the Library tab > General Materials > Aluminum Alloy, then click Import button or double-click the Aluminum Alloy entry. The material properties are set as shown in Figure\u00a0below. Click the OK to save and exit the material editing.

    You can rename this new material object to Aluminum by press F2 key or right-clicking.

    "},{"location":"welsim/get_started/structural/structural_transient/#specifying-analysis","title":"Specifying analysis","text":"

    In the Properties View of the FEM Project object, you set the Analysis Type property to Transient. A Transient Structural analysis is defined as shown in Figure\u00a0below.

    "},{"location":"welsim/get_started/structural/structural_transient/#preparing-geometry","title":"Preparing geometry","text":"

    Next, you can import the geometry file \u201ch_section_multibody.step\u201d and assign the materials to the corresponding parts. As shown in Figure\u00a0below, three Part objects in the Geometry group represent three bodies in the Graphics window, respectively. You assign the Aluminum material to the Part2, which is the connection body in the middle, the rest bodies are assigned with Structural Steel material.

    "},{"location":"welsim/get_started/structural/structural_transient/#setting-mesh","title":"Setting mesh","text":"

    To obtain a fine mesh for the analysis, you set the Mesh Settings properties Quadratic to True, and Maximum Size to 5e-3, as shown in Figure\u00a0below.

    Next, you add a Mesh Method object from the Toolbar or FEM Menu. In the property of this object, you select the left body for the Geometry property, and set Maximum Size value to 3e-3, as shown in Figure\u00a0below.

    Clicking the Mesh command from the Toolbar or FEM Menu, you can mesh the geometries. There are 21,117 nodes, and 12,427 Tet10 elements generated as shown in Figure\u00a0below.

    "},{"location":"welsim/get_started/structural/structural_transient/#specifying-contacts","title":"Specifying contacts","text":"

    Next, you need to define two Contact Pairs to bond the three parts into one uni-body for the analysis. Clicking the Add Contact command from the Toolbar or FEM Menu, you add two Contact Pair objects into the tree. You can rename these two objects to Contact1 and Contact2, respectively. Then you select the surfaces for Master and Target Geometry properties as shown in Figures\u00a0below.

    Note

    Defining contacts is optional, adding a contact or not is up to your specific model.

    "},{"location":"welsim/get_started/structural/structural_transient/#defining-analysis-settings","title":"Defining analysis settings","text":"

    In this transient analysis, you define 18 steps and set the End Time for each step, as shown in Figure\u00a0below.

    Next, you select the Study Settings object in the tree and set the Substeps property to 18, which determines the total number of substeps of the transient analysis. A screen capture of the defined properties is shown in Figure\u00a0below.

    "},{"location":"welsim/get_started/structural/structural_transient/#imposing-conditions","title":"Imposing conditions","text":"

    Next, you impose two boundary conditions, a Constraint (Fixed Support) and an Acceleration by clicking the corresponding commands from the Toolbar or Structural Menu. In the Properties View of the Constraint object, select the left bottom surface for the Geometry property, as shown in Figure\u00a0below.

    In the Properties View of Acceleration object, set the Acceleration value for the current step, and repeat this value definition for each Step. After defining the acceleration values for all steps, you scope a surface on Part2 for the Geometry property, as shown in Figure\u00a0below.

    "},{"location":"welsim/get_started/structural/structural_transient/#solving-the-model","title":"Solving the model","text":"

    To solve the model, you can click the Compute command from the Toolbar, FEM Menu, or right-click on the Answers object and select Compute command from context menu. Depending on the complexity of the model, the solving process can be completed in seconds to hours. The Output window displays the solver messages and indicates the status of the solving process. As shown in Figure\u00a0below, this model is solved successfully.

    "},{"location":"welsim/get_started/structural/structural_transient/#evaluating-results","title":"Evaluating results","text":"

    To evaluate the deformation of the structure, you can add a Deformation object to the tree by clicking the Deformation item from the Toolbar, Structural Menu. A result object may provide multiple sub-result types. For example, a Deformation result object allows you to specify one deformation type from the candidates Deformation X, Y, Z, and Total.

    After setting the result Type to Deformation Z, double-clicking on the result object displays the resulting contour in the Graphics window as shown in Figure\u00a0below. You can click the Evaluate item from the Toolbar or FEM Menu to evaluate the result.

    Adding a stress result object is similar. Clicking the Stress result from Toolbar or Structural Menu, you insert a stress object to the tree. Evaluating the default von-Mises Stress Type, you obtain the von-Mises stress contour on bodies in the Graphics window as shown in Figure\u00a0below. The Maximum and Minimum values of stress data are displayed in the Properties View, Tabular Data, and Chart windows.

    Info

    This project file is located at examples/quick_structural_transient_solid_01.wsdb.

    "},{"location":"welsim/get_started/thermal/thermal_ss/","title":"Steady-state thermal analysis","text":"

    This example shows you how to conduct a 3D static thermal analysis for an assembly.

    "},{"location":"welsim/get_started/thermal/thermal_ss/#defining-materials","title":"Defining materials","text":"

    In this multi-body analysis, we assign Structural Steel and Aluminum materials to different parts. Since a Structural Steel object is already added as you initialize a FEM Project, you only need to insert an aluminum material object by clicking Add Material from Toolbar or FEM Menu.

    To edit the material properties, you can double-click the Material object, or right-click on the Material object and select the Edit command from the context menu. In the material editor, you select the Library tab > General Materials > Aluminum Alloy, then click Import button or double-click the Aluminum Alloy entry. The material properties are set as shown in Figure\u00a0below. Click the OK to save and exit the material editing.

    You can rename this new material object to Aluminum by press F2 key or right-clicking.

    "},{"location":"welsim/get_started/thermal/thermal_ss/#specifying-analysis","title":"Specifying analysis","text":"

    In the Properties View of the FEM Project object, you set the Physics Type property to Thermal. A Steady-State Thermal analysis is defined as shown in Figure\u00a0below.

    "},{"location":"welsim/get_started/thermal/thermal_ss/#preparing-geometry","title":"Preparing geometry","text":"

    Next, you can import the geometry file \u201ch_section_multibody.step\u201d and assign the materials to the corresponding parts. As shown in Figure, three Part objects in the Geometry group represent three bodies in the Graphics window, respectively. You assign the Aluminum material to the Part2, which is the connection body in the middle, the rest bodies are assigned with Structural Steel material.

    "},{"location":"welsim/get_started/thermal/thermal_ss/#setting-mesh","title":"Setting mesh","text":"

    To obtain a fine mesh for the analysis, you set the Mesh Settings properties Quadratic to True, and Maximum Size to 3e-3.

    Clicking the Mesh command from the Toolbar or FEM Menu, you can mesh the geometries. There are 42,329 nodes, and 25,920 Tet10 elements generated.

    "},{"location":"welsim/get_started/thermal/thermal_ss/#specifying-contacts","title":"Specifying contacts","text":"

    Next, you need to define two Contact Pairs to bond the three parts into one uni-body for the analysis. Clicking the Add Contact command from the Toolbar or FEM Menu, you add two Contact Pair objects into the tree. You can rename these two objects to Contact1 and Contact2, respectively. Then you select the surfaces for Master and Target Geometry properties.

    "},{"location":"welsim/get_started/thermal/thermal_ss/#imposing-boundary-conditions","title":"Imposing boundary conditions","text":"

    Next, you impose four boundary conditions, a Temperature, Heat Flux, Convection, and Radiation by clicking the corresponding commands from the Toolbar or Thermal Menu. In the Properties View of the Temperature object, select a left bottom surface for the Geometry property and set the Temperature value to 0, as shown in Figure\u00a0below.

    In the Properties View of Heat Flux object, set the Heat Flux value to 5e3, and scope a surface for the Geometry property, as shown in Figure\u00a0below.

    In the Properties View of Heat Radiation object, set the Radiation Coefficient value to 1e-6, Ambient Temperature value to 22.3, and scope a surface for the Geometry property, as shown in Figure\u00a0below.

    In the Properties View of Heat Convection object, set the Convection Coefficient value to 1e3 and Ambient Temperature value to 22.3, and scope a surface for the Geometry property, as shown in Figure\u00a0below.

    "},{"location":"welsim/get_started/thermal/thermal_ss/#solving-the-model","title":"Solving the model","text":"

    To solve the model, you can click the Compute command from the Toolbar, FEM Menu, or right-click on the Answers object and select Compute command from context menu. Depending on the complexity of the model, the solving process can be completed in seconds to hours. The Output window displays the solver messages and indicates the status of the solving process. As shown in Figure\u00a0below, this model is solved successfully.

    "},{"location":"welsim/get_started/thermal/thermal_ss/#evaluating-results","title":"Evaluating results","text":"

    To evaluate the deformation of the structure, you can add a Temperature object to the tree by clicking the Temperature item from the Toolbar or Thermal Menu. Next, double-clicking the result object or clicking the Evaluate item from the Toolbar or FEM Menu, you display the result contour in the Graphics window as shown in Figure\u00a0below.

    Info

    This project file is located at examples/quick_thermal_static_solid_01.wsdb.

    "},{"location":"welsim/get_started/thermal/thermal_transient/","title":"Transient thermal analysis","text":"

    This example shows you how to conduct a 3D transient thermal analysis for an assembly.

    "},{"location":"welsim/get_started/thermal/thermal_transient/#defining-materials","title":"Defining materials","text":"

    In this multi-body analysis, we assign Structural Steel and Aluminum materials to different parts. Since a Structural Steel object is already added as you initialize a FEM Project, you only need to insert an aluminum material object by clicking Add Material from Toolbar or FEM Menu.

    To edit the material properties, you can double-click the Material object, or right-click on the Material object and select the Edit command from the context menu. In the material editor, you select the Library tab > General Materials > Aluminum Alloy, then click Import button or double-click the Aluminum Alloy entry. The material properties are set as shown in Figure\u00a0below. Click the OK to save and exit the material editing.

    You can rename this new material object to Aluminum by press F2 key or right-clicking.

    "},{"location":"welsim/get_started/thermal/thermal_transient/#specifying-analysis","title":"Specifying analysis","text":"

    In the Properties View of the FEM Project object, you set the Physics Type property to Thermal and Analysis Type property to Transient. A Transient Thermal analysis is defined as shown in Figure\u00a0below.

    "},{"location":"welsim/get_started/thermal/thermal_transient/#preparing-geometry","title":"Preparing geometry","text":"

    Next, you can import the geometry file \u201ch_section_multibody.step\u201d and assign the materials to the corresponding parts. As shown in Figure, three Part objects in the Geometry group represent three bodies in the Graphics window, respectively. You assign the Aluminum material to the Part2, which is the connection body in the middle, the rest bodies are assigned with Structural Steel material.

    "},{"location":"welsim/get_started/thermal/thermal_transient/#setting-mesh","title":"Setting mesh","text":"

    To obtain a fine mesh for the analysis, you set the Mesh Settings properties Quadratic to True, and Maximum Size to 3e-3.

    Clicking the Mesh command from the Toolbar or FEM Menu, you can mesh the geometries. There are 42,329 nodes, and 25,920 Tet10 elements generated.

    "},{"location":"welsim/get_started/thermal/thermal_transient/#specifying-contacts","title":"Specifying contacts","text":"

    Next, you need to define two Contact Pairs to bond the three parts into one uni-body for the analysis. Clicking the Add Contact command from the Toolbar or FEM Menu, you add two Contact Pair objects into the tree. You can rename these two objects to Contact1 and Contact2, respectively. Then you select the surfaces for Master and Target Geometry properties as shown in Figures\u00a0below.

    "},{"location":"welsim/get_started/thermal/thermal_transient/#defining-analysis-settings","title":"Defining analysis settings","text":"

    In this transient analysis, you define 1 step and set the Current End Time value to 600, as shown in Figure\u00a0below.

    In the Properties View of Study Settings object in the tree, you can use the default settings as shown in Figure\u00a0below.

    "},{"location":"welsim/get_started/thermal/thermal_transient/#imposing-conditions","title":"Imposing conditions","text":"

    Next, you can add an Initial Temperature object from the Toolbar or Thermal Menu. The initial temperature value is 300 as shown in Figure\u00a0below.

    Next, you impose three boundary conditions, a Temperature, Heat Flux, and a Heat Convection by clicking the corresponding commands from the Toolbar and Thermal Menu. In the Properties View of the Temperature object, you select the bottom surface of Part1 for the Geometry property. Next set the Temperature value to 0, and define Initial Status to Equal to Step 1, as shown in Figure\u00a0below.

    In the Properties View of Heat Flux object, set the Heat Flux value to -5000 and Initial Status to Equal to Step 1. Next, you scope a surface on Part1 for the Geometry property, as shown in Figure\u00a0below.

    In the Properties View of Heat Convection object, set the Convection Coefficient value to 1000, Ambient Temperature value to 22.3, and Initial Status to Equal to Step 1. After defining these property values, you scope a surface on Part2 for the Geometry property, as shown in Figure\u00a0below.

    "},{"location":"welsim/get_started/thermal/thermal_transient/#solving-the-model","title":"Solving the model","text":"

    To solve the model, you can click the Compute command from the Toolbar, FEM Menu, or right-click on the Answers object and select Compute command from context menu. Depending on the complexity of the model, the solving process can be completed in seconds to hours. The Output window displays the solver messages and indicates the status of the solving process. As shown messages in Output window, this model is solved successfully.

    "},{"location":"welsim/get_started/thermal/thermal_transient/#evaluating-results","title":"Evaluating results","text":"

    To evaluate the temperature of the model, you can add a Temperature object to the tree by clicking the Temperature item from the Toolbar, Thermal Menu.

    After inserting the result object and settings the Set Number to 15, double-clicking on the result object displays the resulting contour in the Graphics window as shown in Figure\u00a0below. You can click the Evaluate item from the Toolbar or FEM Menu to evaluate the result.

    Info

    This project file is located at examples/quick_thermal_transient_solid_01.wsdb.

    "},{"location":"welsim/material/mat_overview/","title":"Overview","text":"

    Material Module serves as a database for material properties used in analysis projects. The module not only provides a material library but allow you to create a material using the given properties. The properties view of a Material object is the primary user interface designed to let you create, save, and retrieve material models. The well-defined material object can be saved and used in the subsequent projects.

    Note

    The WELSIM Material module and MatEditor share the same features. For the completed and latest content, you can refer to the manual of MatEditor.

    "},{"location":"welsim/material/mat_overview/#graphical-user-interface","title":"Graphical user interface","text":"

    The ease-of-use Material Module contains the following graphical user interface components:

    • Toolbox: provdies two options (Library and Build tabs) for you to edit material data.
    • Library outline pane: lists predefined materials for you to quickly add material data.
    • Property outline pane: shows an outline of the contents of the togglable material properties. You can add a property data entry to the material by toggling on the property entry or remove property by toggling off the property entry.
    • Properties view pane: displays all properties that are going to be added to the Material Object. You can tune the property values at this pane.
    • Table pane: allows you to define and review tabular data for material properies.
    • Chart pane: displays the property tabular data in vivid.
    "},{"location":"welsim/material/mat_overview/#predefined-materials","title":"Predefined materials","text":"

    WELSIM also provide predefined materials, which covers most of commonly used materials. Users can choose these materials and apply to the successive finite element analysis.

    Category Materials General Materials Structural Steel, Stainless Steel, Aluminum Alloy, Concrete, Copper Alloy, Gray Cast Iron, Titanium Alloy Nonlinear Materials Aluminum Alloy NL, Concrete NL, Copper Alloy NL, Stainless Steel NL, Structural Steel NL, Titanium Alloy NL Hyperelastic Materials Elastomer Mooney-Rivlin, Elastomer Neo-Hookean, Elastomer Ogden, Elastomer Yeoh, Neoprene Rubber Thermal Materials Brass, Bronze, Copper, Diamond, Ferrite, Nodular Cast Iron, Solder, Teflon, Tungsten, Wood Electromagnetic Materials SS416, Supermendure Other Materials Water Liquid, Argon, Ash"},{"location":"welsim/material/mat_overview/#material-properties","title":"Material properties","text":"

    The supported material properties are listed in the table below.

    Category Materials Basic Density, Isotropic Thermal Expansion, Isotropic Instantaneous Thermal Expansion, Orthotropic Thermal Expansion, Orthotropic Instantaneous Thermal Expansion, Constant Damping Coefficient Linear Elastic Isotropic Elasticity, Orthotropic Elasticity, Viscoelastic Hyperelastic Test Data Uniaxial Test Data, Biaxial Test Data, Shear Test Data, Volumetric Test Data, SimpleShear Test Data, Uniaxial Tension Test Data, Uniaxial Compression Test Data Hyperelastic Arruda-Boyce, Blatz-Ko, Gent, Mooney-Rivlin 2, Mooney-Rivlin 3, Mooney-Rivlin 5, Mooney-Rivlin 9, Neo-Hookean, Ogden 1st Order, Ogden 2nd Order, Ogden 3rd Order, Polynomial 1st Order, Polynomial 2nd Order, Polynomial 3rd Order, Yeoh 1st Order, Yeoh 2nd Order, Yeoh 3rd Order Plasticity Bilinear Isotropic Hardening, Multilinear Isotropic Hardening, Bilinear Kinematic Hardening, Multilinear Kinematic Hardening, Anand Viscoplasticity Creep Strain Hardening, Time Hardening, Generalized Exponential, Generalized Graham, Generalized Blackburn, Modified Time Hardening, Modified Strain Hardening, Generalized Garofalo, Exponential Form, Norton, Combined Time Hardening, Rational Polynomial, Generalized Time Hardening Visco-elastic Prony Shear Relaxation, Prony Volumetric Relaxation Other Mechanical Strain Life Parameters, Compressive Ultimate Strength, Compressive Yield Strength, LaRc0304 Constants, Orthotropic Strain Limits, Orthotropic Stress Limits, Puck Constants, Tensile Ultimate Strength, Tensile Yield Strength, Tsai-Wu Constants, Shape Memory Effect, Drucker-Prager Strength Piecewise, Drucker-Prager Strength Linear, Ideal Gas EOS, Crushable Foam, Nonlinear Elastic Model Damage, Plakin Special Hardening, Tensile Pressure Failure, Crack Softening Failure Thermal Enthalpy, Isotropic Thermal Conductivity, Orthotropic Thermal Conductivity, Specific Heat Electromagnetics B-H Curve, Isotropic Relative Permeability, Orthotropic Relative Permeability, Isotropic Resistivity, Orthotropic Resistivity"},{"location":"welsim/material/mat_overview/#working-with-material-data","title":"Working with material data","text":""},{"location":"welsim/material/mat_overview/#exporting","title":"Exporting","text":"

    You can export the complete material data to an external XML file. The following format is supported for export:

    • XML in WELSIM Material (MatML 3.1) schema.
    • JSON in WELSIM Material schema.
    • OpenRadioss input script
    "},{"location":"welsim/mesh/mesh_usage/","title":"Usage in WELSIM","text":""},{"location":"welsim/mesh/mesh_usage/#basic-meshing-process","title":"Basic meshing process","text":"

    The following steps provide the fundamental workflow for using the Meshing module as part of a finite element analysis in WELSIM.

    1. Create a finite element project and set the appropriate project type in the Properties of FEM Project object, such as Static Structural.

    2. Define appropriate material data for your analysis. The system provide a Structural Steel material, and you can create a new material object. Double-click, or Right click the material object. The Material Editing workspace appears, where you can add or edit material data as necessary.

    3. Import geometry to your system or build new geometry. Assign the material to the geometry.

    4. Click on the Mesh object in the Tree to access Meshing application functionality and apply mesh controls.

    5. Define loads and boundary conditions. Set up your analysis using that application's tools and features.

    6. You can solve your analysis by clicking solve button.

    7. Review your analysis results.

    Note

    You should save your data periodically (File>Save Project). The data will be saved as a .wsdb file and associated folder.

    "},{"location":"welsim/mesh/meshing/","title":"Meshing Overview","text":""},{"location":"welsim/mesh/meshing/#philosophy","title":"Philosophy","text":"

    The goal of meshing in WELSIM is to provide easy-to-use and stable meshing utilities that will simplify the mesh generation process.

    "},{"location":"welsim/mesh/meshing/#physics-based-meshing","title":"Physics-based meshing","text":"

    The WELSIM mesh generation is set based on the physics and engineering preferences. Particularly, the mesh system targets on the mechanical, thermal and electromagnetics physics.

    "},{"location":"welsim/mesh/meshing/#meshing-application-interface","title":"Meshing application interface","text":"

    The intuitive Meshing applicaiton interface, shown in the figure below, faciliates your use of all meshing controls and settings.

    The funcational elements of the interface are described in the following table.

    Window Component Description Main Menu This menu includes all basic menus such as File and Mesh. Standard Toolbar This toolbar contains commonly used application commands. Graphics Toolbar This toolbar contains commands that control pointer mode or cause an action in the graphics browser. Tree Outline Outline view of the project. Always visible. Location in the outline sets the context for other controls. Provides access to object's context menus. Allows renaming of objects. Establishes what details display in the Details View. Property Details View The Details View corresponds to the Outline selection. Displays a details window on the lower left panel (by default) which contains details about each object in the Outline. Geometry Window (also sometimes called the Graphics window) Displays and manipulates the visual representation of the object selected in the Outline. This window may display: <\\br> 3D Geometry<\\br> 2D/3D Graph<\\br> Spreadsheet<\\br> HTML Pages<\\br> Scale ruler<\\br> Triad control<\\br> Legend<\\br>"},{"location":"welsim/theory/contact/","title":"Structures with contact","text":"

    As contact occurs among multiple bodies, the contact force \\(\\mathbf{t}_{c}\\) is transmitted via the contact surface. The principle equation of the virtual work can be rewritten as follows

    \\[ \\begin{align} \\label{eq:ch5_contact_gov1} \\intop_{^{t'}V}\\thinspace^{t'}\\sigma\\colon\\delta^{t'}\\mathbf{A}_{(L)}d^{t'}v=\\intop_{^{t'}S_{t}}\\thinspace^{t'}\\mathbf{t}\\cdot\\delta\\mathbf{u}d^{t'}s+\\intop_{V}\\thinspace^{t'}\\mathbf{b}\\cdot\\delta\\mathbf{u}d^{t'}v+\\intop_{^{t'}S\\text{c}}\\thinspace^{t'}\\mathbf{t}_{c}[\\delta\\mathbf{u}^{(1)}-\\delta\\mathbf{u}^{(2)}] \\end{align} \\]

    where notation \\(s_{c}\\) represents the contact area, \\(\\mathbf{u}^{(1)}\\) and \\(\\mathbf{u}^{(2)}\\) denotes the displacement of the contact object 1 and 2, respectively.

    In the contact analysis, the surfaces involve contact are paired. One of these surfaces is called the master surface, and another type of surface is target surface. We also assume

    • The target nodes do not penetrate the master surface
    • When contact occurs, the target nodes become the contact position, the master surface and the target surface mutually transmit the contact force and the frictional force through the points of contact.

    The governing equations with contact term can be reduced to the finite element formation

    \\[ \\intop_{^{t'}S_{c}}\\thinspace^{t'}\\mathbf{t}_{c}[\\delta\\mathbf{u}^{(1)}-\\delta\\mathbf{u}^{(2)}]\\approx\\delta\\mathbf{UK}_{C}\\triangle\\mathbf{U}+\\delta\\mathbf{UF}_{C} \\]

    where \\(\\mathbf{K}_{c}\\) and \\(\\mathbf{F}_{c}\\) are contact rigid matrix, and the contact forces, respectively.

    Remember that we introduced total Lagrange and update Lagrange methods, those formulation can be extended with the consideration of contact factors. The total Lagrange and updated Lagrange formulation with contact terms are given below

    \\[ \\delta\\mathbf{U}^{T}(_{0}^{t}\\mathbf{K}_{L}+_{0}^{t}\\mathbf{K}_{NL}+\\mathbf{K}_{c})\\triangle\\mathbf{U}=\\delta\\mathbf{U}^{T}\\thinspace_{0}^{t'}\\mathbf{F}-\\delta\\mathbf{U}^{T}\\thinspace_{0}^{t}\\mathbf{Q}+\\delta\\mathbf{U}^{T}\\mathbf{F}_{c} \\] \\[ \\delta\\mathbf{U}^{T}(_{t}^{t}\\mathbf{K}_{L}+_{t}^{t}\\mathbf{K}_{NL}+\\mathbf{K}_{c})\\triangle\\mathbf{U}=\\delta\\mathbf{U}^{T}\\thinspace_{t}^{t'}\\mathbf{F}-\\delta\\mathbf{U}^{T}\\thinspace_{t}^{t}\\mathbf{Q}+\\delta\\mathbf{U}^{T}\\mathbf{F}_{c} \\]"},{"location":"welsim/theory/electromagnetic/","title":"Electromagnetic analysis","text":"

    This section discuss the electromagnetic theories that are applied in the WELSIM application.

    "},{"location":"welsim/theory/electromagnetic/#electromagnetic-field-fundamentals","title":"Electromagnetic field fundamentals","text":"

    The electromagnetic fields are governed by the well-known Maxwell's equations\u00a0\\(\\eqref{eq:ch4_theory_maxwell1}\\)-\\(\\eqref{eq:ch4_theory_maxwell4}\\)12.

    \\[ \\begin{align} \\label{eq:ch4_theory_maxwell1} \\nabla\\times\\mathbf{H}=\\mathbf{J}+\\dfrac{\\partial\\mathbf{D}}{\\partial t}=\\mathbf{J}_{S}+\\mathbf{J}_{e}+\\mathbf{J}_{V}+\\dfrac{\\partial\\mathbf{D}}{\\partial t} \\end{align} \\] \\[ \\begin{align} \\label{eq:ch4_theory_maxwell2} \\nabla\\times\\mathbf{E}=-\\dfrac{\\partial\\mathbf{B}}{\\partial t} \\end{align} \\] \\[ \\begin{align} \\label{eq:ch4_theory_maxwell3} \\nabla\\cdot\\mathbf{B}=0 \\end{align} \\] \\[ \\begin{align} \\label{eq:ch4_theory_maxwell4} \\nabla\\cdot\\mathbf{D}=\\rho \\end{align} \\]

    where \\(\\mathbf{H}\\) is the magnetic field intensity vector, \\(\\mathbf{J}\\) is total current density vector, \\(\\mathbf{J}_{s}\\) is the applied source current density vector, \\(\\mathbf{J}_{e}\\) is the induced eddy current density vector, and \\(\\mathbf{J}_{VS}\\) is the velocity current density vector, \\(\\mathbf{D}\\) is the electric flux density vector (this term is also called electric displacement), \\(\\mathbf{E}\\) is the electric field intensity vector, \\(\\mathbf{B}\\) is the magnetic flux density vector, and \\(\\rho\\) is the electric charge density.

    The above field governing equations contian the constitutive relations:

    \\[ \\mathbf{D}=\\epsilon\\mathbf{E}+\\mathbf{P} \\]

    and

    \\[ \\mathbf{B}=\\mu\\mathbf{H} \\]

    where \\(\\mathbf{P}\\) is the polarization density, and \\(\\mathbf{M}\\) is t he magnetization. In many materials the polarization density can be approximated as a scalar multiple of the electric field. \\(\\mu\\) is the magnetic permeability matrix. For example, if the magnetic permeability is a function of temperature,

    \\[ \\mu=\\mu_{0}\\left[\\begin{array}{ccc} \\mu_{rx} & 0 & 0\\\\ 0 & \\mu_{ry} & 0\\\\ 0 & 0 & \\mu_{rz} \\end{array}\\right] \\]

    For the permanent magnets, the constitutive relation of magnetic field becomes

    \\[ \\mathbf{B}=\\mu\\mathbf{H}+\\mu_{0}\\mathbf{M}_{0} \\]

    where \\(\\mathbf{M}_{0}\\) is the remanet intrinsic magnetization vector.

    Similarly, the consitutive relations for the related electric fields are:

    \\[ \\mathbf{J}=\\sigma[\\mathbf{E}+\\mathbf{v}\\times\\mathbf{B}] \\] \\[ \\sigma=\\left[\\begin{array}{ccc} \\sigma_{xx} & 0 & 0\\\\ 0 & \\sigma_{yy} & 0\\\\ 0 & 0 & \\sigma_{zz} \\end{array}\\right] \\] \\[ \\epsilon=\\left[\\begin{array}{ccc} \\epsilon_{xx} & 0 & 0\\\\ 0 & \\epsilon_{yy} & 0\\\\ 0 & 0 & \\epsilon_{zz} \\end{array}\\right] \\]

    where \\(\\sigma\\) is the electrical conductivity matrix, \\(\\epsilon\\) is the permittivity matrix, and \\(v\\) is the velocity vector.

    "},{"location":"welsim/theory/electromagnetic/#electrostatics","title":"Electrostatics","text":"

    The WELSIM application introduces electric scalar potential to solve the electrostatic problems. When the time-derivetive of magnetic flux density is neglected from the full Maxwell's equations. The governing equations are reduced to

    \\[ \\begin{align} \\label{eq:ch4_theory_govern_eqn_electrostatic} \\nabla\\times\\mathbf{H}=\\mathbf{J}+\\dfrac{\\partial\\mathbf{D}}{\\partial t} \\end{align} \\] \\[ \\nabla\\times\\mathbf{E}=\\mathbf{0} \\] \\[ \\nabla\\cdot\\mathbf{B}=0 \\] \\[ \\nabla\\cdot\\mathbf{D}=\\rho \\]

    Since the electric field \\(\\mathbf{E}\\) is irrotational and can be expressed as the function of electric scalar potential

    \\[ \\mathbf{E}=-\\nabla \\varphi \\]

    where \\(\\varphi\\) is the electric scalar potential and has units of Volts in the SI system. Inserting this definition into the Gauss's Law gives:

    \\[ -\\nabla \\cdot \\epsilon\\nabla\\varphi = \\rho - \\nabla \\cdot \\mathbf{P} \\]

    which is Poisson's equation for the electric potential , where we have assumed a linear constitutive relation between \\(\\mathbf{D}\\) and \\(\\mathbf{E}\\) of the form \\(\\mathbf{D}=\\epsilon\\mathbf{E}+\\mathbf{P}\\).

    "},{"location":"welsim/theory/electromagnetic/#boundary-conditions","title":"Boundary Conditions","text":"

    For an electric material interface, the continuious conditions for \\(\\mathbf{E}\\), \\(\\mathbf{D}\\), and \\(\\mathbf{J}\\) are

    \\[ E_{t1}-E_{t2}=0 \\] \\[ J_{1n}+\\dfrac{\\partial D_{1n}}{\\partial t}=J_{2n}+\\dfrac{\\partial D_{2n}}{\\partial t} \\] \\[ D_{1n}-D_{2n}=\\rho_{s} \\]

    where \\(E_{t}\\) is the tangential components of \\(\\mathbf{E}\\), \\(J_{n}\\) is the normal components of \\(\\mathbf{J}\\), \\(D_{n}\\) is the normal components of \\(\\mathbf{D}\\), and \\(\\rho_{s}\\) is the surface charge density.

    Since the solutons to the governing equation are non-unique, we must impose a Dirichlet boundary condition at least at one node in the domain to get the physical solution. The Dirichlet condition could be a fixed piecewise voltage value on certain nodes. In addition, the normal derivative boundary condition \\(\\hat{n}\\cdot\\mathbf{D}\\) such as surface charge density can be imposed on the boundary.

    "},{"location":"welsim/theory/electromagnetic/#matrix-forms","title":"Matrix Forms","text":"

    The electric scalar potential algorithm is applied in the WELSIM application for solving electrostatic problems. The governing equations are reduced to the following:

    \\[ -\\nabla\\cdot\\left(\\epsilon\\nabla V\\right)=\\rho \\]

    The matrix equation for an electrostatic analysis is derived from Equation \\(\\eqref{eq:ch4_theory_govern_eqn_electrostatic}\\):

    \\[ \\left[K^{VS}\\right]\\left\\{ V_{e}\\right\\} =\\left\\{ L_{e}\\right\\} \\]

    where

    \\[ \\left[K^{VS}\\right]=\\intop_{V}\\left(\\nabla\\left\\{ N\\right\\} ^{T}\\right)^{T}\\epsilon\\left(\\nabla\\left\\{ N\\right\\} ^{T}\\right)dV \\] \\[ \\left\\{ L_{e}\\right\\} =\\left\\{ L_{e}^{n}\\right\\} +\\left\\{ L_{e}^{c}\\right\\} +\\left\\{ L_{e}^{SC}\\right\\} \\] \\[ \\left\\{ L_{e}^{c}\\right\\} =\\int_{V}\\rho\\left\\{ N\\right\\} ^{T}dV \\] \\[ \\left\\{ L_{e}^{sc}\\right\\} =\\int_{V}\\rho_{s}\\left\\{ N\\right\\} ^{T}dV \\]"},{"location":"welsim/theory/electromagnetic/#vector-magnetic-potential","title":"Vector magnetic potential","text":"

    The WELSIM application applies the vector magnetic potential method for the magentostatic analysis. Considering the neglected electric displacement currents, the full Maxwell's equations can be reduced to

    \\[ \\nabla\\times\\mathbf{H}=\\mathbf{J} \\] \\[ \\nabla\\times\\mathbf{E}=-\\dfrac{\\partial\\mathbf{B}}{\\partial t} \\] \\[ \\nabla\\cdot\\mathbf{B}=0 \\]

    A numerical solution can be achieved by introducing potentials to the governing equations. The proposed magnetic vector potential\u00a0\\(\\mathbf{A}\\) and electric scalar potential\u00a0\\(V\\) have the following characteristics:

    \\[ \\mathbf{B}=\\nabla\\times\\mathbf{A} \\] \\[ \\mathbf{E}=-\\dfrac{\\partial\\mathbf{A}}{\\partial t}-\\nabla V \\]

    In addition, the Coulomb gauge condition is introduced to ensure the uniqueness of the vector potential, as shown in the following equations.

    \\[ \\nabla\\times\\mathbf{v}\\nabla\\times\\mathbf{A}-\\nabla v_{e}\\nabla\\cdot\\mathbf{A}+\\sigma\\left\\{ \\dfrac{\\partial\\mathbf{A}}{\\partial t}\\right\\} +\\sigma\\nabla V-\\mathbf{v}\\times\\sigma\\nabla\\times\\mathbf{A}=\\mathbf{0} \\] \\[ \\nabla\\cdot\\left(\\sigma\\left\\{ \\dfrac{\\partial\\mathbf{A}}{\\partial t}\\right\\} -\\sigma\\nabla V+\\mathbf{v}\\times\\sigma\\nabla\\times\\mathbf{A}\\right)=\\mathbf{0} \\] \\[ \\nabla\\times\\mathbf{v}\\nabla\\times\\mathbf{A}-\\nabla v_{e}\\nabla\\cdot\\mathbf{A}=\\mathbf{J}_s+\\nabla\\times\\dfrac{1}{\\mathbf{v}_{0}}\\mathbf{v}\\mathbf{M}_{0} \\]

    where matrix invarient \\(v_{e}\\) is \\(v_{e}=\\frac{1}{3}\\mathrm{tr}(v)=\\frac{1}{3}(v_{11}+v_{22}+v_{33})\\).

    "},{"location":"welsim/theory/electromagnetic/#edge-element-magnetic-vector-potential","title":"Edge-element magnetic vector potential","text":"

    Due to the limitation of node-based vector magnetic potential algorithm2, WELSIM application uses the edge-based finite element for the magnetic vector potential algorithm.

    The governing equation for the edge finite element method is given below.

    \\[ \\nabla\\times\\mathbf{v}\\nabla\\times\\mathbf{A}+\\sigma\\left\\{ \\dfrac{\\partial\\mathbf{A}}{\\partial t}+\\nabla V\\right\\} +\\epsilon\\left(\\left\\{ \\dfrac{\\partial^{2}\\mathbf{A}}{\\partial t^{2}}\\right\\} +\\nabla\\left\\{ \\dfrac{\\partial V}{\\partial t}\\right\\} \\right)=\\mathbf{0} \\] \\[ \\nabla\\cdot\\left(\\sigma\\left(\\left\\{ \\dfrac{\\partial\\mathbf{A}}{\\partial t}\\right\\} +\\nabla V\\right)+\\epsilon\\left(\\left\\{ \\dfrac{\\partial^{2}\\mathbf{A}}{\\partial t^{2}}\\right\\} +\\nabla\\left\\{ \\dfrac{\\partial V}{\\partial t}\\right\\} \\right)\\right)=\\mathbf{0} \\] \\[ \\nabla\\times\\mathbf{v}\\nabla\\times\\mathbf{A}=\\mathbf{J}_{s}+\\nabla\\times\\dfrac{1}{\\mathbf{v}_{0}}\\mathbf{v}\\mathbf{M}_{0} \\]

    The uniqueness of these equations is ensured by the tree gauging procedure, which sets the edge-flux degrees of freedom related to the spanning tree of the finite element mesh to zero.

    1. John D. Jackson, Classical Electrodynamics, 3rd edition, Wiley.\u00a0\u21a9

    2. Jian-Ming Jin, The Finite Element Method in Electromagnetics, 2nd edition, Wiley-IEEE Press.\u00a0\u21a9\u21a9

    "},{"location":"welsim/theory/elements/","title":"Element library","text":"

    The WELSIM application supports several types of finite elements. This section discuss the details of element that is used in the program.

    Element type Finite element type Description Plane element (Shell) Tri3 Three node triangular element Plane element (Shell) Tri6 Six node triangular element(quadratic) Solid element Tet4 Four node tetrahedral element Solid element Tet10 Ten node tetrahedral element(quadratic)

    The element groups shown in Table\u00a0[tab:ch4_theory_elem_types] can be used for engineering analysis. The schematic views and the surface definition of those elements are given in Figures\u00a0[fig:ch4_theory_elem_views], [fig:ch4_theory_elem_triangles], and [fig:ch4_theory_elem_tet].

    Surface No. Linear Quadratic 1 1-2-3 [front] 1-6-2-4-3-5 [front] 2 3-2-1 [back] 3-4-2-6-1-5 [back]

    Surface No. Linear Quadratic 1 1-2-3 1-7-2-5-3-6 2 1-2-4 1-7-2-9-4-8 3 2-3-4 2-5-3-10-4-9 4 3-1-4 3-6-1-10-4-8"},{"location":"welsim/theory/geometricnl/","title":"Structures with geometric nonlinearity","text":"

    In the analysis of finite deformation problems, the principle equation of virtual work becomes a nonlinear equation regarding the displacement-strain relation. To solve the nonlinear equation, an iterative algorithm is generally applied. When implementing an incremental analysis for a finite deformation problem, whether to refer to the initial status as a reference layout, or refer to the starting point of the increments can be selected. The former is called the total Lagrange method, and the latter is called the updated Lagrange method. Both the total Lagrange and updated Lagrange methods are available in the program. This section discusses the various geometrically nonlinear options available, including the large strain.

    "},{"location":"welsim/theory/geometricnl/#decomposition-of-increments-of-virtual-work-equation","title":"Decomposition of increments of virtual work equation","text":"

    Given the solid deformation at time t is known, the status at time t'=t+\\triangle t is unknown. The equilibrium equation, dynamic boundary condition, and external boundary condition can be expressed as

    \\[ \\begin{align} \\label{eq:ch5_nonlinear_gov1} \\nabla_{t'\\mathbf{x}}\\cdot^{t'}\\sigma+^{t'}\\mathbf{b}=0\\quad\\text{in}V \\end{align} \\] \\[ ^{t'}\\sigma\\cdot^{t'}\\mathbf{n}=^{t'}\\mathbf{t}\\quad\\mathrm{on}\\thinspace^{t'}S \\] \\[ ^{t'}\\mathbf{u}=^{t'}\\bar{\\mathbf{u}} \\]

    where \\(^{t'}\\sigma\\), \\(^{t'}\\mathbf{b}\\), \\(^{t'}\\mathbf{n}\\), \\(^{t'}\\mathbf{t}\\), \\(^{t'}\\mathbf{u}\\) are the Cauchy stress, body force, outward normal vector of the object's surface, fixed surface force, and fixed displacement in each time t'.

    "},{"location":"welsim/theory/geometricnl/#principle-of-virtual-work","title":"Principle of virtual work","text":"

    The principle of virtual work to the equation \\(\\eqref{eq:ch5_nonlinear_gov1}\\) is

    \\[ \\begin{align} \\label{eq:ch5_nonlinear_gov2} \\int_{^{t'}V}^{t'}\\sigma:\\delta^{t'}\\mathbf{A}_{(L)}d^{t'}v=\\int_{^{t'}S_{t}}^{t'}\\mathbf{t}\\cdot\\delta\\mathbf{u}d^{t'}s+\\int_{V}^{t'}\\mathbf{b}\\cdot\\delta\\mathbf{u}d^{t'}v \\end{align} \\]

    where \\(^{t'}\\mathbf{A}_{(L)}\\) is the linear portion of the Almansi strain tensor and can be calculated by

    \\[ ^{t'}\\mathbf{A}_{(L)}=\\dfrac{1}{2}\\{\\dfrac{\\partial^{t'}\\mathbf{u}}{\\partial^{t'}\\mathbf{x}}+(\\dfrac{\\partial^{t'}\\mathbf{u}}{\\partial^{t'}\\mathbf{x}})^{T}\\} \\]

    The equation \\(\\eqref{eq:ch5_nonlinear_gov2}\\) needs to be solved referring to layout V at time 0, or layout \\(^{t}v\\) at time t. The following sections will introduce these two algorithms: total Lagrange method and updated Lagrange method, respectively.

    "},{"location":"welsim/theory/geometricnl/#formulation-of-total-lagrange-algorithm","title":"Formulation of total lagrange algorithm","text":"

    The principle equation of the virtual work at time t' assuming the initial layout of time 0 is the reference domain, which is shown below.

    \\[ \\begin{align} \\label{eq:ch5_nonlinear_total_lag_gov1} \\intop_{V}\\thinspace_{0}^{t'}\\mathbf{S}:\\delta_{0}^{t'}\\mathbf{E}dV=^{t'}\\delta\\mathbf{R} \\end{align} \\] \\[ \\begin{align} \\label{eq:ch5_nonlinear_total_lag_gov2} ^{t'}\\delta\\mathbf{R}=\\intop_{S_{t}}\\thinspace_{0}^{t'}\\mathbf{t}\\cdot\\delta dS+\\intop_{V}\\thinspace_{0}^{t'}\\mathbf{b}\\cdot\\delta\\mathbf{u}dV \\end{align} \\]

    where \\(_{0}^{t'}\\mathbf{S}\\) and \\(_{0}^{t'}\\mathbf{E}\\) are the 2nd order Piola-Kirchhoff stress tensor and the Green-Lagrange strain tensor at time t', respectively. The initial domain at time 0 is called the reference domain. The body force \\(_{0}^{t'}\\mathbf{b}\\) and nominal surface force vector \\(_{0}^{t'}\\mathbf{t}\\) are

    \\[ _{0}^{t'}\\mathbf{t}=\\dfrac{d^{t'}s}{dS}\\thinspace^{t'}\\mathbf{t} \\] \\[ _{0}^{t'}\\mathbf{b}=\\dfrac{d^{t'}v}{dV}\\thinspace^{t'}\\mathbf{b} \\]

    The Green-Lagrange strain tensor at time t is defined by

    \\[ _{0}^{t}\\mathbf{E}=\\dfrac{1}{2}\\{\\dfrac{\\partial^{t}\\mathbf{u}}{\\partial\\mathbf{X}}+(\\dfrac{\\partial^{t}\\mathbf{u}}{\\partial\\mathbf{X}})^{T}+(\\dfrac{\\partial^{t}\\mathbf{u}}{\\partial\\mathbf{X}})^{T}\\cdot\\dfrac{\\partial^{t}\\mathbf{u}}{\\partial\\mathbf{X}}\\} \\]

    Then the displacement \\(^{t'}\\mathbf{u}\\) and 2nd order Piola-Kirchhoff stress \\(_{0}^{t'}\\mathbf{S}\\) at time t' are

    \\[ \\begin{align} \\label{eq:ch5_nonlinear_total_lag_gov3} ^{t'}\\mathbf{u}=^{t}\\mathbf{u}+\\triangle\\mathbf{u} \\end{align} \\] \\[ \\begin{align} \\label{eq:ch5_nonlinear_total_lag_gov4} _{0}^{t'}\\mathbf{S}=_{0}^{t}\\mathbf{S}+\\triangle\\mathbf{S} \\end{align} \\]

    Similarly, the incremental Green-Lagrange strain can be defined as

    \\[ \\begin{align} \\label{eq:ch5_nonlinear_total_lag_gov5} ^{t'}\\mathbf{E}=^{t}\\mathbf{E}+\\triangle\\mathbf{E} \\end{align} \\] \\[ \\begin{align} \\label{eq:ch5_nonlinear_total_lag_gov6} \\triangle\\mathbf{E}=\\triangle\\mathbf{E}_{L}+\\triangle\\mathbf{E}_{NL} \\end{align} \\]

    where

    \\[ \\triangle\\mathbf{E}_{L}=\\dfrac{1}{2}\\{\\dfrac{\\partial\\triangle\\mathbf{u}}{\\partial\\mathbf{X}}+(\\dfrac{\\partial\\triangle\\mathbf{u}}{\\partial\\mathbf{X}})^{T}+(\\dfrac{\\partial\\triangle\\mathbf{u}}{\\partial\\mathbf{X}})^{T}\\cdot\\dfrac{\\partial^{t}\\mathbf{u}}{\\partial\\mathbf{X}}+(\\dfrac{\\partial^{t}\\mathbf{u}}{\\partial\\mathbf{X}})^{T}\\cdot\\dfrac{\\partial\\triangle\\mathbf{u}}{\\partial\\mathbf{X}}\\} \\] \\[ \\triangle\\mathbf{E}_{NL}=\\dfrac{1}{2}(\\dfrac{\\partial\\triangle\\mathbf{u}}{\\partial\\mathbf{X}})^{T}\\cdot\\dfrac{\\partial\\triangle\\mathbf{u}}{\\partial\\mathbf{X}} \\]

    Substituting equations \\(\\eqref{eq:ch5_nonlinear_total_lag_gov3}\\), \\(\\eqref{eq:ch5_nonlinear_total_lag_gov4}\\), \\(\\eqref{eq:ch5_nonlinear_total_lag_gov5}\\), and \\(\\eqref{eq:ch5_nonlinear_total_lag_gov6}\\) into governing equations \\(\\eqref{eq:ch5_nonlinear_total_lag_gov1}\\) and \\(\\eqref{eq:ch5_nonlinear_total_lag_gov2}\\), we have

    \\[ \\intop_{v}\\triangle\\mathbf{S}:(\\delta\\triangle\\mathbf{E}_{L}+\\delta\\triangle\\mathbf{E}_{NL})dV+\\intop_{V}\\thinspace_{0}^{t}\\mathbf{S}\\colon\\delta\\triangle\\mathbf{E}_{NL}dV=^{t'}\\delta\\mathbf{R}-\\intop_{V}\\thinspace_{0}^{t}\\mathbf{S}:\\delta\\triangle\\mathbf{E}_{L}dV \\]

    where \\(\\triangle\\mathbf{S}\\) is assumed to be

    \\[ \\triangle\\mathbf{S}=_{0}^{t}\\mathbf{C}\\colon\\triangle\\mathbf{E}_{L} \\]

    then we have

    \\[ \\begin{align} \\label{eq:ch5_nonlinear_total_lag_gov7} \\intop_{v}(\\mathbf{C}\\colon\\triangle\\mathbf{E}):\\delta\\triangle\\mathbf{E}_{L}dV+\\intop_{V}\\thinspace_{0}^{t}\\mathbf{S}\\colon\\delta\\triangle\\mathbf{E}_{NL}dV=^{t'}\\delta\\mathbf{R}-\\intop_{V}\\thinspace_{0}^{t}\\mathbf{S}:\\delta\\triangle\\mathbf{E}_{L}dV \\end{align} \\]

    Equation \\(\\eqref{eq:ch5_nonlinear_total_lag_gov7}\\) can be discreted to finite element formulation

    \\[ \\delta\\mathbf{U}^{T}(_{0}^{t}\\mathbf{K}_{L}+{}_{0}^{t}\\mathbf{K}_{NL})\\triangle\\mathbf{U}=\\delta\\mathbf{U}^{T}\\thinspace_{0}^{t'}\\mathbf{F}-\\delta\\mathbf{\\mathbf{U}}^{T}\\thinspace_{0}^{t'}\\mathbf{Q} \\]

    where \\(_{0}^{t}\\mathbf{K}_{L}\\), \\(_{0}^{t}\\mathbf{K}_{NL}\\), \\(_{0}^{t'}\\mathbf{F}\\), \\(_{0}^{t}\\mathbf{Q}\\) are the initial material stiffness matrix, initial geometric stiffness (stress) matrix, external force vector, and internal force vector, respectively. The recursive algorithm to calculate the deformation status at time t' from time t is given:

    Step 1: i = 0

    \\[ \\quad\\quad_{0}^{t'}\\mathbf{K}^{(0)}=_{0}^{t}\\mathbf{K}_{L}+_{0}^{t}\\mathbf{K}_{NL} \\] \\[ \\quad\\quad_{0}^{t'}\\mathbf{Q}^{(0)}=_{0}^{t}\\mathbf{Q} \\] \\[ \\quad\\quad^{t'}\\mathbf{U}^{(0)}=^{t}\\mathbf{U} \\]

    Step 2:

    \\[ \\quad\\quad_{0}^{t'}\\mathbf{K}^{(i)}\\triangle\\mathbf{U}^{(i)}=_{0}^{t'}\\mathbf{F}-_{0}^{t'}\\mathbf{Q}^{(i-1)} \\]

    Step 3:

    \\[ \\quad\\quad^{t'}\\mathbf{U}^{(i)}=^{t'}\\mathbf{U}^{(i-1)}+\\triangle\\mathbf{U}^{(i)} \\]"},{"location":"welsim/theory/geometricnl/#formulation-of-updated-lagrange-algorithm","title":"Formulation of updated lagrange algorithm","text":"

    In addition to the total Lagrange algorithm, the updated Lagrange algorithm is also widely applied in the nonlinear structural model computation. The principle virtual work equation at time t' uses the current domain at time t as reference domain.

    \\[ \\begin{align} \\label{eq:ch5_nonlinear_updated_lag_gov1} \\intop_{V}\\thinspace_{t}^{t'}\\mathbf{S}:\\delta_{t}^{t'}\\mathbf{E}dV=^{t'}\\delta\\mathbf{R} \\end{align} \\] \\[ \\begin{align} \\label{eq:ch5_nonlinear_updated_lag_gov2} ^{t'}\\delta\\mathbf{R}=\\intop_{S_{t}}\\thinspace_{t}^{t'}\\mathbf{t}\\cdot\\delta dS+\\intop_{V}\\thinspace_{t}^{t'}\\mathbf{b}\\cdot\\delta\\mathbf{u}dV \\end{align} \\]

    where

    \\[ _{t}^{t'}\\mathbf{t}=\\dfrac{d^{t'}s}{d^{t}s}\\thinspace^{t'}\\mathbf{t} \\] \\[ _{t}^{t'}\\mathbf{b}=\\dfrac{d^{t'}v}{d^{t}v}\\thinspace^{t'}\\mathbf{b} \\]

    The tensors \\(_{t}^{t'}\\mathbf{S}\\), \\(_{t}^{t'}\\mathbf{E}\\) and vectors \\(_{t}^{t'}\\mathbf{t}\\), \\(_{t}^{t'}\\mathbf{b}\\) are using the current time domain t as the reference domain. Therefore, the Green-Lagrange strain does not contain the initial displacement (the displacement at the time t) \\(^{t}\\mathbf{u}\\);

    \\[ \\begin{align} \\label{eq:ch5_nonlinear_updated_lag_gov3} _{t}^{t'}\\mathbf{E}=\\triangle_{t}\\mathbf{E}_{L}+\\triangle_{t}\\mathbf{E}_{NL} \\end{align} \\]

    where

    \\[ \\begin{align} \\label{eq:ch5_nonlinear_updated_lag_gov4} \\triangle_{t}\\mathbf{E}_{L}=\\dfrac{1}{2}\\{\\dfrac{\\partial\\triangle\\mathbf{u}}{\\partial^{t}x}+(\\dfrac{\\partial\\triangle\\mathbf{u}}{\\partial^{t}x})^{T}\\} \\end{align} \\] \\[ \\begin{align} \\label{eq:ch5_nonlinear_updated_lag_gov5} \\triangle_{t}\\mathbf{E}_{NL}=\\dfrac{1}{2}(\\dfrac{\\partial\\triangle\\mathbf{u}}{\\partial^{t}x})^{T}\\cdot\\dfrac{\\partial\\triangle\\mathbf{u}}{\\partial^{t}x} \\end{align} \\]

    Similarly,

    \\[ _{t}^{t'}\\mathbf{S}=_{t}^{t}\\mathbf{S}+\\triangle_{t}\\mathbf{S} \\]

    Substituting equations \\(\\eqref{eq:ch5_nonlinear_updated_lag_gov3}\\) and \\(\\eqref{eq:ch5_nonlinear_updated_lag_gov2}\\) into governing equations \\(\\eqref{eq:ch5_nonlinear_updated_lag_gov1}\\), we have

    \\[ \\intop_{^{t}v}\\triangle_{t}\\mathbf{S}:(\\delta\\triangle_{t}\\mathbf{E}_{L}+\\delta\\triangle_{t}\\mathbf{E}_{NL})d^{t}v+\\intop_{V}\\thinspace_{t}^{t}\\mathbf{S}\\colon\\delta\\triangle_{t}\\mathbf{E}_{NL}d^{t}v=^{t'}\\delta\\mathbf{R}-\\intop_{^{t}v}\\thinspace_{t}^{t}\\mathbf{S}:\\delta\\triangle_{t}\\mathbf{E}_{L}d^{t}v \\]

    where \\(\\triangle_{t}\\mathbf{S}\\) is assumed to be

    \\[ \\triangle_{t}\\mathbf{S}=_{t}^{t}\\mathbf{C}\\colon\\triangle_{t}\\mathbf{E}_{L} \\]

    then we have

    \\[ \\begin{align} \\label{eq:ch5_nonlinear_updated_lag_gov7} \\intop_{v}(\\mathbf{C}\\colon\\triangle t\\mathbf{E}_{L}):\\delta\\triangle_{t}\\mathbf{E}_{L}dV+\\intop_{V}\\thinspace_{t}^{t}\\mathbf{S}\\colon\\delta\\triangle_{t}\\mathbf{E}_{NL}dV=^{t'}\\delta\\mathbf{R}-\\intop_{V}\\thinspace_{t}^{t}\\mathbf{S}:\\delta\\triangle_{t}\\mathbf{E}_{L}dV \\end{align} \\]

    Equation \\(\\eqref{eq:ch5_nonlinear_updated_lag_gov7}\\) can be discreted to finite element formulation

    \\[ \\delta\\mathbf{U}^{T}(_{t}^{t}\\mathbf{K}_{L}+{}_{t}^{t}\\mathbf{K}_{NL})\\triangle\\mathbf{U}=\\delta\\mathbf{U}^{T}\\thinspace_{t}^{t'}\\mathbf{F}-\\delta\\mathbf{\\mathbf{U}}^{T}\\thinspace_{t}^{t'}\\mathbf{Q} \\]

    where \\(_{t}^{t}\\mathbf{K}_{L}\\), \\(_{t}^{t}\\mathbf{K}_{NL}\\), \\(_{t}^{t'}\\mathbf{F}\\), \\(_{t}^{t}\\mathbf{Q}\\) are the initial material stiffness matrix, initial geometric stiffness (stress) matrix, external force vector, and internal force vector, respectively. The recursive algorithm to calculate the deformation status at time t' from time t is given:

    Step 1: i = 0

    \\[ \\quad\\quad_{t}^{t'}\\mathbf{K}^{(i)}=_{t}^{t}\\mathbf{K}_{L}+_{t}^{t}\\mathbf{K}_{NL} \\] \\[ \\quad\\quad_{t}^{t'}\\mathbf{Q}^{(i)}=_{t}^{t}\\mathbf{Q} \\] \\[ \\quad\\quad^{t'}\\mathbf{U}^{(i)}=^{t}\\mathbf{U} \\]

    Step 2:

    \\[ \\quad\\quad_{0}^{t'}\\mathbf{K}^{(i)}\\triangle\\mathbf{U}^{(i)}=_{0}^{t'}\\mathbf{F}-_{0}^{t'}\\mathbf{Q}^{(i-1)} \\]

    Step 3:

    \\[ \\quad\\quad^{t'}\\mathbf{U}^{(i)}=^{t'}\\mathbf{U}^{(i-1)}+\\triangle\\mathbf{U}^{(i)} \\]"},{"location":"welsim/theory/introduction/","title":"Introduction","text":"

    This theory reference presents theoretical descriptions of all algorithms, as well as many procedures and elements used in these products. It is useful to any of our users who need to understand how the software program calculates the output based on the inputs.

    "},{"location":"welsim/theory/materialnl/","title":"Structures with material nonlinearities","text":"

    Material nonlinearities occur because of the nonlinear relationship between stress and strain; that is, the stress is a nonlinear function of the strain. The relationship is also path-dependent (except for the case of nonlinear elasticity and hyperelasticity), so that the stress depends on the strain history as well as the strain itself.

    The program can account for many material nonlinearities, as follows:

    1. Rate-independent plasticity is characterized by the irreversible instantaneous straining that occurs in a material.

    2. Rate-dependent plasticity allows the plastic-strains to develop over a time interval. It is also termed viscoplasticity.

    3. Creep is also an irreversible straining that occurs in a material and is rate-dependent so that the strains develop over time. The time frame for creep is usually much larger than that for rate-dependent plasticity.

    4. Nonlinear elasticity allows a nonlinear stress-strain relationship to be specified. All straining is reversible.

    5. Hyperelasticity is defined by a strain-energy density potential that characterizes elastomeric and foam-type materials. All straining is reversible.

    6. Viscoelasticity is a rate-dependent material characterization that includes a viscous contribution to the elastic straining.

    When the material applicable for analysis is an elastoplastic material, the updated Lagrange method is applied, and the total Lagrange method is applied for hyperelastic material. Moreover, the Newton-Raphson method is applied to the repetitive analysis method.

    "},{"location":"welsim/theory/materialnl/#strain-definitions","title":"Strain definitions","text":"

    For the case of nonlinear materials, the definition of elastic strain given in Equation\u00a0\\(\\eqref{eq:ch4_theory_stress_strain_relation}\\) expands to

    \\[ \\begin{align} \\label{eq:ch4_guide_strain_full} \\{\\epsilon\\}=\\{\\epsilon^{el}\\}+\\{\\epsilon^{th}\\}+\\{e^{pl}\\}+\\{\\epsilon^{cr}\\}+\\{\\epsilon^{sw}\\} \\end{align} \\]

    where \\(\\epsilon\\) is the total strain vector, \\(\\epsilon^{el}\\) is elastic strain vector, \\(\\epsilon^{th}\\) is the thermal strain vector, \\(\\epsilon^{pl}\\) is the plastic strain vector, \\(\\epsilon^{cr}\\) is the creep strain vector, and \\(\\epsilon^{sw}\\) is the swelling strain vector.

    "},{"location":"welsim/theory/materialnl/#hyperelasticity","title":"Hyperelasticity","text":"

    The elastic potential energy in hyperelastic material can be obtained from the initial state with no stress activation. Therefore, we have the main invariable terms of the right Cauchy-Green deformation tensor C(\\(I_{1}\\), \\(I_{2}\\), \\(I_{3}\\)), or the main invariable of the deformation tensor excluding the volume changes (\\(\\bar{I}_{1}\\), \\(\\bar{I}_{2}\\), \\(\\bar{I}_{3}\\)). The potential can be expressed as \\(\\mathbf{W}=\\mathbf{W}(I_{1},I_{2},I_{3})\\), or \\(\\mathbf{W}=\\mathbf{W}(\\bar{I}_{1},\\bar{I}_{2},\\bar{I}_{3})\\).

    The nonlinear constitutive relation of hyperelastic material is defined by the relation between the second order Piola-Kirchhoff stress and the Green-Lagrange strain, the total Lagrange method is more efficient in solving such models.

    When the elastic potential energy \\(W\\) of the hyperelasticity is known, the second Piola-Kirchhoff stress and strain-stress relationship can be calculated as follows

    \\[ S=2\\dfrac{\\partial W}{\\partial C} \\] \\[ C=4\\dfrac{\\partial^{2}W}{\\partial C\\partial C} \\]"},{"location":"welsim/theory/materialnl/#arruda-boyce-model","title":"Arruda-Boyce model","text":"

    The form of the strain-energy potential for Arruda-Boyce model is

    \\[ \\begin{array}{ccc} W & = & [\\dfrac{1}{2}(\\bar{I}_{1}-3)+\\dfrac{1}{20\\lambda_{m}^{2}}(\\bar{I_{1}^{2}}-9)+\\dfrac{11}{1050\\lambda_{m}^{4}}(\\bar{I_{1}^{3}}-27)\\\\ & + & \\dfrac{19}{7000\\lambda_{m}^{6}}(\\bar{I_{1}^{4}}-81)+\\dfrac{519}{673750\\lambda_{m}^{8}}(\\bar{I_{1}^{5}}-243)]+\\dfrac{1}{D_1}(\\dfrac{J^{2}-1}{2}-\\mathrm{ln}J) \\end{array} \\]

    where \\(\\lambda_{m}\\) is limiting network stretch, and \\(D_1\\) is the material incompressibility parameter.

    The initial shear modulus is

    \\[ \\mu=\\dfrac{\\mu_{0}}{1+\\dfrac{3}{5\\lambda_{m}^{2}}+\\dfrac{99}{175\\lambda_{m}^{4}}+\\dfrac{513}{875\\lambda_{m}^{6}}+\\dfrac{42039}{67375\\lambda_{m}^{8}}} \\]

    The initial bulk modulus is

    \\[ K=\\dfrac{2}{D_1} \\]

    As the parameter \\(\\lambda_L\\) goes to infinity, the model is equivalent to neo-Hookean form.

    "},{"location":"welsim/theory/materialnl/#blatz-ko-foam-model","title":"Blatz-Ko foam model","text":"

    The form of strain-energy potential for the Blatz-Ko model is:

    \\[ W=\\frac{\\mu}{2}\\left(\\frac{I_{2}}{I_{3}}+2\\sqrt{I_{3}}-5\\right) \\]

    where \\(\\mu\\) is initla shear modulus of material. The initial bulk modulus is defined as :

    \\[ K = \\frac{5}{3}\\mu \\]"},{"location":"welsim/theory/materialnl/#extended-tube-model","title":"Extended tube model","text":"

    The elastic strain-energy potential for the extended tube model is:

    \\[ \\begin{array}{ccc} W & = & \\frac{G_{c}}{2}\\left[\\frac{\\left(1-\\delta^{2}\\right)\\left(\\bar{I}_{1}-3\\right)}{1-\\delta^{2}\\left(\\bar{I}_{1}-3\\right)}+\\mathrm{ln}\\left(1-\\delta^{2}\\left(\\bar{I}_{1}-3\\right)\\right)\\right]\\\\ & + & \\frac{2G_{e}}{\\beta^{2}}\\sum_{i=1}^{3}\\left(\\bar{\\lambda}_{i}^{-\\beta}-1\\right)+\\frac{1}{D_1}\\left(J-1\\right)^{2} \\end{array} \\]

    where the initial shear modulus is \\(G\\)=\\(G_c\\) + \\(G_e\\), and \\(G_e\\) is constraint contribution to modulus, \\(G_c\\) is crosslinked contribution to modulus, \\(\\delta\\) is extensibility parameter, \\(\\beta\\) is empirical parameter (0\\(\\leq \\beta \\leq\\)1), and \\(D_1\\) is material incompressibility parameter.

    Extended tube model is equivalent ot a two-term Ogden model with the following parameters:

    \\[ \\begin{array}{cccc} \\alpha_1 = 2 &, & \\alpha_2=-\\beta\\\\ \\mu_1=G_c &, & \\mu_2=-\\dfrac{2}{\\beta}G_e, & \\delta=0 \\end{array} \\]"},{"location":"welsim/theory/materialnl/#gent-model","title":"Gent model","text":"

    The form of the strian-energy potential for the Gent model is:

    \\[ W=-\\frac{\\mu J_{m}}{2}\\mathrm{ln}\\left(1-\\frac{\\bar{I}_{1}-3}{J_{m}}\\right)+\\frac{1}{D_1}\\left(\\frac{J^{2}-1}{2}-\\mathrm{ln}J\\right) \\]

    where \\(\\mu\\) is initial shear modulus of material, \\(J_m\\) is limiting value of \\(\\bar{I}_1-3\\), \\(D_1\\) is material incompressibility parameter.

    The initial bulk modulus is

    \\[ K=\\dfrac{2}{D_1} \\]

    When the parameter \\(J_m\\) goes to infinity, the Gent model is equivalent to neo-Hookean form.

    "},{"location":"welsim/theory/materialnl/#mooney-rivlin-model","title":"Mooney-Rivlin model","text":"

    This model includes two-, three-, five-, and nine-terma Mooney-Rivlin models. The form of the strain-energy potential for a two-parameter Mooney-Rivlin model is

    \\[ W=C_{10}\\left(\\bar{I}_{1}-3\\right)+C_{01}\\left(\\bar{I}_{2}-3\\right)+\\frac{1}{D_1}\\left(J-1\\right)^{2} \\]

    where \\(C_{10}\\), \\(C_{01}\\), and \\(D_{1}\\) are the material constants.

    The form of strain-energy potential for a three-parameter Mooney-Rivlin model is

    \\[ W=C_{10}\\left(\\bar{I}_{1}-3\\right)+C_{01}\\left(\\bar{I}_{2}-3\\right)+C_{11}\\left(\\bar{I}_{1}-3\\right)\\left(\\bar{I}_{2}-3\\right)+\\frac{1}{D_1}\\left(J-1\\right)^{2} \\]

    where \\(C_{10}\\), \\(C_{01}\\), \\(C_{11}\\), and \\(D_1\\) are material ocnstants.

    The form of strain-energy potential for a five-parameter Mooney-Rivlin model is

    \\[ \\begin{array}{ccc} W & = & C_{10}\\left(\\bar{I}_{1}-3\\right)+C_{01}\\left(\\bar{I}_{2}-3\\right)+C_{20}\\left(\\bar{I}_{1}-3\\right)^{2}\\\\ & + & C_{11}\\left(\\bar{I}_{1}-3\\right)\\left(\\bar{I}_{2}-3\\right)+C_{02}\\left(\\bar{I}_{2}-3\\right)^{2}+\\frac{1}{D_1}\\left(J-1\\right)^{2} \\end{array} \\]

    where \\(C_{10}\\), \\(C_{01}\\), \\(C_{20}\\), \\(C_{11}\\), \\(C_{02}\\), and \\(D_1\\) are material ocnstants.

    The form of strain-energy potential for a nine-parameter Mooney-Rivlin model is

    \\[ \\begin{array}{ccc} W & = & C_{10}\\left(\\bar{I}_{1}-3\\right)+C_{01}\\left(\\bar{I}_{2}-3\\right)+C_{20}\\left(\\bar{I}_{1}-3\\right)^{2}\\\\ & + & C_{11}\\left(\\bar{I}_{1}-3\\right)\\left(\\bar{I}_{2}-3\\right)+C_{02}\\left(\\bar{I}_{2}-3\\right)^{2}+C_{30}\\left(\\bar{I}_{1}-3\\right)^{3}\\\\ & + & C_{21}\\left(\\bar{I}_{1}-3\\right)^{2}\\left(\\bar{I}_{2}-3\\right)+C_{12}\\left(\\bar{I}_{1}-3\\right)\\left(\\bar{I}_{2}-3\\right)^{2}+C_{03}\\left(\\bar{I}_{2}-3\\right)^{3}+\\frac{1}{D_1}\\left(J-1\\right)^{2} \\end{array} \\]

    where \\(C_{10}\\), \\(C_{01}\\), \\(C_{20}\\), \\(C_{11}\\), \\(C_{02}\\), \\(C_{30}\\), \\(C_{21}\\), \\(C_{12}\\), \\(C_{03}\\), and \\(D_1\\) are material ocnstants.

    The initial shear modulus is given by:

    \\[ \\mu=2(C_{10}+C_{01}) \\]

    The initial bulk modulus is

    \\[ K=\\dfrac{2}{D_1} \\]"},{"location":"welsim/theory/materialnl/#neo-hookean-model","title":"Neo-Hookean model","text":"

    The Neo-Hookean model is a well-known hyperelastic model with an expanded linear rule (Hooke rule) having isotropy so that it can respond to finite deformation problems. The elastic potential is as follows.

    \\[ W=\\frac{\\mu}{2}(\\bar{I}_{1}-3)+\\dfrac{1}{D_{1}}(J-1)^{2} \\]

    where \\(\\mu\\) is initial shear modulus of materials, \\(D_{1}\\) is the material constant.

    The initial bulk modulus is given by:

    \\[ K=\\dfrac{2}{D_1} \\]"},{"location":"welsim/theory/materialnl/#ogden-compressible-foam-model","title":"Ogden compressible foam model","text":"

    The strain-energy potential of the Ogden compressible foam model is based on the principal stretches of left Cauchy strain tensor, which has the form:

    \\[ W=\\sum_{i=1}^{N}\\frac{\\mu_{i}}{\\alpha_{i}}\\left(J^{\\alpha_{i}/3}\\left(\\bar{\\lambda}_{1}^{\\alpha_{i}}+\\bar{\\lambda}_{2}^{\\alpha_{i}}+\\bar{\\lambda}_{3}^{\\alpha_{i}}\\right)-3\\right)+\\sum_{i=1}^{N}\\frac{\\mu_{i}}{\\alpha_{i}\\beta_{i}}\\left(J^{-\\alpha_{i}\\beta_{i}}-1\\right) \\]

    where N determines the order of the polynomial, \\(\\mu_i\\), \\(\\alpha_i\\) are material constants, \\(D_k\\) is incompressiblity parameter. The reduced principal strench is defined by:

    \\[ \\bar{\\lambda}_{p}=J^{-\\frac{1}{3}}\\lambda_p,\\; J=(\\lambda_{1}\\lambda_{2}\\lambda_{3})^{\\frac{1}{2}} \\]

    The initial shear modulus is given by:

    \\[ \\mu=\\dfrac{\\sum_{i=1}^{N}\\mu_{i}\\alpha_{i}}{2} \\]

    The initial bulk modulus K is defined by

    \\[ K = \\sum_{i=1}^{N}\\mu_{i}\\alpha_{i}\\left(\\dfrac{1}{3}+\\beta_{i}\\right) \\]

    When parameters N=1, \\(\\alpha_1\\)=-2, \\(\\mu_1\\)=-\\(\\mu\\), and \\(\\beta\\)=0.5, the Ogden compressible model is converted to the Blatz-Ko model.

    "},{"location":"welsim/theory/materialnl/#ogden-model","title":"Ogden model","text":"

    The strain-energy potential of the Ogden compressible foam model is based on the principal stretches of left Cauchy strain tensor, which has the form:

    \\[ W=\\sum_{i=1}^{N}\\frac{\\mu_{i}}{\\alpha_{i}}\\left(\\bar{\\lambda}_{1}^{\\alpha_{i}}+\\bar{\\lambda}_{2}^{\\alpha_{i}}+\\bar{\\lambda}_{3}^{\\alpha_{i}}-3\\right)+\\sum_{k=1}^{N}\\frac{1}{D_{k}}\\left(J-1\\right)^{2k} \\]

    where N determines the order of the polynomial, \\(\\mu_i\\), \\(\\alpha_i\\) are material constants, \\(D_k\\) is incompressiblity parameter. The reduced principal strench is defined by:

    \\[ \\bar{\\lambda}_{p}=J^{-\\frac{1}{3}}\\lambda_p,\\; J=(\\lambda_{1}\\lambda_{2}\\lambda_{3})^{\\frac{1}{2}} \\]

    The initial shear modulus is given by:

    \\[ \\mu=\\dfrac{\\sum_{i=1}^{N}\\mu_{i}\\alpha_{i}}{2} \\]

    The initial bulk modulus K is defined by

    \\[ K = \\dfrac{2}{D_1} \\]

    When parameters N=1, \\(\\alpha_1\\)=2, the Ogden model is converted to the neo-Hookean model. When parameters N=2, \\(\\alpha_1\\)=2 and \\(\\alpha_2\\)=-2, the Ogden model is converted to the 2-parameter Mooney-Rivlin model.

    "},{"location":"welsim/theory/materialnl/#polynomial-form","title":"Polynomial form","text":"

    The polynomial form of strain-energy potential is:

    \\[ W=\\sum_{i+j=1}^{N}c_{ij}\\left(\\bar{I}_{1}-3\\right)^{i}\\left(\\bar{I_{2}}-3\\right)^{j}+\\sum_{k=1}^{N}\\frac{1}{D_{k}}\\left(J-1\\right)^{2k} \\]

    where \\(N\\) determines the order of polynomial, \\(c_{ij}\\), \\(D_k\\) are material constants.

    The initial shear modulus is given by:

    \\[ \\mu=2\\left(C_{10}+C_{01}\\right) \\]

    The initial bulk modulus K is defined by

    \\[ K = \\dfrac{2}{D_1} \\]

    The Polynomial model is converted to following models with specific paramters:

    Parameters of Polynomial model Equivalent model N=1, \\(C_{01}\\)=0 neo-Hookean N=1 2-parameter Mooney-Rivlin N=2 5-parameter Mooney-Rivlin N=3 9-parameter Mooney-Rivlin"},{"location":"welsim/theory/materialnl/#yeoh-model","title":"Yeoh model","text":"

    The Yeoh model is also called the reduced polynomial form. The strain-energy potential is

    \\[ W=\\sum_{i=1}^{N}c_{i0}\\left(\\bar{I}_{1}-3\\right)^{i}+\\sum_{k=1}^{N}\\frac{1}{D_{k}}\\left(J-1\\right)^{2k} \\]

    where N denotes the order of polynomial, \\(C_{i0}\\) and \\(D_k\\) are material constants. When N=1, Yeoh becomes neo-Hookean model.

    The initial shear modulus is defined:

    \\[ \\mu=2c_{10} \\]

    The initial bulk modulus is:

    \\[ K=\\frac{2}{D_1} \\]"},{"location":"welsim/theory/materialnl/#rate-independent-plasticity","title":"Rate-independent plasticity","text":"

    The elastoplasticity based on the flow rule is applied in this program. The constitutive relation between Jaumman rate and the deformation rate tensor of the Kirchhoff stress is numerically solved using the updated Lagrange method.

    "},{"location":"welsim/theory/materialnl/#elastoplastic-constitutive-equation","title":"Elastoplastic constitutive equation","text":"

    The yield criteria of an elasto-plastic solid can be written into math formulas. The initial yield criteria are

    \\[ F(\\sigma,\\sigma_{y0})=0 \\]

    The Consecutive yield criteria are

    \\[ F(\\sigma,\\sigma_{y}(e^{-p}))=0 \\]

    where \\(F\\) is the yield function, \\(\\sigma_{y0}\\) is initial yield stress, \\(\\sigma_{y}\\) is consecutive yield stress, \\(\\sigma\\) is stress tensor, \\(\\mathbf{e}\\) is the infinitesimal strain tensor, \\(\\mathbf{e}^{p}\\) is the plastic strain tensor, \\(\\bar{\\mathbf{e}}^{p}\\) is equivalent plastic strain.

    The yield stress-equivalent plastic strain relationship is assumed to conform to the stress-plastic strain relation in a single axis state. The stress-plastic strain relation about one single axis state is:

    \\[ \\sigma=H(e^{p}) \\] \\[ \\dfrac{d\\sigma}{de^{p}}=H' \\]

    where \\(H'\\) is the strain hardening factor. The equivalent stress-equivalent plastic strain relation is :

    \\[ \\bar{\\sigma}=H(\\bar{e}^{p}) \\] \\[ \\dot{\\bar{\\sigma}}=H'\\dot{\\bar{e^{p}}} \\]

    The consecutive yield function is generally a function of temperature and plastic strain work. In this program, this function is assumed to be related to the equivalent plastic strain \\bar{e}^{p}. Since condition F=0 holds during the plastic deformation, we have

    \\[ \\begin{align} \\label{eq:ch5_plastic_gov1} \\dot{F}=\\dfrac{\\partial F}{\\partial\\sigma}\\colon\\dot{\\sigma}+\\dfrac{\\partial F}{\\partial\\mathbf{e}^{p}}\\colon\\dot{\\mathbf{e}}^{p}=0 \\end{align} \\]

    where \\(\\dot{F}\\) is the time derivative function of \\(F\\).

    In this case, we assume the existence of the plastic potential \\(\\Theta\\), the plastic strain rate is

    \\[ \\dot{\\mathbf{e}}^{p}=\\dot{\\lambda}\\dfrac{\\partial\\Theta}{\\partial\\sigma} \\]

    where \\(\\dot{\\lambda}\\) is the factor. Moreover, assuming the plastic potential \\(\\Theta\\) is equivalent to yield function \\(F\\), the associated flow rule is assumed as

    \\[ \\dot{\\mathbf{e}}^{p}=\\dot{\\lambda}\\dfrac{\\partial F}{\\partial\\sigma} \\]

    which is substituted with equation \\(\\eqref{eq:ch5_plastic_gov1}\\), we have

    \\[ \\dot{\\lambda}=\\dfrac{\\mathbf{a}^{T}\\colon\\mathbf{d}_{D}}{A+\\mathbf{a}^{T}\\colon\\mathbf{D}\\colon\\mathbf{a}}\\mathbf{\\dot{\\mathbf{e}}} \\]

    where \\(\\mathbf{D}\\) is the elastic matrix, and

    \\[ \\mathbf{a}^{T}=\\dfrac{\\partial F}{\\partial\\sigma}\\quad\\mathbf{d}_{D}=\\mathbf{D}\\mathbf{a}^{T}\\quad A=-\\dfrac{1}{\\dot{\\lambda}}\\dfrac{\\partial F}{\\partial\\mathbf{\\mathbf{e}}^{p}}\\colon\\dot{\\mathbf{e}}^{p} \\]

    The stress-strain relation for elastoplasicity can be rewritten to

    \\[ \\begin{align} \\label{eq:ch5_plastic_yield_func1} \\dot{\\sigma}=\\{\\mathbf{D}-\\dfrac{\\mathbf{d}_{D}\\otimes\\mathbf{d}_{D}^{T}}{A+\\mathbf{d}_{D}^{T}\\mathbf{a}}\\}\\colon\\dot{\\mathbf{e}} \\end{align} \\]

    Here we give the explicit form of several yield functions that are applied in the program.

    "},{"location":"welsim/theory/materialnl/#von-mises-yield-function","title":"Von-Mises yield function","text":"\\[ F=\\sqrt{3\\mathbf{J}_{2}}-\\sigma_{y} = 0 \\]"},{"location":"welsim/theory/materialnl/#mohr-coulomb-yield-function","title":"Mohr-Coulomb yield function","text":"\\[ F=\\sigma_{1}-\\sigma_{3}+(\\sigma_{1}+\\sigma_{3})\\mathrm{sin}\\phi-2c\\mathrm{cos}\\phi = 0 \\]"},{"location":"welsim/theory/materialnl/#drucker-prager-yield-function","title":"Drucker-Prager yield function","text":"\\[ F=\\sqrt{\\mathbf{J}_{2}}-\\alpha\\sigma\\colon\\mathbf{I}-\\sigma_{y}=0 \\]

    where material constant \\(\\alpha\\) and \\(\\sigma_{y}\\) are calculated from the viscosity and friction angle of the material as shown below

    \\[ \\alpha=\\dfrac{2\\mathrm{sin}\\phi}{3+\\mathrm{sin}\\phi},\\quad\\sigma_{y}=\\dfrac{6c\\mathrm{cos}\\phi}{3+\\mathrm{sin}\\phi} \\]"},{"location":"welsim/theory/materialnl/#viscoelasticity","title":"Viscoelasticity","text":"

    A material is viscoelastic if the material has both elastic (recoverable) and viscous (nonrecoverable) parts. Upon loads, the elastic deformation is instantaneous while the viscous part occurs over time. A viscoelastic model can depicts the deformation behavior of glass or glass-like materials and simulate heating and cooling processing of such materials.

    "},{"location":"welsim/theory/materialnl/#constitutive-equations","title":"Constitutive Equations","text":"

    A generalized Maxwell model is applied for viscoelasticity in this program. The constitutive equation becomes a function of deviatoric strain \\(\\mathbf{e}\\) and deviatoric viscosity strain \\(\\mathbf{q}\\),

    \\[ \\sigma(t)=K\\thinspace tr(\\epsilon\\mathbf{I})+2G(\\mu_{0}\\mathbf{e}+\\mu\\mathbf{q}) \\]

    where

    \\[ \\mu\\mathbf{q}=\\sum_{m=1}^{M}\\mu_{m}\\mathbf{q}^{(m)};\\quad\\sum_{m=0}^{M}\\mu_{m}=1 \\]

    moveover, the deviatoric viscosity strain \\(\\mathbf{q}\\) can be calculated by

    \\[ \\dot{\\mathbf{q}}\\thinspace^{(m)}+\\dfrac{1}{\\tau_{m}}\\mathbf{q}^{(m)}=\\dot{\\mathbf{e}} \\]

    where \\(\\tau_{m}\\) is the relaxation time. The shear and volumetric relaxation coefficient \\(G\\) is represented by the following Prony series:

    \\[ G(t)=G[\\mu_{0}^{G}+\\sum_{i=1}^{M}\\mu_{i}^{G}e^{-(t/\\tau_{i}^{G})}] \\] \\[ K(t)=K[\\mu_{0}^{K}+\\sum_{i=1}^{M}\\mu_{i}^{K} e^{-\\frac{t}{\\tau_{i}^{K}}}] \\]

    where \\(\\tau_{i}^{G}\\) and \\(\\tau_{i}^{K}\\) are relaxation times for each Prony component, \\(G_i\\) and \\(K_i\\) are shear and volumetric moduli, respectively.

    "},{"location":"welsim/theory/materialnl/#themorheological-simplicity","title":"Themorheological Simplicity","text":"

    Viscous material depends strongly on temperature. For instance, A glass-like material turninto viscous fluids at high temperatures and behave like a solid material at low temperatures. The thermorheological simplicity is proposed to assumes that material response to a load at a high temperature over a short duration is identical to that at lower temperature but over a longer duration. Essentially, the relaxation times in Prony components oby the scaling law:

    \\[ \\tau_{i}^{G}(T) = \\dfrac{\\tau_{i}^{G}(T_r)}{A(T,T_r)} ,\\qquad \\tau_{i}^{K}(T) = \\dfrac{\\tau_{i}^{K}(T_r)}{A(T,T_r)} \\]

    where \\(A(T,T_r)\\) is called the shift function.

    "},{"location":"welsim/theory/materialnl/#shift-functions","title":"Shift Functions","text":"

    WELSIM offers the following forms of the shift function:

    • Williams-Landel-Ferry Shift Function
    "},{"location":"welsim/theory/materialnl/#williams-landel-ferry-shift-function","title":"Williams-Landel-Ferry Shift Function","text":"

    The Williams-Landel-Ferry (WLF) shift function is defined by

    \\[ log_{10}(A) = \\dfrac{C1(T-T_r)}{C2+T-T_r} \\]

    where T is temperature, \\(T_r\\) is reference temperature, \\(C_1\\) and \\(C_2\\) are the WLF constants.

    "},{"location":"welsim/theory/materialnl/#rate-dependent-plasticity-including-creep-and-viscoplasticity","title":"Rate-dependent plasticity (including creep and viscoplasticity)","text":"

    The creep is a deformation phenomenon that the displacement depends on the time even under constant stress condition. The viscoelasticity can be viewed as linear creep. Several nonlinear creep are described in this section. In the mathematical theory, we define creep strain \\(\\epsilon^{c}\\) and creep strain rate \\(\\dot{\\epsilon}^{c}\\)

    \\[ \\begin{align} \\label{eq:ch5_creep_gov1} \\dot{\\epsilon}^{c}=\\dfrac{\\partial\\epsilon^{c}}{\\partial t}=\\beta(\\sigma,\\epsilon^{c}) \\end{align} \\]

    In this case, if the instantaneous strain is assumed as the elasticity strain \\(\\epsilon^{e}\\), the total strain can be expressed as the summary of elastic and creep strains

    \\[ \\epsilon=\\epsilon^{e}+\\epsilon^{c} \\]

    where the elastic strain can be calculated by

    \\[ \\epsilon^{e}=\\mathbf{c}^{e-1}\\colon\\sigma \\]

    When the creep occurs in the deformation, the stress becomes

    \\[ \\sigma_{n+1}=\\mathbf{c}\\colon(\\epsilon_{n+1}-\\epsilon_{n+1}^{c}) \\] \\[ \\epsilon_{n+1}^{c}=\\epsilon_{n}^{c}+\\triangle t\\beta_{n+\\theta} \\]

    where \\(\\beta_{n+\\theta}\\) becomes

    \\[ \\beta_{n+\\theta}=(1+\\theta)\\beta_{n}+\\theta\\beta_{n+1} \\]

    The incremental creep strain \\(\\triangle\\epsilon^{c}\\) can be simplified to a nonlinear equation

    \\[ \\mathbf{R}_{n+1}=\\epsilon_{n+1}-\\mathbf{c}^{-1}\\colon\\sigma_{n+1}-\\epsilon_{n}^{c}-\\triangle t\\beta_{n+\\theta}=0 \\]

    The Newton-Raphson method is applied to solve the nonlinear conditions. The iterative scheme in the finite element framework is

    \\[ \\begin{align} \\label{eq:ch5_creep_gov2} \\mathbf{R}_{n+1}^{(k+1)}=0=\\mathbf{R}_{n+1}^{(k)}-(\\mathbf{c}^{-1}+\\triangle t\\mathbf{c}_{n+1}^{c})d\\sigma_{n+1}^{(k)} \\end{align} \\]

    which yields

    \\[ \\begin{align} \\label{eq:ch5_creep_gov3} \\mathbf{c}_{n+1}^{c}=\\dfrac{\\partial\\beta}{\\partial\\sigma}\\mid_{n+\\theta}=\\theta\\dfrac{\\partial\\beta}{\\partial\\sigma}\\mid_{n+1} \\end{align} \\]

    The above equations \\(\\eqref{eq:ch5_creep_gov2}\\) and \\(\\eqref{eq:ch5_creep_gov3}\\) are used in the iterative scheme. As the residual \\(\\mathbf{R}\\) gets close to zero, the stress \\(\\sigma_{n+1}\\) and tangent tensile modulus are

    \\[ \\mathbf{c}_{n+1}^{*}=[\\mathbf{c}^{-1}+\\triangle t\\mathbf{c}_{n+1}^{c}]^{-1} \\]

    To solve the equation \\(\\eqref{eq:ch5_creep_gov1}\\), the following Norton model is applied in the program. The equivalent clip strain \\(\\dot{\\epsilon}^{cr}\\) is defined to be the function of Mises stress \\(q\\) and time \\(t\\).

    \\[ \\dot{\\epsilon}^{cr}=Aq^{n}t^{m} \\]

    where \\(A\\), \\(m\\), \\(n\\) are the material coefficients.

    "},{"location":"welsim/theory/materialnl/#creep","title":"Creep","text":"

    Creep is the inelastic, irreversible deformation of structures during time. It is a life limiting factor and depends on stress, strain, temperature and time. This dependency can be modeled as followed:

    \\[ \\dot{\\epsilon}^{cr}=f(\\sigma,\\epsilon,T,t) \\]

    Creep can occur in all crystalline materials, such as metal or glass, has various impacts on the behavior of the material.

    "},{"location":"welsim/theory/materialnl/#three-types-of-creep","title":"Three types of creep","text":"

    Creep can be divided in three different stages: primary creep, secondary creep and irradiation induced creep.

    Primary creep (0<m<1) starts rapidly with an infinite creep rate at the initialization. Here is m the time index. It occurs after a certain amount of time and slows down constantly. It occurs in the first hour after applying the load and is essential in calculating the relaxation over time.

    Secondary creep (m=1) follows right after the primary creep stage. The strain rate is now constant over a long period of time.

    The strain rate in the irradiation induced creep stage is growing rapidly until failure. This happens in a short period of time and is not of great interest. Therefore only primary and secondary creep are modeled in WelSim.

    "},{"location":"welsim/theory/materialnl/#creep-models","title":"Creep models","text":"

    WELSIM supports implicit creep models including Strain Hardening, Time Hardening, Generalized Exponentia, Generalized Graham, Generalized Blackburn, Modified Time Hardening, Modified Strain Hardening, Generalized Garofalo, Exponential form, Norton, Combined Time Hardening, Rational polynomial, and Generalized Time Hardening. The details of these models are given in the table below.

    Creep Model(index) Name Equations Parameters Type 1 Strain Hardening \\(\\dot{\\epsilon}_{cr}=C_{1}\\sigma^{C_2}\\epsilon_{cr}^{C_3}e^{-C_4/T}\\) \\(C_1>0\\) Primary 2 Time Hardening \\(\\dot{\\epsilon}_{cr}=C_{1}\\sigma^{C_2}t^{C_3}e^{-C_4/T}\\) \\(C_1>0\\) Primary 3 Generalized Exponential \\(\\dot{\\epsilon}_{cr}=C_{1}\\sigma^{C_2}re^{-rt}\\), \\(r=C_{5}\\sigma^{C_3}e^{-C4/T}\\) \\(C_1>0\\)\\(C_5>0\\) Primary 4 Generalized Graham \\(\\dot{\\epsilon}_{cr}=C_{1}\\sigma^{C_2}\\left( t^{C_3} + C_{4}t^{C_5} + C_{6}t^{C_7} \\right) e^{-C_8/T}\\) \\(C_1>0\\) Primary 5 Generalized Blackburn \\(\\dot{\\epsilon}_{cr} = f\\left(1-e^{-rt}\\right)+gt\\)\\(f=C_{1}e^{C_2\\sigma}\\), \\(r=C_3\\left(\\sigma/C_4\\right)^{C_5}\\), \\(g=C_{6}e^{C_{7}\\sigma}\\) \\(C_1>0\\)\\(C_3>0\\)\\(C_6>0\\) Primary 6 Modified Time Hardening \\(\\dot{\\epsilon}_{cr}=\\dfrac{C_{1}}{C_3+1}\\sigma^{C_2}t^{C_3+1}e^{-C_4/T}\\) \\(C_1>0\\) Primary 7 Modified Strain Hardening \\(\\dot{\\epsilon}_{cr}= \\{ C_{1} \\sigma^{C_2} \\left[\\left( C_3+1\\right)\\epsilon_{cr} \\right]^{C_3} \\}^{1/(C_3+1)} e^{-C_4/T}\\) \\(C_1>0\\) Primary 8 Generalized Garofalo \\(\\dot{\\epsilon}_{cr}=C_1\\left[ sinh(C_2\\sigma)\\right]^{C_3} e^{-C_4/T}\\) \\(C_1>0\\) Secondary 9 Exponential form \\(\\dot{\\epsilon}_{cr}=C_1 e^{\\sigma/C_2} e^{-C_3/T}\\) \\(C_1>0\\) Secondary 10 Norton \\(\\dot{\\epsilon}_{cr}=C_1 \\sigma^{C_2} e^{-C_3/T}\\) \\(C_1>0\\) Secondary 11 Combined Time Hardening \\(\\dot{\\epsilon}_{cr}=\\dfrac{C_1}{C_3+1} \\sigma^{C_2} t^{C_3+1} e^{-C_4/T} + C_5 \\sigma^{C_6}te^{-C_7/T}\\) \\(C_1>0\\), \\(C_5>0\\) Primary + Secondary 12 Rational Polynomial \\(\\dot{\\epsilon}_{cr}=C_1 \\dfrac{\\partial\\epsilon_c}{\\partial t}\\), \\(\\epsilon_{c}=\\dfrac{cpt}{1+pt}+\\dot{\\epsilon}_m t\\) \\(\\dot{\\epsilon}_m=C_2(10)^{C_3\\sigma}\\sigma^{C_4}\\) \\(c=C_7\\dot{\\epsilon}_m^{C_8}\\sigma^{C_9}\\), \\(p=C_{10}\\dot{\\epsilon}_{m}^{C_{11}}\\sigma^{C_{12}}\\) \\(C_2>0\\) Primary + Secondary 13 Generalized Time Hardening \\(\\dot{\\epsilon}_{cr}=ft^r e^{-C_6/T}\\) \\(f=C_1\\sigma+C_2\\sigma^2+C_3\\sigma^3\\) \\(r=C_4 + C_5\\sigma\\) - Primary

    where \\(\\epsilon_{cr}\\) is equivalent creep strain, \\(\\dot{\\epsilon}_{cr}\\) is the change in equivalent creep strain with respect to time, \\(\\sigma\\) is equivalent stress. \\(T\\) is temperature. \\(C_1\\) through \\(C_{12}\\) are creep constants. \\(t\\) is time at end of substep. \\(e\\) is natural logarithm base.

    "},{"location":"welsim/theory/modal/","title":"Modal analysis","text":""},{"location":"welsim/theory/modal/#generalized-eigenvalue-problem","title":"Generalized eigenvalue problem","text":"

    When conducting a free oscillation analysis of the continuum, assuming no damping in the free vibration. The governing eqatuion is

    \\[ \\begin{align} \\label{eq:ch5_modal_gov} \\mathbf{M}\\ddot{\\mathbf{u}}+\\mathbf{Ku}=0 \\end{align} \\]

    where \\(\\mathbf{u}\\) is the generated displacement vector, \\(\\mathbf{M}\\) is the mass matrix and \\(\\mathbf{K}\\) is the stiffness matrix. The solution is assumed to

    \\[ \\begin{align} \\label{eq:ch5_eigenvalue_vector} \\mathbf{u}(t)=(asin\\omega t+bcos\\omega t)\\mathbf{x} \\end{align} \\]

    where \\(\\omega\\) is the natural angular frequency, \\(a\\) and \\(b\\) are the arbitrary constants. Herein, the second order differential of equation \\(\\eqref{eq:ch5_eigenvalue_vector}\\) is

    \\[ \\begin{align} \\label{eq:ch5_modal_acceleration} \\ddot{\\mathbf{u}}(t)=\\omega(asin\\omega t-bsin\\omega t)\\mathbf{x} \\end{align} \\]

    Combining equations \\(\\eqref{eq:ch5_modal_gov}\\), \\(\\eqref{eq:ch5_eigenvalue_vector}\\), and \\(\\eqref{eq:ch5_modal_acceleration}\\), we have

    \\[ \\begin{align} \\label{eq:ch5_modal_gov3} \\mathbf{M}\\ddot{\\mathbf{u}}+\\mathbf{Ku}=(a\\mathrm{sin}\\omega t+b\\mathrm{cos}\\omega t)(-\\omega^{2}\\mathbf{M}+\\mathbf{K}\\mathbf{x})=(-\\lambda\\mathbf{M}\\mathbf{x}+\\mathbf{K}\\mathbf{x})=0 \\end{align} \\]

    which simplifies

    \\[ \\mathbf{K}\\mathbf{x}=\\lambda\\mathbf{M}\\mathbf{x} \\]

    which indicates that if factor \\(\\lambda(=\\omega^{2})\\) and vector \\(\\mathbf{x}\\) satisfies equation \\(\\eqref{eq:ch5_modal_gov3}\\), function \\(\\mathbf{u}(t)\\) becomes the solution of equation \\(\\eqref{eq:ch5_modal_gov}\\). The factor \\(\\lambda\\) is called the eigenvalue, vector \\(\\mathbf{x}\\) is called the eigenvector.

    "},{"location":"welsim/theory/modal/#problem-settings","title":"Problem settings","text":"

    Equation \\(\\eqref{eq:ch5_modal_acceleration}\\) can be expanded to calculate arbitrary order frequencies, which may appear at real engineering practices. To solve various physical problems, we assume the system is Hermitian(Matrix Symmetrical). Thus, a complex matrix can be transposed into a conjugate complex number and a real symmetric matrix. The relationship can be expressed by the equation below

    \\[ k_{ij}=\\bar{k}_{ji} \\]

    In this manual, the matrix in modal analysis is assumed to be symmetrical and positive definite. A positively definite matrix always yields to positive eigenvalues. Thus a matrix in the modal system always satisfies the following equation

    \\[ \\mathbf{x}^{T}\\mathbf{Ax}>0 \\]"},{"location":"welsim/theory/modal/#shifted-inverse-iteration-method","title":"Shifted inverse iteration method","text":"

    In the practical structural modal analysis, not all eigen values are required. There are many cases that some low order eigenvalues are sufficient for the engineering analysis. In the large scale problem that contains large sparse matrix, efficiently calculate the eigenvalues of the low order modes becomes important.

    When the lower limit of the eigenvalue is given, the equation \\(\\eqref{eq:ch5_modal_gov3}\\) can be derived to:

    \\[ \\begin{align} \\label{eq:ch5_modal_gov4} (\\mathbf{K}-\\sigma\\mathbf{M})^{-1}\\mathbf{M}\\mathbf{x}=[1/(\\lambda-\\sigma)]\\mathbf{x} \\end{align} \\]

    this formation of the equations has following advantages in numerical calculation:

    • The mode is reversed.
    • The eigenvalue around \\mathbf{\\sigma} is maximized.

    In the computing practice, the maximum eigenvalue may be calculated by first. For this reason, we use the equation \\(\\eqref{eq:ch5_modal_gov4}\\) rather than equation \\(\\eqref{eq:ch5_modal_gov3}\\) to calculate the eigenvalues around \\sigma. This scheme is called the shifted inverse iteration.

    "},{"location":"welsim/theory/modal/#lanczos-method","title":"Lanczos method","text":"

    In the WELSIM application, the Lanczos method is applied to solve the eigenvalues. Lanczos method is a numerical method performing tridiagonalization of matrices. It has capabilities of :

    • an iterative method, has advantages in solving sparse matrices.
    • the algorithm is well structured with matrix and vector operations, and naturally fits for parallel computing.
    • is suitable for the geometric domain decomposition method (DDM) that is embedded finite element mesh.
    • calculate arbitrary number of the eigenvalues and modes.

    The Lanczos method calculates the base of partial spaces by creating orthogonal vectors from the initial vectors. This method has advantages of computation speed over the subspace method. However, Lanczos method is easily affected by numerical errors. It is essential to check the solution with the numerical errors.

    "},{"location":"welsim/theory/modal/#geometric-meaning-in-the-lanczos-method","title":"Geometric meaning in the lanczos method","text":"

    Based on equation \\(\\eqref{eq:ch5_modal_gov4}\\), we define

    \\[ \\begin{align} \\label{eq:ch5_modal_gov5} \\begin{cases} \\mathbf{A}=(\\mathbf{K}-\\sigma\\mathbf{M})^{-1}\\\\{} [1/(\\lambda-\\sigma)]=\\zeta \\end{cases} \\end{align} \\]

    which can be rewritten to the following equation

    \\[ \\mathbf{Ax}=\\zeta\\mathbf{x} \\]

    The algorithm of the Lanczos method is the Gram-Schmidt orthogonalization for column vectors. Those column vectors are also called the columns of Krylov, and the space created by this scheme is called the Krylov subspace. When the Gram-Schmidt orthogonalization is performed in this space, the vectors can be acquired using the two nearest vectors. This is called the principle of Lanczos.

    "},{"location":"welsim/theory/shapefunction/","title":"Shape functions","text":"

    This chapter describes the shape functions for the finite elements.

    "},{"location":"welsim/theory/shapefunction/#understanding-shape-function-notations","title":"Understanding shape function notations","text":"

    The notations used in shape functions are listed below:

    • u: displacement in x (or s) direction.
    • v: displacement in y (or t) direction.
    • w: displacement in z (or s) direction.
    • \\(\\theta_{x}\\): Rotation about x direction.
    • \\(\\theta_{y}\\): Rotation about y direction.
    • \\(\\theta_{z}\\): Rotation about z direction.
    • \\(A_{x}\\): x-component of vector magnetic potential.
    • \\(A_{y}\\): y-component of vector magnetic potential.
    • \\(A_{z}\\): z-component of vector magnetic potential.
    • C: Concentration.
    • P: Pressure.
    • T: Temperature.
    • V: Electric potential or source current.
    • For the shell element, the u and v represent in-plane motions, and w denotes the out-of-plane motion.
    "},{"location":"welsim/theory/shapefunction/#3d-shell-elements","title":"3D shell elements","text":"

    This section describes the shape functions for 3D shell elements that are applied in the WELSIM application.

    "},{"location":"welsim/theory/shapefunction/#3-node-triangle","title":"3-Node triangle","text":"

    The shape functions for the 3-node triangular shell elements are:

    \\[ u=u_{0}L_{0}+u_{1}L_{1}+u_{2}L_{2} \\] \\[ v=v_{0}L_{0}+v_{1}L_{1}+v_{2}L_{2} \\] \\[ w=w_{0}L_{0}+w_{1}L_{1}+w_{2}L_{2} \\] \\[ A_{x}=A_{x0}L_{0}+A_{x1}L_{1}+A_{x2}L_{2} \\] \\[ A_{y}=A_{y0}L_{0}+A_{y1}L_{1}+A_{y2}L_{2} \\] \\[ A_{z}=A_{z0}L_{0}+A_{z1}L_{1}+A_{z2}L_{2} \\] \\[ T=T_{0}L_{0}+T_{1}L_{1}+T_{2}L_{2} \\] \\[ V=V_{0}L_{0}+V_{1}L_{1}+V_{2}L_{2} \\]"},{"location":"welsim/theory/shapefunction/#6-node-triangle","title":"6-Node triangle","text":"

    The shape functions for the 6-node triangular shell elements are:

    \\[ u=u_{0}(2L_{0}-1)L_{0}+u_{1}(2L_{1}-1)L_{1}+u_{2}(2L_{2}-1)L_{2}+u_{3}(4L_{0}L_{1})+u_{4}(4L_{1}L_{2})+u_{5}(4L_{2}L_{0}) \\] \\[ v=v_{0}(2L_{0}-1)L_{0}+v_{1}(2L_{1}-1)L_{1}+v_{2}(2L_{2}-1)L_{2}+v_{3}(4L_{0}L_{1})+v_{4}(4L_{1}L_{2})+v_{5}(4L_{2}L_{0}) \\] \\[ w=w_{0}(2L_{0}-1)L_{0}+w_{1}(2L_{1}-1)L_{1}+w_{2}(2L_{2}-1)L_{2}+w_{3}(4L_{0}L_{1})+w_{4}(4L_{1}L_{2})+w_{5}(4L_{2}L_{0}) \\]"},{"location":"welsim/theory/shapefunction/#3d-solid-elements","title":"3D solid elements","text":"

    This section describes the shape functions for the 3D solid elements that are applied in the WELSIM application.

    "},{"location":"welsim/theory/shapefunction/#4-node-tetrahedra","title":"4-Node tetrahedra","text":"

    The 4-node tetrahedra is also called liner tetrahedra element. The shape functions are:

    \\[ u=u_{0}L_{0}+u_{1}L_{1}+u_{2}L_{2}+u_{3}L_{3} \\] \\[ v=v_{0}L_{0}+v_{1}L_{1}+v_{2}L_{2}+v_{3}L_{3} \\] \\[ w=w_{0}L_{0}+w_{1}L_{1}+w_{2}L_{2}+w_{3}L_{3} \\]"},{"location":"welsim/theory/shapefunction/#10-node-tetrahedra","title":"10-Node tetrahedra","text":"

    The 10-node tetrahedra is also called bilinear tetrahedra element. The shape functions are:

    \\[ u=u_{0}(2L_{0}-1)L_{0}+u_{1}(2L_{1}-1)L_{1}+u_{2}(2L_{2}-1)L_{2}+u_{3}(2L_{3}-1)L_{3}+4u_{4}L_{0}L_{1}+u_{5}L_{1}L_{2}+u_{6}L_{0}L_{2}+u_{7}L_{0}L_{3}+u_{8}L_{1}L_{3}+u_{9}L_{2}L_{3} \\] \\[ v=...\\text{(analogous to u)} \\] \\[ w=...\\text{(analogous to u)} \\]"},{"location":"welsim/theory/structures/","title":"Structures","text":"

    This section describes the mathematical and numerical theories used in this finite element analysis program. In the stress analysis of solids, the infinitesimal deformation linear elasticity static analysis method is discussed by first. The geometric nonlinearity and elastoplasticity are introduced to describe the finite deformation in solids.

    "},{"location":"welsim/theory/structures/#infinitesimal-deformation-linear-elasticity-static-analysis","title":"Infinitesimal deformation linear elasticity static analysis","text":"

    The infinitesimal deformation theory is the essential formulation for the linear elasticity, which assumes the stress-strain constitutive relation is linear. The equilibrium equation of solid mechanics, boundary conditions are given by the following equation.

    \\[ \\begin{align} \\label{eq:ch5_equilibrium_eqn1} \\nabla\\cdot\\mathbf{\\sigma}+\\mathbf{b}=0\\quad\\mathrm{in}V \\end{align} \\] \\[ \\begin{align} \\label{eq:ch5_equilibrium_eqn2} \\sigma\\cdot\\mathbf{n}=\\mathbf{t}\\quad\\mathrm{on}\\thinspace S_{t} \\end{align} \\] \\[ \\begin{align} \\label{eq:ch5_equilibrium_eqn3} \\mathbf{u}=\\mathbf{u}_{0}\\quad\\mathrm{on}\\thinspace S_{u} \\end{align} \\]

    where \\(\\sigma\\) is the stress, \\(\\mathbf{t}\\) is the surface force, \\(\\mathbf{b}\\) is the body force, and S_{t} expresses the dynamic boundary and the \\(S_{u}\\) expresses the geometric boundary. The strain and displacement relation in the infinitesimal deformation is given

    \\[ \\epsilon=\\nabla_{s}\\mathbf{u} \\]

    The stress and strain constitutive relation in the linear elastic body is given

    \\[ \\sigma=\\mathbf{C}\\colon\\epsilon \\]

    where \\(\\mathbf{C}\\) is the fourth order elasticity tensor.

    "},{"location":"welsim/theory/structures/#principle-of-virtual-work","title":"Principle of virtual work","text":"

    The principle of the virtual work regarding the equilibrium equations \\(\\eqref{eq:ch5_equilibrium_eqn1}\\), \\(\\eqref{eq:ch5_equilibrium_eqn2}\\), and \\(\\eqref{eq:ch5_equilibrium_eqn3}\\) is

    \\[ \\begin{align} \\label{eq:ch5_equilibrium_virtual1} \\int_{V}\\sigma\\colon\\delta\\epsilon dV=\\int_{S_{t}}\\mathbf{t}\\cdot\\delta\\mathbf{u}dS+\\int_{V}\\mathbf{b}\\cdot\\delta\\mathbf{u}dV \\end{align} \\] \\[ \\delta\\mathbf{u}=0\\quad\\mathrm{on}\\quad S_{u} \\]

    which can be rewritten into

    \\[ \\begin{align} \\label{eq:ch5_equilibrium_virtual2} \\int_{V}(\\mathbf{C}\\colon\\epsilon)\\colon\\delta\\epsilon dV=\\int_{S_{t}}\\mathbf{t}\\cdot\\delta\\mathbf{u}dS+\\int_{V}\\mathbf{b}\\cdot\\delta\\mathbf{u}dV \\end{align} \\]

    where \\(\\epsilon\\) is the strain tensor, \\(\\sigma\\) is the stress tensor, and \\(\\mathbf{C}\\) is the fourth order elasticity tensor. The strain tensor \\(\\epsilon\\) and stress tensor \\(\\sigma\\) can be rewritten into vector forms \\(\\hat{\\epsilon}\\) and \\(\\hat{\\sigma}\\), respectively. Then we have

    \\[ \\begin{align} \\label{eq:ch4_theory_stress_strain_relation} \\hat{\\sigma}=\\mathbf{D}\\hat{\\epsilon} \\end{align} \\]

    where \\(\\mathbf{D}\\) is the elasticity matrix. Given the strain and stress in the vector form, we can rewrite the governing equation ([eq:ch5_equilibrium_virtual1]) into

    \\[ \\begin{align} \\label{eq:ch5_equilibrium_virtual3} \\int_{V}\\hat{\\epsilon}^{T}\\mathbf{D}\\delta\\hat{\\epsilon}dV=\\int_{S_{t}}\\delta\\mathbf{u^{T}}\\mathbf{t}dS+\\int_{V}\\delta\\mathbf{u}^{T}\\mathbf{b}dV \\end{align} \\]

    Equation ([eq:ch5_equilibrium_virtual3]) is the principles of the virtual work applied in this software program.

    "},{"location":"welsim/theory/structures/#finite-element-formulation","title":"Finite element formulation","text":"

    The principle governing equation ([eq:ch5_equilibrium_virtual3]) of the virtual work can be discreted for each finite element:

    \\[ \\begin{align} \\label{eq:ch5_equilibrium_fe_form1} \\sum_{e}\\int_{V^{e}}\\hat{\\epsilon}^{T}\\mathbf{D}\\delta\\hat{\\epsilon}dV=\\sum_{e}\\int_{S_{t}^{e}}\\delta\\mathbf{u}^{T}\\mathbf{t}dS+\\sum_{e}\\int_{V^{e}}\\delta\\mathbf{u}^{T}\\mathbf{b}dV \\end{align} \\]

    where the displacement field is interpolated for each element

    \\[ \\begin{align} \\label{eq:ch5_equilibrium_fe_form2} \\mathbf{u}=\\sum_{i=1}^{m}N_{i}\\mathbf{u}_{i}=\\mathbf{NU} \\end{align} \\]

    Similarly, the strain component can be expressed as

    \\[ \\begin{align} \\label{eq:ch5_equilibrium_fe_form3} \\hat{\\epsilon}=\\mathbf{BU} \\end{align} \\]

    Substituting equations \\(\\eqref{eq:ch5_equilibrium_fe_form2}\\) and \\(\\eqref{eq:ch5_equilibrium_fe_form3}\\) into \\(\\eqref{eq:ch5_equilibrium_fe_form1}\\), we have

    \\[ \\begin{align} \\label{eq:ch5_equilibrium_fe_form4} \\sum_{e}\\delta\\mathbf{U}^{T}(\\int_{V^{e}}\\mathbf{B}^{T}\\mathbf{DB}dV)\\mathbf{U}=\\sum_{e}\\delta\\mathbf{U}^{T}\\cdot\\int_{S_{t}^{e}}\\mathbf{N}^{T}\\mathbf{t}dS+\\sum_{e}\\delta\\mathbf{U}^{T}\\int_{V^{e}}\\mathbf{N}^{T}\\mathbf{b}dV \\end{align} \\]

    The equation above can be summarized as

    \\[ \\begin{align} \\label{eq:ch5_equilibrium_fe_form5} \\delta\\mathbf{U}^{T}\\mathbf{KU}=\\delta\\mathbf{U}^{T}\\mathbf{F} \\end{align} \\]

    where

    \\[ \\begin{align} \\label{eq:ch5_equilibrium_fe_form6} \\mathbf{K}=\\sum_{e}\\int_{V^{e}}\\mathbf{B}^{T}\\mathbf{DB}dV \\end{align} \\] \\[ \\begin{align} \\label{eq:ch5_equilibrium_fe_form7} \\mathbf{F}=\\sum\\int_{S_{t}^{e}}\\mathbf{N}^{T}\\mathbf{t}dS+\\int_{V^{e}}\\mathbf{N}^{T}\\mathbf{b}dV \\end{align} \\]

    The components of the matrix and vectors defined by equations \\(\\eqref{eq:ch5_equilibrium_fe_form6}\\) and \\(\\eqref{eq:ch5_equilibrium_fe_form7}\\) can be calculated for each finite element. For arbitrary virtual displacement \\(\\delta\\mathbf{U}\\), equation \\(\\eqref{eq:ch5_equilibrium_fe_form5}\\) can be rewritten into

    \\[ \\mathbf{KU=F} \\]"},{"location":"welsim/theory/thermal/","title":"Thermal analysis","text":"

    This section discuss the theories used in the WESLIM thermal analysis.

    "},{"location":"welsim/theory/thermal/#governing-equations","title":"Governing equations","text":"

    The governing equations applied in thermal analysis are:

    \\[ \\begin{align} \\label{eq:ch5_thermal_gov} \\rho c\\frac{\\partial T}{\\partial t}=\\nabla\\cdot(k\\nabla T) \\end{align} \\]

    where \\(\\rho=\\rho(x)\\) is mass density, \\(c=c(x,T)\\) is the specific heat, \\(T=T(x,t)\\) is the temperature, \\(K=k(x,T)\\) is the thermal conductivity, \\(Q=Q(x,T,t)\\) is the calorific value. \\(x\\) is the position in the modeling domain, \\(T\\) is the temperature and \\(t\\) is the time.

    The modeling domain is represented by S, and the boundary is represented by \\(\\varGamma\\). When assuming the boundary conditions of either the Dirichlet or Neumann type, those boundary conditions can be mathematically expressed as

    \\[ T=T_{1}(x,t) \\qquad X\\in\\Gamma_{1} \\] \\[ k\\frac{\\partial T}{\\partial n}=q(x,T,t) \\qquad X\\in\\Gamma_{2} \\]

    where the term \\(T_{1}\\), \\(q\\) is already known. \\(q\\) is the heat flux outflow from the boundary. Three types of heat flux can be considered in WELSIM thermal module.

    \\[ q=-q_{s}+q_{c}+q_{r} \\] \\[ q_{s}=q_{s}(x,t) \\] \\[ q_{c}=hc(T-T_{c}) \\] \\[ q_{r}=hc(T^{4}-T_{r}^{4}) \\]

    where \\(q_{s}\\) is the distributed heat flux, \\(q_{c}\\) is the heat flux by the convective heat transfer, and \\(q_{r}\\) is the heat flux by the radiant heat transfer. The other quantities are

    • \\(T_{c}=T_{c}(x,t)\\) Convective heat transfer coefficient ambient temperature
    • \\(h_{c}=h_{c}(x,t)\\) Convective heat transfer factor
    • \\(T_{r}=T_{r}(x,t)\\) Radiant heat transfer coefficient ambient temperature
    • \\(h_{r}=\\epsilon\\sigma F=h_{r}(x,t)\\) Radiant heat transfer factor. \\(\\epsilon\\) is the radiant rate, \\(\\sigma\\) is the Stefan-Boltzmann constant, \\(F\\) is the shape factor.
    "},{"location":"welsim/theory/thermal/#derivation-of-heat-flow-matrices","title":"Derivation of heat flow matrices","text":"

    When equation \\(\\eqref{eq:ch5_thermal_gov}\\) is discreted by the Galerkin approximation, it becomes as follows,

    \\[ \\begin{align} \\label{eq:ch5_thermal_gov2} [\\mathbf{K}]\\{T\\}+[\\mathbf{M}]\\frac{\\partial T}{\\partial t}=\\{F\\} \\end{align} \\]

    where the matrices and vectors are

    \\[ \\begin{array}{ccc} [\\mathbf{K}] & = & \\int(k_{xx}\\dfrac{\\partial\\{N\\}^{T}}{\\partial x}\\dfrac{\\partial\\{N\\}}{\\partial x}+k_{yy}\\dfrac{\\partial\\{N\\}^{T}}{\\partial y}\\dfrac{\\partial\\{N\\}}{\\partial y}+k_{zz}\\dfrac{\\partial\\{N\\}^{T}}{\\partial z}\\dfrac{\\partial\\{N\\}}{\\partial z})dV\\\\ & + & \\int h_{c}\\{N\\}^{T}\\{N\\}ds+\\int h_{r}\\{N\\}^{T}\\{N\\}ds \\end{array} \\] \\[ [\\mathbf{M}]=\\int\\rho c\\{N\\}^{T}\\{N\\}dV \\] \\[ \\{F\\}=\\int Q\\{N\\}^{T}dV-\\int q_{s}\\{N\\}^{T}dS+\\int h_{c}T_{c}\\{N\\}^{T}dS+\\int h_{r}T_{r}(T+T_{r})(T^{2}+T_{r}^{2})\\{N\\}^{T}dS \\]

    where shape function

    \\[ \\{N\\}=(N^{1},N^{2},.......),\\thinspace N_{i}=N_{i}(x) \\]

    Equation \\(\\eqref{eq:ch5_thermal_gov2}\\) is nonlinear and unsteady. When the time is discretized by the backward Euler's rule and the temperature at time t=t_{0} is known, the temperature at t=t_{0+\\triangle t} is calculated using the following equation.

    \\[ \\begin{align} \\label{eq:ch5_thermal_gov_disc1} [\\mathbf{K}]_{t=t_{0+\\triangle t}}\\{T\\}_{t=t_{0+\\triangle t}}+[\\mathbf{M}]_{t=t_{0+\\triangle t}}\\dfrac{\\{T\\}_{t=t_{0+\\triangle t}}-\\{T\\}_{t=t_{0}}}{\\triangle t}=\\{F\\}_{t=t_{0+\\triangle t}} \\end{align} \\]

    The temperature vector can be expressed as

    \\[ \\begin{align} \\label{eq:ch5_thermal_gov_disc2} \\{T\\}_{t=t_{0}+\\triangle t}=\\{T\\}_{t=t_{0}+\\triangle t}^{(i)}+\\{\\triangle T\\}_{t=t_{0}+\\triangle t}^{(i)} \\end{align} \\]

    The product of the heat conduction matrix and temperature vector, mass matrix and etc. are expressed in approximation as in the following equation.

    \\[ \\begin{align} \\label{eq:ch5_thermal_gov_disc3} [\\mathbf{K}]_{t=t_{0+\\triangle t}}\\{T\\}_{t=t_{0+\\triangle t}}\\cong[\\mathbf{K}]_{t=t_{0+\\triangle t}}^{(i)}\\{T\\}_{t=t_{0+\\triangle t}}^{(i)}+\\dfrac{\\partial[\\mathbf{K}]_{t=t_{0+\\triangle t}}^{(i)}\\{T\\}_{t=t_{0+\\triangle t}}^{(i)}}{\\partial\\{T\\}_{t=t_{0+\\triangle t}}^{(i)}}\\{\\triangle T\\}_{t=t_{0+\\triangle t}}^{(i)} \\end{align} \\] \\[ \\begin{align} \\label{eq:ch5_thermal_gov_disc4} [M]_{t=t_{0+\\triangle t}}\\cong[M]_{t=t_{0}+\\triangle t}^{(i)}+\\dfrac{\\partial[M]_{t=t_{0}+\\triangle t}^{(i)}}{\\partial\\{T\\}_{t=t_{0+\\triangle t}}^{\\{i\\}}}\\{\\triangle T\\}_{t=t_{0+\\triangle t}}^{(i)} \\end{align} \\]

    Substituting equations \\(\\eqref{eq:ch5_thermal_gov_disc2}\\), \\(\\eqref{eq:ch5_thermal_gov_disc3}\\), and \\(\\eqref{eq:ch5_thermal_gov_disc4}\\) into equation \\(\\eqref{eq:ch5_thermal_gov_disc1}\\) and skipping the high order polynomial terms, we have

    \\[ (\\dfrac{[\\mathbf{M}]_{t=t_{0+\\triangle t}}^{(i)}}{\\triangle t}+\\dfrac{\\partial[\\mathbf{M}]_{t=t_{0+\\triangle t}}^{(i)}\\{T\\}_{t=t_{0}+\\text{\\triangle t}}^{(i)}}{\\partial\\{T\\}_{t=t_{0}+\\triangle t}^{(i)}}\\dfrac{\\{T\\}_{t=t_{0}+\\triangle t}^{(i)}-\\{T\\}_{t=t0}}{\\triangle t}+\\dfrac{\\partial[\\mathbf{K}]_{t=t_{0}+\\triangle t}^{(i)}\\{T\\}_{t=t_{0}+\\triangle t}^{(i)}}{\\partial\\{T\\}_{t=t_{0}+\\triangle t}^{(i)}})\\{\\triangle T\\}_{t=t_{0}+\\triangle t}^{(i)}\\\\=\\{F\\}_{t=t_{0}+\\triangle t}-[\\mathbf{M}]_{t=t_{0}+\\triangle t}^{(i)}\\dfrac{\\{T\\}_{t=t_{0}+\\triangle t}^{(i)}-\\{T\\}_{t=t_{0}}}{\\triangle t}-[\\mathbf{K}]_{t=t_{0}+\\triangle t}^{(i)}\\{T\\}_{t=t_{0}+\\triangle t}^{(i)} \\]

    Furthermore, an approximation evaluation for the left hand side factor is given below,

    \\[ [\\mathbf{K}^{*}]^{(i)}=\\dfrac{[M]_{t=t_{0}+\\triangle t}^{(i)}}{\\triangle t}+\\dfrac{\\partial[\\mathbf{K}]_{t=t_{0}+\\triangle t}^{(t)}}{\\partial\\{T\\}_{t=t_{0}+\\triangle t}^{(i)}}\\{T\\}_{t=t_{0}+\\triangle t}^{(i)}=\\dfrac{[M]_{t=t_{0}+\\triangle t}^{(i)}}{\\triangle t}+[\\mathbf{K}_{T}]_{t=t_{0}+\\triangle t}^{(i)} \\]

    where \\([\\mathbf{K}_{T}]_{t=t_{0}+\\triangle t}^{(i)}\\) tangent stiffness matrix.

    Eventually, the temperature at time \\(t=t_{0}+\\triangle t\\) can be calculated by iterative solver using the following scheme:

    \\[ \\begin{array}{cc} [\\mathbf{K}^{*}]^{(i)}\\{T\\}_{t=t_{0}+\\triangle t}^{(i)}=\\{F\\}_{t=t_{0}+\\triangle t}-[\\mathbf{M}]_{t=t_{0}+\\triangle t}^{(i)}\\dfrac{\\{T\\}_{t=t_{0}+\\triangle t}^{(i)}-\\{T\\}_{t=t_{0}}}{\\triangle t}-[\\mathbf{K}]_{t=t_{0}+\\triangle t}^{(i)}\\\\ \\{T\\}_{t=t_{0}+\\triangle t}^{(i+1)}=\\{T\\}_{t=t_{0}+\\triangle t}^{(i)}+\\{\\triangle T\\}_{t=t_{0}+\\triangle t}^{(i)} \\end{array} \\]

    For the steady state analysis, the iteration algorithm is given below

    \\[ \\begin{array}{cc} [\\mathbf{K}_{T}]^{(i)}\\{\\triangle T\\}_{t=\\infty}^{(i)}=\\{F\\}_{t=\\infty}-[\\mathbf{K}_{T}]^{(i)}\\{\\triangle T\\}_{t=\\infty}^{(i)}\\\\ \\{T\\}_{t=\\infty}^{(i+1)}=\\{T\\}_{t=\\infty}^{(i)}+\\{\\triangle T\\}_{t=\\infty}^{(i)} \\end{array} \\]

    Since the implicit time solver is applied in the program, the selection of incremental time \\(\\triangle t\\) is relatively flexible. However, if the magnitude of \\(\\triangle t\\) is too large, the convergence frequency will be decreased in the iterative computation. The program contains automatic incremental functions to monitor the size of the residual vectors during the iterations. As the convergence rate becomes slow, the incremental time \\(\\triangle t\\) is automatically reduced. When the convergence rate becomes high, the program increases the incremental time \\(\\triangle t\\). Doing this automatic scheme can improve the numerical performance and saving computational time.

    "},{"location":"welsim/theory/transient/","title":"Structures with transient analysis","text":"

    The time integration method applied in structural transient analysis is described in the section.

    "},{"location":"welsim/theory/transient/#formulation-of-implicit-method","title":"Formulation of implicit method","text":"

    In the direct time integration, the equation of motion can be expressed as follows

    \\[ \\begin{align} \\label{eq:ch5_time_solver_imp1} \\mathbf{M}(t+\\triangle t)\\ddot{\\mathbf{U}}(t+\\triangle t)+\\mathbf{C}(t+\\triangle t)\\dot{\\mathbf{U}}(t+\\triangle t)+\\mathbf{Q}(t+\\triangle t)=\\mathbf{F}(t+\\triangle t) \\end{align} \\]

    where \\(\\mathbf{M}\\) and \\(\\mathbf{C}\\) is the mass matrix and damping matrix, respectively. The \\(\\mathbf{Q}\\) and \\(\\mathbf{F}\\) are the internal force vector, and external force vector, respectively. Note that, the mass density is consistent in the structural analysis, thus the mass matrix keep constants regardless of the deformation in non-linearity.

    In the Newmark-\\(\\beta\\) method, the displacement, velocity, and acceleration at the each time incremental \\(\\triangle t\\) are

    \\[ \\begin{align} \\label{eq:ch5_time_solver_imp2} \\dot{\\mathbf{U}}(t+\\triangle t)=\\dfrac{\\gamma}{\\beta\\triangle t}\\triangle\\mathbf{U}(t+\\triangle t)-\\dfrac{\\gamma-\\beta}{\\beta}\\dot{\\mathbf{U}}(t)-\\triangle t\\dfrac{\\gamma-2\\beta}{2\\beta}\\ddot{\\mathbf{U}}(t) \\end{align} \\] \\[ \\begin{align} \\label{eq:ch5_time_solver_imp3} \\ddot{\\mathbf{U}}(t+\\triangle t)=\\dfrac{\\text{1}}{\\beta\\triangle t^{2}}\\triangle\\mathbf{U}(t+\\triangle t)-\\dfrac{1}{\\beta\\triangle t}\\dot{\\mathbf{U}}(t)-\\dfrac{1-2\\beta}{2\\beta}\\ddot{\\mathbf{U}}(t) \\end{align} \\]

    where \\(\\gamma\\) and \\(\\beta\\) are time solver parameters. Given the specific values, the numerical algorithm becomes linear acceleration method, or the trapezoid rule.

    \\[ \\gamma=\\frac{1}{2},\\thinspace\\beta=\\frac{1}{6},\\quad\\mathrm{Linear}\\thinspace\\mathrm{acceleration\\thinspace\\mathrm{method}} \\] \\[ \\gamma=\\frac{1}{2},\\thinspace\\beta=\\frac{1}{4},\\quad\\mathrm{Trapezoid}\\thinspace\\mathrm{rule} \\]

    substituting equations \\(\\eqref{eq:ch5_time_solver_imp2}\\) and \\(\\eqref{eq:ch5_time_solver_imp3}\\) into equation \\(\\eqref{eq:ch5_time_solver_imp1}\\), the following equation can be acquired

    \\[ \\begin{array}{ccc} (\\dfrac{1}{\\beta\\triangle t^{2}}\\mathbf{M}+\\dfrac{\\gamma}{\\beta\\triangle t}\\mathbf{C}+\\mathbf{K})\\triangle\\mathbf{U}(t+\\triangle t) & = & \\mathbf{F}(t+\\triangle t)-\\mathbf{Q}(t+\\triangle t)\\\\ & + & \\dfrac{1}{\\beta\\triangle t}\\mathbf{\\mathbf{M}\\dot{\\mathbf{U}}}(t)+\\dfrac{1-2\\beta}{2\\beta}\\mathbf{M}\\ddot{\\mathbf{U}}(t)+\\dfrac{\\gamma-\\beta}{\\beta}\\mathbf{C}\\dot{\\mathbf{U}}(t)\\\\ & + & \\triangle t\\dfrac{\\gamma-2\\beta}{2\\beta}\\mathbf{C}\\ddot{\\mathbf{U}}(t) \\end{array} \\]

    when we use linear stiffness matrix \\(\\mathbf{K}_{L}\\) for a linear problem, the equation above becomes \\(\\mathbf{Q}(t+\\triangle t)=\\mathbf{K}_{L}\\mathbf{U}(t+\\triangle t)\\). Substituting this term into the equation (), we have

    \\[ \\begin{array}{ccc} \\{\\mathbf{M}(-\\dfrac{1}{(\\triangle t)^{2}\\beta}\\mathbf{U}(t)-\\dfrac{1}{(\\triangle t)\\beta}\\dot{\\mathbf{U}}(t)-\\dfrac{1-2\\beta}{2\\beta}\\ddot{\\mathbf{U}}(t))\\\\ +\\mathbf{C}(-\\dfrac{\\gamma}{(\\triangle t)\\beta}\\mathbf{U}(t)+(1-\\dfrac{\\gamma}{\\beta})\\dot{\\mathbf{U}}(t)+\\triangle t\\dfrac{2\\beta-\\gamma}{2\\beta}\\ddot{\\mathbf{U}}(t))\\}\\\\ +\\{\\dfrac{1}{(\\triangle t)^{2}\\beta}\\mathbf{M}+\\dfrac{\\gamma}{(\\triangle t)\\beta}\\mathbf{C}+\\mathbf{K}_{L}\\}\\mathbf{U}(t+\\triangle t) & = & \\mathbf{F}(t+\\triangle t) \\end{array} \\]

    In the analysis practice, the acceleration and velocity boundary conditions are imposed. Then the displacement of the following equation can be derived from equation \\(\\eqref{eq:ch5_time_solver_imp1}\\).

    \\[ u_{is}(t+\\triangle t)=u_{is}(t)+\\triangle t\\dot{u}_{is}(t)+(\\triangle t)^{2}(\\frac{1}{2}-\\beta)\\ddot{u}_{is}(t+\\triangle t) \\]

    where \\(u_{is}(t+\\triangle t)\\) is the nodal displacement at time \\(t+\\triangle t\\), \\(\\dot{u}{}_{is}(t+\\triangle t)\\) is the nodal velocity, \\(\\ddot{u}{}_{is}(t+\\triangle t)\\) is the nodal acceleration, i is the degree of freedom per node, s is the node number.

    The mass and damping terms are treated as follows

    1. The lumped mass matrix is used at most of cases in this program.
    2. The damping matrix is treated using Rayleigh algorithm \\(\\mathbf{C}=R_{m}\\mathbf{M}+R_{k}\\mathbf{K}_{L}\\).
    "},{"location":"welsim/theory/transient/#formulation-of-explicit-method","title":"Formulation of explicit method","text":"

    This section discuss how the explicit time solver is formulation to solve the governing equation below

    \\[ \\begin{align} \\label{eq:ch5_time_solver_exp1} \\mathbf{M}\\ddot{\\mathbf{U}}(t)+\\mathbf{C}\\text{(t)}\\dot{\\mathbf{U}(t)+\\mathbf{Q}(t)=\\mathbf{F}(t)} \\end{align} \\]

    where the displacement at the time \\(t+\\triangle t\\) and \\(t-\\triangle t\\) can be expressed by the Taylor's expansion at time t with the second order truncation.

    \\[ \\begin{align} \\label{eq:ch5_time_solver_exp2} \\mathbf{U}(t+\\triangle t)=\\mathbf{U}(t)+\\dot{\\mathbf{U}}(t)(\\triangle t)+\\dfrac{1}{2!}\\ddot{\\mathbf{U}}(t)(\\triangle t)^{2} \\end{align} \\] \\[ \\begin{align} \\label{eq:ch5_time_solver_exp3} \\mathbf{U}(t-\\triangle t)=\\mathbf{U}(t)-\\dot{\\mathbf{U}}(t)(\\triangle t)+\\dfrac{1}{2!}\\ddot{\\mathbf{U}}(t)(\\triangle t)^{2} \\end{align} \\]

    Differentiating equations \\(\\eqref{eq:ch5_time_solver_exp2}\\) and \\(\\eqref{eq:ch5_time_solver_exp3}\\), we have

    \\[ \\begin{align} \\label{eq:ch5_time_solver_exp4} \\dot{\\mathbf{U}}(t)=\\dfrac{1}{2\\triangle t}(\\mathbf{U}(t+\\triangle t)-\\mathbf{U}(t-\\triangle t)) \\end{align} \\] \\[ \\begin{align} \\label{eq:ch5_time_solver_exp5} \\ddot{\\mathbf{U}}(t)=\\dfrac{1}{(\\triangle t)^{2}}(\\mathbf{U}(t+\\triangle t)-2\\mathbf{U}(t)+\\mathbf{U}(t-\\triangle t)) \\end{align} \\]

    Substituting equations \\(\\eqref{eq:ch5_time_solver_exp4}\\) and \\(\\eqref{eq:ch5_time_solver_exp5}\\) into \\(\\eqref{eq:ch5_time_solver_exp1}\\), we have

    \\[ (\\dfrac{1}{\\triangle t^{2}}\\mathbf{M}+\\dfrac{1}{2\\triangle t}\\mathbf{C})\\mathbf{U}(t+\\triangle t)=\\mathbf{F}(t)-\\mathbf{Q}(t)-\\dfrac{1}{\\triangle t^{2}}\\mathbf{M}[2\\mathbf{U}(t)-\\mathbf{U}(t-\\triangle t)]-\\dfrac{1}{2\\triangle t}\\mathbf{CU}(t-\\triangle t) \\]

    For the linear problem, we also have condition \\(\\mathbf{Q}(t)=\\mathbf{K}_{L}\\mathbf{U}(t)\\) for equation. Finally, the displacement at \\(t+\\triangle t\\) is:

    \\[ \\mathbf{U}(t+\\triangle t)=\\dfrac{1}{(\\frac{1}{\\triangle t^{2}}\\mathbf{M}+\\frac{1}{2\\triangle t}\\mathbf{C})}\\{\\mathbf{F}(t)-\\mathbf{Q}(t)-\\dfrac{1}{\\triangle t^{2}}\\mathbf{M}[2\\mathbf{U}(t)-\\mathbf{U}(t-\\triangle t)]-\\dfrac{1}{2\\triangle t}\\mathbf{C}(t-\\triangle t)\\mathbf{U}\\} \\]"},{"location":"welsim/users/analysistypes/","title":"Physics and analysis types","text":"

    WELSIM supports several types of finite element analyses. This section describes those analysis types that you can perform in the WELSIM user interface.

    "},{"location":"welsim/users/analysistypes/#static-structural-analysis","title":"Static structural analysis","text":"

    As one of the most widely used analysis types, a static structural analysis discloses the structural displacements, stresses, strains, and forces caused by loads or other mechanical effects. In this static analysis, the constant loading and response are assumed.

    The static structural analysis can be either linear or nonlinear. The non-linearity can be introduced by the large deformations, in-elasticity, contact, hyperelasticity, etc. For the nonlinear problem, it is recommended to set multiple substeps in the Study Settings.

    "},{"location":"welsim/users/analysistypes/#conducting-a-static-structural-analysis","title":"Conducting a static structural analysis","text":"

    The following lists the general and specifics steps in conducting static structural analysis:

    1. Creating analysis environment: In the Properties View of the FEM Project object, set the Physics Type to Structural and Analysis Type to Static. Since the static structural analysis is the default analysis type, you do not need to change these properties if the analysis is newly created. See Creating Analysis Environment for details.

    2. Defining materials: The material properties can be either linear or nonlinear. You must define the sufficient properties that are required in the solving process. See Defining Materials for details.

    3. Specifying geometries: See Specifying Geometries for details.

    4. Defining part behaviors: The Structure Type property of the Part object determines the successive meshing and solving algorithms, the default setting is Solid. You need to change this property value accordingly if the geometry is Shell or other types. See Defining Part Behaviors for details.

    5. Setting bonnections: Optional. Contacts are supported in a static structural analysis. See Setting Connections for details.

    6. Applying mesh: It is recommended to generate Tet10 elements for Solid analysis and the Tri6 element for the Shell analysis. See Applying Mesh for details.

    7. Configuring study settings: You usually do not need to change these settings for simple linear analyses. For the complex analyses such as nonlinear models, the analysis controls you can tune: Step Controls in Study object, Substep Controls and Nonlinear Controls in Study Settings object. See Configuring Study Settings for details.

    8. Setting up boundary conditions: For a static structural analysis, the applicable boundary conditions are Fixed Supported, Fixed Rotation, Displacement, Force, and Pressure. The following body conditions are supported: Body Force, Acceleration, Earth Gravity, and Rotational Velocity. See Setting up Boundary Conditions for details.

    9. Solving: Output window continuously updates messages from the solvers and provides information on the numerical steps in solving the given problem. The convergence data is also explicitly shown in the Output window. See Solving for details.

    10. Evaluating results: For a static structural analysis, the applicable results are Deformations, Stresses, Strains, Rotations, Reaction Forces, and Reaction Moments. The Tabular Data and Chart windows display the maximum and minimum result values along the time/set number. See Evaluating Results for details.

    "},{"location":"welsim/users/analysistypes/#transient-structural-analysis","title":"Transient structural analysis","text":"

    In the transient structural analysis, the dynamic response is updated and is a function of time. You can impose general time-dependent boundary conditions on the model and obtain the time-varying responded to these transient loads or constraints. The inertia or damping effects play important roles in this analysis type, if the inertia and damping effects are minimal, you could use the static analysis instead.

    The transient structural analysis can be either linear or nonlinear. The non-linearity can be introduced by the large deformations, inelasticity, contact, hyperelasticity, etc. For the nonlinear problem, it is recommended to set multiple substeps for each load step in the Study Settings.

    "},{"location":"welsim/users/analysistypes/#conducting-a-transient-structural-analysis","title":"Conducting a transient structural analysis","text":"

    The following lists the general and specifics steps in conducting transient structural analysis:

    1. Creating analysis environment: In the Properties View of the FEM Project object, set the Physics Type to Structural and Analysis Type to Transient. You can choose either Implicit or Explicit time integration solver. See Creating Analysis Environment for details.

    2. Defining materials: The material properties can be either linear or nonlinear. You must define the sufficient properties that are required in the solving process. See Defining Materials for details.

    3. Specifying geometries: See Specifying Geometries for details.

    4. Defining part behaviors: The Structure Type property of the Part object determines the successive meshing and solving algorithms, and the default setting is Solid. You need to change this property value accordingly if the geometry is Shell or other types. See Defining Part Behaviors for details.

    5. Setting connections: Optional. Contacts are supported in a transient structural analysis. See Setting Connections for details.

    6. Applying mesh: It is recommended to generate Tet10 elements for Solid analysis and the Tri6 element for the Shell analysis. See Applying Mesh for details.

    7. Configuring study settings: You usually do not need to change these settings for simple linear analyses. For the complex analyses such as nonlinear models, the analysis controls you can tune are Step Controls in Study object, Substep Controls and Nonlinear Controls in Study Settings object. See Configuring Study Settings for details.

    8. Defining initial conditions: Optional. In the transient structural analysis, you can define the initial status of boundary and body conditions. The Initial Status property provides two options: None and Equal to Step 1. The default option None set the initial value to zero, the option Equal to Step 1 set the initial value to that of step 1. See Defining Initial Conditions for details.

    9. Setting up boundary conditions: For the transient structural analysis, the applicable boundary conditions are Fixed Supported, Fixed Rotation, Displacement, Force, Pressure, Velocity, and Acceleration. The following body conditions are supported: Body Force, Acceleration, Earth Gravity, and Rotational Velocity. See Setting up Boundary Conditions for details.

    10. Solving: Output window continuously updates messages from the solvers and provides information on the numerical steps in solving the given problem. The convergence data is also explicitly shown in the Output window. See Solving for details.

    11. Evaluating results: For the transient structural analysis, the applicable results are: Deformations, Stresses, Strains, Rotations, Reaction Forces, Reaction Moments, Velocity, and Acceleration. The Tabular Data and Chart windows display the maximum and minimum result values along the time/set number. See Evaluating Results for details.

    "},{"location":"welsim/users/analysistypes/#modal-analysis","title":"Modal analysis","text":"

    The modal analysis investigates the vibration characteristics of a structure or component. You can obtain the natural frequencies and mode shapes, which serve as a starting pointing for dynamic analysis of the target structure.

    "},{"location":"welsim/users/analysistypes/#conducting-a-modal-structural-analysis","title":"Conducting a modal structural analysis","text":"

    The following lists the general and specifics steps in conducting modal structural analysis:

    1. Creating analysis environment: From the properties view of FEM Project object, set the Physics Type to Structural and Analysis Type to Modal. See Creating Analysis Environment for details.

    2. Defining materials: The material properties can be either linear or nonlinear. However, the nonlinearity in the modal analysis is ignored due to the characteristics of eigen solver algorithms. You must define the sufficient properties that are required in the solving process. For example, the mass density parameter must be defined. See Defining Materials for details.

    3. Specifying geometries: See Specifying Geometries for details.

    4. Defining part behaviors: The Structure Type property of the Part object determines the successive meshing and solving algorithms, and the default setting is Solid. You need to change this property value accordingly if the geometry is Shell or other types. See Defining Part Behaviors for details.

    5. Setting connections: Optional. The Bonded Contacts are supported in a modal structural analysis. See Setting Connections for details.

    6. Applying mesh: It is recommended to generate the Tet10 elements for Solid analysis and the Tri6 element for the Shell analysis. See Applying Mesh for details.

    7. Configuring study settings: You typically do not need to change these settings for simple modal analyses. The default number of modes is 6, increasing this value yields to calculate more natural frequency modes, while it requires more computational resources. See Configuring Study Settings for details.

    8. Setting up boundary conditions: For the modal structural analysis, the applicable boundary conditions are Fixed Supported, Fixed Rotation, zero Displacement. The following body conditions are supported: Body Force, Acceleration, Earth Gravity, and Rotational Velocity. Note that only constraint-type boundaries are applicable in modal analysis. See Setting up Boundary Conditions for details.

    9. Solving: Output window continuously updates messages from the solvers and provides information on the numerical steps in solving the given problem. The convergence data is also explicitly shown in the Output window. See Solving for details.

    10. Evaluating results: For the modal structural analysis, the applicable results are Deformations, and Frequencies. Note that deformation results here are just relative quantities intended to show the shape modes. The Tabular Data and Chart windows display the frequencies and related mode numbers. See Evaluating Results for details.

    "},{"location":"welsim/users/analysistypes/#steady-state-thermal-analysis","title":"Steady-state thermal analysis","text":"

    In the steady-state thermal analysis, you can determine the temperatures in objects that are impacted by the time-invariant thermal loads. Users are recommended to perform a steady-state analysis before conducting a transient study in a complex model.

    The static thermal analysis can be either linear or nonlinear. The nonlinearity can be introduced by the temperature-depend material properties, or radiation and convection coefficient. For the nonlinear problem, it is recommended to set multiple substeps in the Study Settings.

    "},{"location":"welsim/users/analysistypes/#conducting-a-static-structural-analysis_1","title":"Conducting a static structural analysis","text":"

    The following lists the general and specifics steps in conducting static structural analysis:

    1. Creating analysis environment: In the Properties View of the FEM Project object, set the Physics Type to Thermal and Analysis Type to Static. See Creating Analysis Environment for details.

    2. Defining materials: The material properties can be either linear or nonlinear. You must define the sufficient properties that are required in the solving process. See Defining Materials for details.

    3. Specifying geometries: See Specifying Geometries for details.

    4. Defining part behaviors: The Structure Type property of the Part object determines the successive meshing and solving algorithms, and the default setting is Solid. You need to change this property value accordingly if the geometry is Shell or other types. See Defining Part Behaviors for details.

    5. Setting connections: Optional. The steady-state thermal analysis supports the Bonded Contact. See Setting Connections for details.

    6. Applying mesh: It is recommended to generate the Tet10 elements for Solid analysis, and the Tri6 element for the Shell analysis. See Applying Mesh for details.

    7. Configuring study settings: You usually do not need to change these settings for simple linear analyses. For the complex analysis such as nonlinear models, the analysis controls you can tune are Step Controls in Study object, Substep Controls and Nonlinear Controls in Study Settings object. See Configuring Study Settings for details.

    8. Setting up boundary conditions: In the steady-state thermal analysis, the applicable boundary conditions are: Temperature, Heat Flux, Convection, and Radiation. See Setting up Boundary Conditions for details.

    9. Solving: Output window continuously updates messages from the solvers and provides information on the numerical steps in solving the given problem. The convergence data is also explicitly shown in the Output window. See Solving for details.

    10. Evaluating results: In steady-state thermal analysis, the applicable results are Temperature. The Tabular Data and Chart windows display the maximum and minimum result values along the time/set number. See Evaluating Results for details.

    "},{"location":"welsim/users/analysistypes/#transient-thermal-analysis","title":"Transient thermal analysis","text":"

    In the transient thermal analysis, you can obtain the temperatures of objects that vary over time. Many heat transfer applications such as coiling or quenching problems, and so on involve transient thermal analysis. The transient thermal analysis can be either linear or nonlinear. The nonlinearity can be introduced by the temperature-dependent material properties or convection and radiation boundary conditions. For the nonlinear problem, it is recommended to define multiple substeps for each load step in the Study Settings.

    "},{"location":"welsim/users/analysistypes/#conducting-a-transient-thermal-analysis","title":"Conducting a transient thermal analysis","text":"

    The following lists the general and specifics steps in conducting transient thermal analysis:

    1. Creating analysis environment: In the Properties View of the FEM Project object, set the Physics Type to Thermal and Analysis Type to Transient. See Creating Analysis Environment for details.

    2. Defining materials: The material properties can be either linear or nonlinear. You must define the sufficient properties that are required in the solving process. See Defining Materials for details.

    3. Specifying geometries: See Specifying Geometries for details.

    4. Defining part behaviors: The Structure Type property of the Part object determines the successive meshing and solving algorithms, and the default setting is Solid. You need to change this property value accordingly if the geometry is Shell or other types. See Defining Part Behaviors for details.

    5. Setting connections: Optional. In the transient thermal analysis, the Bonded Contact is supported. See Setting Connections for details.

    6. Applying mesh: It is recommended to generate the Tet10 elements for Solid analysis and the Tri6 element for the Shell analysis. See Applying Mesh for details.

    7. Configuring study settings: You usually do not need to change these settings for simple linear analyses. For the complex analysis such as nonlinear models, the analysis controls you can tune are Step Controls in Study object, Substep Controls and Nonlinear Controls in Study Settings object. See Configuring Study Settings for details.

    8. Setting up boundary conditions: In the transient thermal analysis, the applicable boundary conditions are: Temperature, Heat Flux, Convection, and Radiation. See Setting up Boundary Conditions for details.

    9. Defining initial conditions: You can define the global initial temperature condition for the analysis. In the transient thermal analysis, you can define the initial status of boundary and body conditions. The Initial Status property provides two options: None and Equal to Step 1. The default option None set the initial value to zero, the option Equal to Step 1 set the initial value to that of step 1. See Defining Initial Conditions for details.

    10. Solving: Output window continuously updates messages from the solvers and provides information on the numerical steps in solving the given problem. The convergence data is also explicitly shown in the Output window. See Solving for details.

    11. Evaluating results: In the transient thermal analysis, the applicable results are Temperature. The Tabular Data and Chart windows display the maximum and minimum result values along the time/set number. See Evaluating Results for details.

    "},{"location":"welsim/users/analysistypes/#electrostatic-analysis","title":"ElectroStatic Analysis","text":"

    The electrostatic analysis can be applied to determine the distribution of electric potential in a conducting body under voltage or current conditions. You can obtain the solution results such as voltage, electric field, etc. The electrostatic analysis supports the single body analysis.

    An electrostatic analysis could be either linear or nonlinear. The electric field dependent material properties can introduce the nonlinearity. For the nonlinear problem, it is recommended to set multiple substeps in the Study Settings.

    "},{"location":"welsim/users/analysistypes/#conducting-an-electrostatic-analysis","title":"Conducting an electrostatic analysis","text":"

    The following lists the general and specifics steps in conducting electrostatic analysis:

    1. Creating analysis environment: In the Properties View of the FEM Project object, set the Physics Type to Electromagnetic and Analysis Type to ElectroStatic. See Creating Analysis Environment for details.

    2. Defining materials: The material properties can be either linear or nonlinear. You must define the sufficient properties that are required in the solving process. See Defining Materials for details.

    3. Specifying geometries: See Specifying Geometries for details.

    4. Defining part behaviors: The Structure Type property of the Part object determines the successive meshing and solving algorithms, and the default setting is Solid. An electrostatic analysis only supports the Solid geometry type. See Defining Part Behaviors for details.

    5. Applying mesh: It is recommended to generate Tet10 elements for Solid analysis. See Applying Mesh for details.

    6. Configuring study settings: You usually do not need to change these settings for simple linear analyses. For the complex analysis such as nonlinear models, the analysis controls you can tune are Step Controls in Study object, Substep Controls and Nonlinear Controls in Study Settings object. See Configuring Study Settings for details.

    7. Setting up boundary conditions: In the electrostatic analysis, the applicable boundary conditions are Ground, Voltage, Symmetry, Zero Charge, Surface Charge Density, and Electric Displacement. See Setting up Boundary Conditions for details.

    8. Solving: Output window continuously updates messages from the solvers and provides information on the numerical steps in solving the given problem. The convergence data is also explicitly shown in the Output window. See Solving for details.

    9. Evaluating results: In the electrostatic analysis, the applicable results are Voltage, Electric Field, Electric Displacement, and Energy Density. The Tabular Data and Chart windows display the maximum and minimum result values along the time/set number. See Evaluating Results for details.

    "},{"location":"welsim/users/analysistypes/#magnetostatic-analysis","title":"MagnetoStatic analysis","text":"

    The magnetostatic analysis determines the magnetic field in and around a magnetic body.

    A magnetostatic analysis requires the medium such as air surrounding the geometry be included as part of the entire simulation domain. In many cases, the full model can be reduced to the symmetric model by applying a symmetric boundary condition on the symmetric surface.

    "},{"location":"welsim/users/analysistypes/#conducting-a-magnetostatic-analysis","title":"Conducting a magnetostatic analysis","text":"

    The following lists the general and specifics steps in conducting magnetostatic analysis:

    1. Creating analysis environment: In the Properties View of the FEM Project object, set the Physics Type to Electromagnetic and Analysis Type to MagnetoStatic. See Creating Analysis Environment for details.

    2. Defining materials: The material properties can be either linear or nonlinear. You must define the sufficient properties that are required in the solving process. See Defining Materials for details.

    3. Specifying geometries: See Specifying Geometries for details.

    4. Defining part behaviors: The Structure Type property of the Part object determines the successive meshing and solving algorithms, and the default setting is Solid. A magnetostatic analysis only supports the Solid geometry type. See Defining Part Behaviors for details.

    5. Applying mesh: It is recommended to generate the Tet10 elements for magnetostatic analysis. See Applying Mesh for details.

    6. Configuring study settings: You usually do not need to change these settings for simple linear analyses. For the complex analysis such as nonlinear models, the analysis controls you can tune are Step Controls in Study object, Substep Controls and Nonlinear Controls in Study Settings object. See Configuring Study Settings for details.

    7. Setting up boundary conditions: In the magnetostatic analysis, the applicable boundary conditions are Insulating, Symmetry, Magnetic Potential, and Magnetic Flux Density. See Setting up Boundary Conditions for details.

    8. Solving: Output window continuously updates messages from the solvers and provides information on the numerical steps in solving the given problem. The convergence data is also explicitly shown in the Output window. See Solving for details.

    9. Evaluating results: In the magnetostatic analysis, the applicable results are Magnetic Potential, Magnetic Field, Magnetic Induction Field, and Energy Density. The Tabular Data and Chart windows display the maximum and minimum result values along the time/set number. See Evaluating Results for details.

    The following describes the widget components in the material editor interface:

    • Library Outline Tab: Display the available pre-defined material data for you to select. All materials are classified into several categories including General Materials, Nonlinear Materials, Hyperelastic Materials, Thermal Materials, Electromagnetic Materials, and Acoustic Materials.

    • Build Outline Tab: Display the available properties for you to add to the material. All properties are classified into several categories including Baisc, Linear Elastic, Hyper-elastic, Plastic, Creep, Visco-elastic, and Electromagnetic. The toggled properties are added to the material data and shown in the Property Pane.

    • Material Properties View Pane: Displays the properties of the selected properties items. You can modify the values of the properties. Click OK button to close the spreadsheet and save the material data into the Material Object.

    "},{"location":"welsim/users/analysistypes/#library-outline-tab","title":"Library outline tab","text":"

    The Library Outline Tab shows an outline of the contents of the selectable material sources. You can directly load a material data from this pre-defined source by one of the methods below:

    • Double click a material entry.
    • Select a material entry, and press the Import button.
    "},{"location":"welsim/users/bcs/","title":"Setting up boundary conditions","text":"

    Boundary or Body conditions are essential conditions for the most analyses. A boundary condition is imposed on the boundary of the geometry. For example, a displacement condition imposed on the face of the 3D solid geometry. A body condition is imposed on the entire body. For example, the rotational velocity imposed on the body.

    Each analysis type has its boundary and body conditions. These boundary and body conditions will be described separately regarding structural, thermal, and electromagnetic analyses.

    Note

    The boundary condition here includes both boundary and body conditions.

    "},{"location":"welsim/users/bcs/#add-boundary-condition","title":"Add boundary condition","text":"

    Adding boundary and body conditions in WELSIM application is straightforward. The following describes the adding method and its behaviors.

    • Adding new conditions from the Menu.
    • Adding new conditions from the Toolbar.
    • Right clicking on the Study or its children objects and selecting the condition item from the context menu.
    "},{"location":"welsim/users/bcs/#scoping-method","title":"Scoping method","text":"

    The scoping method supports the geometry selection, and you can select the target geometry entities and set to the properties. A voltage boundary condition scoping is illustrated in Figure\u00a0below. You can select multiple geometry entities such as bodies, faces, edges, or vertices to a Geometry property, but all these entities must be the same type.

    "},{"location":"welsim/users/bcs/#tips-in-geometry-selection","title":"Tips in geometry selection","text":"

    The following describes the tips in selecting geometries for boundary and body conditions:

    • You can first select geometries and then apply to Geometry Selection property, or you can click the Geometry Selection property then select the geometries from the Graphics window.
    • You can select multiple entities by pressing the Ctrl or Shift key.
    • For the body conditions, you only select the volumes or bodies.
    • For the boundary conditions, you only can select the faces or edges.
    "},{"location":"welsim/users/bcs/#types-of-boundary-conditions","title":"Types of boundary conditions","text":"

    This section describes the boundary conditions that are provided in the WELSIM application.

    "},{"location":"welsim/users/bcs/#displacement","title":"Displacement","text":"

    Displacement determines the spatial motion of one or more faces, edges, or vertices for their original location. This boundary condition is available for all structural analysis.

    "},{"location":"welsim/users/bcs/#boundary-condition-application","title":"Boundary condition application","text":"

    To apply Displacement:

    1. On the menu or toolbar of the Structural, click Displacement button. Or, right-click the Study object in the tree and select Impose Conditions > Displacement.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Displacement components on X, Y, and Z directions.
    "},{"location":"welsim/users/bcs/#properties-view","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Displacement vector: Component field allows you to input displacement values on X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#displacement-example","title":"Displacement example","text":"

    Displacement boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#fixed-support","title":"Fixed support","text":"

    Fixed Support is a special case of Displacement boundary condition. It essentially sets the displacement to zero at the scoped geometries. This boundary condition is available for all structural analysis.

    "},{"location":"welsim/users/bcs/#boundary-condition-application_1","title":"Boundary condition application","text":"

    To apply the Fixed Support:

    1. On the menu or toolbar of the Structural, click Fixed Support button. Or, right-click the Study object in the tree and select Impose Conditions > Fixed Support.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Determine the constraint status on X, Y, and Z directions.
    "},{"location":"welsim/users/bcs/#properties-view_1","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Constraint status: Component field allows you to set the constraints on X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#fixed-support-example","title":"Fixed support example","text":"

    Fixed support boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#fixed-rotation","title":"Fixed rotation","text":"

    Fixed Rotation constrains the rotation of the scoped geometry entities. This boundary condition is only available for Shell structural analysis.

    "},{"location":"welsim/users/bcs/#boundary-condition-application_2","title":"Boundary condition application","text":"

    To apply Fixed Rotation: 1. On the menu or toolbar of the Structural, click Fixed Rotation button. Or, right-click the Study object in the tree and select Impose Conditions > Fixed Rotation. 2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window. 3. Determine the constraint status on X, Y, and Z directions.

    "},{"location":"welsim/users/bcs/#properties-view_2","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Constraint Status: Component field allows you to set the constraints on X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#fixed-rotation-example","title":"Fixed Rotation example","text":"

    Fixed Rotation boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#pressure","title":"Pressure","text":"

    A pressure boundary condition imposes a constant normal pressure to one or more surfaces. A positive pressure acts into the surface, which compresses the scoped body. Similarly, a negative pressure pulling away from the scoped surface. This boundary condition is available for all structural analysis.

    "},{"location":"welsim/users/bcs/#boundary-condition-application_3","title":"Boundary condition application","text":"

    To apply Pressure:

    1. On the menu or toolbar of the Structural, click Pressure button. Or, right-click the Study object in the tree and select Impose Conditions > Pressure.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Input the magnitude of normal pressure. A positive pressure acts into the surface, and a negative pressure pulls away from the surface.
    "},{"location":"welsim/users/bcs/#properties-view_3","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Normal Pressure: Scalar value field allows you to pressure. A positive value indicates a compression pressure, and negative value denotes a tensile pressure.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#pressure-example","title":"Pressure example","text":"

    Pressure boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#force","title":"Force","text":"

    A force boundary condition imposes a constant force to one or more entities, such as surfaces, edges, or vertices. This boundary condition is available for all structural analysis.

    "},{"location":"welsim/users/bcs/#boundary-condition-application_4","title":"Boundary condition application","text":"

    To apply Force:

    1. On the menu or toolbar of the Structural, click Force button. Or, right-click the Study object in the tree and select Impose Conditions>Force.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Force components on X, Y, and Z directions.
    "},{"location":"welsim/users/bcs/#properties-view_4","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Force Vector: Defines the Force component values on X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#force-example","title":"Force example","text":"

    Force boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#velocity","title":"Velocity","text":"

    A velocity boundary condition imposes a constant velocity to one or more entities, such as surfaces, edges, or vertices. This boundary condition is available for transient structural analysis.

    "},{"location":"welsim/users/bcs/#boundary-condition-application_5","title":"Boundary condition application","text":"

    To apply Velocity:

    1. On the menu or toolbar of the Structural, click Velocity button. Or, right-click the Study object in the tree and select Impose Conditions > Velocity.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Velocity components on X, Y, and Z directions.
    "},{"location":"welsim/users/bcs/#properties-view_5","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Velocity Vector: Defines the Velocity component values on X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#velocity-example","title":"Velocity example","text":"

    Velocity boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#acceleration","title":"Acceleration","text":"

    An acceleration boundary condition imposes a constant acceleration to one or more entities, such as surfaces, edges, or vertices. This boundary condition is available for transient structural analysis.

    "},{"location":"welsim/users/bcs/#boundary-condition-application_6","title":"Boundary condition application","text":"

    To apply Acceleration:

    1. On the menu or toolbar of the Structural, click Acceleration button. Or, right-click the Study object in the tree and select Impose Conditions>Acceleration.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Acceleration components on X, Y, and Z directions.
    "},{"location":"welsim/users/bcs/#properties-view_6","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Acceleration Vector: Defines the Acceleration component values on X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#acceleration-example","title":"Acceleration example","text":"

    Acceleration boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#temperature","title":"Temperature","text":"

    A temperature boundary condition imposes a constant temperature to one or more entities, such as surfaces, edges, or vertices. This boundary condition is available for all thermal analysis.

    "},{"location":"welsim/users/bcs/#boundary-condition-application_7","title":"Boundary condition application","text":"

    To apply Temperature:

    1. On the menu or toolbar of the Thermal, click Temperature button. Or, right-click the Study object in the tree and select Impose Conditions>Temperature.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Temperature scalar value.
    "},{"location":"welsim/users/bcs/#properties-view_7","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Temperature: Defines the Temperature value.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#temperature-example","title":"Temperature example","text":"

    Temperature boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#heat-flux","title":"Heat flux","text":"

    A Heat Flux boundary condition imposes a constant flux to one or more entities, such as surfaces, edges, or vertices. This boundary condition is available for all thermal analysis.

    "},{"location":"welsim/users/bcs/#boundary-condition-application_8","title":"Boundary condition application","text":"

    To apply Heat Flux:

    1. On the menu or toolbar of the Thermal, click Heat Flux button. Or, right-click the Study object in the tree and select Impose Conditions>Heat Flux.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Heat Flux scalar value.
    "},{"location":"welsim/users/bcs/#properties-view_8","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Heat Flux: Defines the flux value. A positive flux acts into the boundary, and a negative heat flux acts away from the boundary.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#heat-flux-example","title":"Heat flux example","text":"

    Heat Flux boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#heat-convection","title":"Heat convection","text":"

    A heat convection boundary condition imposes a constant convection onto one or more entities, such as surfaces, edges, or vertices. This boundary condition is available for all thermal analysis.

    "},{"location":"welsim/users/bcs/#boundary-condition-application_9","title":"Boundary condition application","text":"

    To apply Heat Convection:

    1. On the menu or toolbar of the Thermal, click Heat Convection button. Or, right-click the Study object in the tree and select Impose Conditions > Heat Convection.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Convection Coefficient and Ambient Temperature scalar values.
    "},{"location":"welsim/users/bcs/#properties-view_9","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Convection Coefficient: Defines the convection value. A positive convection acts into the boundary, and a negative heat convection acts away from the boundary.
    • Ambient Temperature: Defines the ambient temperature value for the convection condition.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#heat-convection-example","title":"Heat convection example","text":"

    Heat Convection boundary condition is applied in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#heat-radiation","title":"Heat radiation","text":"

    A heat radiation boundary condition imposes a constant radiation onto one or more entities, such as surfaces, edges, or vertices. This boundary condition is available for all thermal analysis.

    "},{"location":"welsim/users/bcs/#boundary-condition-application_10","title":"Boundary condition application","text":"

    To apply Heat Radiation:

    1. On the menu or toolbar of the Thermal, click Heat Radiation button. Or, right-click the Study object in the tree and select Impose Conditions>Heat Radiation.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Radiation Coefficient and Ambient Temperature scalar values.
    "},{"location":"welsim/users/bcs/#properties-view_10","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Emissivity: Defines the radiation coefficient value.
    • Ambient Temperature: Defines the ambient temperature value.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#heat-radiation-example","title":"Heat radiation example","text":"

    Heat Radiation boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#initial-temperature","title":"Initial temperature","text":""},{"location":"welsim/users/bcs/#boundary-condition-application_11","title":"Boundary condition application","text":"

    To apply Initial Temperature:

    1. On the Menu or Toolbar of the Thermal, click Initial Temperature button. Or, right-click the Study object in the tree and select Impose Conditions > Heat Radiation.
    2. Set the Initial Temperature value or use the default value.
    "},{"location":"welsim/users/bcs/#properties-view_11","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Initial temperature: Define initial temperature value.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#initial-temperature-example","title":"Initial temperature example","text":"

    Initial Temperature boundary condition is applied as shown in Figure\u00a0below.

    Note

    Initial Temperature should be added before any other boundary conditions in all kinds of thermal analyses.

    "},{"location":"welsim/users/bcs/#heat-flow","title":"Heat flow","text":""},{"location":"welsim/users/bcs/#boundary-condition-application_12","title":"Boundary condition application","text":"

    To apply Heat Flow:

    1. On the Menu or Toolbar of the Thermal, click Heat Flow button. Or, right-click the Study object in the tree and select Impose Conditions > Heat Flow.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Set the Heat Flow value.
    "},{"location":"welsim/users/bcs/#properties-view_12","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Heat Flow: Define the heat flow value.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#heat-flow-example","title":"Heat flow example","text":"

    Heat Flow boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#perfectly-insulated","title":"Perfectly insulated","text":""},{"location":"welsim/users/bcs/#boundary-condition-application_13","title":"Boundary condition application","text":"

    To apply Perfectly Insulated:

    1. On the Menu or Toolbar of the Thermal, click Heat Flow button. Or, right-click the Study object in the tree and select Impose Conditions > Heat Flow.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    "},{"location":"welsim/users/bcs/#properties-view_13","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#perfectly-insulated-example","title":"Perfectly insulated example","text":"

    Perfectly Insulated boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#voltage","title":"Voltage","text":"

    Voltage determines the electric potential to one or more faces or edges, or vertices. This boundary condition is available for the electrostatic analysis.

    "},{"location":"welsim/users/bcs/#boundary-condition-application_14","title":"Boundary condition application","text":"

    To apply Voltage:

    1. On the menu or toolbar of the Electromagnetic, click Voltage button. Or, right-click the Study object in the tree and select Impose Conditions>Voltage.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Voltage value.
    "},{"location":"welsim/users/bcs/#properties-view_14","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Voltage: Scalar field allows you to input voltage value.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#voltage-example","title":"Voltage example","text":"

    Voltage boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#ground","title":"Ground","text":"

    A Ground boundary condition is a special case of Voltage boundary condition. It essentially sets the voltage to zero at the scoped geometries. This boundary condition is available for the electrostatic analysis.

    "},{"location":"welsim/users/bcs/#boundary-condition-application_15","title":"Boundary condition application","text":"

    To apply Ground:

    1. On the menu or toolbar of the Electromagnetic, click Ground command. Or, right-click the Study object in the tree and select Impose Conditions>Ground.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    "},{"location":"welsim/users/bcs/#properties-view_15","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#ground-example","title":"Ground example","text":"

    Ground boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#symmetry","title":"Symmetry","text":"

    A Symmetry boundary condition defines the symmetric boundary for the scoped geometry. This boundary condition is available for electromagnetic analyses.

    "},{"location":"welsim/users/bcs/#boundary-condition-application_16","title":"Boundary condition application","text":"

    To apply Symmetry:

    1. On the menu or toolbar of the Electromagnetic, click Symmetry button. Or, right-click the Study object in the tree and select Impose Conditions>Symmetry.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    "},{"location":"welsim/users/bcs/#properties-view_16","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#symmetry-example","title":"Symmetry example","text":"

    Symmetry boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#zero-charge","title":"Zero charge","text":"

    A Zero Charge boundary condition defines the zero surface charge for the scoped geometry. This boundary condition is available for electrostatic analysis.

    "},{"location":"welsim/users/bcs/#boundary-condition-application_17","title":"Boundary condition application","text":"

    To apply Zero Charge:

    1. On the menu or toolbar of the Electromagnetic, click Zero Charge button. Or, right-click the Study object in the tree and select Impose Conditions>Zero Charge.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    "},{"location":"welsim/users/bcs/#properties-view_17","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#zero-charge-example","title":"Zero charge example","text":"

    Zero Charge boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#surface-charge-density","title":"Surface charge density","text":"

    A Surface Change Density boundary condition defines the surface charge density for the scoped geometry. This boundary condition is available for electrostatic analysis.

    "},{"location":"welsim/users/bcs/#boundary-condition-application_18","title":"Boundary condition application","text":"

    To apply Surface Charge Density:

    1. On the menu or toolbar of the Electromagnetic, click Surface Charge Density button. Or, right-click the Study object in the tree and select Impose Conditions>Surface Charge Density.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    "},{"location":"welsim/users/bcs/#properties-view_18","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Charge Density: A scalar value field determines the surface charge density on the scoped geometry.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#surface-charge-density-example","title":"Surface charge density example","text":"

    Surface Charge Density boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#electric-displacement","title":"Electric displacement","text":"

    An Electric Displacement boundary condition defines the electric displacement vector for the scoped geometry. This boundary condition is available for electrostatic analysis.

    "},{"location":"welsim/users/bcs/#boundary-condition-application_19","title":"Boundary condition application","text":"

    To apply Electric Displacement:

    1. On the menu or toolbar of the Electromagnetic, click Electric Displacement button. Or, right-click the Study object in the tree and select Impose Conditions>Electric Displacement.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Determine the values of Electric Displacement.
    "},{"location":"welsim/users/bcs/#properties-view_19","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Electric Displacement: Component fields determine the electric displacement on the X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#electric-displacement-example","title":"Electric displacement example","text":"

    Electric Displacement boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#insulating","title":"Insulating","text":"

    An Insulating boundary condition defines the zero magnetic field for the scoped geometry. This boundary condition is available for the magnetic analysis.

    "},{"location":"welsim/users/bcs/#boundary-condition-application_20","title":"Boundary condition application","text":"

    To apply Insulating:

    1. On the menu or toolbar of the Electromagnetic, click Insulating command. Or, right-click the Study object in the tree and select Impose Conditions>Insulating.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    "},{"location":"welsim/users/bcs/#properties-view_20","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#insulating-example","title":"Insulating example","text":"

    Insulating boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#vector-magnetic-potential","title":"Vector magnetic potential","text":"

    A Vector Magnetic Potential boundary condition defines the magnetic potential vector for the scoped geometry. This boundary condition is available for magnetic analysis.

    "},{"location":"welsim/users/bcs/#boundary-condition-application_21","title":"Boundary condition application","text":"

    To apply Vector Magnetic Potential:

    1. On the menu or toolbar of the Electromagnetic, click Magnetic Potential button. Or, right-click the Study object in the tree and select Impose Conditions>Magnetic Potential.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Determine the value of Vector Magnetic Potential.
    "},{"location":"welsim/users/bcs/#properties-view_21","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Magnetic Potential: A component field determines the magnetic potential on the X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#magnetic-potential-example","title":"Magnetic potential example","text":"

    Magnetic Potential boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#magnetic-flux-density","title":"Magnetic flux density","text":"

    A Magnetic Flux Density boundary condition defines the magnetic flux density for the scoped geometry. This boundary condition is available for magnetic analysis.

    "},{"location":"welsim/users/bcs/#boundary-condition-application_22","title":"Boundary condition application","text":"

    To apply Magnetic Flux Density:

    1. On the menu or toolbar of the Electromagnetic, click Magnetic Flux Density button. Or, right-click the Study object in the tree and select Impose Conditions>Magnetic Flux Density.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    "},{"location":"welsim/users/bcs/#properties-view_22","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Magnetic Flux Density: A component field determines the magnetic flux density on the X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#magnetic-flux-density-example","title":"Magnetic flux density example","text":"

    Magnetic Flux Density boundary condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#types-of-body-conditions","title":"Types of body conditions","text":"

    This section describes the Body Conditions that are provided in the WELSIM application.

    "},{"location":"welsim/users/bcs/#acceleration_1","title":"Acceleration","text":"

    The Acceleration body condition defines a linear acceleration of a structure in a particular direction. This body condition is available for all structural analysis.

    If desired, acceleration body condition can be used to mimic the Earth Gravity. For example, the standard earth gravity is 9.80665 m/s\\(^{2}\\) toward the ground, you can add an acceleration body condition object and apply to all or the target bodies to represent the earth gravity.

    "},{"location":"welsim/users/bcs/#body-condition-application","title":"Body condition application","text":"

    To apply Acceleration:

    1. On the menu or toolbar of the Structural, click Acceleration button. Or, right-click the Study object in the tree and select Impose Conditions>Acceleration.
    2. Keep the All bodies Scoping Method, or choose the Geometry Selection and scope the geometric entities from Graphics window.
    3. Define the Acceleration magnitude on X, Y, and Z directions.
    "},{"location":"welsim/users/bcs/#properties-view_23","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Scoping Method: Drop-down field has options All Bodies and Geometry Selection.
    • Geometry Selection: Selection field allows you to select the body entities. This property is shown if the Scoping Method property is set to Geometry Selection.
    • Acceleration: Component field allows you to input acceleration values on X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the body condition.
    "},{"location":"welsim/users/bcs/#acceleration-example_1","title":"Acceleration example","text":"

    Acceleration is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#earth-gravity","title":"Earth gravity","text":"

    The earth gravity condition defines gravitational effects on structure bodies. This body condition is available for all structural analysis. This condition is equivalent to the Acceleration body condition.

    "},{"location":"welsim/users/bcs/#body-condition-application_1","title":"Body condition application","text":"

    To apply Acceleration:

    1. On the menu or toolbar of the Structural, click Earth Gravity button. Or, right-click the Study object in the tree and select Impose Conditions>Earth Gravity.
    2. Keep the All bodies Scoping Method, or choose the Geometry Selection and scope the geometric entities from Graphics window.
    3. Define the Earth Gravity magnitude on X, Y, and Z directions.
    "},{"location":"welsim/users/bcs/#properties-view_24","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Scoping Method: Drop-down field has options All Bodies and Geometry Selection.
    • Geometry Selection: Selection field allows you to select the body entities. This property is shown if the Scoping Method property is set to Geometry Selection.
    • Gravity: Component field allows you to input gravity values on X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the body condition.
    "},{"location":"welsim/users/bcs/#earth-gravity-example","title":"Earth gravity example","text":"

    The Earth Gravity body condition is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#body-force","title":"Body force","text":"

    The body force condition defines a linear force acting structure bodies. This body condition is available for all structural analysis. The contribution of body force to the governing equation can be seen at Infinitesimal deformation linear elasticity static analysis.

    "},{"location":"welsim/users/bcs/#body-condition-application_2","title":"Body condition application","text":"

    To apply Body Force:

    1. On the menu or toolbar of the Structural, click Body Force button. Or, right-click the Study object in the tree and select Impose Conditions>Body Force.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Body Force magnitude on X, Y, and Z directions.
    "},{"location":"welsim/users/bcs/#properties-view_25","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the body entities.
    • Force Vector: Component field allows you to input body force values on X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the body condition.
    "},{"location":"welsim/users/bcs/#body-force-example","title":"Body force example","text":"

    The Body Force is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#rotational-velocity","title":"Rotational velocity","text":"

    The Rotational Velocity condition determines the centrifugal force generated from a part spinning at a constant rate. This body condition is available for all structural analysis.

    "},{"location":"welsim/users/bcs/#body-condition-application_3","title":"Body condition application","text":"

    To apply Rotational Velocity:

    1. On the menu or toolbar of the Structural, click Rotational Velocity button. Or, right-click the Study object in the tree and select Impose Conditions>Rotational Velocity.
    2. Keep the All bodies Scoping Method, or choose the Geometry Selection and scope the geometric entities from Graphics window.
    3. Define the coefficients of Angular Velocity, Rotating Axis.
    "},{"location":"welsim/users/bcs/#properties-view_26","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the body entities. This property is shown if the Scoping Method property is set to Geometry Selection.
    • Angular Velocity: Defines the magnitude of the angular velocity.
    • Rotating Origin: Defines the origin location of the rotation axis.
    • Rotating Axis: Defines the direction vector of the rotation axis.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#rotational-velocity-example","title":"Rotational velocity example","text":"

    The Rotational Velocity is applied as shown in Figure\u00a0below.

    "},{"location":"welsim/users/bcs/#internal-heat-generation","title":"Internal heat generation","text":"

    The Internal Heat Generation condition determines the heat flow generated from the body. This body condition is available for all thermal analysis.

    "},{"location":"welsim/users/bcs/#internal-heat-generation-application","title":"Internal heat generation application","text":"

    To apply Internal Heat Generation:

    1. On the menu or toolbar of the Thermal, click Internal Heat Generation button. Or, right-click the Study object in the tree and select Impose Conditions > Internal Heat Generation.
    2. Keep the All bodies Scoping Method, or choose the Geometry Selection and scope the geometric entities from Graphics window.
    3. Define the coefficients of Heat Flow value.
    "},{"location":"welsim/users/bcs/#properties-view_27","title":"Properties view","text":"

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the body entities. This property is shown if the Scoping Method property is set to Geometry Selection.
    • Heat Flow: Defines the magnitude of the volume heat generation.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.
    "},{"location":"welsim/users/bcs/#internal-heat-generation-example","title":"Internal heat generation example","text":"

    The Internal Heat Generation is applied as shown in Figure below.

    "},{"location":"welsim/users/connections/","title":"Setting connections","text":"

    The Connections object acts as a group folder includes all connecting related settings, such as Contact Pair.

    "},{"location":"welsim/users/connections/#connections-group","title":"Connections group","text":"

    The Connections group is a unique container in WELSIM application for all types of connection objects. As illustrated in Figure\u00a0below, the Connections object includes multiple Contact Pair objects.

    "},{"location":"welsim/users/connections/#contact-pairs","title":"Contact pairs","text":"

    Contact Pairs are applied when two separate parts (solid, surface, and line bodies) in an assembly touch one another (they are mutually tangent). The contact bodies/surfaces:

    • Transmit normal forces and tangential frictional forces.
    • Can be bonded contact (Linear).
    • Can separate or collide (Nonlinear).
    • Do not penetrate one another in the structures.

    As shown in Figure\u00a0below, the Contact for structure analysis support three types of contact: Bonded, Frictionless, and Frictional. For the Frictionless and Frictional types, the contact pairs (surfaces, edges) are free to separate and move away from one another, which is called to have status-changing nonlinearity. The stiffness matrice in the solving change dramatically as the parts are touching or separated.

    "},{"location":"welsim/users/connections/#formulation-of-contact","title":"Formulation of contact","text":"

    Since the contact algorithms are complicated, it is recommended to use the default formulation method for your contact analysis. This section describes the theory of contact formulations: Lagrange and Augmented Lagrange methods. Those methods only exist in the structural analysis.

    "},{"location":"welsim/users/connections/#bonded","title":"Bonded","text":"

    For the Non-Separated Bonded contact, the MPC algorithm is applied internally to add constraint equations to the tied nodes on the contact entities (surfaces, edges). The bonded contact has no penetration, no separation behaviors during the motion.

    "},{"location":"welsim/users/connections/#lagrange-method","title":"Lagrange method","text":"

    This formulation adds an extra contact pressure term to satisfy the contact compatibility. Thus the contact force is solved explicitly as an unknown degree of freedom.

    "},{"location":"welsim/users/connections/#augmented-lagrange-method","title":"Augmented lagrange method","text":"

    Augmented Lagrange method is a penalty-based contact formulation. The finite contact force is

    \\[ F_{Normal}=k_{Normal}x_{Penetration}+\\lambda \\]

    where \\(k_{Normal}\\) is the contact stiffness, \\(x_{Penetration}\\) is the penetration depth along the normal direction. The smaller the penetration depth, the more accurate numerical solutions. The exist of term \\(\\lambda\\) is the difference between the traditional penalty method and the augmented Lagrange method.

    "},{"location":"welsim/users/connections/#contact-settings","title":"Contact settings","text":"

    When you select a Contact Pair object in the tree, the contact settings become available in the Properties view. The Target Geometry and Master Geometry properties allow you to scope the contact pairs from the Graphics window. Note that the valid Target and Master Geometries show in different colors. You can change the highlight color in the Display tab of the contact Properties View.

    When you choose the Frictionless or Frictional option in the Contact Type property, the following properties shows:

    • Formulation: Provides two options: Lagrange and Augmented Lagrange methods. The default is the Lagrange method. The Formation property is described in Formulation of Contact.
    • Finite Sliding: Supports the finite sliding as the contact occurs. The default is false.
    • Normal Direction Tolerance: Determines the distance tolerance on the normal direction. The default value is 1e-5.
    • Tangential Direction Tolerance: Determines the distance tolerance on the tangential direction. The default value is 1e-3.
    • Normal Direction Penalty: Determines the penalty tolerance on the normal direction. The Default value is 1e3.
    • Tangential Direction Penalty: Determines the penalty tolerance on the tangential direction. The default value is 1e3.
    "},{"location":"welsim/users/connections/#supported-contact-types","title":"Supported contact types","text":"

    The Table below identifies the supported formulations for the various contact geometries.

    Contact Geometry Face (Master) Edge (Master) Vertex (Master) Face (Target) Yes Yes Not Supported for solving Edge (Target) Yes Yes Not Supported for solving Vertex (Target) Not Supported for solving Not Supported for solving Not Supported for solving"},{"location":"welsim/users/connections/#ease-of-use-contact","title":"Ease of use contact","text":""},{"location":"welsim/users/connections/#flipping-master-and-target-scoping-geometries","title":"Flipping master and target scoping geometries","text":"

    This feature provides you a command to quickly swap master and target geometries that are already scoped in the Properties View. You can achieve this by right clicking on the specific Contact Pair, and choosing Switch Target/Master Contacts from the context menu as shown in Figure\u00a0below.

    Note

    This feature is not applicable to Face to Edge contact where faces and edges are always designated as targets and masters, respectively.

    "},{"location":"welsim/users/geometry/","title":"Specifying geometry","text":""},{"location":"welsim/users/geometry/#geometry-fundamentals","title":"Geometry fundamentals","text":"

    Part is the fundamental object carries the geometry data. An assembly model may contain one or multiple parts. There is no limit of parts in WELSIM application, and large assemblie require more hardware resources to process the geometric operations. All parts object are grouped in the Geometry Group object.

    "},{"location":"welsim/users/geometry/#working-with-parts","title":"Working with parts","text":"

    The part has these attributes:

    • Each part object has a Material property, which determines the assigned material on the part.
    • Parts can be hidden/shown in the Graphics window.
    • Parts can be Suppressed/Unsuppressed for the successive analysis.
    • The imported part can adjust the size of geometry by tuning the Scale property value.
    "},{"location":"welsim/users/geometry/#color-scheme-of-parts","title":"Color scheme of parts","text":"

    The geometry is assigned with predefined random color. However, you can define the color of part to visually identify different components in an assembly. Click the Display tab from the Properties view of the Part Object, and click the Color By property to determine the color scheme. The following lists the available color schemes:

    • Part Color
    • Material

    You can reset the colors back to the default color scheme by right click on the Geometry object in the tree and selecting Reset Body Colors.

    "},{"location":"welsim/users/geometry/#overview","title":"Overview","text":"

    The WELSIM geometry module's interface is similar to that most other features. The graphical user interface of geometry commands is consist of three regions:

    1. Toolbars: Located at the top of the interface, there is a toolbar.
    2. Geometry Menu: Located at the Menu, the Geometry Menu provides all geometry related commands.
    3. Context Menu: Popped up at Geometry tree objects, the context menu provides geometry related commands as shown in Figure\u00a0below.

    "},{"location":"welsim/users/geometry/#creating-primitive-geometry","title":"Creating primitive geometry","text":"

    The system provides built-in commands to allow you to create primitive geometries. The following describes the supported geometries: Box, Cylinder, Plate, and Line.

    "},{"location":"welsim/users/geometry/#box","title":"Box","text":"

    An example of a created box shape is shown in Figure\u00a0[fig:ch3_guide_geom_box].

    "},{"location":"welsim/users/geometry/#cylinder","title":"Cylinder","text":"

    An example of a created cylinder shape is shown in Figure\u00a0[fig:ch3_guide_geom_cylinder].

    "},{"location":"welsim/users/geometry/#plate","title":"Plate","text":"

    An example of a created plate shape is shown in Figure\u00a0[fig:ch3_guide_geom_plate].

    "},{"location":"welsim/users/geometry/#line","title":"Line","text":"

    An example of a created Line shape is shown in Figure\u00a0[fig:ch3_guide_geom_line].

    "},{"location":"welsim/users/geometry/#importing-and-exporting-geometry","title":"Importing and exporting geometry","text":""},{"location":"welsim/users/geometry/#importing","title":"Importing","text":"

    The geometry importing feature supports the STEP and IGES format files, and the STEP file is recommended. The following lists the behaviors of importing geometry:

    • An imported STEP file may lead to creating multiple Part objects in the tree if the file contains an assembly.
    • IGES file contains the surface information only, you need to implement Make Solid command to the imported geometry to obtain the solid geometry.
    • Using the Scale property to tune the size of the imported geometry.
    "},{"location":"welsim/users/geometry/#exporting","title":"Exporting","text":"

    The geometries in the tree can be exported to an external STEP file. The following methods show you how to export:

    • Click the Export... button from the Toolbar.
    • Click the Export... item from the Geometry Menu.
    • Right click on the target geometries and select the Export... from the context menu.
    "},{"location":"welsim/users/geometry/#boolean-operations","title":"Boolean operations","text":"

    The WELSIM geometry module supports fundamental Boolean operations, which allow users to manipulate the shape of geometries. The available operations are Union, Intersection, and Difference. You can select multiple geometry objects from the tree list and press the Boolean commands to implement the operations. You can hold Ctrl or Shift keys to select multiple geometry objects from the project tree.

    "},{"location":"welsim/users/geometry/#union","title":"Union","text":"

    The union operation consolidates two or more geometry into one geometry. An example of Union geometry of a box and cylinder shape is shown in Figure\u00a0below.

    "},{"location":"welsim/users/geometry/#intersection","title":"Intersection","text":"

    The intersection operation keeps the commonly shared portions of two or more geometries. An example of Intersection geometry of a box and cylinder shape is shown in Figure\u00a0below.

    "},{"location":"welsim/users/geometry/#difference","title":"Difference","text":"

    The Difference operation subtracts the secondly selected geometry from the first selected geometry. Thus the selection order plays an important role in the final generated geometry. You can see the results of two different selection orders in Figures\u00a0below.

    "},{"location":"welsim/users/geometry/#geometry-commands","title":"Geometry commands","text":"

    In addition to the fundamental geometry commands, the following lists the commands that may be applied in the geometry modeling:

    "},{"location":"welsim/users/geometry/#generate-solid","title":"Generate solid","text":"

    In the most of analysis, the model needs to be solid to generate the 3D solid finite element. If the imported geometry only contains the surface data, the mesher cannot generate solid elements. In this scenario, you need to convert a surface geometry to solid geometry. The Generate Solid command provides you with a tool to complete this conversion.

    To convert a surface to solid geometry, you can follow the steps below:

    1. Select the surface geometry objects from the tree.
    2. Click the Generate Solid command from the Geometry Menu, or right click on the selected geometry objects, and select the Generate Solid command from the context menu.
    "},{"location":"welsim/users/geometry/#part-structure-types","title":"Part structure types","text":""},{"location":"welsim/users/geometry/#solid-bodies","title":"Solid bodies","text":"

    The solid bodies including parts and assembly support all simulation features of WELSIM application.

    "},{"location":"welsim/users/geometry/#surface-bodies","title":"Surface bodies","text":"

    The surface bodies are treated as Shell structure in the structural and thermal analyses. In the Properties View of the Shell part, you need to specify the thickness of the shell, as shown in Figure\u00a0below.

    "},{"location":"welsim/users/gui/","title":"Application user interface","text":"

    This section describes the fundamental components of the WELSIM application interface, their usage, and behaviors.

    "},{"location":"welsim/users/gui/#welsim-application-window","title":"WELSIM application window","text":"

    The functional components of the graphical user interface include the following as listed in Table\u00a0below.

    Window Component Description Main Menus This menu includes all application level actions such as File and About Standard Toolbar This toolbar contains commonly used actions such as Mesh and Solve Graphics Toolbar This toolbar contains graphics related actions such as Zoom and Selection Project Explorer (Tree) Window This window contains a list of simulation objects that represents the modeling settings. Since it contains the branches and trunk, this windows is also called tree outline. The context menu for each object could vary. The object can be renamed, deleted, duplicated, copied and pasted Properties Window This window displays the properties of each object in the tree list. The user can view or edit the property values Graphics View This window shows and manipulates the visual content of the simulation entities. This window can display: 3D geometry, mesh, annotation, coordinate system symbol, spreadsheet, etc Output Window This window display the messages from the system or solvers Tabular Data Window This window lists the data that is input from user or output from the solvers. The listed data is always consistent with the curves in the Chart window Chart Window This window plots the graphics that is input from user or output from the solvers. The curves are always consistent with the table data in the Tabular Data window Context Menu This menu shows up as user right mouse button click on objects, graphics, toolbars, etc. Different entities may show different context Status Bar This widget shows the message and status on the bottom area of the application interface"},{"location":"welsim/users/gui/#windows-management","title":"Windows management","text":"

    The WELSIM window owns panes that can carry project objects, properties, graphics, output, tabular data, and chart views.Window management functionalities enable you to dock, hide, show, move, and resize the windows.

    "},{"location":"welsim/users/gui/#hiding-and-showing","title":"Hiding and showing","text":"

    The windows can be hidden or shown by setting the view controller. As shown in Figure\u00a0[tab:ch3_guide_gui_windows], there are two ways to control the window views:

    1. Browse the View Menu > Windows, toggle the windows that you would show or hide.
    2. Right mouse button clicks on the Toolbar, you can toggle the windows.

    You also can click the cross button on the title bar to hide the window.

    "},{"location":"welsim/users/gui/#docking-and-undocking","title":"Docking and undocking","text":"

    You can drag a window's title bar to move a window pane. Once you start to drag the window, the activated window is moving with your mouse. You can release the button on the target area to settle the new docking area. You can double-click a window's title bar to move it around the screen. The size of the window can be adjusted easily by dragging the borders or corners. You also can click the undocking button on the title bar to undock the window.

    "},{"location":"welsim/users/gui/#moving-and-resizing","title":"Moving and resizing","text":"

    You can drag a window's title bar to move and undock a window pane. Once you start to drag the window, the potential dock target area appears in the allowed space. At this moment, you can release the button to dock the window on the target area.

    "},{"location":"welsim/users/gui/#main-windows","title":"Main windows","text":"

    Besides the menu and toolbar widgets of the user interface, some other widgets are available. Those windows appear by default or when specific options are activated. The availability of those windows is controlled by the VIEW\u202f>\u202fWindows menu. This section discusses the following windows:

    • Project Explorer (Tree list)
    • Properties View
    • Graphics Window
    • Output Window
    • Tabular Data Window
    • Chart Window
    • Spreadsheet Window

    As the user selects a tree object in the Project Explorer window, all attributes for the selected object in Properties View, Tabular Data, and Chart Window are displayed or updated. The Properties window contains two tabs, and the Data tab shows the attributes about the object data, the Display tab lists the specifications about the graphics. The Graphics window shows the three-dimensional geometry model, depending on the tree object selection, shows information about the object details, highlighted areas, and annotations. The Output window displays the messages from the system or solvers. The Spreadsheet window shows the worksheet data for specific tree objects.

    Those user interface components are described in the following sections:

    "},{"location":"welsim/users/gui/#project-explorer","title":"Project explorer","text":"

    The object Tree list represents the logical steps of the conducted simulation study. All branches relate to the parenting object. For instance, a key object called Study contains Study Settings and boundary condition objects. The user can right click on an object to activate a context menu that relates to the clicked object. The objects can be copied, pasted, duplicated, and renamed.

    An example of the Project Explorer window is shown in Figure\u00a0below.

    Note

    The tree outline contains all elements that applied in the simulation study. The root object displays the number of projects in the solution. The Material project node includes all material specification. The FEM project contains the analysis settings, multiple FEM projects are allowed in the solution.

    "},{"location":"welsim/users/gui/#knowing-the-tree-objects","title":"Knowing the tree objects","text":"

    The tree objects in the Project Explorer window have the following conventions:

    • Object Icon appears to the left of the object in the tree list. The icon is intended for users to identify the type of object. For example, icons for computational results always consist of three colors (red, green, and blue), which can help distinguish other objects.
    • A right-head arrow symbol to the left of the object indicates that this object contains child sub-objects. Clicking the arrow to expand the object and display the children.
    • A down-head arrow symbol to the left of the object indicates that the object expends all child objects. Clicking the arrow to collapse the sub-objects.
    • To delete an object from the tree list, you can right click on the target object and select Delete.
    "},{"location":"welsim/users/gui/#object-status-symbols","title":"Object status symbols","text":"

    The status icons are smaller than the tree object icon and located to the right bottom corner of the object icon. These symbols are intend to provide a quick visual reference to the status of the object. The details of the status symbols are described in Table\u00a0below.

    Status Name Symbol Icon Description Underdefined A study object or its child objects requires user input values Error A fixed supported object may stop the simulation due to the confliction with other settings, user needs to resolve the confliction to continue the modeling OK A mesh settings object is well defined or any action about this object is succeed Suppressed An object is suppressed, such object becomes deactivated and won't participate the simulation. User can unsuppress the object Needs to be Updated An answers object or its child objects are not evaluated. Waiting for user to update"},{"location":"welsim/users/gui/#suppressingunsuppressing-objects","title":"Suppressing/Unsuppressing objects","text":"

    Most of the objects in the Project Explorer window can be suppressed or unsuppressed by users. A suppressed object means that it is excluded from the further analysis. For example, suppressing a boundary condition excludes the boundary condition from the study and the further solutions. You also can unsuppress the object with the restored object attributes.

    There are two ways to suppress/unsuppress an object:

    • Right-click the object, and then select Suppress from the context menu. Or
    • In the property view of the object, set the Suppressed option to True. Conversely, you can unsuppress objects by setting the Suppressed option to False.
    "},{"location":"welsim/users/gui/#properties-view","title":"Properties view","text":"

    The Properties View is located in the bottom left corner of the main user interface by default, and the user can change the location by dragging the window pane. This view window provides the user with details and information that relate to the selected object in the Project Explorer. Some properties are read-only that cannot be changed by the users, and some properties allow users to input values. An example of Properties View of the object is shown in Figures\u00a0below.

    "},{"location":"welsim/users/gui/#features","title":"Features","text":"

    The features of the Properties View include:

    • Resizable and movable.
    • Drop-down cells for Boolean or Enumeration list.
    • Buttons to display a dialog box (such as color picker).
    • OK/Cancel buttons for geometry selection.
    • Property cell can change background color according to the content.
    "},{"location":"welsim/users/gui/#group-property","title":"Group property","text":"

    The Group Property is a read-only and occupy the entire row of the Properties pane, as shown in Figure below.

    The group provides you better user experience by organizing the properties into distinct categories.

    "},{"location":"welsim/users/gui/#undefined-or-invalid-properties","title":"Undefined or invalid properties","text":"

    In the Properties View, the undefined or invalid fields are highlighted in yellow as shown in Figure\u00a0below.

    Once the property is well defined and becomes valid, highlight yellow color disappears.

    "},{"location":"welsim/users/gui/#drop-down-list","title":"Drop-down list","text":"

    The combo property shows the drop-down list as user clicks the attribute as shown in Figure below.

    Note

    You can adjust the width of the columns by dragging the separator between the columns.

    "},{"location":"welsim/users/gui/#text-entry","title":"Text entry","text":"

    In the text entry field, you can input strings, numbers, or integers, depending on the type of the cell as shown in Figure\u00a0below.

    The invalid value for the specific cell will be discarded, or the cell shows red background.

    "},{"location":"welsim/users/gui/#geometry-selection","title":"Geometry selection","text":"

    Geometry Selection allows users to scope topological entities from the graphics window. An example of Geometry Selection property is shown in Figure\u00a0below.

    After selecting appropriate geometry entities, you can click the OK button to set the current selection into the field. Clicking the Cancel button does not change the pre-existing selection.

    "},{"location":"welsim/users/gui/#graphics-window","title":"Graphics window","text":"

    The Graphics window displays the geometry, annotation, mesh, result, etc. The components in the graphics window could be:

    • 3D Graphics
    • A scale rule
    • A legend and a coutour controller (for result display)
    • 2D Annotations (for boundary conditions, result display)
    • 3D Annotations (for boundary conditions)
    • Global coordinate system symbol
    • Graphical toolbar
    • Multi-purpose tabs
    • WELSIM logo and version number

    An example view of the Grpahics window is shown in Figure\u00a0below.

    "},{"location":"welsim/users/gui/#tabular-data-window","title":"Tabular data window","text":"

    Tabular Data window is designed in better reviewing the input and output data. When you select the following objects in the tree window, both Tabular Data and Chart windows display data on the interface.

    • Boundary conditions
    • Body conditions
    • Results
    • Probe Results

    The listed data in Tabular Data window is consistent with the curves in the Chart window. As an example shown in Figure below, you can see the maximum and minimum values at all time steps are consistent between those two windows.

    "},{"location":"welsim/users/gui/#chart-window","title":"Chart window","text":"

    The Chart window displays the curves for the selected tree object. The curves are consistent with the data in the Tabular Data window. An example of Chart window drawing the maximum and minimum values along time is shown in Figure\u00a0below.

    "},{"location":"welsim/users/gui/#spreadsheet-window","title":"Spreadsheet window","text":"

    The spreadsheet window provides object data in the form of tables, charts, or text to you. This widget usually contains the summarized data for a collection of properties. Note that not all objects contain a spreadsheet window, only the object that has large data may own a spreadsheet window. The behaviors of the spreadsheet window are:

    1. A spreadsheet designed to show large data on one field does not automatically display the data. You can open the spreadsheet window by double-clicking specific objects, such as Material and Study Setting objects.
    2. A new tab shows up as the spreadsheet window is open. You can close the window by clicking the cross button on the tab, or by pressing the OK button on the spreadsheet.

    An example of the spreadsheet window is shown in Figure\u00a0below.

    "},{"location":"welsim/users/gui/#output-window","title":"Output window","text":"

    The output window prompts you with feedback concerning the results of your actions in using WELSIM. In the current version, the output window mainly displays the message from the solvers. An example of output window displaying the solver messages is shown in Figure\u00a0below.

    The Output window pane contains several buttons, there are:

    • Save Output Text: saves the output text into an external file.
    • Clear Text: clears the text field.
    • Stop Interprocess: discontinues the solver process.
    "},{"location":"welsim/users/gui/#main-menus","title":"Main menus","text":"

    The main menus contain the following items as shown in Figure\u00a0below.

    "},{"location":"welsim/users/gui/#file-menu","title":"File menu","text":"

    The FILE menu includes the following actions:

    • New: Creates a new finite element analysis project.
    • Open: Resumes the WELSIM solution from an external \u201c*.wsdb\u201d file.
    • Save: stores the WELSIM solution to an external \u201c.wsdb\u201d file.
    • Save As: stores the WELSIM solution to another external \u201c.wsdb\u201d file.
    • Close Project: deletes the current finite element project.
    • Close All: deletes all projects in the solution.
    • Quit: Exit the application.

    The items of the File menu is shown in Figure\u00a0below.

    "},{"location":"welsim/users/gui/#view-menu","title":"View menu","text":"

    The VIEW menu includes the following actions:

    • Zooms: adjusts display scale of the graphics field, contains sub-items: Zoom Extents, Zoom In, Zoom Out, Box Zoom.
    • Views: changes the viewpoint to the graphics display field. Includes sub-items: Isometric, Top, Right, Front.
    • Graphics Window: changes the mode of the graphics window. Includes sub-items: Docked, Undocked, and Full Screen.
    • Toolbars: determines to show the toolbars on the uesr interface. The available toolbars include File, Material, Geometry, FEM, Structural, Thermal, Electromagnetic, Tools, and Help.
    • Windows: controls the display of the windows. The options that can be toggled are Project Explorer, Properties, Output, Tabular Data, and Chart windows.
    • Status Bar: toggles the display of the status bar to the bottom of the main window.

    The items of the View menu is shown in Figure\u00a0below.

    "},{"location":"welsim/users/gui/#material-menu","title":"Material menu","text":"

    The MATERIAL menu includes the following actions:

    • New Material Project: adds a new material project if the tree has no material project.
    • Add Material: defines a new material object.
    • Export Materials: outputs material data into an external file with JSON format.

    The items of the Material Menu is shown in Figure\u00a0below.

    "},{"location":"welsim/users/gui/#geometry-menu","title":"Geometry menu","text":"

    The GEOMETRY menu includes the following actions:

    • Import: creates new geometries from the external files with STEP or IGES format.
    • Export: saves geometries into external STEP file.
    • Add Box: creates a new 3D box shape.
    • Add Cylinder: creates a new 3D cylinder shape.
    • Add Plate: creates a new 3D plate shape.
    • Add Line: creates a new 3D line shape.
    • Generate Solid: create a 3D solid shape according to the enclosed surface shape.
    • Union: consolidates multiple geometries into one geometry.
    • Intersection: creates a geometry that is the common area of multiple geometries.
    • Difference: creates a geometry that is differentiated between the selected geometries.
    • Show: displays the selected geometry objects.
    • Hide: hides the selected geometry objects.
    • Show All: displays all geometries.
    • Hide All: hides all geometries.

    The items of the Geometry Menu is shown in Figure\u00a0below.

    "},{"location":"welsim/users/gui/#fem-menu","title":"FEM menu","text":"

    The FEM Menu includes the following actions:

    • Mesh All: generates the mesh for the entire domain.
    • Clear Generated Mesh: removes all generated mesh.
    • Check Mesh: examines the quality of the generated mesh.
    • Add Mesh Settings: adds a global mesh settings object to the tree.
    • Add Mesh Method: adds a local mesh method object to the tree.
    • Mesh Method: generates the mesh for the geometries that are scoped in the mesh method object.
    • Connections: adds a Connections object if no connection object is presented.
    • Add Contact: adds a Contact Pair object to the tree.
    • Add Study Settings: adds a Study Settings object to the tree if no study settings object is presented.
    • Compute: solves the finite element model.
    • Clear Calculated Solution: remove the solved data in the current project.
    • User Defined Result: adds a user-defined result object to the tree.
    • Evaluate Result: evaluates the selected result objects.
    • Evaluate All: evaluate all result objects in current project.
    • Clear Result: remove the generated result data.
    • Export Result: export the result data into an external file in ASCII format.

    The items of the FEM Menu is shown in Figure\u00a0below.

    "},{"location":"welsim/users/gui/#structural-menu","title":"Structural menu","text":"

    The STRUCTURAL menu includes the following actions:

    • Constraint: adds a fixed support boundary condition object. It essentially sets displacement to zero.
    • Displacement: adds a displacement boundary condition object.
    • Force: adds a force boundary condition object.
    • Pressure: adds a pressure boundary condition object.
    • Fixed Rotation: adds a fixed rotation boundary condition object, specifically for the shell model.
    • Velocity: adds a velocity boundary condition object, specifically for the transient structural analysis.
    • Acceleration: adds a velocity boundary condition object, specifically for the transient structural analysis.
    • Body Force: adds a body force condition object.
    • Acceleration: adds a body acceleration condition object.
    • Earth Gravity: adds a standard earth gravity condition object.
    • Rotational Velocity: adds a rotational velocity object.
    • Displacement Result: adds a displacement result object.
    • Stress Result: adds a stress result object.
    • Strain Result: adds a strain result object.
    • Velocity Result: adds a velocity result object. It is available for the transient structural analysis.
    • Acceleration Result: adds an acceleration result object. It is available for the transient structural analysis.
    • Rotation Result: adds a ratation result object. It is available for the shell structure.
    • Reaction Force Probe: adds a force reaction probe result.
    • Reaction Moment Probe: adds a moment reaction probe result. It is available for the shell structure.

    The items of the Structural menu is shown in Figure\u00a0below.

    "},{"location":"welsim/users/gui/#thermal-menu","title":"Thermal menu","text":"

    The THERMAL menu includes the following actions:

    • Temperature: adds a temperature boundary condition object.
    • Heat Flux: adds a heat flux boundary condition object.
    • Convection: adds a heat convection boundary condition object.
    • Radiation: adds a heat radiation boundary condition object.
    • Initial Temperature: adds a initial temperature condition object. It is available for transient thermal analysis.
    • Temperature Result: adds a temperature result object.

    The items on the Thermal menu is shown in Figure\u00a0below.

    "},{"location":"welsim/users/gui/#electromagnetic-menu","title":"Electromagnetic menu","text":"

    The ELECTROMAGNETIC menu includes the following actions:

    • Ground: adds a ground boundary condition object. It essentially sets the voltage to zero.
    • Voltage: adds a voltage boundary condition object.
    • Symmetry: adds a symmetry boundary condition object.
    • Zero Charge: adds a zero charge boundary condition object.
    • Surface Charge Density: adds a surface charge density boundary condition object.
    • Electric Displacement: adds an electric displacement boundary condition object.
    • Insulating: adds an insulating boundary condition object. It essentially sets zero magnetic potential.
    • Magnetic Potential: adds a magnetic potential boundary condition object.
    • Magnetic Flux Density: adds a magnetic flux density boundary condition object.
    • Voltage Result: adds a voltage result object.
    • Electric Field Result: adds an electric field result object.
    • Electric Displacement Result: adds an electric displacement result object.
    • Magnetic Potential Result: adds a magnetic potential result object.
    • Magnetic Field Result: adds a magnetic field result object.
    • Magnetic Induction Field Result: adds a magnetic induction field result object.
    • Energy Density Result: adds an energy density result object.

    The items of the Electromagnetic menu is shown in Figure\u00a0below.

    "},{"location":"welsim/users/gui/#tools-menu","title":"Tools menu","text":"

    The TOOLS menu includes the following actions:

    • Export Input Script: generates solver input scripts to the designated directory.
    • Reveal Files in Explorer: opens the local directory that contains project files.

    The items of the Tools menu is shown in Figure\u00a0below.

    "},{"location":"welsim/users/gui/#help-menu","title":"Help menu","text":"

    The HELP menu includes the following actions:

    • Documentation: opens the default internet web browser, and visits online documentation.
    • Website: opens the default internet web browser, and visits official website.
    • License Manager: opens WELSIM license manager interface. You can activate the application with the license key or update the license here.
    • About: provides copyright and application version information.

    The items of the Help menu is shown in Figure\u00a0below.

    "},{"location":"welsim/users/gui/#toolbars","title":"Toolbars","text":"

    Toolbars are displayed across the top of the main user interface. Toolbars are dockable, and you can drag the toolbar to your preferred field.

    "},{"location":"welsim/users/gui/#file-toolbar","title":"File toolbar","text":"

    The File toolbar contains application-level commands as shown in Figure\u00a0below. Each icon button and its description follows:

    • : creates a new finite element analysis project.
    • : saves solution into an external \u201c*.wsdb\u201d file.
    • : resumes solution from an external \u201c*.wsdb\u201d file.
    • : closes the current analysis project.

    "},{"location":"welsim/users/gui/#material-toolbar","title":"Material toolbar","text":"

    The Material toolbar contains material-related simulation commands as shown in Figure\u00a0below. Each icon button and its description follows:

    • : creates a new material object.
    • : exports all material data into an external JSON file.

    "},{"location":"welsim/users/gui/#geometry-toolbar","title":"Geometry toolbar","text":"

    The Geometry toolbar contains geometry-related commands as shown in Figure below. Each icon button and its description follows:

    • : imports the geometries from an external STEP or IGES file.
    • : exports the geometries into an external STEP file.
    • : creates a box shape.
    • : creates a cylinder shape.
    • : creates a plate shape.
    • : creates a line shape.
    • : consolidates the selected geometries into one part.
    • : creates geometry from the commonly shared field of multiple geometries.
    • : creates geometry from the difference among multiple geometries.

    "},{"location":"welsim/users/gui/#fem-toolbar","title":"FEM toolbar","text":"

    The FEM toolbar contains finite element analysis commands as shown in Figure\u00a0below. Each icon button and its description follows:

    • : generates the mesh for the entire domain.
    • : clear the generated mesh.
    • : examines the mesh quality.
    • : creates a mesh method object, which is used for the local mesh settings.
    • : generates the mesh for the scoped geometries in mesh method object.
    • : creates a new contact pair object.
    • : solves the finite element model.
    • : creates a new user-defined result object.
    • : evaluates the selected result objects.
    • : evaluates all result objects in current project.

    "},{"location":"welsim/users/gui/#structural-toolbar","title":"Structural toolbar","text":"

    The Structural toolbar contains structural analysis commands as shown in Figure\u00a0below. Each icon button and its description follows:

    • : creates a fixed support boundary condition object.
    • : creates a displacement boundary condition object.
    • : creates a force boundary condition object.
    • : creates a pressure boundary condition object.
    • : creates a fixed rotation boundary condition object.
    • : creates a velocity boundary condition object. It is available for the transient structural analysis.
    • : creates a acceleration boundary condition object. It is available for the transient structural analysis.
    • : creates a body force domain condition object.
    • : creates an acceleration domain condition object.
    • : creates a standard earth gravity domain condition object.
    • : creates a rotational velocity domain condition object.
    • : creates a displacement result object.
    • : creates a stress result object.
    • : creates a strain result object.
    • : creates a velocity result object. It is available for the transient structural analysis.
    • : creates a velocity result object. It is available for the transient structural analysis.
    • : creates a rotation result object. It is available for the shell model.
    • : creates a force reaction probe object.
    • : creates a moment reaction probe object. It is available for the shell model.

    "},{"location":"welsim/users/gui/#thermal-toolbar","title":"Thermal toolbar","text":"

    The Thermal toolbar contains thermal analysis commands as shown in Figure\u00a0below. Each icon button and its description follows:

    • : creates a temperature boundary condition object.
    • : creates a heat flux boundary condition object.
    • : creates a heat convection boundary condition object.
    • : creates a heat radiation boundary condition object.
    • : creates an initial temperature boundary condition object. It is available for the transient thermal analysis.
    • : creates a temperature result object.

    "},{"location":"welsim/users/gui/#electromagnetic-toolbar","title":"Electromagnetic toolbar","text":"

    The Electromagnetic toolbar contains electric and magnetic analyses commands as shown in Figure\u00a0below. Each icon button and its description follows:

    • : creates a ground boundary condition object.
    • : creates a velocity boundary condition object.
    • : creates a symmetry boundary condition object.
    • : creates a zero charge boundary condition object.
    • : creates a surface charge density boundary condition object.
    • : creates an electric displacement boundary condition object.
    • : creates an insulating boundary condition object.
    • : creates a magnetic potential boundary condition object.
    • : creates a magnetic flux density boundary condition object.
    • : creates a voltage result object.
    • : creates an electric field result object.
    • : creates an electric displacement result object.
    • : creates a vector magnetic potential result object.
    • : creates a magnetic field result object.
    • : creates a magnetic induction field result object.
    • : creates an electromagnetic energy density result object.

    "},{"location":"welsim/users/gui/#tool-toolbar","title":"Tool toolbar","text":"

    The Tool toolbar contains assistance commands as shown in Figure below. Each icon button and its description follows:

    To be added ...\n
    "},{"location":"welsim/users/gui/#help-toolbar","title":"Help toolbar","text":"

    The Help toolbar contains assistance commands as shown in Figure\u00a0below. Each icon button and its description follows:

    • : opens the default internet web browser, and visits online documentation.
    • : opens the default internet web browser, and visits official website.
    • : opens WELSIM license manager interface. You can activate the application with the license key or update the license here.
    • : displays the copyrights and version information of WELSIM application.

    "},{"location":"welsim/users/gui/#graphics-toolbar","title":"Graphics toolbar","text":"

    The Graphics toolbar contains graphical operation commands as shown in Figure\u00a0below. Each icon button and its description follows:

    • : fits the entire model in the graphics window.
    • : displays a closer view of the geometries.
    • : displays a more distant view of the geometries.
    • : displays the selected area of a model in a box that you define.
    • : displays the 3D model in an isometric view.
    • : displays the 3D model in an XY-plane view.
    • : displays the 3D model in a YZ-plane view.
    • : displays the 3D model in an XZ-plane view.
    • : set the volume selectable.
    • : set the face selectable.
    • : set the edge selectable.
    • : set the vertex selectable.

    "},{"location":"welsim/users/gui/#working-with-graphics","title":"Working with graphics","text":"

    The following lists the tips for working with WELSIM graphics:

    • You can use the ruler, presented at the bottom of the graphics window, to estimate the scale of the geometry size.
    • You can rotate the view of geometries by holding and dragging the left mouse button.
    • You can select or deselect multiple topological entities by pressing CTRL or SHIFT key.
    • You can pan the view by dragging your right mouse button or arrow keys.
    • You can zoom in/out the view by scrolling the mouse wheel or using \u00b1 and CTRL keys.
    • You can rotate the view by using the left mouse button.
    • You can open a context menu of views by right-clicking on the graphics field.
    "},{"location":"welsim/users/gui/#preselecting-geometry","title":"PreSelecting geometry","text":"

    This section discusses the pre-selection features in the Graphics window.

    "},{"location":"welsim/users/gui/#highlighting","title":"Highlighting","text":"

    As you hover the cursor over a geometry entity, the graphics highlights the selection and shows the location of the pointer. The pre-selection is controlled by the selection filter, and only the allowed entity types can be pre-selected and highlighted.

    As shown in Figure\u00a0below, the face are highlighted in green color at pre-selection mode.

    "},{"location":"welsim/users/gui/#selecting-geometry","title":"Selecting geometry","text":"

    This section discusses how to select and pick geometry in the Graphics window.

    "},{"location":"welsim/users/gui/#picking","title":"Picking","text":"

    You can pick visible geometries by left clicking on the entities. A valid picking sets the geometry selection property for specific objects, such as boundary conditions.

    You can hold the Ctrl or Shift key down to add or remove multiple selections from the current selections. A pick in the free space clears the current selection.

    "},{"location":"welsim/users/gui/#selection-filters","title":"Selection filters","text":"

    The selection filters control the user selection mode and provide an easy interface for users to pick or select the geometry entities. A pressed button in the selection filter toolbar denotes a selectable geometry type. The following describes the filters.

    • Volumes: Allows selection of the entire body. Highlighted by body surfaces in green. Depressing this filter releases the Faces, Edges, and Vertices filters.
    • Faces: Allows selection of faces. Highlighted by surfaces in green. Depressing this filter releases the Volumes filters.
    • Edges: Allows selection of edges. Highlighted by lines in green. Depressing this filter releases the Volumes filters.
    • Vertices: Allows selection of vertices. Highlighted by points in green. Depressing this filter releases the Volumes filters.
    "},{"location":"welsim/users/gui/#controlling-graphical-view","title":"Controlling graphical view","text":"

    The section describes the controlling and manipulating the graphical view with mouse and keys.

    • Zoom: Middle scrolling.
    • Pan: Right clicking, or arrow keys.
    • Rotate: Left clicking and dragging.
    "},{"location":"welsim/users/gui/#view-annotations","title":"View annotations","text":"

    Graphics window may contain these types of annotations:

    • 2D annotation: statically locates at the left top of the graphics windows. This annotation shows texts about the object type and name and color indicator for specific objects such as boundary conditions.

    • 3D annotation: dynamically locates on the geometry area, the position can be changed as the user rotates, zooms or pans the view.

    "},{"location":"welsim/users/objects/","title":"Objects reference","text":"

    This reference provides a specification for the objects in the tree.

    "},{"location":"welsim/users/objects/#answers","title":"Answers","text":"

    The Answers object customizes the solution properties and contains all result-level objects. The Properties View of the Answers object is shown in Figure\u00a0below.

    "},{"location":"welsim/users/objects/#tree-dependencies","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: FEM Project.
    • Valid Child Tree Objects: Results.
    "},{"location":"welsim/users/objects/#insertion-options","title":"Insertion options","text":"

    Appears by default when you create a new FEM project.

    "},{"location":"welsim/users/objects/#object-properties","title":"Object properties","text":"

    The Properties View for this object include the following:

    Property Name Description ID A read-only field denotes the ID of this object Class Label A read-only field denotes the class name Solver Method A drop-down field allows you to select a solver from the options: CG(Conjugate Gradient), BiCGStab, GMRES, GPBiCG, MUMPS, Direct, DIRECTmkl, where MUMPS, Direct, and DIRECTmkl are direct solvers, and the rest are iterative solvers. The default solver is MUMPS Number of Iterations A number field defines the maximum number of the linear algebra solver iterations. The default is 10000 Residual Threshold A number field defines the residual threshold for the linear algebra solver. The default is 1e-7 Output Time Log A Boolean field outputs the log for each time step. The default is False Output Iteration Log A Boolean field outputs the log each iteration step. The default is False Generate Result Files A Boolean field generates ASCII format result file. The default is False Output Frequency A number field determines the frequency of the result data output. The default value is 1, which outputs result data every step."},{"location":"welsim/users/objects/#body-conditions","title":"Body conditions","text":"

    Body condition type objects enable you to impose the body condition onto the geometry bodies.

    "},{"location":"welsim/users/objects/#application-objects","title":"Application objects","text":"

    Body Force, Acceleration, Earth Gravity, Rotational Velocity

    "},{"location":"welsim/users/objects/#tree-dependencies_1","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: Study.
    • Valid Child Tree Objects: None.
    "},{"location":"welsim/users/objects/#insertion-options_1","title":"Insertion options","text":"

    You can use any of the following methods to insert body conditions:

    • Click the item from the standard Toolbar.
    • Click the item from the Menu.
    • Right click on the Study level objects, and choose the target object from the pop-up context menu.
    "},{"location":"welsim/users/objects/#object-properties_1","title":"Object properties","text":"

    The properties may vary for different body conditions. See the Setting Up Boundary Conditions section for more information about body conditions.

    "},{"location":"welsim/users/objects/#boundary-conditions","title":"Boundary conditions","text":"

    Boundary condition type objects enable you to impose the boundary condition onto the geometry entities, such as faces, edges, and vertices.

    "},{"location":"welsim/users/objects/#application-objects_1","title":"Application objects","text":"

    Displacement, Fixed Support, Fixed Rotation, Pressure, Force, Velocity, Acceleration, Temperature, Heat Flux, Convection, Radiation, Voltage, Ground, Symmetry, Zero Charge, Surface Charge Density, Electric Displacement, Insulating, Magnetic Potential, Magnetic Flux Density

    "},{"location":"welsim/users/objects/#tree-dependencies_2","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: Study.
    • Valid Child Tree Objects: None.
    "},{"location":"welsim/users/objects/#insertion-options_2","title":"Insertion options","text":"

    You can use any of the following methods to insert boundary condition:

    • Click the item from the standard Toolbar.
    • Click the item from the Menu.
    • Right click on the Study level objects, and choose the target object from the pop-up context menu.
    "},{"location":"welsim/users/objects/#object-properties_2","title":"Object properties","text":"

    The properties may vary for different body conditions. See the Setting up Boundary Conditions section for more information about Boundary Conditions.

    "},{"location":"welsim/users/objects/#box","title":"Box","text":"

    The Box object defines a shape that is generated by the built-in modeler. An example of Box object and properties are illustrated in Figure\u00a0below.

    "},{"location":"welsim/users/objects/#tree-dependencies_3","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: Geometry Group.
    • Valid Child Tree Objects: None.
    "},{"location":"welsim/users/objects/#insertion-options_3","title":"Insertion options","text":"

    Appears when you create a box shape. You can use any of the following methods to insert a Box:

    • Click the Add Box item from the standard Toolbar.
    • Click the Add Box item from the Geometry Menu.
    • Right click on the Geometry level objects, and choose the Add Box from the pop-up context menu.
    "},{"location":"welsim/users/objects/#object-properties_3","title":"Object properties","text":"

    The Properties View for this object include the following:

    Property Name Description ID A read-only field denotes the ID of this object Class Label A read-only field denotes the class name Suppressed Include (False - default) or exclude (True) the geometry from the analysis Length A vector component field to determine the length, width, and height of the box. The default value is 10 Origin A vector component field to determine the location of origin. The default vector is 0 Material A drop-down field to assign the material for the selected part. The available material candidates are defined in the Material Project Source A read-only field indicates the shape is generated internally"},{"location":"welsim/users/objects/#connections","title":"Connections","text":"

    The Connections object is a group-type object that may contain the connection objects between two or more parts. The currently supported children object types are Contact Pair.

    "},{"location":"welsim/users/objects/#tree-dependencies_4","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: FEM Project.
    • Valid Child Tree Objects: Contact Pair.
    "},{"location":"welsim/users/objects/#insertion-options_4","title":"Insertion options","text":"

    Connections object is automatically inserted as you add a contact pair object to the tree.

    "},{"location":"welsim/users/objects/#object-properties_4","title":"Object properties","text":"

    The Properties View for this object include the following:

    Property Name Description ID A read-only field denotes the ID of this object Class Label A read-only field denotes the class name Suppressed A Boolean field to include (False - Default) or exclude (True) the object in the analysis"},{"location":"welsim/users/objects/#contact-pair","title":"Contact pair","text":"

    This object defines a contact pair between parts.

    "},{"location":"welsim/users/objects/#tree-dependencies_5","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: Connections.
    • Valid Child Tree Objects: None.
    "},{"location":"welsim/users/objects/#insertion-options_5","title":"Insertion options","text":"

    You can use any of the following methods to insert contact pairs:

    • Click the item from the standard Toolbar.
    • Click the item from the FEM Menu.
    • Right click on the Connections level objects, and select Add Contact command from the pop-up context menu.
    "},{"location":"welsim/users/objects/#object-properties_5","title":"Object properties","text":"

    The Properties View for this object include the following:

    Property Name Description ID A read-only field denotes the ID of this object Class Label A read-only field denotes the class name Suppressed A Boolean field to include (False - Default) or exclude (True) the object in the analysis Master Geometry A Geometry Selection field to scope geometry entities, such as faces, edges Target Geometry A Geometry Selection field to scope geometry entities, such as faces, edges Contact Type A drop-down enumeration field to select a type from three options: Bonded, Frictionless, and Frictional Formulation A drop-down enumeration field to selection contact formulation from two options: Lagrange and Augmented Lagrange. This property is only available for Frictionless or Frictional contact type Finite Sliding A Boolean field to turn on (True) or off (False - default) the finite sliding algorithm. This property is only available for Frictionless or Frictional contact type Normal Direction Tolerance A number field to determine the distance tolerance in the normal direction. The default value is 1e-5 Tangential Direction Tolerance A number field to determine the distance tolerance in the tangential direction. The default value is 1e-5 Normal Direction Penalty A number field to determine the penalty value in the normal direction. The default value is 1e3 Tangential Direction Penalty A number field to determine the penalty value in the tangential direction. The default value is 1e3"},{"location":"welsim/users/objects/#cylinder","title":"Cylinder","text":"

    The Cylinder object defines a shape that is generated by the built-in modeler. An example of Cylinder object and properties are illustrated in Figure\u00a0below.

    "},{"location":"welsim/users/objects/#tree-dependencies_6","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: Geometry Group.
    • Valid Child Tree Objects: None.
    "},{"location":"welsim/users/objects/#insertion-options_6","title":"Insertion options","text":"

    Appears when you create a Cylinder shape. You can use any of the following methods to insert a Cylinder:

    • Click the Add Cylinder item from the standard Toolbar.
    • Click the Add Cylinder item from the Geometry Menu.
    • Right click on the Geometry level objects, and choose the Add Cylinder from the pop-up context menu.
    "},{"location":"welsim/users/objects/#object-properties_6","title":"Object properties","text":"

    The Properties View for this object include the following:

    Property Name Description ID A read-only field denotes the ID of this object Class Label A read-only field denotes the class name Suppressed Include (False - default) or exclude (True) the geometry from the analysis Normal A vector component field to determine the direction of the cylinder. The default value is (0,0,1) Radius A number component field to determine the radius of the cylinder base. The default value is 10 Height A number component field to determine the height of the cylinder. The default value is 30 Angle A number component field to determine the sweeping angle of the cylinder circle. The default value 360 gives a full cylinder Origin A vector component field to determine the location of origin. The default vector is 0 Material A drop-down field to assign the material for the selected part. The available material candidates are defined in the Material Project Source A read-only field indicates the shape is generated internally"},{"location":"welsim/users/objects/#fem-project","title":"FEM project","text":"

    The FEM Project object represents an independent analysis, which contains Geometry, Mesh, Study, and Answers objects. The Connections object is not created until you add a contact pair object. An example of FEM Project and properties are illustrated in Figure\u00a0[fig:ch3_guide_obj_fem_proj].

    "},{"location":"welsim/users/objects/#tree-dependencies_7","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: Solution.
    • Valid Child Tree Objects: Geometry Group, Mesh Group, Connections, Study, Answers.
    "},{"location":"welsim/users/objects/#insertion-options_7","title":"Insertion options","text":"

    Appears by default when you create a new FEM project.

    "},{"location":"welsim/users/objects/#object-properties_7","title":"Object properties","text":"

    The Properties View for this object include the following:

    Property Name Description ID A read-only field denotes the ID of this object Class Label A read-only field denotes the class name Numerical Method A read-only field to indicate the Finite Element Method applied in this project Dimension A read-only field to indicate a 3D analysis of this project Physics Type A drop-down enumeration field for you to select the physics type. The available options are Structural, Thermal, and Electromagnetic. The default is Structural. Note that change this property may change the validation of existing objects and display of object's properties Analysis Type A drop-down enumeration field for you to select the analysis type. Depending on the Physics Type, the available options vary. For the Structural analysis, the options are Static, Transient, and Modal. For the Thermal analysis, the options are Steady-State and Transient. For the Electromagnetic analysis, the options are ElectroStatic and MagnetoStatic Ambient Temperature A number field to determine the environment temperature for the analysis, the default value is 22.3"},{"location":"welsim/users/objects/#geometry-group","title":"Geometry group","text":"

    Geometry Group object contains the geometries in the form of a part or assembly. All imported and created geometries are included in this group-level object as shown in Figure\u00a0below.

    "},{"location":"welsim/users/objects/#tree-dependencies_8","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: FEM Project.
    • Valid Child Tree Objects: Part, Box, Cylinder, Plane, Line.
    "},{"location":"welsim/users/objects/#insertion-options_8","title":"Insertion options","text":"

    Appears by default when you create a new FEM project.

    "},{"location":"welsim/users/objects/#object-properties_8","title":"Object properties","text":"

    The Properties View for this object include the following:

    Property Name Description ID A read-only field denotes the ID of this object Class Label A read-only field denotes the class name"},{"location":"welsim/users/objects/#initial-temperature","title":"Initial temperature","text":"

    Initial Temperature defines the temperature status at the beginning of the simulation for transient thermal analysis. An example of Initial Temperature and its properties are shown in Figure\u00a0below.

    "},{"location":"welsim/users/objects/#tree-dependencies_9","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: Study.
    • Valid Child Tree Objects: None.
    "},{"location":"welsim/users/objects/#insertion-options_9","title":"Insertion options","text":"

    You can use any of the following methods to insert initial temperature:

    • Click the item from the standard Toolbar.
    • Click the item from the FEM Menu.
    • Right click on the Study level objects, and choose Insert Conditions... > Initial Temperature command from the pop-up context menu.

    Note

    Inserting initial condition command is only applicable when the Physics Type and Analysis Type properties of FEM Project object are Thermal and Transient, respectively.

    "},{"location":"welsim/users/objects/#object-properties_9","title":"Object properties","text":"

    The Properties View for this object include the following:

    Property Name Description ID A read-only field denotes the ID of this object Class Label A read-only field denotes the class name Suppressed A Boolean field to include (False - Default) or exclude (True) the object in the analysis Scoping Method A read-only field shows All Initial Temperature A number field to define the temperature value. The default is 22.3"},{"location":"welsim/users/objects/#line","title":"Line","text":"

    The Line object defines a shape that is generated by the built-in modeler. An example of Line object and properties are illustrated in Figure\u00a0below.

    "},{"location":"welsim/users/objects/#tree-dependencies_10","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: Geometry Group.
    • Valid Child Tree Objects: None.
    "},{"location":"welsim/users/objects/#insertion-options_10","title":"Insertion options","text":"

    Appears when you create a line shape. You can use any of the following methods to insert a Line:

    • Click the Add Line item from the standard Toolbar.
    • Click the Add Line item from the Geometry Menu.
    • Right click on the Geometry level objects, and choose the Add Line from the pop-up context menu.
    "},{"location":"welsim/users/objects/#object-properties_10","title":"Object properties","text":"

    The Properties View for this object include the following:

    Property Name Description ID A read-only field denotes the ID of this object Class Label A read-only field denotes the class name Suppressed Include (False - default) or exclude (True) the geometry from the analysis Start Point A vector component field to determine one point of a line. The default value is 0 End Point A vector component field to determine another point of a line. The default value is (10, 10, 0) Material A drop-down field to assign the material for the selected part. The available material candidates are defined in the Material Project Source A read-only field indicates the shape is generated internally"},{"location":"welsim/users/objects/#material","title":"Material","text":"

    A Material object defines a material data using the associated properties and spreadsheet data. You can define multiple material objects in the WELSIM application. An example of a Material object and its properties and spreadsheet are shown in Figure\u00a0below.

    "},{"location":"welsim/users/objects/#tree-dependencies_11","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: Material Project.
    • Valid Child Tree Objects: None.
    "},{"location":"welsim/users/objects/#insertion-options_11","title":"Insertion options","text":"

    You can use any of the following methods to insert material:

    • Click the Add Material item from the standard Toolbar.
    • Click the Add Material item from the Material Menu.
    • Right click on the Material level objects, and choose Add Material command from the pop-up context menu.
    "},{"location":"welsim/users/objects/#object-properties_11","title":"Object properties","text":"

    The Properties View for this object include the following:

    Property Name Description ID A read-only field denotes the ID of this object Class Label A read-only field denotes the class name Suppressed A Boolean field to include (False - Default) or exclude (True) the object in the analysis"},{"location":"welsim/users/objects/#spreadsheet","title":"Spreadsheet","text":"

    The Material object is able to display the Spreadsheet window, which provides a friendly user interface for defining all material properties as shown in Figure\u00a0below. You can double click or right click on the Material object and select the Edit command to display the spreadsheet window.

    "},{"location":"welsim/users/objects/#material-project","title":"Material project","text":"

    The Material Project object holds all material definition objects.

    "},{"location":"welsim/users/objects/#tree-dependencies_12","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: Solution.
    • Valid Child Tree Objects: Material.
    "},{"location":"welsim/users/objects/#insertion-options_12","title":"Insertion options","text":"

    Appears by default when you create a new FEM project.

    "},{"location":"welsim/users/objects/#object-properties_12","title":"Object properties","text":"

    The Properties View for this object include the following:

    Property Name Description ID A read-only field denotes the ID of this object Class Label A read-only field denotes the class name"},{"location":"welsim/users/objects/#mesh-group","title":"Mesh group","text":"

    Mesh Group manages all meshing features and tools for the project. An example of mesh object and properties is shown in Figure\u00a0below.

    "},{"location":"welsim/users/objects/#tree-dependencies_13","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: FEM Project.
    • Valid Child Tree Objects: Mesh Settings, Mesh Method.
    "},{"location":"welsim/users/objects/#insertion-options_13","title":"Insertion options","text":"

    Appears by default when you create a new FEM project.

    "},{"location":"welsim/users/objects/#object-properties_13","title":"Object properties","text":"

    The Properties View for this object include the following:

    Property Name Description ID A read-only field denotes the ID of this object Class Label A read-only field denotes the class name Number of Nodes A read-only output field to show the number of generated nodes. The value is automatically updated as the mesh is completed Number of Elements A read-only output field to show the number of generated elements. The value is automatically updated as the mesh is completed Number of Tetrahedrons A read-only output field to show the number of generated tetrahedrons. The value is automatically updated as the mesh is completed Number of Triangles A read-only output field to show the number of generated triangles. The value is automatically updated as the mesh is completed"},{"location":"welsim/users/objects/#mesh-method","title":"Mesh method","text":"

    In the multi-body analysis, different parts may need different mesh density due to the various sizes of geometries. Mesh Method object helps you fine tuning the mesh for the specifically scoped geometries. An example of Mesh Method object is shown in Figure\u00a0below.

    "},{"location":"welsim/users/objects/#tree-dependencies_14","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: Mesh Group.
    • Valid Child Tree Objects: None.
    "},{"location":"welsim/users/objects/#insertion-options_14","title":"Insertion options","text":"

    You can use any of the following methods to insert Mesh Method:

    • Click the item from the standard Toolbar.
    • Click the item from the FEM Menu.
    • Right click on the Mesh level objects, and choose Add Mesh Method command from the pop-up context menu.
    "},{"location":"welsim/users/objects/#object-properties_14","title":"Object properties","text":"

    The Properties View for this object include the following:

    Property Name Description ID A read-only field denotes the ID of this object Class Label A read-only field denotes the class name Scoping Method A read-only field indicates the scoping method Geometry A geometry selection field to scope the geometry entities (volume/body only) Maximum Size A number field determines the maximum size of the generated finite element Quadratic A read-only field to show the order of the generated element. This property is determined by the Quadratic property in the global Mesh Settings object Mesh Density A drop-down enumeration field to determine the mesh density for the scoped geometries. The options are Very Coarse, Coarse, Regular, Fine, Very Fine, and User Defined. The default is Regular. If you select User Defined, additional properties Growth Rate, Segments per Edge, and Segments per Radius are shown Growth Rate A number field determines the change of mesh density in spatial. The default value is 0.3 Segments per Edge A number field determines the number of element segments per edge. The default value is 1. The higher value, the more dense mesh Segments per Radius A number field determines the number of element segments per radius. The default value is 2. The higher value, the more dense mesh Number of Nodes A read-only output field to show the number of generated nodes. The value is updated as the mesh is completed Number of Elements A read-only output field to show the number of generated elements. The value is updated as the mesh is completed Number of Tetrahedrons A read-only output field to show the number of generated tetrahedrons. The value is updated as the mesh is completed Number of Triangles A read-only output field to show the number of generated triangles. The value is updated as the mesh is completed"},{"location":"welsim/users/objects/#mesh-settings","title":"Mesh settings","text":"

    The Mesh Settings object is a global setting for the meshing operations. You change the global mesh settings by tuning the properties of this object. An example of Mesh Settings object is shown in Figure\u00a0[fig:ch3_guide_obj_mesh_settings].

    "},{"location":"welsim/users/objects/#tree-dependencies_15","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: Mesh Group.
    • Valid Child Tree Objects: None.
    "},{"location":"welsim/users/objects/#insertion-options_15","title":"Insertion options","text":"

    Appears by default when you create a new FEM project.

    "},{"location":"welsim/users/objects/#object-properties_15","title":"Object properties","text":"

    The Properties View for this object include the following:

    Property Name Description ID A read-only field denotes the ID of this object Class Label A read-only field denotes the class name Maximum Size A number field to determine the maximum size of the generated finite element Quadratic A Boolean field to determine the linear element (False) or bilinear element (True) Mesh Density A drop-down enumeration field to determine the mesh density for the scoped geometries. The options are Very Coarse, Coarse, Regular, Fine, Very Fine, and User Defined. The default is Regular. If you select User Defined, additional properties Growth Rate, Segments per Edge, and Segments per Radius are shown Growth Rate A number field indicate the change of mesh density in spatial. The default value is 0.3 Segments per Edge A number field indicate the element segment per edge. The default value is 1. The higher value, the more dense mesh Segments per Radius A number field indicate the element segment per radius. The default value is 2. The higher value, the more dense mesh"},{"location":"welsim/users/objects/#part","title":"Part","text":"

    The Part object defines a component of the geometry that is imported from an external CAD file. An example of Part object and properties are illustrated in Figure\u00a0[fig:ch3_guide_obj_part].

    "},{"location":"welsim/users/objects/#tree-dependencies_16","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: Geometry Group.
    • Valid Child Tree Objects: None.
    "},{"location":"welsim/users/objects/#insertion-options_16","title":"Insertion options","text":"

    Appears when you import geometry from external files. You can use any of the following methods to insert Part:

    • Click the item from the standard Toolbar.
    • Click the Import item from the Menu.
    • Right click on the Geometry level objects, and choose the Insert... from the pop-up context menu.
    "},{"location":"welsim/users/objects/#object-properties_16","title":"Object properties","text":"

    The Properties View for this object include the following:

    Property Name Description ID A read-only field denotes the ID of this object Class Label A read-only field denotes the class name Suppressed Include (False - default) or exclude (True) the part from the analysis Scale A number field to manipulate the size of the imported geometry. The default value is 1 Origin A vector component field to determine the location of origin. The default vector is 0 Material A drop-down field to assign the material for the selected part. The available material candidates are defined in the Material Project Structure Type A drop-down field to define the structure type. The available options are Solid, Shell, Beam, and Truss. The default is Solid Source A read-only field indicates the name of the imported geometry file"},{"location":"welsim/users/objects/#plate","title":"Plate","text":"

    The Plate object defines a shape that is generated by the built-in modeler. An example of Plate object and properties are illustrated in Figure\u00a0[fig:ch3_guide_obj_part].

    "},{"location":"welsim/users/objects/#tree-dependencies_17","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: Geometry Group.
    • Valid Child Tree Objects: None.
    "},{"location":"welsim/users/objects/#insertion-options_17","title":"Insertion options","text":"

    Appears when you create a plate shape. You can use any of the following methods to insert a Plate:

    • Click the Add Plate item from the standard Toolbar.
    • Click the Add Plate item from the Geometry Menu.
    • Right click on on the Geometry level objects, and choose the Add Plate from the pop-up context menu.
    "},{"location":"welsim/users/objects/#object-properties_17","title":"Object properties","text":"

    The Properties View for this object include the following:

    Property Name Description ID A read-only field denotes the ID of this object Class Label A read-only field denotes the class name Suppressed Include (False - default) or exclude (True) the geometry from the analysis Length A vector component field to determine the length vector of the plate. The default value is (10, 0, 0) Width A vector component field to determine the width vector from the origin. The default vector is (0, 5, 0) Material A drop-down field to assign the material for the selected part. The available material candidates are defined in the Material Project Thickness A number field to determine the thickness of the plate. The default value is 0.01 Source A read-only field indicates the shape is generated internally"},{"location":"welsim/users/objects/#results","title":"Results","text":"

    The Result objects define the simulation output for displaying and analyzing the results from a solution.

    "},{"location":"welsim/users/objects/#application-objects_2","title":"Application objects","text":"

    Deformation, Stress, Strain, Acceleration, Velocity, Rotation, Reaction Force, Reaction Moment, Temperature, Voltage, Electric Field, Electric Displacement, Electromagnetic Energy Density, Magnetic Potential, Magnetic Flux Density, Magnetic Field, User-Defined Result.

    "},{"location":"welsim/users/objects/#tree-dependencies_18","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: Answers.
    • Valid Child Tree Objects: None.
    "},{"location":"welsim/users/objects/#insertion-options_18","title":"Insertion options","text":"

    Appears by default when you start the WELSIM application.

    "},{"location":"welsim/users/objects/#object-properties_18","title":"Object properties","text":"

    The properties may vary for different result types. The following lists the properties that may be shown for the most of Result objects. See the Using results section for more information.

    Property Name Description ID A read-only field denotes the ID of this object Class Label A read-only field denotes the class name Suppressed Include (False - default) or exclude (True) the result object from the analysis Result By Determines the result loading type Set Number Determines the set number to retrieve the result data Maximum Value The maximum result value at the current step Minimum Value The minimum result value at the current step"},{"location":"welsim/users/objects/#solution","title":"Solution","text":"

    The Solution object acts as a root object in the WELSIM application. Only one Solution can exist per simulation session, and one solution can contain multiple FEM projects.

    "},{"location":"welsim/users/objects/#tree-dependencies_19","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: None - highest level in the tree.
    • Valid Child Tree Objects: FEM Project.
    "},{"location":"welsim/users/objects/#insertion-options_19","title":"Insertion options","text":"

    Appears by default when you create a new FEM project.

    "},{"location":"welsim/users/objects/#study","title":"Study","text":"

    The Study object holds all analysis related objects such as Study Settings, Boundary Conditions, Body Conditions, and Initial Conditions. An example of Study object is shown in Figure\u00a0[fig:ch3_guide_obj_study].

    "},{"location":"welsim/users/objects/#tree-dependencies_20","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: FEM Project.
    • Valid Child Tree Objects: Boundary Conditions, Body Conditions, Initial Temperature.
    "},{"location":"welsim/users/objects/#insertion-options_20","title":"Insertion options","text":"

    Appears by default when you create a new FEM project.

    "},{"location":"welsim/users/objects/#object-properties_19","title":"Object properties","text":"

    The Properties View for this object include the following:

    Property Name Description ID A read-only field denotes the ID of this object Class Label A read-only field denotes the class name Number of Steps A number field to determine the total number of steps. The default value is 1. The input value must be positive Current Step A number field to determine the current step for the successive settings. The default value is 1. The input value must be less than or equal to the Number of Steps. Note that Current Step property of Study object is adjustable, and determines the Current Step properties in other objects such as Study Settings, and Boundary Conditions Current End Time a number field to determine the end time of the current step. The value must be larger than that of the last step"},{"location":"welsim/users/objects/#study-settings","title":"Study Settings","text":"

    The Study Settings object allows you to define analysis and solving settings to customize a specific simulation model. An example of Study Settings object is shown in Figure\u00a0[fig:ch3_guide_obj_study_settings].

    "},{"location":"welsim/users/objects/#tree-dependencies_21","title":"Tree dependencies","text":"
    • Valid Parent Tree Object: Study.
    • Valid Child Tree Objects: None.
    "},{"location":"welsim/users/objects/#insertion-options_21","title":"Insertion options","text":"

    Appears by default when you create a new FEM project.

    "},{"location":"welsim/users/objects/#object-properties_20","title":"Object properties","text":"

    The properties of Study Settings vary for different Physics and Analysis types. The following lists the available properties according to Analysis Type:

    • Static Structural and Thermal: Current Step (Read-Only), Number of SubSteps, Relative Tolerance, Absolute Tolerance, Maximum Iterations.
    • Transient Structural and Thermal: Current Step (Read-Only), Auto-Timing, Number of SubSteps, Time Incremental (Shown as Auto Timing is False), Relative Tolerance, Absolute Tolerance, Maximum Iterations.
    • Modal Structural: Number of Modes, Lancos Tolerance, Lancos Iterations.
    • ElectroStatic and MagnetoStatic: Current Step (Read-Only), Relative Tolerance, Absolute Tolerance, Maximum Iterations.
    "},{"location":"welsim/users/objects/#spreadsheet_1","title":"Spreadsheet","text":"

    The Study Settings object can display the Spreadsheet window, which provides a friendly user interface to review properties at all steps as shown in Figure\u00a0[fig:ch3_guide_obj_study_settings]. You can double click or right click on the Study Settings object and select the Edit command to display the Spreadsheet window.

    "},{"location":"welsim/users/overview/","title":"Overview","text":"

    This chapter is the user guide for working with WELSIM application, which is used to perform various types of structural, thermal, and electromagnetic analyses. The entire simulation process is tied together by a unified graphical user interface.

    "},{"location":"welsim/users/overview/#overview","title":"Overview","text":"

    WELSIM application enables you to investigate design alternative efficiently. You can modify any aspect of analysis or vary parameters, then update the project to the see results of the change in the modeling. A typical modeling process is composed of defining the model, and boundary conditions applied to it, computing for the simulation's response to the conditions, then evaluating the solutions with a variety of tools.

    The WELSIM software application has a tree structure that consists of \u201cobjects\u201d that enable you to define simulation conditions. By clicking the objects, you activate the associated properties in the property window, and you can use the corresponding command and tools to conduct the simulation study. The following sections describe in details to use the WELSIM to set up and implement simulation studies.

    "},{"location":"welsim/users/results/","title":"Using results","text":"

    This section describes the details of a result. The help for Results is classified by the physics and analysis types.

    "},{"location":"welsim/users/results/#introduction-to-the-results","title":"Introduction to the results","text":"

    You can generate results to understand the behaviors of the analyzed model. The advantages of using results in WELSIM application are:

    • Illustrates result contour over the simulation domain for various solution quantities, such as stress, deformation, temperature, voltage, etc.
    • Probe results to calculate the abstract engineering quantities, such as reaction forces.
    • Displays the minimum and maximum values over time in Chart and Tabular Data windows.
    • Allows customized results using User-Defined Results.
    • Export result data to external files.
    "},{"location":"welsim/users/results/#result-application","title":"Result application","text":"

    Applying results can be achieved by

    • Right-click on the Answer object or its children objects in the tree, select Insert Results from the pop-up context menu and then choose from the result options.
    • Click the result object from the Menu or Toolbar.
    "},{"location":"welsim/users/results/#result-definitions","title":"Result definitions","text":"

    This section describes the fundamental features in result definitions.

    "},{"location":"welsim/users/results/#result-controller","title":"Result controller","text":"

    In the multi-step or transient analysis, the solution contains result data at various steps. Result By property provides a controller to select the desired step data to display. You can determine to show the result by Set Number or Time/Frequency. The default is by Set Number. Additional properties such as Set Number, Time, or Frequency shows up as you define the Result By property.

    "},{"location":"welsim/users/results/#clear-generated-data","title":"Clear generated data","text":"

    You can clear results data from the database using the Clear Result command from the Toolbar, Menu, or the right-click context menu on a result object.

    You also can clear entire solution data from the database using the Clear Calculated Data command from the Toolbar, Menu, or the right-click context menu on an Answers object. These two commands from the context menu are shown in Figure\u00a0[fig:ch3_guide_rst_clear_data].

    "},{"location":"welsim/users/results/#display-controller","title":"Display controller","text":"

    You can select the Graphics tab on the result Properties View pane. As shown in Figure\u00a0[fig:ch3_guide_rst_display_prop], the following properties are available to adjust the contour display:

    • Line Width: determines the line width of the mesh frame.
    • Show Mesh: Show (True) or hide (False - default) the mesh frames on the result contour.
    • Show Backface: Show (True - default) result contour on the back face.
    • Show Deformation: Show (True) or ignore (False - default) the structural deformation on the result contour. This option is only valid for the structural analysis.
    • Deformation Scale: Determines the scale of the deformation, the default value 1 denotes the true deformation. This option is only valid as Show Deformation is True.

    "},{"location":"welsim/users/results/#structural-results","title":"Structural results","text":"

    The following structural results are described in this section.

    "},{"location":"welsim/users/results/#deformation","title":"Deformation","text":"

    Physical deformation of the modeling geometries can be calculated and plotted in the form of contour. This result is available for all structural analysis. The following gives the properties of result object:

    • Type: The available options are Deformation X, Deformation Y, Deformation Z, and Total Deformation. The default is Total Deformation, which essentially shows the magnitude of the deformation vector.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.
    "},{"location":"welsim/users/results/#stress","title":"Stress","text":"

    The stress quantities provide mechanical insights to the given model and material of a part or an assembly under a specific structural loading environment. A general 3D stress state contains three normal and three shear stresses. The stress quantities in WELSIM application are the nodal values and available for all structural analysis. The equivalent stress (also called von-Mises stress) is related to the principal stresses by the equation:

    \\[ \\sigma_{VM}=\\left[\\dfrac{(\\sigma_{11}-\\sigma_{22})^{2}+(\\sigma_{22}-\\sigma_{33})^{2}+(\\sigma_{33}-\\sigma_{11})^{2}+6(\\sigma_{12}^{2}+\\sigma_{23}^{2}+\\sigma_{31}^{2})}{2}\\right]^{1/2} \\]

    The following gives the properties of result object:

    • Type: The available options are Normal Stress X, Normal Stress Y, Normal Stress Z, Shear Stress XY, Shear Stress YZ, Shear Stress XZ, and von-Mises Stress. The default is von-Mises Stress.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.
    "},{"location":"welsim/users/results/#strain","title":"Strain","text":"

    The strain quantities provide deformation insights to the given model and material of a part or an assembly under a specific structural loading environment. This result is available for all structural analysis.

    The available properties for strain result are:

    • Type: The available options are Normal Strain X, Normal Strain Y, Normal Strain Z, Shear Strain XY, Shear Strain YZ, and Shear Strain XZ. The default is Normal Strain X.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.
    "},{"location":"welsim/users/results/#acceleration","title":"Acceleration","text":"

    The acceleration quantities demonstrate the acceleration of the given model and material of a part or an assembly under a specific structural loading environment. This result is available for transient structural analysis.

    The available properties for acceleration result are:

    • Type: The available options are Acceleration X, Acceleration Y, Acceleration Z, and Total Acceleration. The default is Total Acceleration.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Note

    Acceleration result is only available for the transient structural analysis.

    "},{"location":"welsim/users/results/#velocity","title":"Velocity","text":"

    The velocity quantities demonstrate the velocity of the given model and material of a part or an assembly under a specific structural loading environment. This result is available for transient structural analysis.

    The available properties for velocity result are:

    • Type: The available options are Velocity X, Velocity Y, Velocity Z, and Total Velocity. The default is Total Velocity.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Note

    Velocity result is only available for the transient structural analysis.

    "},{"location":"welsim/users/results/#rotation","title":"Rotation","text":"

    The rotation quantities demonstrate the rotation of the given model and material of a part or an assembly under a specific structural loading environment. This result is available for only shell structure.

    The available properties for rotation result are:

    • Type: The available options are Rotation XY, Rotation YZ, Rotation XZ, and Total Rotation. The default is Total Rotation.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Note

    Rotation result is only available for the shell structural analysis.

    "},{"location":"welsim/users/results/#reaction-force-probe","title":"Reaction Force Probe","text":"

    The reaction force provides an insight to abstract reaction force of the given model and material of a part or an assembly under a specific structural loading environment. This result is available for structural analysis.

    The available properties for a reaction force probe are:

    • Type: The available options are Reaction Force X, Reaction Force Y, Reaction Force Z, and Total Reaction Force. The default is Total Reaction Force.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Note

    This probe result does not show contour on the geometry. The primary output data is the Maximum Value and Minimum Value displayed in the Properties View window.

    "},{"location":"welsim/users/results/#reaction-moment-probe","title":"Reaction Moment Probe","text":"

    The reaction moment provides an insight to abstract quantities of the given model and material of a part or an assembly under a specific structural loading environment. This result is available for only shell structure.

    The available properties for reaction moment probe are:

    • Type: The available options are Reaction Moment X, Reaction Moment Y, Reaction Moment Z, and Total Reaction Moment. The default is Total Reaction Moment.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Note

    Reaction moment probe result is only available for the shell structural analysis.

    Reaction moment probe result does not show contour on the geometry. The primary output data is the Maximum Value and Minimum Value displayed in the Properties View window.

    "},{"location":"welsim/users/results/#thermal-results","title":"Thermal results","text":"

    The following thermal results are described in this section:

    "},{"location":"welsim/users/results/#temperature","title":"Temperature","text":"

    The temperature, a scalar quantity, provides an insight to the temperature distribution throughout the structure. Temperature results can be displayed as a contour plot.

    The available properties for temperature are:

    • Type: The sole available option is Temperature. This field is read-only.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.
    "},{"location":"welsim/users/results/#electric-results","title":"Electric results","text":""},{"location":"welsim/users/results/#voltage","title":"Voltage","text":"

    The voltage, a scalar quantity, provides an insight to the electric potential distribution throughout the conductor bodies.

    The available properties for voltage are:

    • Type: The sole available option is Voltage. This is a read-only field.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.
    "},{"location":"welsim/users/results/#electric-field","title":"Electric Field","text":"

    The electric field, a vector component quantity, provides an insight to the electric field intensity distribution throughout the bodies.

    The available properties for Electric Field are:

    • Type: The available options are Electric Field X, Electric Field Y, Electric Field Z, Total Electric Field. The default Total Electric Field option displays the total magnitude of the vectors as a contour.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.
    "},{"location":"welsim/users/results/#current-density","title":"Current Density","text":""},{"location":"welsim/users/results/#electric-displacement","title":"Electric Displacement","text":"

    The electric displacement, a vector component quantity, provides an insight to the electric displacement intensity distribution throughout the bodies. This quantity has the constitutive relation with Electric Field as shown in equation below:

    \\[ D=\\epsilon E \\]

    where D is the electric displacement, E is the electric field, and \\(\\epsilon\\) is the electric permittivity. The available properties for Electric Displacement are:

    • Type: The available options are Electric Displacement X, Electric Displacement Y, Electric Displacement Z, Total Electric Displacement. The default Total Electric Displacement option displays the total magnitude of the vectors as a contour.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.
    "},{"location":"welsim/users/results/#energy-density","title":"Energy Density","text":"

    The energy density, a scalar quantity, provides an insight to the electromagnetic energy throughout the simulation bodies.

    The available properties for energy density are:

    • Type: The sole available option is Energy Density. This is a read-only field.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.
    "},{"location":"welsim/users/results/#magnetic-results","title":"Magnetic results","text":"

    The magnetostatic analysis provides fundamental result quantities for you to investigate the field.

    "},{"location":"welsim/users/results/#electric-potential","title":"Electric Potential","text":""},{"location":"welsim/users/results/#magnetic-potential","title":"Magnetic Potential","text":"

    Magnetic Potential vector components are computed throughout the simulation domain. The available properties for Magnetic Potential are:

    • Type: The available options are Magnetic Potential X, Magnetic Potential Y, Magnetic Potential Z, Total Magnetic Potential. The default Total Magnetic Potential option displays the total magnitude of the vectors as a contour.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.
    "},{"location":"welsim/users/results/#magnetic-flux-density","title":"Magnetic Flux Density","text":"

    Magnetic Flux Density vector components are computed throughout the simulation domain. The available properties for Magnetic Flux Density are:

    • Type: The available options are Magnetic Flux Density X, Magnetic Flux Density Y, Magnetic Flux Density Z, Total Magnetic Flux Density. The default Total Magnetic Flux Density option displays the total magnitude of the vectors as a contour.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.
    "},{"location":"welsim/users/results/#magnetic-field","title":"Magnetic Field","text":"

    Magnetic Field vector components are computed throughout the simulation domain. The available properties for Magnetic Field are:

    • Type: The available options are Magnetic Field X, Magnetic Field Y, Magnetic Field Z, Total Magnetic Field. The default Total Magnetic Field option displays the total magnitude of the vectors as a contour.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.
    "},{"location":"welsim/users/results/#user-defined-results","title":"User-Defined Results","text":"

    This section describes the use of the User-Defined Result feature in WELSIM application. The user-defined result provides you with more flexible result evaluation methods. In addition to the system-provided result types, the User-Defined Result allows you to plot more broad kinds of results with the given expression.

    Like other result types that display contours, chart, and data, the User-Defined results:

    • Need you to input a supported Expression to retrieve the result data.
    • Need you to specify a set, time, or frequency in the Properties View window.
    • Display Maximum and Minimum values in the Properties View window.
    • Display Maximum and Minimum data over time in Tabular Data and Chart windows.

    Applying a User-Defined Result can be done using one of the following methods:

    • Select the User-Defined Result item from the Menu of FEM.
    • Select the User-Defined Result button from the standard Toolbar.
    • Right-click the Solution or Result object, and select the User-Defined Result item.

    An example of User Defined Result properties view is shown in Figure\u00a0[fig:ch3_guide_user_defined_rst_prop].

    "},{"location":"welsim/users/results/#user-defined-result-expressions","title":"User Defined Result expressions","text":"

    The property Expression accepts the capital string values, and the lower case letters are converted automatically to the capital letters. The following lists the supported Expressions used in the WELSIM application:

    Expression Result description UVW Total deformation for structural analysis U Directional deformation X for structural analysis V Directional deformation Y for structural analysis W Directional deformation Z for structural analysis SIGVM von-Mises stress for the structural analysis SIG00 Normal stress X for the structural analysis SIG11 Normal stress Y for the structural analysis SIG22 Normal stress Z for the structural analysis SIG01 Shear stress XY for the structural analysis SIG12 Shear stress YZ for the structural analysis SIG02 Shear stress XZ for the structural analysis EPS00 Normal strain X for the structural analysis EPS11 Normal strain Y for the structural analysis EPS22 Normal strain Z for the structural analysis EPS01 Shear strain XY for the structural analysis EPS12 Shear strain YZ for the structural analysis EPS02 Shear strain XZ for the structural analysis RFT Total reaction force for the structural analysis RFX Directional reaction force X for the structural analysis RFY Directional reaction force Y for the structural analysis RFZ Directional reaction force Z for the structural analysis RMT Total reaction moment for the shell structural analysis RMX Directional reaction moment X for the shell structural analysis RMY Directional reaction moment Y for the shell structural analysis RMZ Directional reaction moment Z for the shell structural analysis ENEEL Total energy for the structural analysis V123 Total velocity for the transient structural analysis V1 Directional velocity X for the transient structural analysis V2 Directional velocity Y for the transient structural analysis V3 Directional velocity Z for the transient structural analysis A123 Total acceleration for the transient structural analysis A1 Directional acceleration X for the transient structural analysis A2 Directional acceleration Y for the transient structural analysis A3 Directional acceleration Z for the transient structural analysis ROTT Total rotation for shell structural analysis ROTX Directional rotation X for shell structural analysis ROTY Directional rotation Y for shell structural analysis ROTZ Directional rotation Z for shell structural analysis TEMP Temperature for thermal analysis EM_U Voltage for electromagnetic analysis EM_ET Total electric field intensity for electromagnetic analysis EM_EX Directional electric field intensity X for electromagnetic analysis EM_EY Directional electric field intensity Y for electromagnetic analysis EM_EZ Directional electric field intensity Z for electromagnetic analysis EM_DT Total electric displacement for electromagnetic analysis EM_DX Directional electric displacement X for electromagnetic analysis EM_DY Directional electric displacement Y for electromagnetic analysis EM_DZ Directional electric displacement Z for electromagnetic analysis EM_EN Energy density for electromagnetic analysis EM_HT Total magnetic field intensity for electromagnetic analysis EM_HX Directional magnetic field intensity X for electromagnetic analysis EM_HY Directional magnetic field intensity Y for electromagnetic analysis EM_HZ Directional magnetic field intensity Z for electromagnetic analysis EM_BT Total magnetic flux density for electromagnetic analysis EM_BX Directional magnetic flux density X for electromagnetic analysis EM_BY Directional magnetic flux density Y for electromagnetic analysis EM_BZ Directional magnetic flux density Z for electromagnetic analysis EM_AT Magnitude of a magnetic potential vector for electromagnetic analysis EM_A_x Magnetic potential vector component X for electromagnetic analysis EM_A_y Magnetic potential vector component Y for electromagnetic analysis EM_A_z Magnetic potential vector component Z for electromagnetic analysis"},{"location":"welsim/users/results/#result-tools","title":"Result tools","text":""},{"location":"welsim/users/results/#result-legend","title":"Result legend","text":"

    The result legend feature helps you display the result range and contour colors in a specific design. The legend component is shown in the left of the Graphics window. As shown in Figure below, the legend displays the following information:

    • Project Name
    • Result Object Name
    • Result Type
    • Unit
    • Time
    • Current Date and Time

    The Legend style can be adjusted by right-clicking on the Legend field. As shown in Figure\u00a0below, the Context Menu contains items:

    • Banded: Displays the contour in banded colors. It is mutually exclusive to the Smooth option. The default is toggled Off.
    • Smooth: Displays the contour in smooth colors. It is mutually exclusive to the Banded option. The default is toggled On.
    • User-Defined Max/Min: Allows you to manually set the Minimum and Maximum values on the result legend, the contour on the bodies can be updated accordingly. Once this option is toggled, a popped-up dialog lets you input the specific minimum and maximum values. You can revert the manual minimum and maximum values by toggling off this option. The min/max input dialog is shown below.
    • Logarithmic Scale: Set legend markers in a logarithmic scale order. The default is toggled Off.
    • Scientific Notation: Use the scientific notation. The default is On.
    • Digits: Determines the number of digits after the decimal symbol, the range is between 1 and 7. The default value is 3.
    • Labels: Determines the number of legend markers, the range is between 6 and 14. The default value is 11.
    • Color Scheme: Provides you four color options: Rainbow, Reverse Rainbow, Grayscale, Reverse Grayscale. The default is Rainbow.
    • Reset All: Resets all settings to the default.

    Note

    For the option of user-defined max/min settings, the input maximum value must be greater than the minimum value.

    "},{"location":"welsim/users/results/#exporting-results","title":"Exporting results","text":"

    The data associated with result objects can be exported in ASCII (.txt or .dat) file format by right-clicking on the desired result object and selecting the Export Result option. Once executed, you are asked to define a filename and select the directory to save the file.

    Note

    The desired result object must have been successfully evaluated before exporting the result data.

    "},{"location":"welsim/users/steps/","title":"Steps for using the application","text":"

    This section discusses the workflow in performing simulation analysis in the WELSIM application.

    "},{"location":"welsim/users/steps/#creating-analysis-environment","title":"Creating analysis environment","text":"

    All analyses in WELSIM are represented by one independent analysis environment. After creating a new project environment, you can choose the analysis type and define the parameters to conduct the simulation study.

    "},{"location":"welsim/users/steps/#unit-system-behavior","title":"Unit system behavior","text":"

    The WELSIM provides eight types of unit systems for you to chose. You can select the preferred unit system from File > Preferences > General > Units. Once the unit system is chosen, quantity units of FEM objects are fixed. However, user still can select different unit for the quantity defined in material module. The material quantity will be converted to the system units at solve.

    "},{"location":"welsim/users/steps/#defining-materials","title":"Defining materials","text":"

    In simulation analysis, a geometry's attribute is influenced by the material properties that are assigned to the body. When you create a new FEM project, a material project and a structural steel material object are created automatically. This material project can include multiple material objects, which contains the material properties for the successive analysis. The system-generated structural steel can be used directly.

    You can add new materials by either one of the methods below:

    • Click the Add Material button from Toolbar.
    • Click the Add Material item from the Material Menu.
    • Right click on the Material Project tree object, and choose Add Material item from the pop-up context menu.
    "},{"location":"welsim/users/steps/#editing-material-properties","title":"Editing material properties","text":"

    To manage material properties, you can

    • double click on the material object in the tree, or
    • right click on the material object and select Edit item from the pop-up context menu as shown in Figure\u00a0below.

    "},{"location":"welsim/users/steps/#defining-material-properties","title":"Defining material properties","text":"

    In the material definition panel, two tabs display on the left sub-window as shown in Figure\u00a0below. The Library tab gives you a quick method to add a bundle of properties for the specific type of material. The Build allows you to add each preferred property one by one.

    "},{"location":"welsim/users/steps/#defining-analysis-type","title":"Defining analysis type","text":"

    There are several analysis types are supported in WELSIM. You can define the analysis type while performing an analysis. For example, if the temperature is to be calculated, you would choose a thermal analysis. In the FEM project object, you can set the Physics Type and Analysis Type from the Properties View window as shown in Figure\u00a0below. The currently available physics and analysis types are:

    • Structural: Static, Transient, Modal
    • Thermal: Steady-State, Transient
    • Electromagnetics: Electostatic, Magnetostatic

    "},{"location":"welsim/users/steps/#generating-geometries","title":"Generating geometries","text":"

    There are two ways of generating geometries in the WELSIM application. You can either create primitive shapes using built-in tools or import an existing STEP/IGES file. Since the built-in tool only can create primitive shapes such as box and cylinder, it is recommended to create your complex geometry in an external application and import the CAD file into WELSIM.

    "},{"location":"welsim/users/steps/#create-primitive-shapes","title":"Create primitive shapes","text":"

    The following lists the primitive shapes that WELSIM build-in tool can create:

    • 3D box
    • 3D cylinder
    • 3D plate
    • 3D line
    "},{"location":"welsim/users/steps/#import-geometry-files","title":"Import geometry files","text":"

    For the complex geometry or practical designs, you can create your geometry in an external CAD application, and import to WELSIM application via STEP or IGES file. The properties view of the imported geometry allows you to define the geometry attributes, as shown in Figure\u00a0below.

    "},{"location":"welsim/users/steps/#defining-part-behaviors","title":"Defining part behaviors","text":"

    The primitive and imported parts have slightly different behaviors, but the primary attributes are the same. This section describes the behaviors of the imported part.

    "},{"location":"welsim/users/steps/#geometry-scale","title":"Geometry scale","text":"

    The Scale determines the size change of the imported geometry, and the current geometry size is the original size multiplied by the scale value. The default value is 1. Increasing the scale value enlarges the geometry, reducing this value causes the geometry smaller. The scale ruler on the bottom of the Graphics Window provides a reference for users to recognize the current size of the geometry.

    "},{"location":"welsim/users/steps/#spatial-parameters","title":"Spatial parameters","text":"

    For the imported geometry, the Spatial Parameters allows the user to adjust the origin of geometries. The default value is the origin of global coordinates (0, 0, 0).

    "},{"location":"welsim/users/steps/#material-assignment","title":"Material assignment","text":"

    Once you have defined the material objects and created the geometry, you can assign the specific material to the selected geometry object. Click Material property, and the cell displays all candidate materials in the drop-down list as shown in Figure\u00a0below. Each entry includes the material object name and ID.

    "},{"location":"welsim/users/steps/#structure-type","title":"Structure type","text":"

    The Structure Type provides a topological reference for you to differentiate the solid, shell, and beam geometries. The default structural type is Solid.

    "},{"location":"welsim/users/steps/#source-file-name","title":"Source file name","text":"

    The read-only Source property shows the information of the imported geometry file name. It provides a reference for you to identify the specific imported CAD file.

    "},{"location":"welsim/users/steps/#applying-mesh","title":"Applying mesh","text":"

    Meshing is the process that your geometry is spatially discretized into finite elements and nodes. The quality of the mesh directly influences the final solutions. You can automatically mesh the geometry domains, and generate 3D tetrahedral elements (Tet10 and Tet4), or 3D triangle elements (Tri6 and Tri3).

    If your model does not mesh, the system applies the default settings and automatically meshes the domains at solve time. However, it is recommended to mesh the domain before solving since the system provides a reference for you to examine the mesh. Mesh Settings controls are available to assist you in adjusting the mesh density and quality.

    In the multi-body analysis, you can apply local Mesh Method object and scope the target bodies to achieve a finer or coarser mesh comparing to other bodies.

    "},{"location":"welsim/users/steps/#defining-connections","title":"Defining connections","text":"

    In some analyses, you may need to set up the connections such as contact. The available connection features are:

    • Contact Pair: defines two parts are bonded or may contact during the motion. It is supported for both structural and thermal analyses.
    "},{"location":"welsim/users/steps/#defining-study-settings","title":"Defining study settings","text":"

    The Study and Study Settings objects are inserted automatically when you started a new FEM project in the step of Creating Analysis Environment. These two objects define the necessary conditions for the solving, such as steps, substeps, end time, convergence tolerance, etc.

    You can create multiple steps in the properties of the Study object. As shown in Figure\u00a0below, the property Number of Steps determines the total steps in the analysis. The Current Step property of determines the current step that other properties are defining on.

    The spreadsheet for the Study Settings object displays the related properties for all steps.

    "},{"location":"welsim/users/steps/#defining-initial-conditions","title":"Defining initial conditions","text":"

    Based on the chosen analysis type, you can define the initial conditions to the analysis. The following initial conditions are supported:

    • Initial Temperature: For a transient thermal analysis, you can specify an initial temperature object. The properties view of initial temperature is shown in Figure\u00a0below.

    "},{"location":"welsim/users/steps/#applying-boundary-conditions","title":"Applying boundary conditions","text":"

    You can impose various boundary conditions based on the types of analysis. For instance, the structural analysis allows you to impose pressure, force, displacement, and other boundary conditions. The thermal analysis enable you to impose thermal flux and temperature boundary conditions.

    The body conditions are imposed on the volumes instead of surfaces or edges. For example, the standard earth gravity, acceleration, and rotational velocity act on the bodies.

    The boundary and body conditions act according to the steps. For the multi-step analysis, the magnitude of those conditions can vary. The Tabular Data and Chart windows show related data and curves to represent the input values along time/steps.

    For the transient analysis, the Initial Status property provides options for the user to define the boundary value at the beginning of the simulation. As shown in Figure\u00a0below, you can choose the initial value to be None or Equal to Step 1.

    "},{"location":"welsim/users/steps/#solving","title":"Solving","text":"

    The WELSIM application contains the integrated solvers. These solvers are essentially executable applications and can be instantiated by the front-end using inter-processing scheme. During the solving process, the front-end program generates the input scripts, mesh data file and feeds these files to the solvers. After calculation, the front-end interface can consume the generated result files and displays the resulting contour on the GUI.

    Depended on the analysis type, the following solvers are available in WELSIM:

    • WelSimFemSolver1: solves the structural and thermal problems.
    • WelSimFemSolver2: solves the electromagnetic problems.
    "},{"location":"welsim/users/steps/#solution-progress","title":"Solution progress","text":"

    The overall solution progress can be indicated by the Output window, where you can view the output information from the solvers. If an calculation is completed successfully, you can see the similar message below in the Output window:

    WelSimFemSolver2 Completed !!\n

    "},{"location":"welsim/users/steps/#evaluating-results","title":"Evaluating results","text":"

    The WELSIM application provides fully integrated result review module, and you can evaluate simulation results with no need of other software tools. Depends on the analysis type, various results are available for you to examine solutions. The Using Results section lists all available results that may be used in the post-processing.

    The following lists the methods to add result objects:

    • Right click a Answers or Result object in the tree, and choose the target result item from the context menu.
    • Click the result button from the Menu or Toolbar.

    The following steps are to evaluate results:

    • Select the target result object in the tree.
    • If the solution is calculated, you can review the result by clicking the Evaluate button from the toolbar, menu, or the right-clicking context menu.

    The following result types are available:

    • Contour results: Displays a contour plot of result over geometry surface.
    • Probe results: Displays an annotation of the target area, and shows results in the Properties view.

    See the Using Results section for more details on results.

    "},{"location":"welsim/users/steps/#saving-analysis-project","title":"Saving analysis project","text":"

    You can save the solution with all settings into an external file, and open this file later or on a different computer that has WELSIM installed. The persisted data include two parts:

    • WELSIM database file (*.wsdb).
    • Associated data folder, the folder name is consistent with the database file.

    Note

    The saved database file (*.wsdb) contains the information of objects and their properties. The geometry data is saved as external STEP files. The mesh and result object settings are saved. However, the mesh and result data are not included yet. You need to perform meshing and solving to obtain those data in a resumed project.

    "},{"location":"welsim/users/study/","title":"Configuring study settings","text":"

    This section describes the Study and Study Settings configuration.

    "},{"location":"welsim/users/study/#general-settings","title":"General settings","text":"

    When you start a new FEM Project, the Study and Study Settings objects are inserted in the tree automatically. With these objects selected, you can define many solving options in the Properties View window. For example, you can define the properties of Steps, Substeps, Solver, etc.

    "},{"location":"welsim/users/study/#step-controls","title":"Step controls","text":"

    Step Controls define the analysis steps for both static and transient analysis. These properties in the Study object has such characteristics:

    • Number of Steps must be positive.
    • Current Step must be less than or equal to the Number of Steps. Note that Current Step property of Study object is adjustable, and determines the Current Step properties in other objects such as Study Settings, and boundary conditions.
    • Current End Time must be greater than the Current End Time in the last step.
    "},{"location":"welsim/users/study/#nonlinear-controls","title":"Nonlinear controls","text":"

    For the nonlinear analysis, the properties of the Nonlinear Settings Controls determine the convergence of the solution. Those properties are mainly related to the Newton-Raphson algorithm.

    • Relative Tolerance: The default value is 1e-4.
    • Absolute Tolerance: The default value is 1e-5.
    • Maximum Iterations: The default value is 40.
    "},{"location":"welsim/users/study/#solver-controls","title":"Solver controls","text":"

    Solver Controls determines the attributes of the linear algebra solvers. The following lists the related properties:

    • Solver Method: provides user to select a solver from the options Conjugate Gradient, BiCGStab, GMRES, GPBiCG, MUMPS, Direct, DIRECTmkl, where MUMPS, Direct, and DIRECTmkl are the direct solver, and the rest are iterative solver. The default solver is MUMPS.
    • Number of Iterations: defines the maximum number of the linear algebra solver iterations.
    • Residual Threshold: defines the residual threshold for the linear algebra solver.
    "},{"location":"welsim/users/study/#output-controls","title":"Output controls","text":"

    The Output Controls determines the output rules of solving and results. The available options are:

    • Output Time Log: outputs the log for each time step. The default is false.
    • Output Iteration Log: outputs the log each iteration step. The default is false.
    • Generate Result Files: generates ASCII format result file. The default is false.
    • Output Frequency: determines the frequency of the result data output. The default value is 1, which outputs result data every step.
    • Reorder Result Element: changes the higher order elements to the linear elements in the mesh data of the result file. The deatil is false.
    "},{"location":"welsim/vm/electromagnetic/","title":"Electromagnetic","text":"

    To be added...

    "},{"location":"welsim/vm/introduction/","title":"Introduction","text":"

    WELSIM Verification Manual presents a collection of test cases that demonstrate a number of the capabilities of the WELSIM analysis environment. The available tests are engineering problems that provide independent verification, usually a closed form equation. Many of them are classical engineering problems.

    "},{"location":"welsim/vm/introduction/#introduction","title":"Introduction","text":""},{"location":"welsim/vm/introduction/#index-of-test-cases","title":"Index of test cases","text":"

    The following lists all verification cases tested with WELSIM application. Each case entry describes the test case number, element type, analysis type, and solution options.

    • VM001: Solid Element, Static Structural, Linear.
    • VM002: Solid Element, Static Structural, Linear.
    • VM003: Solid Element, Steady-State Thermal, Linear.
    "},{"location":"welsim/vm/structural/","title":"Structural","text":""},{"location":"welsim/vm/structural/#statically-inteterminate-reaction-force-analysis-vm001","title":"Statically inteterminate reaction force analysis VM001","text":"

    An assembly of three cylinder bars is supported at both end surfaces. Forces \\(F_{1}\\) and \\(F_{2}\\) is applied on the middle of the assembly as shown in Figure\u00a0[fig:ch5_vm_001_schematic].

    The input data about material, geometry, and loads are given in Table\u00a0[tab:ch5_vm_001_parameters].

    Material Properties Geometric Properties Boundary Conditions Young's Modulus E=2e11 h=10 \\(F_{1}\\)=2000 Mass Density \\(\\rho\\)=7850 a=3 \\(F_{2}\\)=1000 Poission's Ratio v=0.3 b=3

    The geometries and imposed boundary conditions are shown in Figure\u00a0[fig:ch5_vm_001_bc].

    The result comparison is given in Table\u00a0[tab:ch5_vm_001_result].

    Results Theory WELSIM Error (%) Z Reaction Force at Top Fixed Support 1800 1810 0.556 Z Reaction Force at Bottom Fixed Support 1200 1202 0.167

    This test case project file is located at [vm/VM_WELSIM_001.wsdb].

    "},{"location":"welsim/vm/structural/#rectangular-plate-with-circular-hole-subjected-to-tensile-pressure-vm002","title":"Rectangular plate with circular hole subjected to tensile pressure VM002","text":"

    A rectangular plate with a circular hole is fixed along one of the end faces. A tensile pressure load is imposed on another end face as shown in Figure\u00a0[fig:ch5_vm_002_schematic].

    The input data about material, geometry, and loads are given in Table\u00a0[tab:ch5_vm_002_parameters].

    Material Properties Geometric Properties Boundary Conditions Young's Modulus E=2e11 a=15 Pressure P=1e4 Poission's Ratio v=0.3 b=7.5 c=2.5 d=5 thickness=1

    The geometries and imposed boundary conditions are shown in Figure\u00a0[fig:ch5_vm_002_bc].

    The result comparison is given in Table\u00a0[tab:ch5_vm_002_result].

    Results Theory WELSIM Error (%) Maximum Normal X Stress 3.125e4 3.156e4 0.992

    This test case project file is located at %Installation Directory%/vm/VM_WELSIM_002.wsdb.

    "},{"location":"welsim/vm/thermal/","title":"Thermal","text":""},{"location":"welsim/vm/thermal/#heat-transfer-in-a-composite-wall-vm003","title":"Heat transfer in a composite wall VM003","text":"

    An assembly wall consists of fire brick and insulating brick. The temperature and surface convection coefficient are given for both end surfaces. The simulation tries to find the temperature distribution of the assembly. The schematic view of the model is shown in Figure\u00a0[fig:ch5_vm_003_schematic].

    The input data about material, geometry, and loads are given in Table\u00a0[tab:ch5_vm_003_parameters].

    Material Properties Geometric Properties Boundary Conditions Thermal conductivity of fire brick wall: \\(k_{F}\\) = 1.852e-5 a=14 Convection coefficient \\(h_{F}\\)=2.315e-5 Thermal conductivity of insulating wall: \\(k_{A}\\)=2.315e-6 b=9 Ambient temperature \\(T_{F}\\)=3000 cross-section=1x1 Convection coefficient \\(h_{A}\\)=3.858e-6 Ambient temperature \\(T_{A}\\)=80

    The geometries and imposed boundary conditions are shown in Figure\u00a0[fig:ch5_vm_003_bc].

    The result comparison is given in Table\u00a0[tab:ch5_vm_003_result].

    Results Theory WELSIM Error (%) Minimum Temperature 336 336.724 0.215 Maximum Temperature 2957 2957.216 0.007

    Info

    This test case file is located at vm/VM_WELSIM_003.wsdb.

    "}]} \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index 8d363fe..595f339 100755 --- a/sitemap.xml +++ b/sitemap.xml @@ -2,382 +2,382 @@ http://docs.welsim.com/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/features/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/glossary/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/license/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/misc/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/support/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/beamsection/beamsection_getstart/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/beamsection/beamsection_overview/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/curvefitter/curvefit_getstart/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/curvefitter/curvefit_io/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/curvefitter/curvefit_overview/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/curvefitter/curvefit_theory/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/install/licensing/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/install/linux/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/install/windows/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/legal/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/legal/LGPL/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/legal/contact/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/legal/trademarks/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/mateditor/mat_core_loss/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/mateditor/mat_file_format/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/mateditor/mat_gui/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/mateditor/mat_hyperelasticity_curvefit/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/mateditor/mat_io/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/mateditor/mat_io_openradioss/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/mateditor/mat_mutually_exclusive/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/mateditor/mat_overview/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/mateditor/mat_properties/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/mateditor/mat_table_data/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/mateditor/mat_theory/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/mateditor/mat_theory_eos/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/mateditor/mat_theory_failure/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/mateditor/mat_theory_hyper-elasticity/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/mateditor/mat_theory_io/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/mateditor/mat_theory_plasticity/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/mateditor/mat_workflow/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/mateditor/mateditor_overview/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/mateditor/material_data/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/unitconverter/unitconverter/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/welsim/release_notes/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/welsim/troubleshooting/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/welsim/get_started/quick_start/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/welsim/get_started/electromagnetics/electrostatic/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/welsim/get_started/structural/structural_modal/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/welsim/get_started/structural/structural_static/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/welsim/get_started/structural/structural_transient/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/welsim/get_started/thermal/thermal_ss/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/welsim/get_started/thermal/thermal_transient/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/welsim/material/mat_overview/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/welsim/mesh/mesh_usage/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/welsim/mesh/meshing/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/welsim/theory/contact/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/welsim/theory/electromagnetic/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/welsim/theory/elements/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/welsim/theory/geometricnl/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/welsim/theory/introduction/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/welsim/theory/materialnl/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/welsim/theory/modal/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/welsim/theory/shapefunction/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/welsim/theory/structures/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/welsim/theory/thermal/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/welsim/theory/transient/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/welsim/users/analysistypes/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/welsim/users/bcs/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/welsim/users/connections/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/welsim/users/geometry/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/welsim/users/gui/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/welsim/users/objects/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/welsim/users/overview/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/welsim/users/results/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/welsim/users/steps/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/welsim/users/study/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/welsim/vm/electromagnetic/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/welsim/vm/introduction/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/welsim/vm/structural/ - 2024-01-08 + 2024-10-15 daily http://docs.welsim.com/welsim/vm/thermal/ - 2024-01-08 + 2024-10-15 daily \ No newline at end of file diff --git a/sitemap.xml.gz b/sitemap.xml.gz index fabbbf40c1a3019e48232780e89e7914a3d892fe..a5b3804e830c28eed9bf86d0a56404371fa5c902 100755 GIT binary patch literal 787 zcmV+u1MK`CiwFp+$qi=$|8r?{Wo=<_E_iKh0M(j3Z`&{shWGpm!@DgfXo0qHoUL6l zbZBRRrcM$Yeki=775)33EGe~v4DC`JJy<7-kRJ2veRu*UhK(!{KJ1qD7z;SN3?nZi%`tMbY>D77c+@9d1Kx3e+v1U@;dKyY1)o z;bz63@di_L{_Jhghxsm5(75fvqH$XtT(K|4iUJ{Fiv!jvo}e~F5MN`t&HFB`33+hlH3q1KAaGeXo=2v& z^YYFHK`^0DFJkF>tWrb2be*69?6io+DN|R7JimGBS9-rimH>U_HLm`e) zsY8TvbhN@bYh$6TL*!UEX_Jg_!glB&!uWWj4Gra@fWol_x}LXyW$3{3)Hm`cluMLY z7KajEv`uJEARJh%nY_mAB9DPc2BZ%FQb%4=D@95=s7zn}9%Kmt^8l^+2`NGzuxG*A z{86ktsKx8m%-QAAu6>A4wGF}*V2U!4D~Lu}nIe$9A>QP1GmcrB>oaMrQ&_O628B@i zKmz4|hNKu0D?hd&ki=}#jM)H{=aei|#d9+Hsg#+ZeFv9Ef#z0rs`0=JD=r0molkT4 z1xPVzN>SO1uw)*AnX13W&%OC6Dvt(y7IT2TMRa2#Y&w>RIZ}&n@9Di|l3-4>`JEDn_RVP{LO^F1Zc*InRoz^Fp%RcDjvasxod66fR3;Ew1 R+xdV%hu?xV)6-ru003sVfU*Dp literal 787 zcmV+u1MK`CiwFqbQJZA~|8r?{Wo=<_E_iKh0M(j3bDKaAhI{`Cjd}^$lfuc!a+fqN zQY1BVIu^M2KJe|HF#kS_07vq;NSe%^3b7nF@aVqY_g3s5U!7f@AfgHWVST&Ztykc6 zsEltO)<1uI-Q2Gq4>$W1Eds5$vd4#YOVoWSioWl+Xb7C@a2sM%pl(H<+UHXK#Z(%y+4R#%&K4joa$rihVI&ysWE`T&NCrySq=D-R)*~&sFBKi)y-6 zzJWTz%b`-n4*TMwWP&K(DE@(`21O|XiUVtGKvZ!M2WE{1k06fA8PwvSFm+vsB#!F{ z${}dtb>T8D8z3Z=5pdwu?PQ=A2dq;(L2Za2zQuBz_d{9}^5D#C3{VR};IeK!k4$Ul z<(&#nSc0SD}~ZCoD9|3Z;7b_WemHnhu_nCZTi`RmEOBKFb?#P7zdwLL8$~ zhY029XoYju#zI+#$gyzJCK=&`?a)Dl@$p6*8p=fhg<}hJJ?{a_(1GWvZ{$xXmng9; z4kf&5o6wv`<^X$(=*C3YbSx2bq!!=gi-gPGAuq5jI_Ix4 zp=v-preJlP_ry|@;MbJz^iV#n;~9^_F&hXDC>rgpa8l#B^Q$zyA|M-eSx&{bsc0)U zGh(YcsFTm3;}@F+(x?66P=r%T_e}{QVxhdU0~(~EliTqV>QM^^WGmvQSHFaV&cZne zrxf@v@)ck>{^ITy-q+H1L=z>ePO{RQ5(zr-h^Z1gtxqnOebC8eVc8k;B2Ok4^1nH@ R^8tYlzX55Vcu!t3004F9ctrpJ diff --git a/support/index.html b/support/index.html index 8118104..1ee80e4 100755 --- a/support/index.html +++ b/support/index.html @@ -1,4 +1,4 @@ - Support - WelSim Documentation

    Support

    Thanks so much for choosing WELSIM! At WELSIM, we want all engineers and scientists to excel. We believe that given the right tools and guidance, all engineers can be highly productive. We strive to provide tools that give their users super powers and we’re happy to provide any guidance we can to help you use them most effectively. If you have any questions or need any help of any kind, don’t hesitate to contact us in whatever way is most convenient for you.

    WelSim/docs

    Support

    Thanks so much for choosing WELSIM! At WELSIM, we want all engineers and scientists to excel. We believe that given the right tools and guidance, all engineers can be highly productive. We strive to provide tools that give their users super powers and we’re happy to provide any guidance we can to help you use them most effectively. If you have any questions or need any help of any kind, don’t hesitate to contact us in whatever way is most convenient for you.

    We exist to help you be as productive you can be. Let us know how we can help you. Happy simulation!

    \ No newline at end of file +Issues and pull requests on our open source projects -->

    We exist to help you be as productive you can be. Let us know how we can help you. Happy simulation!

    \ No newline at end of file diff --git a/unitconverter/unitconverter/index.html b/unitconverter/unitconverter/index.html index a961c9c..076a228 100755 --- a/unitconverter/unitconverter/index.html +++ b/unitconverter/unitconverter/index.html @@ -1,4 +1,4 @@ - Overview - WelSim Documentation

    UnitConverter

    UnitConverter is a free unit conversion software program for engineers. This tool allows you to convert a large number of engineering units quickly and accurately.

    finite_element_analysis_unitconveter_gui

    Specification

    Specification Description
    Operation system Microsoft Windows 7 to 10; 64-bit
    Physical memory At least 4 GB

    Supported unit systems :

    • SI: (kg, m, s, K, A, N, V)
    • MKS Standard: (kg, m, s, °C, A, N, V)
    • NMMTON Standard: (tonne, mm, s, °C, A, N, mV)
    • BIN Standard: (lbm, in, s, °F, A, lbf, V)
    • US Engineering: (lb, in, s, R, A, lbf, V)
    • CGS Standard: (g, cm, s, °C, A, dyne, V)
    • NMM Standard: (kg, mm, s, °C, mA, N, mV)
    • UMKS Standard: (kg, µm, s, °C, mA, µN, V)
    • NMMDAT Standard: (decatonne, mm, s, °C, mA, N, mV)
    • BFT Standard: (lbm, ft, s, °F, A, lbf, V)
    • CGS Consistent: (g, m, s, °C, A, dyne, V)
    • NMM Consistent: (tonne, m, s, °C, mA, t⋅mm/s2, mV)
    • UMKS Consistent: (kg, m, s, °C, pA, µN, pV)
    • BIN Consistent: (slinch, in, s, °C, A, slinch⋅in/s2, V)
    • BFT Consistent: (slug, ft, s, °C, A, slug⋅ft/s2, V)
    • CGuS Standard: (g, cm, \(\mu\)s, °C, A, dyne, V)

    Supported units

    The supported units are listed in the table below.

    Category Materials
    Base Angle, Current, Length, Mass, Temperature, Time
    Common Area, Density, Energy, Frequency, Volume
    Mechanical Acceleration, Angular Acceleration, Angular Velocity, Force, Moment of Inertia, Power, Pressure, Torque, Velocity
    Thermal Heat Flux Density, Heat Transfer Coefficient, Specific Heat Capacity, Thermal Conductivity, Thermal Expansivity
    Electrical Capacitance, Electric Charge, Electrical Conductance, Electrical Conductivity, Inductance, Surface Charge Density, Surface Current Density, Voltage, Volume Charge Density
    Magnetic Magnetic field strength, Magnetic flux density
    WelSim/docs

    UnitConverter

    UnitConverter is a free unit conversion software program for engineers. This tool allows you to convert a large number of engineering units quickly and accurately.

    finite_element_analysis_unitconveter_gui

    Specification

    Specification Description
    Operation system Microsoft Windows 7 to 10; 64-bit
    Physical memory At least 4 GB

    Supported unit systems :

    • SI: (kg, m, s, K, A, N, V)
    • MKS Standard: (kg, m, s, °C, A, N, V)
    • NMMTON Standard: (tonne, mm, s, °C, A, N, mV)
    • BIN Standard: (lbm, in, s, °F, A, lbf, V)
    • US Engineering: (lb, in, s, R, A, lbf, V)
    • CGS Standard: (g, cm, s, °C, A, dyne, V)
    • NMM Standard: (kg, mm, s, °C, mA, N, mV)
    • UMKS Standard: (kg, µm, s, °C, mA, µN, V)
    • NMMDAT Standard: (decatonne, mm, s, °C, mA, N, mV)
    • BFT Standard: (lbm, ft, s, °F, A, lbf, V)
    • CGS Consistent: (g, m, s, °C, A, dyne, V)
    • NMM Consistent: (tonne, m, s, °C, mA, t⋅mm/s2, mV)
    • UMKS Consistent: (kg, m, s, °C, pA, µN, pV)
    • BIN Consistent: (slinch, in, s, °C, A, slinch⋅in/s2, V)
    • BFT Consistent: (slug, ft, s, °C, A, slug⋅ft/s2, V)
    • CGuS Standard: (g, cm, \(\mu\)s, °C, A, dyne, V)

    Supported units

    The supported units are listed in the table below.

    Category Materials
    Base Angle, Current, Length, Mass, Temperature, Time
    Common Area, Density, Energy, Frequency, Volume
    Mechanical Acceleration, Angular Acceleration, Angular Velocity, Force, Moment of Inertia, Power, Pressure, Torque, Velocity
    Thermal Heat Flux Density, Heat Transfer Coefficient, Specific Heat Capacity, Thermal Conductivity, Thermal Expansivity
    Electrical Capacitance, Electric Charge, Electrical Conductance, Electrical Conductivity, Inductance, Surface Charge Density, Surface Current Density, Voltage, Volume Charge Density
    Magnetic Magnetic field strength, Magnetic flux density

    Download

    UnitConverter software is available at our official website.

    \ No newline at end of file +* [x] Magnetic flux density -->

    Download

    UnitConverter software is available at our official website.

    \ No newline at end of file diff --git a/welsim/get_started/electromagnetics/electrostatic/index.html b/welsim/get_started/electromagnetics/electrostatic/index.html index cdf7858..ae6d7db 100755 --- a/welsim/get_started/electromagnetics/electrostatic/index.html +++ b/welsim/get_started/electromagnetics/electrostatic/index.html @@ -1 +1 @@ - Electro-static analysis - WelSim Documentation

    Electrostatic analysis

    This example shows you how to conduct a 3D electrostatic analysis for a unibody part.

    Specifying analysis

    In the Properties View of the FEM Project object, you set the Physics Type property to Electromagnetic and Analysis Type to Electrostatic. An Electro-Static analysis is defined as shown in Figure below.

    finite_element_analysis_welsim_ex6_analysis_type

    Preparing geometry

    Next, you can import the geometry file “h_section_unibody.step” by clicking the Import... command from the Toolbar or Geometry Menu. The imported geometry and material property are shown in Figure below.

    finite_element_analysis_welsim_ex6_geom_mat

    Setting mesh

    To obtain a fine mesh for the analysis, you set the Mesh Settings properties Quadratic to True, and Maximum Size to 3e-3.

    Clicking the Mesh command from the Toolbar or FEM Menu, you can mesh the geometries. There are 34,764 nodes, and 20,657 Tet10 elements generated as shown in Figure below.

    finite_element_analysis_welsim_ex6_mesh_data

    Imposing conditions

    Next, you impose two boundary conditions, a Ground, and Voltage by clicking the corresponding commands from the Toolbar and Electromagnetic Menu. In the Properties View of the Ground object, holding the Ctrl or Shift key and select left bottom and right top surfaces for the Geometry property, as shown in Figure below.

    finite_element_analysis_welsim_ex6_bc_ground

    In the Properties View of Voltage object, set the Voltage value to 5, and scope surfaces for the Geometry property, as shown in Figure below.

    finite_element_analysis_welsim_ex6_bc_voltage

    Solving the model

    To solve the model, you can click the Compute command from the Toolbar, FEM Menu, or right-click on the Answers object and select Compute command from context menu. Depending on the complexity of the model, the solving process can be completed in seconds to hours. The Output window displays the solver messages and indicates the status of the solving process. As shown in Figure [fig:ch2_start_ex1_output_solver], this model is solved successfully.

    Evaluating results

    To evaluate the deformation of the structure, you can add a Voltage object to the tree by clicking the Voltage item from the Toolbar, Electromagnetic Menu. Next, double-clicking the result object or clicking the Evaluate item from the Toolbar or FEM Menu, you display the contour in the Graphics window as shown in Figure below.

    finite_element_analysis_welsim_ex6_rst_voltage

    Adding an electric field result object is similar. Clicking the Electric Field result from Toolbar or Electromagnetic Menu, you insert a Electric Field result object to the tree. Evaluating the default Total Electric Field Type, you obtain the magnitude of the electric field vector contour on the body in the Graphics window. The Maximum and Minimum values of field data are displayed in the Properties View window as shown in Figure below.

    finite_element_analysis_welsim_ex6_rst_voltage

    Info

    This project file is located at examples/quick_electrostatic_01.wsdb.

    \ No newline at end of file + Electro-static analysis - WelSim Documentation

    Electrostatic analysis

    This example shows you how to conduct a 3D electrostatic analysis for a unibody part.

    Specifying analysis

    In the Properties View of the FEM Project object, you set the Physics Type property to Electromagnetic and Analysis Type to Electrostatic. An Electro-Static analysis is defined as shown in Figure below.

    finite_element_analysis_welsim_ex6_analysis_type

    Preparing geometry

    Next, you can import the geometry file “h_section_unibody.step” by clicking the Import... command from the Toolbar or Geometry Menu. The imported geometry and material property are shown in Figure below.

    finite_element_analysis_welsim_ex6_geom_mat

    Setting mesh

    To obtain a fine mesh for the analysis, you set the Mesh Settings properties Quadratic to True, and Maximum Size to 3e-3.

    Clicking the Mesh command from the Toolbar or FEM Menu, you can mesh the geometries. There are 34,764 nodes, and 20,657 Tet10 elements generated as shown in Figure below.

    finite_element_analysis_welsim_ex6_mesh_data

    Imposing conditions

    Next, you impose two boundary conditions, a Ground, and Voltage by clicking the corresponding commands from the Toolbar and Electromagnetic Menu. In the Properties View of the Ground object, holding the Ctrl or Shift key and select left bottom and right top surfaces for the Geometry property, as shown in Figure below.

    finite_element_analysis_welsim_ex6_bc_ground

    In the Properties View of Voltage object, set the Voltage value to 5, and scope surfaces for the Geometry property, as shown in Figure below.

    finite_element_analysis_welsim_ex6_bc_voltage

    Solving the model

    To solve the model, you can click the Compute command from the Toolbar, FEM Menu, or right-click on the Answers object and select Compute command from context menu. Depending on the complexity of the model, the solving process can be completed in seconds to hours. The Output window displays the solver messages and indicates the status of the solving process. As shown in Figure [fig:ch2_start_ex1_output_solver], this model is solved successfully.

    Evaluating results

    To evaluate the deformation of the structure, you can add a Voltage object to the tree by clicking the Voltage item from the Toolbar, Electromagnetic Menu. Next, double-clicking the result object or clicking the Evaluate item from the Toolbar or FEM Menu, you display the contour in the Graphics window as shown in Figure below.

    finite_element_analysis_welsim_ex6_rst_voltage

    Adding an electric field result object is similar. Clicking the Electric Field result from Toolbar or Electromagnetic Menu, you insert a Electric Field result object to the tree. Evaluating the default Total Electric Field Type, you obtain the magnitude of the electric field vector contour on the body in the Graphics window. The Maximum and Minimum values of field data are displayed in the Properties View window as shown in Figure below.

    finite_element_analysis_welsim_ex6_rst_voltage

    Info

    This project file is located at examples/quick_electrostatic_01.wsdb.

    \ No newline at end of file diff --git a/welsim/get_started/quick_start/index.html b/welsim/get_started/quick_start/index.html index 508be44..5d67a4f 100755 --- a/welsim/get_started/quick_start/index.html +++ b/welsim/get_started/quick_start/index.html @@ -1 +1 @@ - Quick start - WelSim Documentation

    Quick start

    This section demonstrates you the primary GUI features and workflow of WELSIM application.

    Graphical user interface

    Overview

    The WELSIM application provides you an ease-of-use graphical interface to customize the finite element analysis settings. The primary components of graphical user interface include:

    • Menus
    • Toolbar
    • Project Explorer (Tree) Window
    • Properties View Window
    • Graphics Window
    • Tabular Data Window
    • Chart Window
    • Output Window

    An overview of graphical user interface is shown in Figure below.

    finite_element_analysis_welsim_gui_overall.

    Menus and toolbar contain primary commands of the application as shown in Figure below. Sections Main Menus and Toolbars of have more details.

    finite_element_analysis_welsim_gui_toolbar.

    Graphics window

    The Graphics window displays the geometries and associated symbols, text, and annotations. In this window, you can pan, rotate, and zoom the 3D geometries using mouse and key. In addition to the geometries, this window may contain annotation, Graphics Toolbar, coordinate system symbol, ruler, logo, etc. A schematic view of the Graphics window is shown in Figure below.

    finite_element_analysis_welsim_gui_graphics.

    Material definition spreadsheet

    The material module provides a spreadsheet panel for you to define and review material properties. An overview of the material property spreadsheet is shown in Figure below.

    finite_element_analysis_welsim_gui_material.

    Geometry display

    The Graphics window displays the 3D geometries, meshed elements, result contours, etc. A 3D geometry and object properties are shown in Figure below.

    finite_element_analysis_welsim_gui_gemoetry.

    Mesh display

    Graphics window displays the mesh as you select the mesh related objects in the tree. The Properties View shows the statistical data of the mesh as shown in Figure below.

    finite_element_analysis_welsim_gui_mesh.

    Boundary condition display

    For the boundary conditions, the Graphics window displays the highlighted entities (faces, edges, vertices), the Property View, Tabular Data, and Chart windows show the boundary values over time. The Properties View window also allows you to scope the geometry entities and set values, as shown in Figure below.

    finite_element_analysis_welsim_gui_bc.

    Solution display

    After solving, the user interface displays the solution and results. The Graphics window displays the result contour and legend. The Properties View shows the Maximum and Minimum values of the result at the given Set Number. The Tabular Data and Chart Windows illustrate the maximum and minimum values over the time as shown in Figure  below.

    finite_element_analysis_welsim_gui_result.

    Result legend

    You can adjust the result contour and legend by right clicking on the legend field and set the parameters in the context menu, as shown in Figure below.

    finite_element_analysis_welsim_gui_result_legend.

    Workflow

    Using WELSIM is straightforward. The following gives you the primary workflow steps in starting a finite element analysis project from scratch:

    Create a new project

    Clicking New command from Toolbar or File Menu creates a new simulation project. Several default objects are automatically generated in the tree, and the Graphics window is filled with the 3D modeling interface. The following shows the behaviors of creating a new project:

    • A Material Project and a FEM Project are created simultaneously. The Material Project object holds only Material objects, and the FEM Project object contains all modeling objects that allow users to customize a finite element analysis. Only one Material Project is allowed in the tree, while you can add multiple FEM Projects to conduct multiple simulation studies at one interface.

    • An activated project displays the object name in Bold. You can double click the project object to activate a FEM Project.

    • Many commands on Toolbar and Menu become available as a FEM project is created.

    • Each object provides a unique context menu, and you can right-click to display the context menu. For example, you can rename an object via the context menu.

    • Each object provides unique options in Properties View window, which is automatically updated as you select objects.

    Defining materials

    In addition to the default Structural Steel material, you can add new materials and define the properties. A Material object represents a material database. The following gives the behaviors of material definition.

    • You can create a new material object by clicking Add Material command from Toolbar or Material Menu. The Material Project many holds multiple Material objects.

    • A newly created Material object requires you to specify the properties. Double-clicking or right-clicking on the material object, you open the Edit spreadsheet.

    • Two methods are available for you to add material properties in the Edit spreadsheet. The Library tab provides you pre-defined material data to directly import. The Build tab lists all available properties for you to add properties one by one.

    Importing or creating geometries

    You can add geometry data by importing a CAD file or creating primitive shapes using the commands from Toolbar or Geometry Menu.

    • The built-in modeler allows you to create primitive shapes such as Box, Cylinder, Plate, and Line.
    • The supported CAD geometry file formats are: STEP, IGES.
    • The ruler in the Graphics window provides you a reference to estimate the size of geometries.
    • The size of the imported geometry can be adjusted by the tuning the Scale property value.

    Meshing

    You can skip meshing at this moment because the system automatically meshes the domain at solving step if no mesh is generated. However, meshing at this step provides you an insight of the mesh quality and a chance to optimize the mesh. You can click the Mesh commands from the Toolbar or FEM Menu to perform the meshing operations.

    • The mesh module supports Tet10, Tet4, Tri6, and Tri3 elements. The default type is the linear element, and you can change the element order by modifying the Quadratic property in Mesh Settings object.
    • For multiple body geometries, you can add a Mesh Method object to make some bodies have different mesh density to the global mesh density, which is defined by the Mesh Settings object.
    • The Toolbar and FEM Menu provide you mesh tools, such as Clear Generated Mesh, Examine Mesh.
    • The mesh density can be adjusted by tuning the properties of Mesh Settings, such as Maximum Size, Mesh Density.

    Analysis settings

    You can define the analysis settings in the following order:

    • Set the Physics Type and Analysis Type in the FEM Project object.
    • Determine the Number of Steps, Current Step, and Current End Time properties in Study object.
    • Determine the analysis settings properties in Study Settings object.
    • Determine the solver settings properties in the Answers object.

    Imposing initial conditions

    For the transient analysis, you can define initial conditions. The available initial conditions are

    • Initial Temperature

    Imposing boundary conditions

    The boundary and body conditions are essential for the conducted analysis. Depending on the Physics Type and Analysis Type, you can insert various condition objects into the tree via the Toolbar or Menu. The following gives the behaviors of the body and boundary conditions.

    • The body and boundary condition value is Step-based.
    • Multiple boundary and body conditions can be jointly imposed on the geometry.
    • In the condition scoping, you can select multiple entities by pressing Ctrl or Shift key. However, the multiple entities for one property field must be the same type of geometry.
    • Graphics window displays the annotation and highlighted geometry entities if a condition object is valid.
    • Tabular Data and Chart windows can show the condition values over time.

    Solve

    To solve the customized model, you can click the Compute command from the Toolbar or FEM Menu. The behaviors of solving are

    • You may be required to Save the project before performing a solving process. The system needs to save the input scripts and mesh data for solvers.
    • The Output window displays the solver messages. The promoted message indicates the success or failure of the solving process.
    • You can discontinue the solving process by clicking the Stop Interprocess button in the Output pane.

    Displaying results

    Depending on the Physics Type and Analysis Type, you can insert various result objects into the tree via the Toolbar or Menu. The following gives the behaviors of the solution and results.

    • To display the resulting contour, you can select the target result object, and click the Evaluate from the Toolbar or FEM Menu, or double click the object.
    • You can adjust the contour format by right clicking on the resulting legend.
    • You can clear result contour by clicking Clear Result, or Clear Calculated Solution commands from the Toolbar or FEM Menu.

    Completed

    The analysis is completed. You can Save the projects to an external “wsdb” file and close the application.

    Note

    The *.wsdb file and associated folder are the WELSIM database for project data persistence, you can open this project file later, on another computer, and on different operation systems.

    \ No newline at end of file + Quick start - WelSim Documentation

    Quick start

    This section demonstrates you the primary GUI features and workflow of WELSIM application.

    Graphical user interface

    Overview

    The WELSIM application provides you an ease-of-use graphical interface to customize the finite element analysis settings. The primary components of graphical user interface include:

    • Menus
    • Toolbar
    • Project Explorer (Tree) Window
    • Properties View Window
    • Graphics Window
    • Tabular Data Window
    • Chart Window
    • Output Window

    An overview of graphical user interface is shown in Figure below.

    finite_element_analysis_welsim_gui_overall.

    Menus and toolbar contain primary commands of the application as shown in Figure below. Sections Main Menus and Toolbars of have more details.

    finite_element_analysis_welsim_gui_toolbar.

    Graphics window

    The Graphics window displays the geometries and associated symbols, text, and annotations. In this window, you can pan, rotate, and zoom the 3D geometries using mouse and key. In addition to the geometries, this window may contain annotation, Graphics Toolbar, coordinate system symbol, ruler, logo, etc. A schematic view of the Graphics window is shown in Figure below.

    finite_element_analysis_welsim_gui_graphics.

    Material definition spreadsheet

    The material module provides a spreadsheet panel for you to define and review material properties. An overview of the material property spreadsheet is shown in Figure below.

    finite_element_analysis_welsim_gui_material.

    Geometry display

    The Graphics window displays the 3D geometries, meshed elements, result contours, etc. A 3D geometry and object properties are shown in Figure below.

    finite_element_analysis_welsim_gui_gemoetry.

    Mesh display

    Graphics window displays the mesh as you select the mesh related objects in the tree. The Properties View shows the statistical data of the mesh as shown in Figure below.

    finite_element_analysis_welsim_gui_mesh.

    Boundary condition display

    For the boundary conditions, the Graphics window displays the highlighted entities (faces, edges, vertices), the Property View, Tabular Data, and Chart windows show the boundary values over time. The Properties View window also allows you to scope the geometry entities and set values, as shown in Figure below.

    finite_element_analysis_welsim_gui_bc.

    Solution display

    After solving, the user interface displays the solution and results. The Graphics window displays the result contour and legend. The Properties View shows the Maximum and Minimum values of the result at the given Set Number. The Tabular Data and Chart Windows illustrate the maximum and minimum values over the time as shown in Figure  below.

    finite_element_analysis_welsim_gui_result.

    Result legend

    You can adjust the result contour and legend by right clicking on the legend field and set the parameters in the context menu, as shown in Figure below.

    finite_element_analysis_welsim_gui_result_legend.

    Workflow

    Using WELSIM is straightforward. The following gives you the primary workflow steps in starting a finite element analysis project from scratch:

    Create a new project

    Clicking New command from Toolbar or File Menu creates a new simulation project. Several default objects are automatically generated in the tree, and the Graphics window is filled with the 3D modeling interface. The following shows the behaviors of creating a new project:

    • A Material Project and a FEM Project are created simultaneously. The Material Project object holds only Material objects, and the FEM Project object contains all modeling objects that allow users to customize a finite element analysis. Only one Material Project is allowed in the tree, while you can add multiple FEM Projects to conduct multiple simulation studies at one interface.

    • An activated project displays the object name in Bold. You can double click the project object to activate a FEM Project.

    • Many commands on Toolbar and Menu become available as a FEM project is created.

    • Each object provides a unique context menu, and you can right-click to display the context menu. For example, you can rename an object via the context menu.

    • Each object provides unique options in Properties View window, which is automatically updated as you select objects.

    Defining materials

    In addition to the default Structural Steel material, you can add new materials and define the properties. A Material object represents a material database. The following gives the behaviors of material definition.

    • You can create a new material object by clicking Add Material command from Toolbar or Material Menu. The Material Project many holds multiple Material objects.

    • A newly created Material object requires you to specify the properties. Double-clicking or right-clicking on the material object, you open the Edit spreadsheet.

    • Two methods are available for you to add material properties in the Edit spreadsheet. The Library tab provides you pre-defined material data to directly import. The Build tab lists all available properties for you to add properties one by one.

    Importing or creating geometries

    You can add geometry data by importing a CAD file or creating primitive shapes using the commands from Toolbar or Geometry Menu.

    • The built-in modeler allows you to create primitive shapes such as Box, Cylinder, Plate, and Line.
    • The supported CAD geometry file formats are: STEP, IGES.
    • The ruler in the Graphics window provides you a reference to estimate the size of geometries.
    • The size of the imported geometry can be adjusted by the tuning the Scale property value.

    Meshing

    You can skip meshing at this moment because the system automatically meshes the domain at solving step if no mesh is generated. However, meshing at this step provides you an insight of the mesh quality and a chance to optimize the mesh. You can click the Mesh commands from the Toolbar or FEM Menu to perform the meshing operations.

    • The mesh module supports Tet10, Tet4, Tri6, and Tri3 elements. The default type is the linear element, and you can change the element order by modifying the Quadratic property in Mesh Settings object.
    • For multiple body geometries, you can add a Mesh Method object to make some bodies have different mesh density to the global mesh density, which is defined by the Mesh Settings object.
    • The Toolbar and FEM Menu provide you mesh tools, such as Clear Generated Mesh, Examine Mesh.
    • The mesh density can be adjusted by tuning the properties of Mesh Settings, such as Maximum Size, Mesh Density.

    Analysis settings

    You can define the analysis settings in the following order:

    • Set the Physics Type and Analysis Type in the FEM Project object.
    • Determine the Number of Steps, Current Step, and Current End Time properties in Study object.
    • Determine the analysis settings properties in Study Settings object.
    • Determine the solver settings properties in the Answers object.

    Imposing initial conditions

    For the transient analysis, you can define initial conditions. The available initial conditions are

    • Initial Temperature

    Imposing boundary conditions

    The boundary and body conditions are essential for the conducted analysis. Depending on the Physics Type and Analysis Type, you can insert various condition objects into the tree via the Toolbar or Menu. The following gives the behaviors of the body and boundary conditions.

    • The body and boundary condition value is Step-based.
    • Multiple boundary and body conditions can be jointly imposed on the geometry.
    • In the condition scoping, you can select multiple entities by pressing Ctrl or Shift key. However, the multiple entities for one property field must be the same type of geometry.
    • Graphics window displays the annotation and highlighted geometry entities if a condition object is valid.
    • Tabular Data and Chart windows can show the condition values over time.

    Solve

    To solve the customized model, you can click the Compute command from the Toolbar or FEM Menu. The behaviors of solving are

    • You may be required to Save the project before performing a solving process. The system needs to save the input scripts and mesh data for solvers.
    • The Output window displays the solver messages. The promoted message indicates the success or failure of the solving process.
    • You can discontinue the solving process by clicking the Stop Interprocess button in the Output pane.

    Displaying results

    Depending on the Physics Type and Analysis Type, you can insert various result objects into the tree via the Toolbar or Menu. The following gives the behaviors of the solution and results.

    • To display the resulting contour, you can select the target result object, and click the Evaluate from the Toolbar or FEM Menu, or double click the object.
    • You can adjust the contour format by right clicking on the resulting legend.
    • You can clear result contour by clicking Clear Result, or Clear Calculated Solution commands from the Toolbar or FEM Menu.

    Completed

    The analysis is completed. You can Save the projects to an external “wsdb” file and close the application.

    Note

    The *.wsdb file and associated folder are the WELSIM database for project data persistence, you can open this project file later, on another computer, and on different operation systems.

    \ No newline at end of file diff --git a/welsim/get_started/structural/structural_modal/index.html b/welsim/get_started/structural/structural_modal/index.html index 77ffb35..c2c98ef 100755 --- a/welsim/get_started/structural/structural_modal/index.html +++ b/welsim/get_started/structural/structural_modal/index.html @@ -1 +1 @@ - Modal analysis - WelSim Documentation

    Structural modal analysis

    This example shows you how to conduct a 3D transient structural analysis for an assembly.

    Defining materials

    In this multi-body analysis, we assign Structural Steel and Aluminum materials to different parts. Since a Structural Steel object is already added as you initialize a FEM Project, you only need to insert an aluminum material object by clicking Add Material from Toolbar or FEM Menu.

    To edit the material properties, you can double-click the Material object, or right-click on the Material object and select the Edit command from the context menu. In the material editor, you select the Library tab > General Materials > Aluminum Alloy, then click Import button or double-click the Aluminum Alloy entry. Click the OK to save and exit the material editing.

    You can rename this new material object to Aluminum by press F2 key or right-clicking.

    Specifying analysis

    In the Properties View of the FEM Project object, you set the Analysis Type property to Modal. A Modal Structural analysis is defined as shown in Figure below.

    finite_element_analysis_welsim_ex3_analysis_type

    Preparing geometry

    Next, you can import the geometry file “h_section_multibody.step” and assign the materials to the corresponding parts. Three Part objects in the Geometry group represent three bodies in the Graphics window, respectively. You assign the Aluminum material to the Part2, which is the connection body in the middle, the rest bodies are assigned with Structural Steel material.

    Setting mesh

    To obtain a fine mesh for the analysis, you set the Mesh Settings properties Quadratic to True, and Maximum Size to 3e-3, as shown in Figure below.

    finite_element_analysis_welsim_ex3_mesh_settings

    Clicking the Mesh command from the Toolbar or FEM Menu, you can mesh the geometries. There are 42,329 nodes, and 25,920 Tet10 elements generated as shown in Figure below.

    finite_element_analysis_welsim_ex3_mesh_data

    Specifying contacts

    Next, you need to define two Contact Pairs to bond the three parts into one uni-body for the analysis. Clicking the Add Contact command from the Toolbar or FEM Menu, you add two Contact Pair objects into the tree. You can rename these two objects to Contact1 and Contact2, respectively. Then you select the surfaces for Master and Target Geometry properties.

    Defining analysis settings

    In the Properties View of Study Settings object, you can define the analysis details such as Number of Modes. Here, you can use the default settings as shown in Figure below.

    finite_element_analysis_welsim_ex3_study_settings

    Imposing boundary conditions

    In this modal analysis, you impose a Constraint (Fixed Support) boundary condition, which can be processed by clicking the corresponding commands from the Toolbar and Structural Menu. In the Properties View of the Constraint object, select the left bottom surface for the Geometry property.

    Solving the model

    To solve the model, you can click the Compute command from the Toolbar, FEM Menu, or right-click on the Answers object and select Compute command from context menu. Depending on the complexity of the model, the solving process can be completed in seconds to hours. The Output window displays the solver messages and indicates the status of the solving process.

    Evaluating results

    To evaluate the deformation of the structure, you can add a Deformation object to the tree by clicking the Deformation item from the Toolbar, Structural Menu. A result object may provide multiple sub-result types. For example, a Deformation result object allows you to specify one deformation type from the candidates Deformation X, Y, Z, and Total.

    After setting the Type property to Deformation Z, double-clicking on the result object displays the resulting contour in the Graphics window as shown in Figure below. You also can click the Evaluate item from the Toolbar or FEM Menu to evaluate the result.

    finite_element_analysis_welsim_ex3_rst_disp_total1

    Info

    This project file is located at examples/quick_structural_modal_solid_01.wsdb.

    \ No newline at end of file + Modal analysis - WelSim Documentation

    Structural modal analysis

    This example shows you how to conduct a 3D transient structural analysis for an assembly.

    Defining materials

    In this multi-body analysis, we assign Structural Steel and Aluminum materials to different parts. Since a Structural Steel object is already added as you initialize a FEM Project, you only need to insert an aluminum material object by clicking Add Material from Toolbar or FEM Menu.

    To edit the material properties, you can double-click the Material object, or right-click on the Material object and select the Edit command from the context menu. In the material editor, you select the Library tab > General Materials > Aluminum Alloy, then click Import button or double-click the Aluminum Alloy entry. Click the OK to save and exit the material editing.

    You can rename this new material object to Aluminum by press F2 key or right-clicking.

    Specifying analysis

    In the Properties View of the FEM Project object, you set the Analysis Type property to Modal. A Modal Structural analysis is defined as shown in Figure below.

    finite_element_analysis_welsim_ex3_analysis_type

    Preparing geometry

    Next, you can import the geometry file “h_section_multibody.step” and assign the materials to the corresponding parts. Three Part objects in the Geometry group represent three bodies in the Graphics window, respectively. You assign the Aluminum material to the Part2, which is the connection body in the middle, the rest bodies are assigned with Structural Steel material.

    Setting mesh

    To obtain a fine mesh for the analysis, you set the Mesh Settings properties Quadratic to True, and Maximum Size to 3e-3, as shown in Figure below.

    finite_element_analysis_welsim_ex3_mesh_settings

    Clicking the Mesh command from the Toolbar or FEM Menu, you can mesh the geometries. There are 42,329 nodes, and 25,920 Tet10 elements generated as shown in Figure below.

    finite_element_analysis_welsim_ex3_mesh_data

    Specifying contacts

    Next, you need to define two Contact Pairs to bond the three parts into one uni-body for the analysis. Clicking the Add Contact command from the Toolbar or FEM Menu, you add two Contact Pair objects into the tree. You can rename these two objects to Contact1 and Contact2, respectively. Then you select the surfaces for Master and Target Geometry properties.

    Defining analysis settings

    In the Properties View of Study Settings object, you can define the analysis details such as Number of Modes. Here, you can use the default settings as shown in Figure below.

    finite_element_analysis_welsim_ex3_study_settings

    Imposing boundary conditions

    In this modal analysis, you impose a Constraint (Fixed Support) boundary condition, which can be processed by clicking the corresponding commands from the Toolbar and Structural Menu. In the Properties View of the Constraint object, select the left bottom surface for the Geometry property.

    Solving the model

    To solve the model, you can click the Compute command from the Toolbar, FEM Menu, or right-click on the Answers object and select Compute command from context menu. Depending on the complexity of the model, the solving process can be completed in seconds to hours. The Output window displays the solver messages and indicates the status of the solving process.

    Evaluating results

    To evaluate the deformation of the structure, you can add a Deformation object to the tree by clicking the Deformation item from the Toolbar, Structural Menu. A result object may provide multiple sub-result types. For example, a Deformation result object allows you to specify one deformation type from the candidates Deformation X, Y, Z, and Total.

    After setting the Type property to Deformation Z, double-clicking on the result object displays the resulting contour in the Graphics window as shown in Figure below. You also can click the Evaluate item from the Toolbar or FEM Menu to evaluate the result.

    finite_element_analysis_welsim_ex3_rst_disp_total1

    Info

    This project file is located at examples/quick_structural_modal_solid_01.wsdb.

    \ No newline at end of file diff --git a/welsim/get_started/structural/structural_static/index.html b/welsim/get_started/structural/structural_static/index.html index 2ae1ae0..0980d37 100755 --- a/welsim/get_started/structural/structural_static/index.html +++ b/welsim/get_started/structural/structural_static/index.html @@ -1 +1 @@ - Static structural analysis - WelSim Documentation

    Static structural analysis

    This example shows you how to conduct a 3D static structural analysis for an assembly.

    Defining materials

    In this multi-body analysis, we assign Structural Steel and Aluminum materials to different parts. Since a Structural Steel object is already added as you initialize a FEM Project, you only need to insert an aluminum material object by clicking Add Material from Toolbar or FEM Menu.

    To edit the material properties, you can double-click the Material object, or right-click on the Material object and select the Edit command from the context menu. In the material editor, you select the Library tab > General Materials > Aluminum Alloy, then click Import button or double-click the Aluminum Alloy entry. The material properties are set as shown in Figure below. Click the OK to save and exit the material editing.

    You can rename this new material object to Aluminum by press F2 key or right-clicking.

    finite_element_analysis_welsim_ex1_mat_al.

    Specifying analysis

    Since the Static Structural analysis is the default settings at WELSIM application, you can keep the default settings as shown in Figure below.

    finite_element_analysis_welsim_ex1_analysis_type

    Preparing geometry

    Next, you can import the geometry file “h_section_multibody.step” and assign the materials to the corresponding parts. As shown in Figure below, three Part objects in the Geometry group represent three bodies in the Graphics window, respectively. You assign the Aluminum material to the Part2, which is the connection body in the middle, the rest bodies are assigned with Structural Steel material.

    finite_element_analysis_welsim_ex1_geom_mat

    Setting mesh

    To obtain a fine mesh for the analysis, you set the Mesh Settings properties Quadratic to True, and Maximum Size to 5e-3, as shown in Figure below.

    finite_element_analysis_welsim_ex1_mesh_settings

    Next, you add a Mesh Method object from the Toolbar or FEM Menu. In the property of this object, you select the left body for the Geometry property, and set Maximum Size value to 3e-3, , as shown in Figure below.

    finite_element_analysis_welsim_ex1_mesh_method

    Clicking the Mesh command from the Toolbar or FEM Menu, you can mesh the geometries. There are 21,117 nodes, and 12,427 Tet10 elements generated as shown in Figure below.

    finite_element_analysis_welsim_ex1_mesh_data

    Specifying contacts

    Next, you need to define two Contact Pairs to bond the three parts into one uni-body for the analysis. Clicking the Add Contact command from the Toolbar or FEM Menu, you add two Contact Pair objects into the tree. You can rename these two objects to Contact1 and Contact2, respectively. Then you select the surfaces for Master and Target Geometry properties as shown in Figures below.

    finite_element_analysis_welsim_ex1_contact1 finite_element_analysis_welsim_ex1_contact2

    Imposing conditions

    Next, you impose two boundary conditions, a Constraint (Fixed Support) and a Pressure by clicking the corresponding commands from the Toolbar and Structural Menu. In the Properties View of the Constraint object, select the left bottom surface for the Geometry property, as shown in Figure below.

    finite_element_analysis_welsim_ex1_bc1_fixed

    In the Properties View of Pressure object, set the Normal Pressure value to 1e7, and scope the right top surface for the Geometry property, as shown in Figure below.

    finite_element_analysis_welsim_ex1_bc2_pressure

    Solving the model

    To solve the model, you can click the Compute command from the Toolbar, FEM Menu, or right-click on the Answers object and select Compute command from context menu. Depending on the complexity of the model, the solving process can be completed in seconds to hours. The Output window displays the solver messages and indicates the status of the solving process. As shown in Figure [fig:ch2_start_ex1_output_solver], this model is solved successfully.

    finite_element_analysis_welsim_ex1_output_solver

    Evaluating results

    To evaluate the deformation of the structure, you can add a Deformation object to the tree by clicking the Deformation item from the Toolbar, Structural Menu. A result object may provide multiple sub-result types. For example, a Deformation result object allows you to specify one deformation type from the candidates Deformation X, Y, Z, and Total, as shown in Figure below.

    After setting the property Type to Total Deformation, double-clicking on the result object displays the resulting contour in the Graphics window. You can click the Evaluate item from the Toolbar or FEM Menu to evaluate the result.

    finite_element_analysis_welsim_ex1_rst_disp_total

    Adding a stress result object is similar. Clicking the Stress result from Toolbar or Structural Menu, you insert a stress object to the tree. Evaluating the default von-Mises Stress Type, you obtain the von-Mises stress contour on bodies in the Graphics window. The Maximum and Minimum values of stress data are displayed in the Properties View, Tabular Data, and Chart windows.

    finite_element_analysis_welsim_ex1_rst_stress_vm

    Info

    This project file is located at examples/quick_structural_static_solid_01.wsdb.

    \ No newline at end of file + Static structural analysis - WelSim Documentation

    Static structural analysis

    This example shows you how to conduct a 3D static structural analysis for an assembly.

    Defining materials

    In this multi-body analysis, we assign Structural Steel and Aluminum materials to different parts. Since a Structural Steel object is already added as you initialize a FEM Project, you only need to insert an aluminum material object by clicking Add Material from Toolbar or FEM Menu.

    To edit the material properties, you can double-click the Material object, or right-click on the Material object and select the Edit command from the context menu. In the material editor, you select the Library tab > General Materials > Aluminum Alloy, then click Import button or double-click the Aluminum Alloy entry. The material properties are set as shown in Figure below. Click the OK to save and exit the material editing.

    You can rename this new material object to Aluminum by press F2 key or right-clicking.

    finite_element_analysis_welsim_ex1_mat_al.

    Specifying analysis

    Since the Static Structural analysis is the default settings at WELSIM application, you can keep the default settings as shown in Figure below.

    finite_element_analysis_welsim_ex1_analysis_type

    Preparing geometry

    Next, you can import the geometry file “h_section_multibody.step” and assign the materials to the corresponding parts. As shown in Figure below, three Part objects in the Geometry group represent three bodies in the Graphics window, respectively. You assign the Aluminum material to the Part2, which is the connection body in the middle, the rest bodies are assigned with Structural Steel material.

    finite_element_analysis_welsim_ex1_geom_mat

    Setting mesh

    To obtain a fine mesh for the analysis, you set the Mesh Settings properties Quadratic to True, and Maximum Size to 5e-3, as shown in Figure below.

    finite_element_analysis_welsim_ex1_mesh_settings

    Next, you add a Mesh Method object from the Toolbar or FEM Menu. In the property of this object, you select the left body for the Geometry property, and set Maximum Size value to 3e-3, , as shown in Figure below.

    finite_element_analysis_welsim_ex1_mesh_method

    Clicking the Mesh command from the Toolbar or FEM Menu, you can mesh the geometries. There are 21,117 nodes, and 12,427 Tet10 elements generated as shown in Figure below.

    finite_element_analysis_welsim_ex1_mesh_data

    Specifying contacts

    Next, you need to define two Contact Pairs to bond the three parts into one uni-body for the analysis. Clicking the Add Contact command from the Toolbar or FEM Menu, you add two Contact Pair objects into the tree. You can rename these two objects to Contact1 and Contact2, respectively. Then you select the surfaces for Master and Target Geometry properties as shown in Figures below.

    finite_element_analysis_welsim_ex1_contact1 finite_element_analysis_welsim_ex1_contact2

    Imposing conditions

    Next, you impose two boundary conditions, a Constraint (Fixed Support) and a Pressure by clicking the corresponding commands from the Toolbar and Structural Menu. In the Properties View of the Constraint object, select the left bottom surface for the Geometry property, as shown in Figure below.

    finite_element_analysis_welsim_ex1_bc1_fixed

    In the Properties View of Pressure object, set the Normal Pressure value to 1e7, and scope the right top surface for the Geometry property, as shown in Figure below.

    finite_element_analysis_welsim_ex1_bc2_pressure

    Solving the model

    To solve the model, you can click the Compute command from the Toolbar, FEM Menu, or right-click on the Answers object and select Compute command from context menu. Depending on the complexity of the model, the solving process can be completed in seconds to hours. The Output window displays the solver messages and indicates the status of the solving process. As shown in Figure [fig:ch2_start_ex1_output_solver], this model is solved successfully.

    finite_element_analysis_welsim_ex1_output_solver

    Evaluating results

    To evaluate the deformation of the structure, you can add a Deformation object to the tree by clicking the Deformation item from the Toolbar, Structural Menu. A result object may provide multiple sub-result types. For example, a Deformation result object allows you to specify one deformation type from the candidates Deformation X, Y, Z, and Total, as shown in Figure below.

    After setting the property Type to Total Deformation, double-clicking on the result object displays the resulting contour in the Graphics window. You can click the Evaluate item from the Toolbar or FEM Menu to evaluate the result.

    finite_element_analysis_welsim_ex1_rst_disp_total

    Adding a stress result object is similar. Clicking the Stress result from Toolbar or Structural Menu, you insert a stress object to the tree. Evaluating the default von-Mises Stress Type, you obtain the von-Mises stress contour on bodies in the Graphics window. The Maximum and Minimum values of stress data are displayed in the Properties View, Tabular Data, and Chart windows.

    finite_element_analysis_welsim_ex1_rst_stress_vm

    Info

    This project file is located at examples/quick_structural_static_solid_01.wsdb.

    \ No newline at end of file diff --git a/welsim/get_started/structural/structural_transient/index.html b/welsim/get_started/structural/structural_transient/index.html index cd6a4f3..8b13b1c 100755 --- a/welsim/get_started/structural/structural_transient/index.html +++ b/welsim/get_started/structural/structural_transient/index.html @@ -1 +1 @@ - Transient structural analysis - WelSim Documentation

    Transient structural analysis

    This example shows you how to conduct a 3D transient structural analysis for an assembly.

    Defining materials

    In this multi-body analysis, we assign Structural Steel and Aluminum materials to different parts. Since a Structural Steel object is already added as you initialize a FEM Project, you only need to insert an aluminum material object by clicking Add Material from Toolbar or FEM Menu.

    To edit the material properties, you can double-click the Material object, or right-click on the Material object and select the Edit command from the context menu. In the material editor, you select the Library tab > General Materials > Aluminum Alloy, then click Import button or double-click the Aluminum Alloy entry. The material properties are set as shown in Figure below. Click the OK to save and exit the material editing.

    You can rename this new material object to Aluminum by press F2 key or right-clicking.

    Specifying analysis

    In the Properties View of the FEM Project object, you set the Analysis Type property to Transient. A Transient Structural analysis is defined as shown in Figure below.

    finite_element_analysis_welsim_ex2_analysis_type

    Preparing geometry

    Next, you can import the geometry file “h_section_multibody.step” and assign the materials to the corresponding parts. As shown in Figure below, three Part objects in the Geometry group represent three bodies in the Graphics window, respectively. You assign the Aluminum material to the Part2, which is the connection body in the middle, the rest bodies are assigned with Structural Steel material.

    Setting mesh

    To obtain a fine mesh for the analysis, you set the Mesh Settings properties Quadratic to True, and Maximum Size to 5e-3, as shown in Figure below.

    Next, you add a Mesh Method object from the Toolbar or FEM Menu. In the property of this object, you select the left body for the Geometry property, and set Maximum Size value to 3e-3, as shown in Figure below.

    Clicking the Mesh command from the Toolbar or FEM Menu, you can mesh the geometries. There are 21,117 nodes, and 12,427 Tet10 elements generated as shown in Figure below.

    Specifying contacts

    Next, you need to define two Contact Pairs to bond the three parts into one uni-body for the analysis. Clicking the Add Contact command from the Toolbar or FEM Menu, you add two Contact Pair objects into the tree. You can rename these two objects to Contact1 and Contact2, respectively. Then you select the surfaces for Master and Target Geometry properties as shown in Figures below.

    Note

    Defining contacts is optional, adding a contact or not is up to your specific model.

    Defining analysis settings

    In this transient analysis, you define 18 steps and set the End Time for each step, as shown in Figure below.

    finite_element_analysis_welsim_ex2_study_prop

    Next, you select the Study Settings object in the tree and set the Substeps property to 18, which determines the total number of substeps of the transient analysis. A screen capture of the defined properties is shown in Figure below.

    finite_element_analysis_welsim_ex2_study_settings_prop

    Imposing conditions

    Next, you impose two boundary conditions, a Constraint (Fixed Support) and an Acceleration by clicking the corresponding commands from the Toolbar or Structural Menu. In the Properties View of the Constraint object, select the left bottom surface for the Geometry property, as shown in Figure below.

    In the Properties View of Acceleration object, set the Acceleration value for the current step, and repeat this value definition for each Step. After defining the acceleration values for all steps, you scope a surface on Part2 for the Geometry property, as shown in Figure below.

    finite_element_analysis_welsim_ex2_bc_acceleration

    Solving the model

    To solve the model, you can click the Compute command from the Toolbar, FEM Menu, or right-click on the Answers object and select Compute command from context menu. Depending on the complexity of the model, the solving process can be completed in seconds to hours. The Output window displays the solver messages and indicates the status of the solving process. As shown in Figure below, this model is solved successfully.

    Evaluating results

    To evaluate the deformation of the structure, you can add a Deformation object to the tree by clicking the Deformation item from the Toolbar, Structural Menu. A result object may provide multiple sub-result types. For example, a Deformation result object allows you to specify one deformation type from the candidates Deformation X, Y, Z, and Total.

    After setting the result Type to Deformation Z, double-clicking on the result object displays the resulting contour in the Graphics window as shown in Figure below. You can click the Evaluate item from the Toolbar or FEM Menu to evaluate the result.

    finite_element_analysis_welsim_ex2_rst_deformation_z18

    Adding a stress result object is similar. Clicking the Stress result from Toolbar or Structural Menu, you insert a stress object to the tree. Evaluating the default von-Mises Stress Type, you obtain the von-Mises stress contour on bodies in the Graphics window as shown in Figure below. The Maximum and Minimum values of stress data are displayed in the Properties View, Tabular Data, and Chart windows.

    finite_element_analysis_welsim_ex2_rst_stress_vm18

    Info

    This project file is located at examples/quick_structural_transient_solid_01.wsdb.

    \ No newline at end of file + Transient structural analysis - WelSim Documentation

    Transient structural analysis

    This example shows you how to conduct a 3D transient structural analysis for an assembly.

    Defining materials

    In this multi-body analysis, we assign Structural Steel and Aluminum materials to different parts. Since a Structural Steel object is already added as you initialize a FEM Project, you only need to insert an aluminum material object by clicking Add Material from Toolbar or FEM Menu.

    To edit the material properties, you can double-click the Material object, or right-click on the Material object and select the Edit command from the context menu. In the material editor, you select the Library tab > General Materials > Aluminum Alloy, then click Import button or double-click the Aluminum Alloy entry. The material properties are set as shown in Figure below. Click the OK to save and exit the material editing.

    You can rename this new material object to Aluminum by press F2 key or right-clicking.

    Specifying analysis

    In the Properties View of the FEM Project object, you set the Analysis Type property to Transient. A Transient Structural analysis is defined as shown in Figure below.

    finite_element_analysis_welsim_ex2_analysis_type

    Preparing geometry

    Next, you can import the geometry file “h_section_multibody.step” and assign the materials to the corresponding parts. As shown in Figure below, three Part objects in the Geometry group represent three bodies in the Graphics window, respectively. You assign the Aluminum material to the Part2, which is the connection body in the middle, the rest bodies are assigned with Structural Steel material.

    Setting mesh

    To obtain a fine mesh for the analysis, you set the Mesh Settings properties Quadratic to True, and Maximum Size to 5e-3, as shown in Figure below.

    Next, you add a Mesh Method object from the Toolbar or FEM Menu. In the property of this object, you select the left body for the Geometry property, and set Maximum Size value to 3e-3, as shown in Figure below.

    Clicking the Mesh command from the Toolbar or FEM Menu, you can mesh the geometries. There are 21,117 nodes, and 12,427 Tet10 elements generated as shown in Figure below.

    Specifying contacts

    Next, you need to define two Contact Pairs to bond the three parts into one uni-body for the analysis. Clicking the Add Contact command from the Toolbar or FEM Menu, you add two Contact Pair objects into the tree. You can rename these two objects to Contact1 and Contact2, respectively. Then you select the surfaces for Master and Target Geometry properties as shown in Figures below.

    Note

    Defining contacts is optional, adding a contact or not is up to your specific model.

    Defining analysis settings

    In this transient analysis, you define 18 steps and set the End Time for each step, as shown in Figure below.

    finite_element_analysis_welsim_ex2_study_prop

    Next, you select the Study Settings object in the tree and set the Substeps property to 18, which determines the total number of substeps of the transient analysis. A screen capture of the defined properties is shown in Figure below.

    finite_element_analysis_welsim_ex2_study_settings_prop

    Imposing conditions

    Next, you impose two boundary conditions, a Constraint (Fixed Support) and an Acceleration by clicking the corresponding commands from the Toolbar or Structural Menu. In the Properties View of the Constraint object, select the left bottom surface for the Geometry property, as shown in Figure below.

    In the Properties View of Acceleration object, set the Acceleration value for the current step, and repeat this value definition for each Step. After defining the acceleration values for all steps, you scope a surface on Part2 for the Geometry property, as shown in Figure below.

    finite_element_analysis_welsim_ex2_bc_acceleration

    Solving the model

    To solve the model, you can click the Compute command from the Toolbar, FEM Menu, or right-click on the Answers object and select Compute command from context menu. Depending on the complexity of the model, the solving process can be completed in seconds to hours. The Output window displays the solver messages and indicates the status of the solving process. As shown in Figure below, this model is solved successfully.

    Evaluating results

    To evaluate the deformation of the structure, you can add a Deformation object to the tree by clicking the Deformation item from the Toolbar, Structural Menu. A result object may provide multiple sub-result types. For example, a Deformation result object allows you to specify one deformation type from the candidates Deformation X, Y, Z, and Total.

    After setting the result Type to Deformation Z, double-clicking on the result object displays the resulting contour in the Graphics window as shown in Figure below. You can click the Evaluate item from the Toolbar or FEM Menu to evaluate the result.

    finite_element_analysis_welsim_ex2_rst_deformation_z18

    Adding a stress result object is similar. Clicking the Stress result from Toolbar or Structural Menu, you insert a stress object to the tree. Evaluating the default von-Mises Stress Type, you obtain the von-Mises stress contour on bodies in the Graphics window as shown in Figure below. The Maximum and Minimum values of stress data are displayed in the Properties View, Tabular Data, and Chart windows.

    finite_element_analysis_welsim_ex2_rst_stress_vm18

    Info

    This project file is located at examples/quick_structural_transient_solid_01.wsdb.

    \ No newline at end of file diff --git a/welsim/get_started/thermal/thermal_ss/index.html b/welsim/get_started/thermal/thermal_ss/index.html index 929fc61..c45ef8e 100755 --- a/welsim/get_started/thermal/thermal_ss/index.html +++ b/welsim/get_started/thermal/thermal_ss/index.html @@ -1 +1 @@ - Steady-state thermal analysis - WelSim Documentation

    Steady-state thermal analysis

    This example shows you how to conduct a 3D static thermal analysis for an assembly.

    Defining materials

    In this multi-body analysis, we assign Structural Steel and Aluminum materials to different parts. Since a Structural Steel object is already added as you initialize a FEM Project, you only need to insert an aluminum material object by clicking Add Material from Toolbar or FEM Menu.

    To edit the material properties, you can double-click the Material object, or right-click on the Material object and select the Edit command from the context menu. In the material editor, you select the Library tab > General Materials > Aluminum Alloy, then click Import button or double-click the Aluminum Alloy entry. The material properties are set as shown in Figure below. Click the OK to save and exit the material editing.

    You can rename this new material object to Aluminum by press F2 key or right-clicking.

    Specifying analysis

    In the Properties View of the FEM Project object, you set the Physics Type property to Thermal. A Steady-State Thermal analysis is defined as shown in Figure below.

    finite_element_analysis_welsim_ex4_analysis_type

    Preparing geometry

    Next, you can import the geometry file “h_section_multibody.step” and assign the materials to the corresponding parts. As shown in Figure, three Part objects in the Geometry group represent three bodies in the Graphics window, respectively. You assign the Aluminum material to the Part2, which is the connection body in the middle, the rest bodies are assigned with Structural Steel material.

    Setting mesh

    To obtain a fine mesh for the analysis, you set the Mesh Settings properties Quadratic to True, and Maximum Size to 3e-3.

    Clicking the Mesh command from the Toolbar or FEM Menu, you can mesh the geometries. There are 42,329 nodes, and 25,920 Tet10 elements generated.

    Specifying contacts

    Next, you need to define two Contact Pairs to bond the three parts into one uni-body for the analysis. Clicking the Add Contact command from the Toolbar or FEM Menu, you add two Contact Pair objects into the tree. You can rename these two objects to Contact1 and Contact2, respectively. Then you select the surfaces for Master and Target Geometry properties.

    Imposing boundary conditions

    Next, you impose four boundary conditions, a Temperature, Heat Flux, Convection, and Radiation by clicking the corresponding commands from the Toolbar or Thermal Menu. In the Properties View of the Temperature object, select a left bottom surface for the Geometry property and set the Temperature value to 0, as shown in Figure below.

    finite_element_analysis_welsim_ex4_bc_temp

    In the Properties View of Heat Flux object, set the Heat Flux value to 5e3, and scope a surface for the Geometry property, as shown in Figure below.

    finite_element_analysis_welsim_ex4_bc_heatflux

    In the Properties View of Heat Radiation object, set the Radiation Coefficient value to 1e-6, Ambient Temperature value to 22.3, and scope a surface for the Geometry property, as shown in Figure below.

    finite_element_analysis_welsim_ex4_bc_radiation

    In the Properties View of Heat Convection object, set the Convection Coefficient value to 1e3 and Ambient Temperature value to 22.3, and scope a surface for the Geometry property, as shown in Figure below.

    finite_element_analysis_welsim_ex4_bc_convection

    Solving the model

    To solve the model, you can click the Compute command from the Toolbar, FEM Menu, or right-click on the Answers object and select Compute command from context menu. Depending on the complexity of the model, the solving process can be completed in seconds to hours. The Output window displays the solver messages and indicates the status of the solving process. As shown in Figure below, this model is solved successfully.

    Evaluating results

    To evaluate the deformation of the structure, you can add a Temperature object to the tree by clicking the Temperature item from the Toolbar or Thermal Menu. Next, double-clicking the result object or clicking the Evaluate item from the Toolbar or FEM Menu, you display the result contour in the Graphics window as shown in Figure below.

    finite_element_analysis_welsim_ex4_rst_temp

    Info

    This project file is located at examples/quick_thermal_static_solid_01.wsdb.

    \ No newline at end of file + Steady-state thermal analysis - WelSim Documentation

    Steady-state thermal analysis

    This example shows you how to conduct a 3D static thermal analysis for an assembly.

    Defining materials

    In this multi-body analysis, we assign Structural Steel and Aluminum materials to different parts. Since a Structural Steel object is already added as you initialize a FEM Project, you only need to insert an aluminum material object by clicking Add Material from Toolbar or FEM Menu.

    To edit the material properties, you can double-click the Material object, or right-click on the Material object and select the Edit command from the context menu. In the material editor, you select the Library tab > General Materials > Aluminum Alloy, then click Import button or double-click the Aluminum Alloy entry. The material properties are set as shown in Figure below. Click the OK to save and exit the material editing.

    You can rename this new material object to Aluminum by press F2 key or right-clicking.

    Specifying analysis

    In the Properties View of the FEM Project object, you set the Physics Type property to Thermal. A Steady-State Thermal analysis is defined as shown in Figure below.

    finite_element_analysis_welsim_ex4_analysis_type

    Preparing geometry

    Next, you can import the geometry file “h_section_multibody.step” and assign the materials to the corresponding parts. As shown in Figure, three Part objects in the Geometry group represent three bodies in the Graphics window, respectively. You assign the Aluminum material to the Part2, which is the connection body in the middle, the rest bodies are assigned with Structural Steel material.

    Setting mesh

    To obtain a fine mesh for the analysis, you set the Mesh Settings properties Quadratic to True, and Maximum Size to 3e-3.

    Clicking the Mesh command from the Toolbar or FEM Menu, you can mesh the geometries. There are 42,329 nodes, and 25,920 Tet10 elements generated.

    Specifying contacts

    Next, you need to define two Contact Pairs to bond the three parts into one uni-body for the analysis. Clicking the Add Contact command from the Toolbar or FEM Menu, you add two Contact Pair objects into the tree. You can rename these two objects to Contact1 and Contact2, respectively. Then you select the surfaces for Master and Target Geometry properties.

    Imposing boundary conditions

    Next, you impose four boundary conditions, a Temperature, Heat Flux, Convection, and Radiation by clicking the corresponding commands from the Toolbar or Thermal Menu. In the Properties View of the Temperature object, select a left bottom surface for the Geometry property and set the Temperature value to 0, as shown in Figure below.

    finite_element_analysis_welsim_ex4_bc_temp

    In the Properties View of Heat Flux object, set the Heat Flux value to 5e3, and scope a surface for the Geometry property, as shown in Figure below.

    finite_element_analysis_welsim_ex4_bc_heatflux

    In the Properties View of Heat Radiation object, set the Radiation Coefficient value to 1e-6, Ambient Temperature value to 22.3, and scope a surface for the Geometry property, as shown in Figure below.

    finite_element_analysis_welsim_ex4_bc_radiation

    In the Properties View of Heat Convection object, set the Convection Coefficient value to 1e3 and Ambient Temperature value to 22.3, and scope a surface for the Geometry property, as shown in Figure below.

    finite_element_analysis_welsim_ex4_bc_convection

    Solving the model

    To solve the model, you can click the Compute command from the Toolbar, FEM Menu, or right-click on the Answers object and select Compute command from context menu. Depending on the complexity of the model, the solving process can be completed in seconds to hours. The Output window displays the solver messages and indicates the status of the solving process. As shown in Figure below, this model is solved successfully.

    Evaluating results

    To evaluate the deformation of the structure, you can add a Temperature object to the tree by clicking the Temperature item from the Toolbar or Thermal Menu. Next, double-clicking the result object or clicking the Evaluate item from the Toolbar or FEM Menu, you display the result contour in the Graphics window as shown in Figure below.

    finite_element_analysis_welsim_ex4_rst_temp

    Info

    This project file is located at examples/quick_thermal_static_solid_01.wsdb.

    \ No newline at end of file diff --git a/welsim/get_started/thermal/thermal_transient/index.html b/welsim/get_started/thermal/thermal_transient/index.html index 9f7aa9a..0966913 100755 --- a/welsim/get_started/thermal/thermal_transient/index.html +++ b/welsim/get_started/thermal/thermal_transient/index.html @@ -1 +1 @@ - Transient thermal analysis - WelSim Documentation

    Transient thermal analysis

    This example shows you how to conduct a 3D transient thermal analysis for an assembly.

    Defining materials

    In this multi-body analysis, we assign Structural Steel and Aluminum materials to different parts. Since a Structural Steel object is already added as you initialize a FEM Project, you only need to insert an aluminum material object by clicking Add Material from Toolbar or FEM Menu.

    To edit the material properties, you can double-click the Material object, or right-click on the Material object and select the Edit command from the context menu. In the material editor, you select the Library tab > General Materials > Aluminum Alloy, then click Import button or double-click the Aluminum Alloy entry. The material properties are set as shown in Figure below. Click the OK to save and exit the material editing.

    You can rename this new material object to Aluminum by press F2 key or right-clicking.

    Specifying analysis

    In the Properties View of the FEM Project object, you set the Physics Type property to Thermal and Analysis Type property to Transient. A Transient Thermal analysis is defined as shown in Figure below.

    finite_element_analysis_welsim_ex5_analysis_type

    Preparing geometry

    Next, you can import the geometry file “h_section_multibody.step” and assign the materials to the corresponding parts. As shown in Figure, three Part objects in the Geometry group represent three bodies in the Graphics window, respectively. You assign the Aluminum material to the Part2, which is the connection body in the middle, the rest bodies are assigned with Structural Steel material.

    Setting mesh

    To obtain a fine mesh for the analysis, you set the Mesh Settings properties Quadratic to True, and Maximum Size to 3e-3.

    Clicking the Mesh command from the Toolbar or FEM Menu, you can mesh the geometries. There are 42,329 nodes, and 25,920 Tet10 elements generated.

    Specifying contacts

    Next, you need to define two Contact Pairs to bond the three parts into one uni-body for the analysis. Clicking the Add Contact command from the Toolbar or FEM Menu, you add two Contact Pair objects into the tree. You can rename these two objects to Contact1 and Contact2, respectively. Then you select the surfaces for Master and Target Geometry properties as shown in Figures below.

    Defining analysis settings

    In this transient analysis, you define 1 step and set the Current End Time value to 600, as shown in Figure below.

    finite_element_analysis_welsim_ex5_study_prop

    In the Properties View of Study Settings object in the tree, you can use the default settings as shown in Figure below.

    finite_element_analysis_welsim_ex5_study_settings_prop

    Imposing conditions

    Next, you can add an Initial Temperature object from the Toolbar or Thermal Menu. The initial temperature value is 300 as shown in Figure below.

    finite_element_analysis_welsim_ex5_initial_temp_prop

    Next, you impose three boundary conditions, a Temperature, Heat Flux, and a Heat Convection by clicking the corresponding commands from the Toolbar and Thermal Menu. In the Properties View of the Temperature object, you select the bottom surface of Part1 for the Geometry property. Next set the Temperature value to 0, and define Initial Status to Equal to Step 1, as shown in Figure below.

    finite_element_analysis_welsim_ex5_temp

    In the Properties View of Heat Flux object, set the Heat Flux value to -5000 and Initial Status to Equal to Step 1. Next, you scope a surface on Part1 for the Geometry property, as shown in Figure below.

    finite_element_analysis_welsim_ex5_bc_heatflux

    In the Properties View of Heat Convection object, set the Convection Coefficient value to 1000, Ambient Temperature value to 22.3, and Initial Status to Equal to Step 1. After defining these property values, you scope a surface on Part2 for the Geometry property, as shown in Figure below.

    finite_element_analysis_welsim_ex5_bc_convection

    Solving the model

    To solve the model, you can click the Compute command from the Toolbar, FEM Menu, or right-click on the Answers object and select Compute command from context menu. Depending on the complexity of the model, the solving process can be completed in seconds to hours. The Output window displays the solver messages and indicates the status of the solving process. As shown messages in Output window, this model is solved successfully.

    Evaluating results

    To evaluate the temperature of the model, you can add a Temperature object to the tree by clicking the Temperature item from the Toolbar, Thermal Menu.

    After inserting the result object and settings the Set Number to 15, double-clicking on the result object displays the resulting contour in the Graphics window as shown in Figure below. You can click the Evaluate item from the Toolbar or FEM Menu to evaluate the result.

    finite_element_analysis_welsim_ex5_rst_temp15

    Info

    This project file is located at examples/quick_thermal_transient_solid_01.wsdb.

    \ No newline at end of file + Transient thermal analysis - WelSim Documentation

    Transient thermal analysis

    This example shows you how to conduct a 3D transient thermal analysis for an assembly.

    Defining materials

    In this multi-body analysis, we assign Structural Steel and Aluminum materials to different parts. Since a Structural Steel object is already added as you initialize a FEM Project, you only need to insert an aluminum material object by clicking Add Material from Toolbar or FEM Menu.

    To edit the material properties, you can double-click the Material object, or right-click on the Material object and select the Edit command from the context menu. In the material editor, you select the Library tab > General Materials > Aluminum Alloy, then click Import button or double-click the Aluminum Alloy entry. The material properties are set as shown in Figure below. Click the OK to save and exit the material editing.

    You can rename this new material object to Aluminum by press F2 key or right-clicking.

    Specifying analysis

    In the Properties View of the FEM Project object, you set the Physics Type property to Thermal and Analysis Type property to Transient. A Transient Thermal analysis is defined as shown in Figure below.

    finite_element_analysis_welsim_ex5_analysis_type

    Preparing geometry

    Next, you can import the geometry file “h_section_multibody.step” and assign the materials to the corresponding parts. As shown in Figure, three Part objects in the Geometry group represent three bodies in the Graphics window, respectively. You assign the Aluminum material to the Part2, which is the connection body in the middle, the rest bodies are assigned with Structural Steel material.

    Setting mesh

    To obtain a fine mesh for the analysis, you set the Mesh Settings properties Quadratic to True, and Maximum Size to 3e-3.

    Clicking the Mesh command from the Toolbar or FEM Menu, you can mesh the geometries. There are 42,329 nodes, and 25,920 Tet10 elements generated.

    Specifying contacts

    Next, you need to define two Contact Pairs to bond the three parts into one uni-body for the analysis. Clicking the Add Contact command from the Toolbar or FEM Menu, you add two Contact Pair objects into the tree. You can rename these two objects to Contact1 and Contact2, respectively. Then you select the surfaces for Master and Target Geometry properties as shown in Figures below.

    Defining analysis settings

    In this transient analysis, you define 1 step and set the Current End Time value to 600, as shown in Figure below.

    finite_element_analysis_welsim_ex5_study_prop

    In the Properties View of Study Settings object in the tree, you can use the default settings as shown in Figure below.

    finite_element_analysis_welsim_ex5_study_settings_prop

    Imposing conditions

    Next, you can add an Initial Temperature object from the Toolbar or Thermal Menu. The initial temperature value is 300 as shown in Figure below.

    finite_element_analysis_welsim_ex5_initial_temp_prop

    Next, you impose three boundary conditions, a Temperature, Heat Flux, and a Heat Convection by clicking the corresponding commands from the Toolbar and Thermal Menu. In the Properties View of the Temperature object, you select the bottom surface of Part1 for the Geometry property. Next set the Temperature value to 0, and define Initial Status to Equal to Step 1, as shown in Figure below.

    finite_element_analysis_welsim_ex5_temp

    In the Properties View of Heat Flux object, set the Heat Flux value to -5000 and Initial Status to Equal to Step 1. Next, you scope a surface on Part1 for the Geometry property, as shown in Figure below.

    finite_element_analysis_welsim_ex5_bc_heatflux

    In the Properties View of Heat Convection object, set the Convection Coefficient value to 1000, Ambient Temperature value to 22.3, and Initial Status to Equal to Step 1. After defining these property values, you scope a surface on Part2 for the Geometry property, as shown in Figure below.

    finite_element_analysis_welsim_ex5_bc_convection

    Solving the model

    To solve the model, you can click the Compute command from the Toolbar, FEM Menu, or right-click on the Answers object and select Compute command from context menu. Depending on the complexity of the model, the solving process can be completed in seconds to hours. The Output window displays the solver messages and indicates the status of the solving process. As shown messages in Output window, this model is solved successfully.

    Evaluating results

    To evaluate the temperature of the model, you can add a Temperature object to the tree by clicking the Temperature item from the Toolbar, Thermal Menu.

    After inserting the result object and settings the Set Number to 15, double-clicking on the result object displays the resulting contour in the Graphics window as shown in Figure below. You can click the Evaluate item from the Toolbar or FEM Menu to evaluate the result.

    finite_element_analysis_welsim_ex5_rst_temp15

    Info

    This project file is located at examples/quick_thermal_transient_solid_01.wsdb.

    \ No newline at end of file diff --git a/welsim/material/mat_overview/index.html b/welsim/material/mat_overview/index.html index ec96d8a..272bf75 100755 --- a/welsim/material/mat_overview/index.html +++ b/welsim/material/mat_overview/index.html @@ -1,5 +1,5 @@ - Overview - WelSim Documentation

    Overview

    Material Module serves as a database for material properties used in analysis projects. The module not only provides a material library but allow you to create a material using the given properties. The properties view of a Material object is the primary user interface designed to let you create, save, and retrieve material models. The well-defined material object can be saved and used in the subsequent projects.

    finite_element_analysis_material_suppression

    Note

    The WELSIM Material module and MatEditor share the same features. For the completed and latest content, you can refer to the manual of MatEditor.

    Graphical user interface

    The ease-of-use Material Module contains the following graphical user interface components:

    • Toolbox: provdies two options (Library and Build tabs) for you to edit material data.
    • Library outline pane: lists predefined materials for you to quickly add material data.
    • Property outline pane: shows an outline of the contents of the togglable material properties. You can add a property data entry to the material by toggling on the property entry or remove property by toggling off the property entry.
    • Properties view pane: displays all properties that are going to be added to the Material Object. You can tune the property values at this pane.
    • Table pane: allows you to define and review tabular data for material properies.
    • Chart pane: displays the property tabular data in vivid.

    Predefined materials

    WELSIM also provide predefined materials, which covers most of commonly used materials. Users can choose these materials and apply to the successive finite element analysis.

    Category Materials
    General Materials Structural Steel, Stainless Steel, Aluminum Alloy, Concrete, Copper Alloy, Gray Cast Iron, Titanium Alloy
    Nonlinear Materials Aluminum Alloy NL, Concrete NL, Copper Alloy NL, Stainless Steel NL, Structural Steel NL, Titanium Alloy NL
    Hyperelastic Materials Elastomer Mooney-Rivlin, Elastomer Neo-Hookean, Elastomer Ogden, Elastomer Yeoh, Neoprene Rubber
    Thermal Materials Brass, Bronze, Copper, Diamond, Ferrite, Nodular Cast Iron, Solder, Teflon, Tungsten, Wood
    Electromagnetic Materials SS416, Supermendure
    Other Materials Water Liquid, Argon, Ash

    Material properties

    The supported material properties are listed in the table below.

    Category Materials
    Basic Density, Isotropic Thermal Expansion, Isotropic Instantaneous Thermal Expansion, Orthotropic Thermal Expansion, Orthotropic Instantaneous Thermal Expansion, Constant Damping Coefficient
    Linear Elastic Isotropic Elasticity, Orthotropic Elasticity, Viscoelastic
    Hyperelastic Test Data Uniaxial Test Data, Biaxial Test Data, Shear Test Data, Volumetric Test Data, SimpleShear Test Data, Uniaxial Tension Test Data, Uniaxial Compression Test Data
    Hyperelastic Arruda-Boyce, Blatz-Ko, Gent, Mooney-Rivlin 2, Mooney-Rivlin 3, Mooney-Rivlin 5, Mooney-Rivlin 9, Neo-Hookean, Ogden 1st Order, Ogden 2nd Order, Ogden 3rd Order, Polynomial 1st Order, Polynomial 2nd Order, Polynomial 3rd Order, Yeoh 1st Order, Yeoh 2nd Order, Yeoh 3rd Order
    Plasticity Bilinear Isotropic Hardening, Multilinear Isotropic Hardening, Bilinear Kinematic Hardening, Multilinear Kinematic Hardening, Anand Viscoplasticity
    Creep Strain Hardening, Time Hardening, Generalized Exponential, Generalized Graham, Generalized Blackburn, Modified Time Hardening, Modified Strain Hardening, Generalized Garofalo, Exponential Form, Norton, Combined Time Hardening, Rational Polynomial, Generalized Time Hardening
    Visco-elastic Prony Shear Relaxation, Prony Volumetric Relaxation
    Other Mechanical Strain Life Parameters, Compressive Ultimate Strength, Compressive Yield Strength, LaRc0304 Constants, Orthotropic Strain Limits, Orthotropic Stress Limits, Puck Constants, Tensile Ultimate Strength, Tensile Yield Strength, Tsai-Wu Constants, Shape Memory Effect, Drucker-Prager Strength Piecewise, Drucker-Prager Strength Linear, Ideal Gas EOS, Crushable Foam, Nonlinear Elastic Model Damage, Plakin Special Hardening, Tensile Pressure Failure, Crack Softening Failure
    Thermal Enthalpy, Isotropic Thermal Conductivity, Orthotropic Thermal Conductivity, Specific Heat
    Electromagnetics B-H Curve, Isotropic Relative Permeability, Orthotropic Relative Permeability, Isotropic Resistivity, Orthotropic Resistivity

    Working with material data

    Exporting

    You can export the complete material data to an external XML file. The following format is supported for export:

    • XML in WELSIM Material (MatML 3.1) schema.
    • JSON in WELSIM Material schema.
    • OpenRadioss input script
    WelSim/docs

    Overview

    Material Module serves as a database for material properties used in analysis projects. The module not only provides a material library but allow you to create a material using the given properties. The properties view of a Material object is the primary user interface designed to let you create, save, and retrieve material models. The well-defined material object can be saved and used in the subsequent projects.

    finite_element_analysis_material_suppression

    Note

    The WELSIM Material module and MatEditor share the same features. For the completed and latest content, you can refer to the manual of MatEditor.

    Graphical user interface

    The ease-of-use Material Module contains the following graphical user interface components:

    • Toolbox: provdies two options (Library and Build tabs) for you to edit material data.
    • Library outline pane: lists predefined materials for you to quickly add material data.
    • Property outline pane: shows an outline of the contents of the togglable material properties. You can add a property data entry to the material by toggling on the property entry or remove property by toggling off the property entry.
    • Properties view pane: displays all properties that are going to be added to the Material Object. You can tune the property values at this pane.
    • Table pane: allows you to define and review tabular data for material properies.
    • Chart pane: displays the property tabular data in vivid.

    Predefined materials

    WELSIM also provide predefined materials, which covers most of commonly used materials. Users can choose these materials and apply to the successive finite element analysis.

    Category Materials
    General Materials Structural Steel, Stainless Steel, Aluminum Alloy, Concrete, Copper Alloy, Gray Cast Iron, Titanium Alloy
    Nonlinear Materials Aluminum Alloy NL, Concrete NL, Copper Alloy NL, Stainless Steel NL, Structural Steel NL, Titanium Alloy NL
    Hyperelastic Materials Elastomer Mooney-Rivlin, Elastomer Neo-Hookean, Elastomer Ogden, Elastomer Yeoh, Neoprene Rubber
    Thermal Materials Brass, Bronze, Copper, Diamond, Ferrite, Nodular Cast Iron, Solder, Teflon, Tungsten, Wood
    Electromagnetic Materials SS416, Supermendure
    Other Materials Water Liquid, Argon, Ash

    Material properties

    The supported material properties are listed in the table below.

    Category Materials
    Basic Density, Isotropic Thermal Expansion, Isotropic Instantaneous Thermal Expansion, Orthotropic Thermal Expansion, Orthotropic Instantaneous Thermal Expansion, Constant Damping Coefficient
    Linear Elastic Isotropic Elasticity, Orthotropic Elasticity, Viscoelastic
    Hyperelastic Test Data Uniaxial Test Data, Biaxial Test Data, Shear Test Data, Volumetric Test Data, SimpleShear Test Data, Uniaxial Tension Test Data, Uniaxial Compression Test Data
    Hyperelastic Arruda-Boyce, Blatz-Ko, Gent, Mooney-Rivlin 2, Mooney-Rivlin 3, Mooney-Rivlin 5, Mooney-Rivlin 9, Neo-Hookean, Ogden 1st Order, Ogden 2nd Order, Ogden 3rd Order, Polynomial 1st Order, Polynomial 2nd Order, Polynomial 3rd Order, Yeoh 1st Order, Yeoh 2nd Order, Yeoh 3rd Order
    Plasticity Bilinear Isotropic Hardening, Multilinear Isotropic Hardening, Bilinear Kinematic Hardening, Multilinear Kinematic Hardening, Anand Viscoplasticity
    Creep Strain Hardening, Time Hardening, Generalized Exponential, Generalized Graham, Generalized Blackburn, Modified Time Hardening, Modified Strain Hardening, Generalized Garofalo, Exponential Form, Norton, Combined Time Hardening, Rational Polynomial, Generalized Time Hardening
    Visco-elastic Prony Shear Relaxation, Prony Volumetric Relaxation
    Other Mechanical Strain Life Parameters, Compressive Ultimate Strength, Compressive Yield Strength, LaRc0304 Constants, Orthotropic Strain Limits, Orthotropic Stress Limits, Puck Constants, Tensile Ultimate Strength, Tensile Yield Strength, Tsai-Wu Constants, Shape Memory Effect, Drucker-Prager Strength Piecewise, Drucker-Prager Strength Linear, Ideal Gas EOS, Crushable Foam, Nonlinear Elastic Model Damage, Plakin Special Hardening, Tensile Pressure Failure, Crack Softening Failure
    Thermal Enthalpy, Isotropic Thermal Conductivity, Orthotropic Thermal Conductivity, Specific Heat
    Electromagnetics B-H Curve, Isotropic Relative Permeability, Orthotropic Relative Permeability, Isotropic Resistivity, Orthotropic Resistivity

    Working with material data

    Exporting

    You can export the complete material data to an external XML file. The following format is supported for export:

    • XML in WELSIM Material (MatML 3.1) schema.
    • JSON in WELSIM Material schema.
    • OpenRadioss input script
    \ No newline at end of file +* Right-click the **Material Project** and select the **Export Materials** item from the context menu. -->
    \ No newline at end of file diff --git a/welsim/mesh/mesh_usage/index.html b/welsim/mesh/mesh_usage/index.html index e988c41..5869581 100755 --- a/welsim/mesh/mesh_usage/index.html +++ b/welsim/mesh/mesh_usage/index.html @@ -1 +1 @@ - Usage in WELSIM - WelSim Documentation

    Usage in WELSIM

    Basic meshing process

    The following steps provide the fundamental workflow for using the Meshing module as part of a finite element analysis in WELSIM.

    1. Create a finite element project and set the appropriate project type in the Properties of FEM Project object, such as Static Structural.

    2. Define appropriate material data for your analysis. The system provide a Structural Steel material, and you can create a new material object. Double-click, or Right click the material object. The Material Editing workspace appears, where you can add or edit material data as necessary.

    3. Import geometry to your system or build new geometry. Assign the material to the geometry.

    4. Click on the Mesh object in the Tree to access Meshing application functionality and apply mesh controls.

    5. Define loads and boundary conditions. Set up your analysis using that application's tools and features.

    6. You can solve your analysis by clicking solve button.

    7. Review your analysis results.

    Note

    You should save your data periodically (File>Save Project). The data will be saved as a .wsdb file and associated folder.

    \ No newline at end of file + Usage in WELSIM - WelSim Documentation

    Usage in WELSIM

    Basic meshing process

    The following steps provide the fundamental workflow for using the Meshing module as part of a finite element analysis in WELSIM.

    1. Create a finite element project and set the appropriate project type in the Properties of FEM Project object, such as Static Structural.

    2. Define appropriate material data for your analysis. The system provide a Structural Steel material, and you can create a new material object. Double-click, or Right click the material object. The Material Editing workspace appears, where you can add or edit material data as necessary.

    3. Import geometry to your system or build new geometry. Assign the material to the geometry.

    4. Click on the Mesh object in the Tree to access Meshing application functionality and apply mesh controls.

    5. Define loads and boundary conditions. Set up your analysis using that application's tools and features.

    6. You can solve your analysis by clicking solve button.

    7. Review your analysis results.

    Note

    You should save your data periodically (File>Save Project). The data will be saved as a .wsdb file and associated folder.

    \ No newline at end of file diff --git a/welsim/mesh/meshing/index.html b/welsim/mesh/meshing/index.html index 500fb18..8f4c31b 100755 --- a/welsim/mesh/meshing/index.html +++ b/welsim/mesh/meshing/index.html @@ -1,4 +1,4 @@ - Meshing Overview - WelSim Documentation

    Meshing Overview

    Philosophy

    The goal of meshing in WELSIM is to provide easy-to-use and stable meshing utilities that will simplify the mesh generation process.

    Physics-based meshing

    The WELSIM mesh generation is set based on the physics and engineering preferences. Particularly, the mesh system targets on the mechanical, thermal and electromagnetics physics.

    Meshing application interface

    The intuitive Meshing applicaiton interface, shown in the figure below, faciliates your use of all meshing controls and settings.

    The funcational elements of the interface are described in the following table.

    Window Component Description
    Main Menu This menu includes all basic menus such as File and Mesh.
    Standard Toolbar This toolbar contains commonly used application commands.
    Graphics Toolbar This toolbar contains commands that control pointer mode or cause an action in the graphics browser.
    Tree Outline Outline view of the project. Always visible. Location in the outline sets the context for other controls. Provides access to object's context menus. Allows renaming of objects. Establishes what details display in the Details View.
    Property Details View The Details View corresponds to the Outline selection. Displays a details window on the lower left panel (by default) which contains details about each object in the Outline.
    Geometry Window (also sometimes called the Graphics window) Displays and manipulates the visual representation of the object selected in the Outline. This window may display: <\br>
    3D Geometry<\br>
    2D/3D Graph<\br>
    Spreadsheet<\br>
    HTML Pages<\br>
    Scale ruler<\br>
    Triad control<\br>
    Legend<\br>
    WelSim/docs

    Meshing Overview

    Philosophy

    The goal of meshing in WELSIM is to provide easy-to-use and stable meshing utilities that will simplify the mesh generation process.

    Physics-based meshing

    The WELSIM mesh generation is set based on the physics and engineering preferences. Particularly, the mesh system targets on the mechanical, thermal and electromagnetics physics.

    Meshing application interface

    The intuitive Meshing applicaiton interface, shown in the figure below, faciliates your use of all meshing controls and settings.

    The funcational elements of the interface are described in the following table.

    Window Component Description
    Main Menu This menu includes all basic menus such as File and Mesh.
    Standard Toolbar This toolbar contains commonly used application commands.
    Graphics Toolbar This toolbar contains commands that control pointer mode or cause an action in the graphics browser.
    Tree Outline Outline view of the project. Always visible. Location in the outline sets the context for other controls. Provides access to object's context menus. Allows renaming of objects. Establishes what details display in the Details View.
    Property Details View The Details View corresponds to the Outline selection. Displays a details window on the lower left panel (by default) which contains details about each object in the Outline.
    Geometry Window (also sometimes called the Graphics window) Displays and manipulates the visual representation of the object selected in the Outline. This window may display: <\br>
    3D Geometry<\br>
    2D/3D Graph<\br>
    Spreadsheet<\br>
    HTML Pages<\br>
    Scale ruler<\br>
    Triad control<\br>
    Legend<\br>
    \ No newline at end of file +## Tutorials -->
    \ No newline at end of file diff --git a/welsim/release_notes/index.html b/welsim/release_notes/index.html index 4b624a3..0452c72 100755 --- a/welsim/release_notes/index.html +++ b/welsim/release_notes/index.html @@ -1 +1 @@ - Release notes - WelSim Documentation

    WELSIM release notes

    This release notes are specific to WELSIM 2024R1 and arranged by the version and features.

    Upgrading

    To upgrade WELSIM to the latest version, download the installer from our official website .

    Since version 2.1, WelSim provides a version checker in the application, users can click Help -> Check for Updates on the menu and know if a new version is available.

    finite_element_analysis_welsim_check_updates


    To inspect the currently installed version, open the About dialog in WELSIM application.

    finite_element_analysis_welsim_about

    Changelog

    2024R1 (2.8) Jan. at 2024

    • Import GDSII files and display in the project tree and 3D graphics window.
    • Allow users to choose the layer of selection in 3D geometry picking.
    • Enable ruler to show the micro and nano meter markers to better support micro shapes.
    • Add new 3D EM features: Eigenmode, Transient, and Driven analyses.
    • Include EM solver Palace, and all dependencies, MFEM, GSLib, libCEED, libXSMM, ARPACK-NG, etc. Built Palace on Windows operation system. Set the Palace as the default EM solver. Remove FemSolver1.
    • MatEditor
      • Add a new unit system: Metric (kg, mm, ns, A, N, V).
      • Add new material properties: Material Axes.
      • Add new materials: Sapphire.
    • Upgrade Linux version version to Ubuntu 22.04 LTS, upgrade compiler to GCC11.
    • Upgrade HYPRE from 2.25 to 2.30.
    • Enhancement and improvement.

    2023R3 (2.7) Sept. at 2023

    • Support open-source CFD package Su2 pre-processing:
      • Configure file and Su2 format mesh file.
      • Solver options: EULER, NAVIER_STOKES, RANS, INC_EULER, INC_NAVIER_STOKES, INC_RANS.
      • Time-dependent and steady-state analyses.
      • Free-stream field.
      • Fluid Model: STANDARD_AIR, IDEAL_GAS, VW_GAS, PR_GAS, CONSTANT_DENSITY, INC_IDEAL_GAS, INC_IDEAL_GAS_POLY, FLUID_MIXTURE, SU2_NONEQ, MUTATIONPP.
      • Turbulence models: Spalart-Allmaras (SA), Shear Stress Transport (SST).
      • Markers and Boundary Conditions: Euler (Slip) Wall, Symmetry, Heatflux, Isothermal Wall, Far field, Inlet, Supersonic Inlet, Outlet, etc.
      • Convective Schemes: JST, ROE, AUSM, HLLC, CUSP, MSW, FDS.
      • Limiter Options: SLOPE_LIMITER_FLOW, SLOPE_LIMITER_TURB, BARTH_JESPERSEN, VENKATAKRISHNAN, VENKATAKRISHNAN_WANG, SHARP_EDGES, WALL_DISTANCE, VAN_ALBADA_EDGE.
      • Restart and Visualization Files: RESTART, MESH, CSV, PARAVIEW_MULTIBLOCK, PARAVIEW, SURFACE_CSV, SURFACE_PARAVIEW.
      • Customizing the Screen and History Output: TIME_ITER, OUTER_ITER, INNER_ITER, CUR_TIME, TIME_STEP, WALL_TIME.
    • Pre- and post-processing for OpenRadioss
      • Support multi-step analysis
      • Support output frequency for the engine file.
      • Expose the thickness results option in the animation files.
      • Expose the FLD results option in the animation files.
    • Add the Adaptive Mesh Region condition.
    • Support pressure boundary condition for shell structure.
    • Support RMB context menu for the result color legend bar. The context menu allows user to:
      • Select the type of bar.
      • Toggle the display of date and time, logarithmic scale, deformation scale factor, scientific notation, and semi-transparency.
      • Set the number of digits, number of labels, and color spectrum.
    • Support RMB context menu for the 3D graphics window.
    • Support Isometric view for the dropdown AxisWidget.
    • Expose Ffmpeg executable file path in the Preferences.
    • Expose regression recorder and tester to the end users.
    • Open source all regression test cases.
    • MatEditor:
      • Add JWL material property and Test143.
      • Add Shear Test Data - Viscoelastic, Bulk Test Data - Viscoelastic, and Uniaxial Plastic Strain Test Data material properties.
    • CurveFitter:
      • Add an Output window to display more information to users.
      • Add the Johnson-Cook, Swift, Voce, and Swift-Voce functions in the Nonlinear section.
    • Introduce glog 0.6. Upgrade MFEM from 4.5 to 4.5.2.
    • Enhancement and optimization

    2023R2 (2.6) April at 2023

    • Generate solver scripts and associated mesh files for Palace. Support boundary conditions: PEC, PMC, Absorbing, Conductivity, Impedance, LumpedPort, WavePort, SurfaceCurrent, Ground, ZeroCharge. Support material properties: Permeability, Permittivity, LossTan, Conductivity. Support solver settings: Electrostatic, Magnetostatic, Eigenmode, Driven, Transient, Linear. Support mesh formats: Gmsh, MFEM, VTK, Vtu, Nastran.
    • Export mesh files in Gmsh and Nastran formats.
    • Support rigid body condition for the OpenRadioss solver.
    • Support spring boundary condition for the structural analysis.
    • Check geometries before meshing implementation.
    • Add the ”Open Recent“ feature to the File menu.
    • Directory persistence for tabular data import and export.
    • Introduce nlohmann/json third-party library.
    • Upgrade MFEM to 4.5 from 4.4, Hypre to 2.25 from 2.12, and FrontISTR to 5.5 from 5.3.
    • Enhancement and optimization.

    2023R1 (2.5) Jan. at 2023

    • Support OpenRadioss pre-processing.
      • Export OpenRadioss solver scripts including starter and engine files.
      • Supported blocks with keywords: MAT, NODE, GRNOD/NODE, BCS, PART, SHELL, BRICK, PROP/SOLID, PROP/SHELL, FUNCT, GRAV, INTER/TYPE7, SURF/SEG, RBODY, TH/PART, TH/INTER, INIVEL.
    • Support OpenRadioss post-processing.
      • Load T01 file.
      • Load A001 files.
      • Display result contours: displacement, velocity, acceleration, stresses, and strains.
      • Generate dynamic analysis result videos.
    • Support explicit structural dynamics using OpenRadioss solver.
    • Support explicit structural dynamics using OpenRadioss solver.
    • Support Contact Search for multi-body analysis.
    • Support Exploded View for multi-body analysis.
    • Optimize the meshing modules and improve the meshing user experience.
    • Refactor the chart module.
    • Support data persistence of mesh and results.
    • Upgrade Windows C++ compiler to Visual Studio 2022, SDK to 10.0.19041
    • Upgrade 3rd party libraries:
      • Qt to 5.15.2
      • OpenCascade to 7.5.3
      • Boost to 1.80, replace nowide with Boost/nowide
    • Start to use the external version name based on the calendar year, such as 2023R1.
    • Enhancements and optimizations.

    2.4 Dec. at 2022

    • Export MFEM mesh file.
    • Export time-dependent results in Paraview Data format (*.pvd)
    • Export FrontISTR, MFEM, and SU2 input scripts.
    • UnitConverter:
      • Add new units: Energy Density By Area, Energy Density By Volume, Dynamic Viscosity, Kinematic Viscosity, Specific Heat Density By Volume, Specific Volume, Heat Capacity, Stiffness.
      • Add new unit system: g-cm-um.
    • CurveFitter:
      • Support multi-thread parallel computing (OpenMP), add 1st-6th Schulz-Flory functions。
      • Expose solver options to GUI.
    • MatEditor:
      • Add new material: Air.
      • Add new fluid properties: Dynamic Viscosity, Kinematic Viscosity, Lemalar Prandtl Number, Turbulent Prandtl Number.
      • Add new Equation of State properties: EOS Compaction, EOS Gruneisen, EOS Ideal Gas, EOS Ideal Gas VT, EOS Linear, EOS LSZK, EOS Murnaghan, EOS NASG, EOS Noble Abel, EOS Osborne, EOS Polynomial EOS Puff, EOS Sesame, EOS Stiff Gas, EOS Tillotson.
      • Add new plasticity properties: Johnson Cook Strength, Zerilli Armstrong Strength, Hill, Rate-Dependent Multilinear Hardening, Orthotropic Hill, Cowper-Symonds, Zhao, Steinberg-Guinan, Gurson, Barlat3, Yoshida-Uemori, Johnson-Holmquist, Hensel-Spittel, Swift-Voce, and Vegter.
      • Add new Failure Criteria: Glass, Bi-Quadratic, Cockcroft, Connect, Extended Mohr-Coulomb, Energy, Fabric, Forming Limit Diagram, Hashin, Hosford-Coulomb, Johnson-Cook, Ladeveze delamination, Mullins Effect, NXT, Orthotropic Bi-Quadratic, Orthotropic Strain, Puck, Tuler-Butcher, Tensile Strain, Wierzbicki, Wilkins.
      • Add viscoelastic properties: Boltzman, Maxwell-Kelvin-Voigt, Maxwell-Kelvin.
      • Support tooltips for the materials and properties.
      • Support collapse and expand on the selected material properties.
      • Support deletion of the selected material properties.
      • Support Save/Resume.
      • Support writing OpenRadioss material scripts;
    • Upgrade MFEM to 4.4.
    • Upgrade MKL and Fortran Compiler to Intel oneAPI 2022.02.
    • Linux version: new release since v1.9; Upgrade Qt to 5.15.2, MKL to Intel oneAPI 2022.01.
    • Enhancements and optimizations.

    2.3 July at 2022

    • Improve meshing performance; Reduce the size of the temporary mesh data files.
    • Add 2D circular shape geometry creation.
    • Add a Refine Geometry feature.
    • Add new HPC options in the Preference settings.
    • Support new units: Momentum.
    • Upgrade structural solver to 5.3.
    • Upgrade the 3D rendering module to 5.0.3.
    • Upgrade third-party libraries: HDF to 1.12.2, CGNS to 4.3.0, ITK to 5.2.1.
    • Enhancements and optimizations.

    2.2 May at 2022

    • Add screen capture feature.
    • Support video export feature for the spinning view.
    • Add a result VCR controller to the Graph window.
    • Support result animation review and video export.
    • Enhancements and optimizations.

    2.1 Dec. at 2021

    • Add Sphere, and Torus build-in shape creation.
    • Support Clip Planes for the section view in post-processing.
    • Add vector (Glyph3D arrows) electric field and vector electric flux density results for electrostatic analysis.
    • Add Point Charge, Spherical Charge Density, and Polarization source conditions for electrostatic analysis.
    • Add Cylindrical Magnet, Ring Current source conditions for magnetostatic analysis.
    • Add image-saving feature for the Chart window.
    • Launch independent beam cross-section application - BeamSection.
    • CurveFitter: support R-squared (R2) calculation, enhance solver.
    • Upgrade Eigen to 3.3.9.

    2.0 January at 2021

    • All new 3D graphics module supports 4K display, auto spin/swing, stereo views, etc.
    • New "Pre-Selection", "Show Vertices", "Wireframe", "Show Mesh", "Stop Meshing/Solving" commands on Menu and Toolbar.
    • A new dimension ruler supports both metric and U.S. customary units.
    • A new bounding box feature for all presented objects in the 3D scene.
    • Optimized meshing module with better performance and usability.
    • Optimized mesh and result 3D rendering.
    • Added a new Selection View to the GUI main window.
    • Upgrade QT framework to 5.12.9, OCCT to 7.4, VTK to 8.2, MUMPS to 5.3.5, PETSc to 3.14.2, etc.

    1.9.1 July at 2020

    • Support curve fitting features for the Core Loss Model and test data.
    • Support curve fitting for the hyperelastic material models and test data.
    • Launch general-purpose curve fitting application - CurveFitter.

    1.9 November, 2019

    • Support units.
    • Support nonlinear thermal analysis.
    • All new table and graph windows.
    • All new About dialogs with capability of displaying software and hardware information.
    • Launch the engineering material data tool - MatEditor.
    • Launch the engineering unit converter - UnitConverter.
    • Launch online documentation at docs.welsim.com and replaced the PDF documents.
    • Result legend supports user-defined min/max values.
    • Upgrade C++ compiler to vs2017, QT framework to 5.12.2, HDF5 to 1.8.21, Boost to 1.69, OCCT to 7.3, etc.
    • Enhancements and optimizations.

    1.8 December, 2018

    • Input/Output: Add Nastran and Abaqus input scripts generation; Read generated result files.
    • GUI: Add system preferences database and associated user interface; Enhance Output/Message window, promote more detailed messages.
    • Geometry: New STL geometry object. Import STL files; Add geometry checking feature.
    • Mesh: mesh STL geometry. export mesh data to file.
    • Analysis: Support Vertex scoping for the boundary conditions. Add body heat flux condition for thermal analysis.
    • Upgrade Microsoft MPI to 10.0. General enhancements.

    1.7 July, 2018

    • Add structural shell analysis, including the associated fixed rotation boundary condition, rotation result, reaction moment probe.
    • Add structural body conditions: body force, acceleration, earth gravity, rotational velocity.
    • Add mesh method object to support distinct mesh density for bodies.
    • Add geometry selection controller on graphics toolbar, support body, face, edge, and vertex selections.
    • Add plane shape creation feature.
    • Add official user manual.
    • General enhancements.

    1.6 April, 2018

    • Add data persistence module to support project save/resume feature.
    • Add user-defined and reaction force probe results.
    • Add velocity and acceleration boundary conditions and results for transient structural analysis.
    • Add geometry export feature.
    • General enhancements.

    1.5 February, 2018

    • Launch Linux 64-bit version that supports Ubuntu 16.04 LTS and Fedora 27.
    • Add status engine for the project tree objects, small icon represents the current state of the object.
    • General enhancements.

    1.4 November, 2017

    • Add 3D static and transient lamellar flow analysis (Deprecated).
    • General enhancements.

    1.3 September, 2017

    • Add 3D electrostatic analysis with supported boundary conditions: ground, symmetry, voltage, zero charges, surface charge density, electric displacement.
    • Add 3D magnetostatic analysis with supported boundary conditions: insulting, magnetic flux density.
    • General enhancements.

    1.2 August, 2017

    • Add 3D steady-state and transient thermal analysis with associated boundary conditions.
    • General enhancements.

    1.1 July, 2017

    • Add chart, tabular data, and output window to GUI.
    • Add multi-body and contact features to structural analysis.
    • Add nonlinear material analysis features with the capabilities of solving hyperelastic, elastoplastic, viscoelastic, and creep materials.
    • Add 3D static, transient, and modal structural analyses.
    • General enhancements.

    1.0 March 2017

    • Launch all-in-one simulation framework including a graphical user interface, meshers, and solvers.
    • Add 3D linear elastic structural analysis.
    • Add Automatic mesh generator for Tet4 and Tet10 elements.
    • Add geometry creation and CAD model import features.
    • Add graphics, tree, and property windows to the GUI.
    \ No newline at end of file + Release notes - WelSim Documentation

    WELSIM release notes

    This release notes are specific to WELSIM 2024R1 and arranged by the version and features.

    Upgrading

    To upgrade WELSIM to the latest version, download the installer from our official website .

    Since version 2.1, WelSim provides a version checker in the application, users can click Help -> Check for Updates on the menu and know if a new version is available.

    finite_element_analysis_welsim_check_updates


    To inspect the currently installed version, open the About dialog in WELSIM application.

    finite_element_analysis_welsim_about

    Changelog

    2024R1 (2.8) Jan. at 2024

    • Import GDSII files and display in the project tree and 3D graphics window.
    • Allow users to choose the layer of selection in 3D geometry picking.
    • Enable ruler to show the micro and nano meter markers to better support micro shapes.
    • Add new 3D EM features: Eigenmode, Transient, and Driven analyses.
    • Include EM solver Palace, and all dependencies, MFEM, GSLib, libCEED, libXSMM, ARPACK-NG, etc. Built Palace on Windows operation system. Set the Palace as the default EM solver. Remove FemSolver1.
    • MatEditor
      • Add a new unit system: Metric (kg, mm, ns, A, N, V).
      • Add new material properties: Material Axes.
      • Add new materials: Sapphire.
    • Upgrade Linux version version to Ubuntu 22.04 LTS, upgrade compiler to GCC11.
    • Upgrade HYPRE from 2.25 to 2.30.
    • Enhancement and improvement.

    2023R3 (2.7) Sept. at 2023

    • Support open-source CFD package Su2 pre-processing:
      • Configure file and Su2 format mesh file.
      • Solver options: EULER, NAVIER_STOKES, RANS, INC_EULER, INC_NAVIER_STOKES, INC_RANS.
      • Time-dependent and steady-state analyses.
      • Free-stream field.
      • Fluid Model: STANDARD_AIR, IDEAL_GAS, VW_GAS, PR_GAS, CONSTANT_DENSITY, INC_IDEAL_GAS, INC_IDEAL_GAS_POLY, FLUID_MIXTURE, SU2_NONEQ, MUTATIONPP.
      • Turbulence models: Spalart-Allmaras (SA), Shear Stress Transport (SST).
      • Markers and Boundary Conditions: Euler (Slip) Wall, Symmetry, Heatflux, Isothermal Wall, Far field, Inlet, Supersonic Inlet, Outlet, etc.
      • Convective Schemes: JST, ROE, AUSM, HLLC, CUSP, MSW, FDS.
      • Limiter Options: SLOPE_LIMITER_FLOW, SLOPE_LIMITER_TURB, BARTH_JESPERSEN, VENKATAKRISHNAN, VENKATAKRISHNAN_WANG, SHARP_EDGES, WALL_DISTANCE, VAN_ALBADA_EDGE.
      • Restart and Visualization Files: RESTART, MESH, CSV, PARAVIEW_MULTIBLOCK, PARAVIEW, SURFACE_CSV, SURFACE_PARAVIEW.
      • Customizing the Screen and History Output: TIME_ITER, OUTER_ITER, INNER_ITER, CUR_TIME, TIME_STEP, WALL_TIME.
    • Pre- and post-processing for OpenRadioss
      • Support multi-step analysis
      • Support output frequency for the engine file.
      • Expose the thickness results option in the animation files.
      • Expose the FLD results option in the animation files.
    • Add the Adaptive Mesh Region condition.
    • Support pressure boundary condition for shell structure.
    • Support RMB context menu for the result color legend bar. The context menu allows user to:
      • Select the type of bar.
      • Toggle the display of date and time, logarithmic scale, deformation scale factor, scientific notation, and semi-transparency.
      • Set the number of digits, number of labels, and color spectrum.
    • Support RMB context menu for the 3D graphics window.
    • Support Isometric view for the dropdown AxisWidget.
    • Expose Ffmpeg executable file path in the Preferences.
    • Expose regression recorder and tester to the end users.
    • Open source all regression test cases.
    • MatEditor:
      • Add JWL material property and Test143.
      • Add Shear Test Data - Viscoelastic, Bulk Test Data - Viscoelastic, and Uniaxial Plastic Strain Test Data material properties.
    • CurveFitter:
      • Add an Output window to display more information to users.
      • Add the Johnson-Cook, Swift, Voce, and Swift-Voce functions in the Nonlinear section.
    • Introduce glog 0.6. Upgrade MFEM from 4.5 to 4.5.2.
    • Enhancement and optimization

    2023R2 (2.6) April at 2023

    • Generate solver scripts and associated mesh files for Palace. Support boundary conditions: PEC, PMC, Absorbing, Conductivity, Impedance, LumpedPort, WavePort, SurfaceCurrent, Ground, ZeroCharge. Support material properties: Permeability, Permittivity, LossTan, Conductivity. Support solver settings: Electrostatic, Magnetostatic, Eigenmode, Driven, Transient, Linear. Support mesh formats: Gmsh, MFEM, VTK, Vtu, Nastran.
    • Export mesh files in Gmsh and Nastran formats.
    • Support rigid body condition for the OpenRadioss solver.
    • Support spring boundary condition for the structural analysis.
    • Check geometries before meshing implementation.
    • Add the ”Open Recent“ feature to the File menu.
    • Directory persistence for tabular data import and export.
    • Introduce nlohmann/json third-party library.
    • Upgrade MFEM to 4.5 from 4.4, Hypre to 2.25 from 2.12, and FrontISTR to 5.5 from 5.3.
    • Enhancement and optimization.

    2023R1 (2.5) Jan. at 2023

    • Support OpenRadioss pre-processing.
      • Export OpenRadioss solver scripts including starter and engine files.
      • Supported blocks with keywords: MAT, NODE, GRNOD/NODE, BCS, PART, SHELL, BRICK, PROP/SOLID, PROP/SHELL, FUNCT, GRAV, INTER/TYPE7, SURF/SEG, RBODY, TH/PART, TH/INTER, INIVEL.
    • Support OpenRadioss post-processing.
      • Load T01 file.
      • Load A001 files.
      • Display result contours: displacement, velocity, acceleration, stresses, and strains.
      • Generate dynamic analysis result videos.
    • Support explicit structural dynamics using OpenRadioss solver.
    • Support explicit structural dynamics using OpenRadioss solver.
    • Support Contact Search for multi-body analysis.
    • Support Exploded View for multi-body analysis.
    • Optimize the meshing modules and improve the meshing user experience.
    • Refactor the chart module.
    • Support data persistence of mesh and results.
    • Upgrade Windows C++ compiler to Visual Studio 2022, SDK to 10.0.19041
    • Upgrade 3rd party libraries:
      • Qt to 5.15.2
      • OpenCascade to 7.5.3
      • Boost to 1.80, replace nowide with Boost/nowide
    • Start to use the external version name based on the calendar year, such as 2023R1.
    • Enhancements and optimizations.

    2.4 Dec. at 2022

    • Export MFEM mesh file.
    • Export time-dependent results in Paraview Data format (*.pvd)
    • Export FrontISTR, MFEM, and SU2 input scripts.
    • UnitConverter:
      • Add new units: Energy Density By Area, Energy Density By Volume, Dynamic Viscosity, Kinematic Viscosity, Specific Heat Density By Volume, Specific Volume, Heat Capacity, Stiffness.
      • Add new unit system: g-cm-um.
    • CurveFitter:
      • Support multi-thread parallel computing (OpenMP), add 1st-6th Schulz-Flory functions。
      • Expose solver options to GUI.
    • MatEditor:
      • Add new material: Air.
      • Add new fluid properties: Dynamic Viscosity, Kinematic Viscosity, Lemalar Prandtl Number, Turbulent Prandtl Number.
      • Add new Equation of State properties: EOS Compaction, EOS Gruneisen, EOS Ideal Gas, EOS Ideal Gas VT, EOS Linear, EOS LSZK, EOS Murnaghan, EOS NASG, EOS Noble Abel, EOS Osborne, EOS Polynomial EOS Puff, EOS Sesame, EOS Stiff Gas, EOS Tillotson.
      • Add new plasticity properties: Johnson Cook Strength, Zerilli Armstrong Strength, Hill, Rate-Dependent Multilinear Hardening, Orthotropic Hill, Cowper-Symonds, Zhao, Steinberg-Guinan, Gurson, Barlat3, Yoshida-Uemori, Johnson-Holmquist, Hensel-Spittel, Swift-Voce, and Vegter.
      • Add new Failure Criteria: Glass, Bi-Quadratic, Cockcroft, Connect, Extended Mohr-Coulomb, Energy, Fabric, Forming Limit Diagram, Hashin, Hosford-Coulomb, Johnson-Cook, Ladeveze delamination, Mullins Effect, NXT, Orthotropic Bi-Quadratic, Orthotropic Strain, Puck, Tuler-Butcher, Tensile Strain, Wierzbicki, Wilkins.
      • Add viscoelastic properties: Boltzman, Maxwell-Kelvin-Voigt, Maxwell-Kelvin.
      • Support tooltips for the materials and properties.
      • Support collapse and expand on the selected material properties.
      • Support deletion of the selected material properties.
      • Support Save/Resume.
      • Support writing OpenRadioss material scripts;
    • Upgrade MFEM to 4.4.
    • Upgrade MKL and Fortran Compiler to Intel oneAPI 2022.02.
    • Linux version: new release since v1.9; Upgrade Qt to 5.15.2, MKL to Intel oneAPI 2022.01.
    • Enhancements and optimizations.

    2.3 July at 2022

    • Improve meshing performance; Reduce the size of the temporary mesh data files.
    • Add 2D circular shape geometry creation.
    • Add a Refine Geometry feature.
    • Add new HPC options in the Preference settings.
    • Support new units: Momentum.
    • Upgrade structural solver to 5.3.
    • Upgrade the 3D rendering module to 5.0.3.
    • Upgrade third-party libraries: HDF to 1.12.2, CGNS to 4.3.0, ITK to 5.2.1.
    • Enhancements and optimizations.

    2.2 May at 2022

    • Add screen capture feature.
    • Support video export feature for the spinning view.
    • Add a result VCR controller to the Graph window.
    • Support result animation review and video export.
    • Enhancements and optimizations.

    2.1 Dec. at 2021

    • Add Sphere, and Torus build-in shape creation.
    • Support Clip Planes for the section view in post-processing.
    • Add vector (Glyph3D arrows) electric field and vector electric flux density results for electrostatic analysis.
    • Add Point Charge, Spherical Charge Density, and Polarization source conditions for electrostatic analysis.
    • Add Cylindrical Magnet, Ring Current source conditions for magnetostatic analysis.
    • Add image-saving feature for the Chart window.
    • Launch independent beam cross-section application - BeamSection.
    • CurveFitter: support R-squared (R2) calculation, enhance solver.
    • Upgrade Eigen to 3.3.9.

    2.0 January at 2021

    • All new 3D graphics module supports 4K display, auto spin/swing, stereo views, etc.
    • New "Pre-Selection", "Show Vertices", "Wireframe", "Show Mesh", "Stop Meshing/Solving" commands on Menu and Toolbar.
    • A new dimension ruler supports both metric and U.S. customary units.
    • A new bounding box feature for all presented objects in the 3D scene.
    • Optimized meshing module with better performance and usability.
    • Optimized mesh and result 3D rendering.
    • Added a new Selection View to the GUI main window.
    • Upgrade QT framework to 5.12.9, OCCT to 7.4, VTK to 8.2, MUMPS to 5.3.5, PETSc to 3.14.2, etc.

    1.9.1 July at 2020

    • Support curve fitting features for the Core Loss Model and test data.
    • Support curve fitting for the hyperelastic material models and test data.
    • Launch general-purpose curve fitting application - CurveFitter.

    1.9 November, 2019

    • Support units.
    • Support nonlinear thermal analysis.
    • All new table and graph windows.
    • All new About dialogs with capability of displaying software and hardware information.
    • Launch the engineering material data tool - MatEditor.
    • Launch the engineering unit converter - UnitConverter.
    • Launch online documentation at docs.welsim.com and replaced the PDF documents.
    • Result legend supports user-defined min/max values.
    • Upgrade C++ compiler to vs2017, QT framework to 5.12.2, HDF5 to 1.8.21, Boost to 1.69, OCCT to 7.3, etc.
    • Enhancements and optimizations.

    1.8 December, 2018

    • Input/Output: Add Nastran and Abaqus input scripts generation; Read generated result files.
    • GUI: Add system preferences database and associated user interface; Enhance Output/Message window, promote more detailed messages.
    • Geometry: New STL geometry object. Import STL files; Add geometry checking feature.
    • Mesh: mesh STL geometry. export mesh data to file.
    • Analysis: Support Vertex scoping for the boundary conditions. Add body heat flux condition for thermal analysis.
    • Upgrade Microsoft MPI to 10.0. General enhancements.

    1.7 July, 2018

    • Add structural shell analysis, including the associated fixed rotation boundary condition, rotation result, reaction moment probe.
    • Add structural body conditions: body force, acceleration, earth gravity, rotational velocity.
    • Add mesh method object to support distinct mesh density for bodies.
    • Add geometry selection controller on graphics toolbar, support body, face, edge, and vertex selections.
    • Add plane shape creation feature.
    • Add official user manual.
    • General enhancements.

    1.6 April, 2018

    • Add data persistence module to support project save/resume feature.
    • Add user-defined and reaction force probe results.
    • Add velocity and acceleration boundary conditions and results for transient structural analysis.
    • Add geometry export feature.
    • General enhancements.

    1.5 February, 2018

    • Launch Linux 64-bit version that supports Ubuntu 16.04 LTS and Fedora 27.
    • Add status engine for the project tree objects, small icon represents the current state of the object.
    • General enhancements.

    1.4 November, 2017

    • Add 3D static and transient lamellar flow analysis (Deprecated).
    • General enhancements.

    1.3 September, 2017

    • Add 3D electrostatic analysis with supported boundary conditions: ground, symmetry, voltage, zero charges, surface charge density, electric displacement.
    • Add 3D magnetostatic analysis with supported boundary conditions: insulting, magnetic flux density.
    • General enhancements.

    1.2 August, 2017

    • Add 3D steady-state and transient thermal analysis with associated boundary conditions.
    • General enhancements.

    1.1 July, 2017

    • Add chart, tabular data, and output window to GUI.
    • Add multi-body and contact features to structural analysis.
    • Add nonlinear material analysis features with the capabilities of solving hyperelastic, elastoplastic, viscoelastic, and creep materials.
    • Add 3D static, transient, and modal structural analyses.
    • General enhancements.

    1.0 March 2017

    • Launch all-in-one simulation framework including a graphical user interface, meshers, and solvers.
    • Add 3D linear elastic structural analysis.
    • Add Automatic mesh generator for Tet4 and Tet10 elements.
    • Add geometry creation and CAD model import features.
    • Add graphics, tree, and property windows to the GUI.
    \ No newline at end of file diff --git a/welsim/theory/contact/index.html b/welsim/theory/contact/index.html index 1e6ff85..8ff2d3d 100755 --- a/welsim/theory/contact/index.html +++ b/welsim/theory/contact/index.html @@ -1 +1 @@ - Structures with contact - WelSim Documentation

    Structures with contact

    As contact occurs among multiple bodies, the contact force \(\mathbf{t}_{c}\) is transmitted via the contact surface. The principle equation of the virtual work can be rewritten as follows

    \[ \begin{align} \label{eq:ch5_contact_gov1} \intop_{^{t'}V}\thinspace^{t'}\sigma\colon\delta^{t'}\mathbf{A}_{(L)}d^{t'}v=\intop_{^{t'}S_{t}}\thinspace^{t'}\mathbf{t}\cdot\delta\mathbf{u}d^{t'}s+\intop_{V}\thinspace^{t'}\mathbf{b}\cdot\delta\mathbf{u}d^{t'}v+\intop_{^{t'}S\text{c}}\thinspace^{t'}\mathbf{t}_{c}[\delta\mathbf{u}^{(1)}-\delta\mathbf{u}^{(2)}] \end{align} \]

    where notation \(s_{c}\) represents the contact area, \(\mathbf{u}^{(1)}\) and \(\mathbf{u}^{(2)}\) denotes the displacement of the contact object 1 and 2, respectively.

    In the contact analysis, the surfaces involve contact are paired. One of these surfaces is called the master surface, and another type of surface is target surface. We also assume

    • The target nodes do not penetrate the master surface
    • When contact occurs, the target nodes become the contact position, the master surface and the target surface mutually transmit the contact force and the frictional force through the points of contact.

    The governing equations with contact term can be reduced to the finite element formation

    \[ \intop_{^{t'}S_{c}}\thinspace^{t'}\mathbf{t}_{c}[\delta\mathbf{u}^{(1)}-\delta\mathbf{u}^{(2)}]\approx\delta\mathbf{UK}_{C}\triangle\mathbf{U}+\delta\mathbf{UF}_{C} \]

    where \(\mathbf{K}_{c}\) and \(\mathbf{F}_{c}\) are contact rigid matrix, and the contact forces, respectively.

    Remember that we introduced total Lagrange and update Lagrange methods, those formulation can be extended with the consideration of contact factors. The total Lagrange and updated Lagrange formulation with contact terms are given below

    \[ \delta\mathbf{U}^{T}(_{0}^{t}\mathbf{K}_{L}+_{0}^{t}\mathbf{K}_{NL}+\mathbf{K}_{c})\triangle\mathbf{U}=\delta\mathbf{U}^{T}\thinspace_{0}^{t'}\mathbf{F}-\delta\mathbf{U}^{T}\thinspace_{0}^{t}\mathbf{Q}+\delta\mathbf{U}^{T}\mathbf{F}_{c} \]
    \[ \delta\mathbf{U}^{T}(_{t}^{t}\mathbf{K}_{L}+_{t}^{t}\mathbf{K}_{NL}+\mathbf{K}_{c})\triangle\mathbf{U}=\delta\mathbf{U}^{T}\thinspace_{t}^{t'}\mathbf{F}-\delta\mathbf{U}^{T}\thinspace_{t}^{t}\mathbf{Q}+\delta\mathbf{U}^{T}\mathbf{F}_{c} \]
    \ No newline at end of file + Structures with contact - WelSim Documentation

    Structures with contact

    As contact occurs among multiple bodies, the contact force \(\mathbf{t}_{c}\) is transmitted via the contact surface. The principle equation of the virtual work can be rewritten as follows

    \[ \begin{align} \label{eq:ch5_contact_gov1} \intop_{^{t'}V}\thinspace^{t'}\sigma\colon\delta^{t'}\mathbf{A}_{(L)}d^{t'}v=\intop_{^{t'}S_{t}}\thinspace^{t'}\mathbf{t}\cdot\delta\mathbf{u}d^{t'}s+\intop_{V}\thinspace^{t'}\mathbf{b}\cdot\delta\mathbf{u}d^{t'}v+\intop_{^{t'}S\text{c}}\thinspace^{t'}\mathbf{t}_{c}[\delta\mathbf{u}^{(1)}-\delta\mathbf{u}^{(2)}] \end{align} \]

    where notation \(s_{c}\) represents the contact area, \(\mathbf{u}^{(1)}\) and \(\mathbf{u}^{(2)}\) denotes the displacement of the contact object 1 and 2, respectively.

    In the contact analysis, the surfaces involve contact are paired. One of these surfaces is called the master surface, and another type of surface is target surface. We also assume

    • The target nodes do not penetrate the master surface
    • When contact occurs, the target nodes become the contact position, the master surface and the target surface mutually transmit the contact force and the frictional force through the points of contact.

    The governing equations with contact term can be reduced to the finite element formation

    \[ \intop_{^{t'}S_{c}}\thinspace^{t'}\mathbf{t}_{c}[\delta\mathbf{u}^{(1)}-\delta\mathbf{u}^{(2)}]\approx\delta\mathbf{UK}_{C}\triangle\mathbf{U}+\delta\mathbf{UF}_{C} \]

    where \(\mathbf{K}_{c}\) and \(\mathbf{F}_{c}\) are contact rigid matrix, and the contact forces, respectively.

    Remember that we introduced total Lagrange and update Lagrange methods, those formulation can be extended with the consideration of contact factors. The total Lagrange and updated Lagrange formulation with contact terms are given below

    \[ \delta\mathbf{U}^{T}(_{0}^{t}\mathbf{K}_{L}+_{0}^{t}\mathbf{K}_{NL}+\mathbf{K}_{c})\triangle\mathbf{U}=\delta\mathbf{U}^{T}\thinspace_{0}^{t'}\mathbf{F}-\delta\mathbf{U}^{T}\thinspace_{0}^{t}\mathbf{Q}+\delta\mathbf{U}^{T}\mathbf{F}_{c} \]
    \[ \delta\mathbf{U}^{T}(_{t}^{t}\mathbf{K}_{L}+_{t}^{t}\mathbf{K}_{NL}+\mathbf{K}_{c})\triangle\mathbf{U}=\delta\mathbf{U}^{T}\thinspace_{t}^{t'}\mathbf{F}-\delta\mathbf{U}^{T}\thinspace_{t}^{t}\mathbf{Q}+\delta\mathbf{U}^{T}\mathbf{F}_{c} \]
    \ No newline at end of file diff --git a/welsim/theory/electromagnetic/index.html b/welsim/theory/electromagnetic/index.html index e113f7a..73b8728 100755 --- a/welsim/theory/electromagnetic/index.html +++ b/welsim/theory/electromagnetic/index.html @@ -1,8 +1,8 @@ - Electromagnetic analysis - WelSim Documentation

    Electromagnetic analysis

    This section discuss the electromagnetic theories that are applied in the WELSIM application.

    Electromagnetic field fundamentals

    The electromagnetic fields are governed by the well-known Maxwell's equations \(\eqref{eq:ch4_theory_maxwell1}\)-\(\eqref{eq:ch4_theory_maxwell4}\)12.

    \[ \begin{align} \label{eq:ch4_theory_maxwell1} \nabla\times\mathbf{H}=\mathbf{J}+\dfrac{\partial\mathbf{D}}{\partial t}=\mathbf{J}_{S}+\mathbf{J}_{e}+\mathbf{J}_{V}+\dfrac{\partial\mathbf{D}}{\partial t} \end{align} \]
    \[ \begin{align} \label{eq:ch4_theory_maxwell2} \nabla\times\mathbf{E}=-\dfrac{\partial\mathbf{B}}{\partial t} \end{align} \]
    \[ \begin{align} \label{eq:ch4_theory_maxwell3} \nabla\cdot\mathbf{B}=0 \end{align} \]
    \[ \begin{align} \label{eq:ch4_theory_maxwell4} \nabla\cdot\mathbf{D}=\rho \end{align} \]

    where \(\mathbf{H}\) is the magnetic field intensity vector, \(\mathbf{J}\) is total current density vector, \(\mathbf{J}_{s}\) is the applied source current density vector, \(\mathbf{J}_{e}\) is the induced eddy current density vector, and \(\mathbf{J}_{VS}\) is the velocity current density vector, \(\mathbf{D}\) is the electric flux density vector (this term is also called electric displacement), \(\mathbf{E}\) is the electric field intensity vector, \(\mathbf{B}\) is the magnetic flux density vector, and \(\rho\) is the electric charge density.

    The above field governing equations contian the constitutive relations:

    \[ \mathbf{D}=\epsilon\mathbf{E}+\mathbf{P} \]

    and

    \[ \mathbf{B}=\mu\mathbf{H} \]

    where \(\mathbf{P}\) is the polarization density, and \(\mathbf{M}\) is t he magnetization. In many materials the polarization density can be approximated as a scalar multiple of the electric field. \(\mu\) is the magnetic permeability matrix. For example, if the magnetic permeability is a function of temperature,

    \[ \mu=\mu_{0}\left[\begin{array}{ccc} \mu_{rx} & 0 & 0\\ 0 & \mu_{ry} & 0\\ 0 & 0 & \mu_{rz} \end{array}\right] \]

    For the permanent magnets, the constitutive relation of magnetic field becomes

    \[ \mathbf{B}=\mu\mathbf{H}+\mu_{0}\mathbf{M}_{0} \]

    where \(\mathbf{M}_{0}\) is the remanet intrinsic magnetization vector.

    Similarly, the consitutive relations for the related electric fields are:

    \[ \mathbf{J}=\sigma[\mathbf{E}+\mathbf{v}\times\mathbf{B}] \]
    \[ \sigma=\left[\begin{array}{ccc} \sigma_{xx} & 0 & 0\\ 0 & \sigma_{yy} & 0\\ 0 & 0 & \sigma_{zz} \end{array}\right] \]
    \[ \epsilon=\left[\begin{array}{ccc} \epsilon_{xx} & 0 & 0\\ 0 & \epsilon_{yy} & 0\\ 0 & 0 & \epsilon_{zz} \end{array}\right] \]

    where \(\sigma\) is the electrical conductivity matrix, \(\epsilon\) is the permittivity matrix, and \(v\) is the velocity vector.

    Electrostatics

    The WELSIM application introduces electric scalar potential to solve the electrostatic problems. When the time-derivetive of magnetic flux density is neglected from the full Maxwell's equations. The governing equations are reduced to

    \[ \begin{align} \label{eq:ch4_theory_govern_eqn_electrostatic} \nabla\times\mathbf{H}=\mathbf{J}+\dfrac{\partial\mathbf{D}}{\partial t} \end{align} \]
    \[ \nabla\times\mathbf{E}=\mathbf{0} \]
    \[ \nabla\cdot\mathbf{B}=0 \]
    \[ \nabla\cdot\mathbf{D}=\rho \]

    Since the electric field \(\mathbf{E}\) is irrotational and can be expressed as the function of electric scalar potential

    \[ \mathbf{E}=-\nabla \varphi \]

    where \(\varphi\) is the electric scalar potential and has units of Volts in the SI system. Inserting this definition into the Gauss's Law gives:

    \[ -\nabla \cdot \epsilon\nabla\varphi = \rho - \nabla \cdot \mathbf{P} \]

    which is Poisson's equation for the electric potential , where we have assumed a linear constitutive relation between \(\mathbf{D}\) and \(\mathbf{E}\) of the form \(\mathbf{D}=\epsilon\mathbf{E}+\mathbf{P}\).

    Boundary Conditions

    For an electric material interface, the continuious conditions for \(\mathbf{E}\), \(\mathbf{D}\), and \(\mathbf{J}\) are

    \[ E_{t1}-E_{t2}=0 \]
    \[ J_{1n}+\dfrac{\partial D_{1n}}{\partial t}=J_{2n}+\dfrac{\partial D_{2n}}{\partial t} \]
    \[ D_{1n}-D_{2n}=\rho_{s} \]

    where \(E_{t}\) is the tangential components of \(\mathbf{E}\), \(J_{n}\) is the normal components of \(\mathbf{J}\), \(D_{n}\) is the normal components of \(\mathbf{D}\), and \(\rho_{s}\) is the surface charge density.

    Since the solutons to the governing equation are non-unique, we must impose a Dirichlet boundary condition at least at one node in the domain to get the physical solution. The Dirichlet condition could be a fixed piecewise voltage value on certain nodes. In addition, the normal derivative boundary condition \(\hat{n}\cdot\mathbf{D}\) such as surface charge density can be imposed on the boundary.

    Matrix Forms

    The electric scalar potential algorithm is applied in the WELSIM application for solving electrostatic problems. The governing equations are reduced to the following:

    \[ -\nabla\cdot\left(\epsilon\nabla V\right)=\rho \]

    The matrix equation for an electrostatic analysis is derived from Equation \(\eqref{eq:ch4_theory_govern_eqn_electrostatic}\):

    \[ \left[K^{VS}\right]\left\{ V_{e}\right\} =\left\{ L_{e}\right\} \]

    where

    \[ \left[K^{VS}\right]=\intop_{V}\left(\nabla\left\{ N\right\} ^{T}\right)^{T}\epsilon\left(\nabla\left\{ N\right\} ^{T}\right)dV \]
    \[ \left\{ L_{e}\right\} =\left\{ L_{e}^{n}\right\} +\left\{ L_{e}^{c}\right\} +\left\{ L_{e}^{SC}\right\} \]
    \[ \left\{ L_{e}^{c}\right\} =\int_{V}\rho\left\{ N\right\} ^{T}dV \]
    \[ \left\{ L_{e}^{sc}\right\} =\int_{V}\rho_{s}\left\{ N\right\} ^{T}dV \]

    Vector magnetic potential

    The WELSIM application applies the vector magnetic potential method for the magentostatic analysis. Considering the neglected electric displacement currents, the full Maxwell's equations can be reduced to

    \[ \nabla\times\mathbf{H}=\mathbf{J} \]
    \[ \nabla\times\mathbf{E}=-\dfrac{\partial\mathbf{B}}{\partial t} \]
    \[ \nabla\cdot\mathbf{B}=0 \]

    A numerical solution can be achieved by introducing potentials to the governing equations. The proposed magnetic vector potential \(\mathbf{A}\) and electric scalar potential \(V\) have the following characteristics:

    \[ \mathbf{B}=\nabla\times\mathbf{A} \]
    \[ \mathbf{E}=-\dfrac{\partial\mathbf{A}}{\partial t}-\nabla V \]

    In addition, the Coulomb gauge condition is introduced to ensure the uniqueness of the vector potential, as shown in the following equations.

    \[ \nabla\times\mathbf{v}\nabla\times\mathbf{A}-\nabla v_{e}\nabla\cdot\mathbf{A}+\sigma\left\{ \dfrac{\partial\mathbf{A}}{\partial t}\right\} +\sigma\nabla V-\mathbf{v}\times\sigma\nabla\times\mathbf{A}=\mathbf{0} \]
    \[ \nabla\cdot\left(\sigma\left\{ \dfrac{\partial\mathbf{A}}{\partial t}\right\} -\sigma\nabla V+\mathbf{v}\times\sigma\nabla\times\mathbf{A}\right)=\mathbf{0} \]
    \[ \nabla\times\mathbf{v}\nabla\times\mathbf{A}-\nabla v_{e}\nabla\cdot\mathbf{A}=\mathbf{J}_s+\nabla\times\dfrac{1}{\mathbf{v}_{0}}\mathbf{v}\mathbf{M}_{0} \]

    where matrix invarient \(v_{e}\) is \(v_{e}=\frac{1}{3}\mathrm{tr}(v)=\frac{1}{3}(v_{11}+v_{22}+v_{33})\).

    Edge-element magnetic vector potential

    Due to the limitation of node-based vector magnetic potential algorithm2, WELSIM application uses the edge-based finite element for the magnetic vector potential algorithm.

    The governing equation for the edge finite element method is given below.

    \[ \nabla\times\mathbf{v}\nabla\times\mathbf{A}+\sigma\left\{ \dfrac{\partial\mathbf{A}}{\partial t}+\nabla V\right\} +\epsilon\left(\left\{ \dfrac{\partial^{2}\mathbf{A}}{\partial t^{2}}\right\} +\nabla\left\{ \dfrac{\partial V}{\partial t}\right\} \right)=\mathbf{0} \]
    \[ \nabla\cdot\left(\sigma\left(\left\{ \dfrac{\partial\mathbf{A}}{\partial t}\right\} +\nabla V\right)+\epsilon\left(\left\{ \dfrac{\partial^{2}\mathbf{A}}{\partial t^{2}}\right\} +\nabla\left\{ \dfrac{\partial V}{\partial t}\right\} \right)\right)=\mathbf{0} \]
    \[ \nabla\times\mathbf{v}\nabla\times\mathbf{A}=\mathbf{J}_{s}+\nabla\times\dfrac{1}{\mathbf{v}_{0}}\mathbf{v}\mathbf{M}_{0} \]

    The uniqueness of these equations is ensured by the tree gauging procedure, which sets the edge-flux degrees of freedom related to the spanning tree of the finite element mesh to zero.

    WelSim/docs

    Electromagnetic analysis

    This section discuss the electromagnetic theories that are applied in the WELSIM application.

    Electromagnetic field fundamentals

    The electromagnetic fields are governed by the well-known Maxwell's equations \(\eqref{eq:ch4_theory_maxwell1}\)-\(\eqref{eq:ch4_theory_maxwell4}\)12.

    \[ \begin{align} \label{eq:ch4_theory_maxwell1} \nabla\times\mathbf{H}=\mathbf{J}+\dfrac{\partial\mathbf{D}}{\partial t}=\mathbf{J}_{S}+\mathbf{J}_{e}+\mathbf{J}_{V}+\dfrac{\partial\mathbf{D}}{\partial t} \end{align} \]
    \[ \begin{align} \label{eq:ch4_theory_maxwell2} \nabla\times\mathbf{E}=-\dfrac{\partial\mathbf{B}}{\partial t} \end{align} \]
    \[ \begin{align} \label{eq:ch4_theory_maxwell3} \nabla\cdot\mathbf{B}=0 \end{align} \]
    \[ \begin{align} \label{eq:ch4_theory_maxwell4} \nabla\cdot\mathbf{D}=\rho \end{align} \]

    where \(\mathbf{H}\) is the magnetic field intensity vector, \(\mathbf{J}\) is total current density vector, \(\mathbf{J}_{s}\) is the applied source current density vector, \(\mathbf{J}_{e}\) is the induced eddy current density vector, and \(\mathbf{J}_{VS}\) is the velocity current density vector, \(\mathbf{D}\) is the electric flux density vector (this term is also called electric displacement), \(\mathbf{E}\) is the electric field intensity vector, \(\mathbf{B}\) is the magnetic flux density vector, and \(\rho\) is the electric charge density.

    The above field governing equations contian the constitutive relations:

    \[ \mathbf{D}=\epsilon\mathbf{E}+\mathbf{P} \]

    and

    \[ \mathbf{B}=\mu\mathbf{H} \]

    where \(\mathbf{P}\) is the polarization density, and \(\mathbf{M}\) is t he magnetization. In many materials the polarization density can be approximated as a scalar multiple of the electric field. \(\mu\) is the magnetic permeability matrix. For example, if the magnetic permeability is a function of temperature,

    \[ \mu=\mu_{0}\left[\begin{array}{ccc} \mu_{rx} & 0 & 0\\ 0 & \mu_{ry} & 0\\ 0 & 0 & \mu_{rz} \end{array}\right] \]

    For the permanent magnets, the constitutive relation of magnetic field becomes

    \[ \mathbf{B}=\mu\mathbf{H}+\mu_{0}\mathbf{M}_{0} \]

    where \(\mathbf{M}_{0}\) is the remanet intrinsic magnetization vector.

    Similarly, the consitutive relations for the related electric fields are:

    \[ \mathbf{J}=\sigma[\mathbf{E}+\mathbf{v}\times\mathbf{B}] \]
    \[ \sigma=\left[\begin{array}{ccc} \sigma_{xx} & 0 & 0\\ 0 & \sigma_{yy} & 0\\ 0 & 0 & \sigma_{zz} \end{array}\right] \]
    \[ \epsilon=\left[\begin{array}{ccc} \epsilon_{xx} & 0 & 0\\ 0 & \epsilon_{yy} & 0\\ 0 & 0 & \epsilon_{zz} \end{array}\right] \]

    where \(\sigma\) is the electrical conductivity matrix, \(\epsilon\) is the permittivity matrix, and \(v\) is the velocity vector.

    Electrostatics

    The WELSIM application introduces electric scalar potential to solve the electrostatic problems. When the time-derivetive of magnetic flux density is neglected from the full Maxwell's equations. The governing equations are reduced to

    \[ \begin{align} \label{eq:ch4_theory_govern_eqn_electrostatic} \nabla\times\mathbf{H}=\mathbf{J}+\dfrac{\partial\mathbf{D}}{\partial t} \end{align} \]
    \[ \nabla\times\mathbf{E}=\mathbf{0} \]
    \[ \nabla\cdot\mathbf{B}=0 \]
    \[ \nabla\cdot\mathbf{D}=\rho \]

    Since the electric field \(\mathbf{E}\) is irrotational and can be expressed as the function of electric scalar potential

    \[ \mathbf{E}=-\nabla \varphi \]

    where \(\varphi\) is the electric scalar potential and has units of Volts in the SI system. Inserting this definition into the Gauss's Law gives:

    \[ -\nabla \cdot \epsilon\nabla\varphi = \rho - \nabla \cdot \mathbf{P} \]

    which is Poisson's equation for the electric potential , where we have assumed a linear constitutive relation between \(\mathbf{D}\) and \(\mathbf{E}\) of the form \(\mathbf{D}=\epsilon\mathbf{E}+\mathbf{P}\).

    Boundary Conditions

    For an electric material interface, the continuious conditions for \(\mathbf{E}\), \(\mathbf{D}\), and \(\mathbf{J}\) are

    \[ E_{t1}-E_{t2}=0 \]
    \[ J_{1n}+\dfrac{\partial D_{1n}}{\partial t}=J_{2n}+\dfrac{\partial D_{2n}}{\partial t} \]
    \[ D_{1n}-D_{2n}=\rho_{s} \]

    where \(E_{t}\) is the tangential components of \(\mathbf{E}\), \(J_{n}\) is the normal components of \(\mathbf{J}\), \(D_{n}\) is the normal components of \(\mathbf{D}\), and \(\rho_{s}\) is the surface charge density.

    Since the solutons to the governing equation are non-unique, we must impose a Dirichlet boundary condition at least at one node in the domain to get the physical solution. The Dirichlet condition could be a fixed piecewise voltage value on certain nodes. In addition, the normal derivative boundary condition \(\hat{n}\cdot\mathbf{D}\) such as surface charge density can be imposed on the boundary.

    Matrix Forms

    The electric scalar potential algorithm is applied in the WELSIM application for solving electrostatic problems. The governing equations are reduced to the following:

    \[ -\nabla\cdot\left(\epsilon\nabla V\right)=\rho \]

    The matrix equation for an electrostatic analysis is derived from Equation \(\eqref{eq:ch4_theory_govern_eqn_electrostatic}\):

    \[ \left[K^{VS}\right]\left\{ V_{e}\right\} =\left\{ L_{e}\right\} \]

    where

    \[ \left[K^{VS}\right]=\intop_{V}\left(\nabla\left\{ N\right\} ^{T}\right)^{T}\epsilon\left(\nabla\left\{ N\right\} ^{T}\right)dV \]
    \[ \left\{ L_{e}\right\} =\left\{ L_{e}^{n}\right\} +\left\{ L_{e}^{c}\right\} +\left\{ L_{e}^{SC}\right\} \]
    \[ \left\{ L_{e}^{c}\right\} =\int_{V}\rho\left\{ N\right\} ^{T}dV \]
    \[ \left\{ L_{e}^{sc}\right\} =\int_{V}\rho_{s}\left\{ N\right\} ^{T}dV \]

    Vector magnetic potential

    The WELSIM application applies the vector magnetic potential method for the magentostatic analysis. Considering the neglected electric displacement currents, the full Maxwell's equations can be reduced to

    \[ \nabla\times\mathbf{H}=\mathbf{J} \]
    \[ \nabla\times\mathbf{E}=-\dfrac{\partial\mathbf{B}}{\partial t} \]
    \[ \nabla\cdot\mathbf{B}=0 \]

    A numerical solution can be achieved by introducing potentials to the governing equations. The proposed magnetic vector potential \(\mathbf{A}\) and electric scalar potential \(V\) have the following characteristics:

    \[ \mathbf{B}=\nabla\times\mathbf{A} \]
    \[ \mathbf{E}=-\dfrac{\partial\mathbf{A}}{\partial t}-\nabla V \]

    In addition, the Coulomb gauge condition is introduced to ensure the uniqueness of the vector potential, as shown in the following equations.

    \[ \nabla\times\mathbf{v}\nabla\times\mathbf{A}-\nabla v_{e}\nabla\cdot\mathbf{A}+\sigma\left\{ \dfrac{\partial\mathbf{A}}{\partial t}\right\} +\sigma\nabla V-\mathbf{v}\times\sigma\nabla\times\mathbf{A}=\mathbf{0} \]
    \[ \nabla\cdot\left(\sigma\left\{ \dfrac{\partial\mathbf{A}}{\partial t}\right\} -\sigma\nabla V+\mathbf{v}\times\sigma\nabla\times\mathbf{A}\right)=\mathbf{0} \]
    \[ \nabla\times\mathbf{v}\nabla\times\mathbf{A}-\nabla v_{e}\nabla\cdot\mathbf{A}=\mathbf{J}_s+\nabla\times\dfrac{1}{\mathbf{v}_{0}}\mathbf{v}\mathbf{M}_{0} \]

    where matrix invarient \(v_{e}\) is \(v_{e}=\frac{1}{3}\mathrm{tr}(v)=\frac{1}{3}(v_{11}+v_{22}+v_{33})\).

    Edge-element magnetic vector potential

    Due to the limitation of node-based vector magnetic potential algorithm2, WELSIM application uses the edge-based finite element for the magnetic vector potential algorithm.

    The governing equation for the edge finite element method is given below.

    \[ \nabla\times\mathbf{v}\nabla\times\mathbf{A}+\sigma\left\{ \dfrac{\partial\mathbf{A}}{\partial t}+\nabla V\right\} +\epsilon\left(\left\{ \dfrac{\partial^{2}\mathbf{A}}{\partial t^{2}}\right\} +\nabla\left\{ \dfrac{\partial V}{\partial t}\right\} \right)=\mathbf{0} \]
    \[ \nabla\cdot\left(\sigma\left(\left\{ \dfrac{\partial\mathbf{A}}{\partial t}\right\} +\nabla V\right)+\epsilon\left(\left\{ \dfrac{\partial^{2}\mathbf{A}}{\partial t^{2}}\right\} +\nabla\left\{ \dfrac{\partial V}{\partial t}\right\} \right)\right)=\mathbf{0} \]
    \[ \nabla\times\mathbf{v}\nabla\times\mathbf{A}=\mathbf{J}_{s}+\nabla\times\dfrac{1}{\mathbf{v}_{0}}\mathbf{v}\mathbf{M}_{0} \]

    The uniqueness of these equations is ensured by the tree gauging procedure, which sets the edge-flux degrees of freedom related to the spanning tree of the finite element mesh to zero.


    1. John D. Jackson, Classical Electrodynamics, 3rd edition, Wiley. 

    2. Jian-Ming Jin, The Finite Element Method in Electromagnetics, 2nd edition, Wiley-IEEE Press. 

    \ No newline at end of file +## Hall Effect -->

    1. John D. Jackson, Classical Electrodynamics, 3rd edition, Wiley. 

    2. Jian-Ming Jin, The Finite Element Method in Electromagnetics, 2nd edition, Wiley-IEEE Press. 

    \ No newline at end of file diff --git a/welsim/theory/elements/index.html b/welsim/theory/elements/index.html index c5286b4..476dcb3 100755 --- a/welsim/theory/elements/index.html +++ b/welsim/theory/elements/index.html @@ -1 +1 @@ - Element library - WelSim Documentation

    Element library

    The WELSIM application supports several types of finite elements. This section discuss the details of element that is used in the program.

    Element type Finite element type Description
    Plane element (Shell) Tri3 Three node triangular element
    Plane element (Shell) Tri6 Six node triangular element(quadratic)
    Solid element Tet4 Four node tetrahedral element
    Solid element Tet10 Ten node tetrahedral element(quadratic)

    The element groups shown in Table [tab:ch4_theory_elem_types] can be used for engineering analysis. The schematic views and the surface definition of those elements are given in Figures [fig:ch4_theory_elem_views], [fig:ch4_theory_elem_triangles], and [fig:ch4_theory_elem_tet].

    finite_element_analysis_welsim_theory_element_tet

    finite_element_analysis_welsim_theory_element_orientation1

    Surface No. Linear Quadratic
    1 1-2-3 [front] 1-6-2-4-3-5 [front]
    2 3-2-1 [back] 3-4-2-6-1-5 [back]

    finite_element_analysis_welsim_theory_element_orientation2

    Surface No. Linear Quadratic
    1 1-2-3 1-7-2-5-3-6
    2 1-2-4 1-7-2-9-4-8
    3 2-3-4 2-5-3-10-4-9
    4 3-1-4 3-6-1-10-4-8
    \ No newline at end of file + Element library - WelSim Documentation

    Element library

    The WELSIM application supports several types of finite elements. This section discuss the details of element that is used in the program.

    Element type Finite element type Description
    Plane element (Shell) Tri3 Three node triangular element
    Plane element (Shell) Tri6 Six node triangular element(quadratic)
    Solid element Tet4 Four node tetrahedral element
    Solid element Tet10 Ten node tetrahedral element(quadratic)

    The element groups shown in Table [tab:ch4_theory_elem_types] can be used for engineering analysis. The schematic views and the surface definition of those elements are given in Figures [fig:ch4_theory_elem_views], [fig:ch4_theory_elem_triangles], and [fig:ch4_theory_elem_tet].

    finite_element_analysis_welsim_theory_element_tet

    finite_element_analysis_welsim_theory_element_orientation1

    Surface No. Linear Quadratic
    1 1-2-3 [front] 1-6-2-4-3-5 [front]
    2 3-2-1 [back] 3-4-2-6-1-5 [back]

    finite_element_analysis_welsim_theory_element_orientation2

    Surface No. Linear Quadratic
    1 1-2-3 1-7-2-5-3-6
    2 1-2-4 1-7-2-9-4-8
    3 2-3-4 2-5-3-10-4-9
    4 3-1-4 3-6-1-10-4-8
    \ No newline at end of file diff --git a/welsim/theory/geometricnl/index.html b/welsim/theory/geometricnl/index.html index 6d079c4..f898db8 100755 --- a/welsim/theory/geometricnl/index.html +++ b/welsim/theory/geometricnl/index.html @@ -1 +1 @@ - Structures with geometric nonlinearity - WelSim Documentation

    Structures with geometric nonlinearity

    In the analysis of finite deformation problems, the principle equation of virtual work becomes a nonlinear equation regarding the displacement-strain relation. To solve the nonlinear equation, an iterative algorithm is generally applied. When implementing an incremental analysis for a finite deformation problem, whether to refer to the initial status as a reference layout, or refer to the starting point of the increments can be selected. The former is called the total Lagrange method, and the latter is called the updated Lagrange method. Both the total Lagrange and updated Lagrange methods are available in the program. This section discusses the various geometrically nonlinear options available, including the large strain.

    Decomposition of increments of virtual work equation

    Given the solid deformation at time t is known, the status at time t'=t+\triangle t is unknown. The equilibrium equation, dynamic boundary condition, and external boundary condition can be expressed as

    \[ \begin{align} \label{eq:ch5_nonlinear_gov1} \nabla_{t'\mathbf{x}}\cdot^{t'}\sigma+^{t'}\mathbf{b}=0\quad\text{in}V \end{align} \]
    \[ ^{t'}\sigma\cdot^{t'}\mathbf{n}=^{t'}\mathbf{t}\quad\mathrm{on}\thinspace^{t'}S \]
    \[ ^{t'}\mathbf{u}=^{t'}\bar{\mathbf{u}} \]

    where \(^{t'}\sigma\), \(^{t'}\mathbf{b}\), \(^{t'}\mathbf{n}\), \(^{t'}\mathbf{t}\), \(^{t'}\mathbf{u}\) are the Cauchy stress, body force, outward normal vector of the object's surface, fixed surface force, and fixed displacement in each time t'.

    Principle of virtual work

    The principle of virtual work to the equation \(\eqref{eq:ch5_nonlinear_gov1}\) is

    \[ \begin{align} \label{eq:ch5_nonlinear_gov2} \int_{^{t'}V}^{t'}\sigma:\delta^{t'}\mathbf{A}_{(L)}d^{t'}v=\int_{^{t'}S_{t}}^{t'}\mathbf{t}\cdot\delta\mathbf{u}d^{t'}s+\int_{V}^{t'}\mathbf{b}\cdot\delta\mathbf{u}d^{t'}v \end{align} \]

    where \(^{t'}\mathbf{A}_{(L)}\) is the linear portion of the Almansi strain tensor and can be calculated by

    \[ ^{t'}\mathbf{A}_{(L)}=\dfrac{1}{2}\{\dfrac{\partial^{t'}\mathbf{u}}{\partial^{t'}\mathbf{x}}+(\dfrac{\partial^{t'}\mathbf{u}}{\partial^{t'}\mathbf{x}})^{T}\} \]

    The equation \(\eqref{eq:ch5_nonlinear_gov2}\) needs to be solved referring to layout V at time 0, or layout \(^{t}v\) at time t. The following sections will introduce these two algorithms: total Lagrange method and updated Lagrange method, respectively.

    Formulation of total lagrange algorithm

    The principle equation of the virtual work at time t' assuming the initial layout of time 0 is the reference domain, which is shown below.

    \[ \begin{align} \label{eq:ch5_nonlinear_total_lag_gov1} \intop_{V}\thinspace_{0}^{t'}\mathbf{S}:\delta_{0}^{t'}\mathbf{E}dV=^{t'}\delta\mathbf{R} \end{align} \]
    \[ \begin{align} \label{eq:ch5_nonlinear_total_lag_gov2} ^{t'}\delta\mathbf{R}=\intop_{S_{t}}\thinspace_{0}^{t'}\mathbf{t}\cdot\delta dS+\intop_{V}\thinspace_{0}^{t'}\mathbf{b}\cdot\delta\mathbf{u}dV \end{align} \]

    where \(_{0}^{t'}\mathbf{S}\) and \(_{0}^{t'}\mathbf{E}\) are the 2nd order Piola-Kirchhoff stress tensor and the Green-Lagrange strain tensor at time t', respectively. The initial domain at time 0 is called the reference domain. The body force \(_{0}^{t'}\mathbf{b}\) and nominal surface force vector \(_{0}^{t'}\mathbf{t}\) are

    \[ _{0}^{t'}\mathbf{t}=\dfrac{d^{t'}s}{dS}\thinspace^{t'}\mathbf{t} \]
    \[ _{0}^{t'}\mathbf{b}=\dfrac{d^{t'}v}{dV}\thinspace^{t'}\mathbf{b} \]

    The Green-Lagrange strain tensor at time t is defined by

    \[ _{0}^{t}\mathbf{E}=\dfrac{1}{2}\{\dfrac{\partial^{t}\mathbf{u}}{\partial\mathbf{X}}+(\dfrac{\partial^{t}\mathbf{u}}{\partial\mathbf{X}})^{T}+(\dfrac{\partial^{t}\mathbf{u}}{\partial\mathbf{X}})^{T}\cdot\dfrac{\partial^{t}\mathbf{u}}{\partial\mathbf{X}}\} \]

    Then the displacement \(^{t'}\mathbf{u}\) and 2nd order Piola-Kirchhoff stress \(_{0}^{t'}\mathbf{S}\) at time t' are

    \[ \begin{align} \label{eq:ch5_nonlinear_total_lag_gov3} ^{t'}\mathbf{u}=^{t}\mathbf{u}+\triangle\mathbf{u} \end{align} \]
    \[ \begin{align} \label{eq:ch5_nonlinear_total_lag_gov4} _{0}^{t'}\mathbf{S}=_{0}^{t}\mathbf{S}+\triangle\mathbf{S} \end{align} \]

    Similarly, the incremental Green-Lagrange strain can be defined as

    \[ \begin{align} \label{eq:ch5_nonlinear_total_lag_gov5} ^{t'}\mathbf{E}=^{t}\mathbf{E}+\triangle\mathbf{E} \end{align} \]
    \[ \begin{align} \label{eq:ch5_nonlinear_total_lag_gov6} \triangle\mathbf{E}=\triangle\mathbf{E}_{L}+\triangle\mathbf{E}_{NL} \end{align} \]

    where

    \[ \triangle\mathbf{E}_{L}=\dfrac{1}{2}\{\dfrac{\partial\triangle\mathbf{u}}{\partial\mathbf{X}}+(\dfrac{\partial\triangle\mathbf{u}}{\partial\mathbf{X}})^{T}+(\dfrac{\partial\triangle\mathbf{u}}{\partial\mathbf{X}})^{T}\cdot\dfrac{\partial^{t}\mathbf{u}}{\partial\mathbf{X}}+(\dfrac{\partial^{t}\mathbf{u}}{\partial\mathbf{X}})^{T}\cdot\dfrac{\partial\triangle\mathbf{u}}{\partial\mathbf{X}}\} \]
    \[ \triangle\mathbf{E}_{NL}=\dfrac{1}{2}(\dfrac{\partial\triangle\mathbf{u}}{\partial\mathbf{X}})^{T}\cdot\dfrac{\partial\triangle\mathbf{u}}{\partial\mathbf{X}} \]

    Substituting equations \(\eqref{eq:ch5_nonlinear_total_lag_gov3}\), \(\eqref{eq:ch5_nonlinear_total_lag_gov4}\), \(\eqref{eq:ch5_nonlinear_total_lag_gov5}\), and \(\eqref{eq:ch5_nonlinear_total_lag_gov6}\) into governing equations \(\eqref{eq:ch5_nonlinear_total_lag_gov1}\) and \(\eqref{eq:ch5_nonlinear_total_lag_gov2}\), we have

    \[ \intop_{v}\triangle\mathbf{S}:(\delta\triangle\mathbf{E}_{L}+\delta\triangle\mathbf{E}_{NL})dV+\intop_{V}\thinspace_{0}^{t}\mathbf{S}\colon\delta\triangle\mathbf{E}_{NL}dV=^{t'}\delta\mathbf{R}-\intop_{V}\thinspace_{0}^{t}\mathbf{S}:\delta\triangle\mathbf{E}_{L}dV \]

    where \(\triangle\mathbf{S}\) is assumed to be

    \[ \triangle\mathbf{S}=_{0}^{t}\mathbf{C}\colon\triangle\mathbf{E}_{L} \]

    then we have

    \[ \begin{align} \label{eq:ch5_nonlinear_total_lag_gov7} \intop_{v}(\mathbf{C}\colon\triangle\mathbf{E}):\delta\triangle\mathbf{E}_{L}dV+\intop_{V}\thinspace_{0}^{t}\mathbf{S}\colon\delta\triangle\mathbf{E}_{NL}dV=^{t'}\delta\mathbf{R}-\intop_{V}\thinspace_{0}^{t}\mathbf{S}:\delta\triangle\mathbf{E}_{L}dV \end{align} \]

    Equation \(\eqref{eq:ch5_nonlinear_total_lag_gov7}\) can be discreted to finite element formulation

    \[ \delta\mathbf{U}^{T}(_{0}^{t}\mathbf{K}_{L}+{}_{0}^{t}\mathbf{K}_{NL})\triangle\mathbf{U}=\delta\mathbf{U}^{T}\thinspace_{0}^{t'}\mathbf{F}-\delta\mathbf{\mathbf{U}}^{T}\thinspace_{0}^{t'}\mathbf{Q} \]

    where \(_{0}^{t}\mathbf{K}_{L}\), \(_{0}^{t}\mathbf{K}_{NL}\), \(_{0}^{t'}\mathbf{F}\), \(_{0}^{t}\mathbf{Q}\) are the initial material stiffness matrix, initial geometric stiffness (stress) matrix, external force vector, and internal force vector, respectively. The recursive algorithm to calculate the deformation status at time t' from time t is given:

    Step 1: i = 0

    \[ \quad\quad_{0}^{t'}\mathbf{K}^{(0)}=_{0}^{t}\mathbf{K}_{L}+_{0}^{t}\mathbf{K}_{NL} \]
    \[ \quad\quad_{0}^{t'}\mathbf{Q}^{(0)}=_{0}^{t}\mathbf{Q} \]
    \[ \quad\quad^{t'}\mathbf{U}^{(0)}=^{t}\mathbf{U} \]

    Step 2:

    \[ \quad\quad_{0}^{t'}\mathbf{K}^{(i)}\triangle\mathbf{U}^{(i)}=_{0}^{t'}\mathbf{F}-_{0}^{t'}\mathbf{Q}^{(i-1)} \]

    Step 3:

    \[ \quad\quad^{t'}\mathbf{U}^{(i)}=^{t'}\mathbf{U}^{(i-1)}+\triangle\mathbf{U}^{(i)} \]

    Formulation of updated lagrange algorithm

    In addition to the total Lagrange algorithm, the updated Lagrange algorithm is also widely applied in the nonlinear structural model computation. The principle virtual work equation at time t' uses the current domain at time t as reference domain.

    \[ \begin{align} \label{eq:ch5_nonlinear_updated_lag_gov1} \intop_{V}\thinspace_{t}^{t'}\mathbf{S}:\delta_{t}^{t'}\mathbf{E}dV=^{t'}\delta\mathbf{R} \end{align} \]
    \[ \begin{align} \label{eq:ch5_nonlinear_updated_lag_gov2} ^{t'}\delta\mathbf{R}=\intop_{S_{t}}\thinspace_{t}^{t'}\mathbf{t}\cdot\delta dS+\intop_{V}\thinspace_{t}^{t'}\mathbf{b}\cdot\delta\mathbf{u}dV \end{align} \]

    where

    \[ _{t}^{t'}\mathbf{t}=\dfrac{d^{t'}s}{d^{t}s}\thinspace^{t'}\mathbf{t} \]
    \[ _{t}^{t'}\mathbf{b}=\dfrac{d^{t'}v}{d^{t}v}\thinspace^{t'}\mathbf{b} \]

    The tensors \(_{t}^{t'}\mathbf{S}\), \(_{t}^{t'}\mathbf{E}\) and vectors \(_{t}^{t'}\mathbf{t}\), \(_{t}^{t'}\mathbf{b}\) are using the current time domain t as the reference domain. Therefore, the Green-Lagrange strain does not contain the initial displacement (the displacement at the time t) \(^{t}\mathbf{u}\);

    \[ \begin{align} \label{eq:ch5_nonlinear_updated_lag_gov3} _{t}^{t'}\mathbf{E}=\triangle_{t}\mathbf{E}_{L}+\triangle_{t}\mathbf{E}_{NL} \end{align} \]

    where

    \[ \begin{align} \label{eq:ch5_nonlinear_updated_lag_gov4} \triangle_{t}\mathbf{E}_{L}=\dfrac{1}{2}\{\dfrac{\partial\triangle\mathbf{u}}{\partial^{t}x}+(\dfrac{\partial\triangle\mathbf{u}}{\partial^{t}x})^{T}\} \end{align} \]
    \[ \begin{align} \label{eq:ch5_nonlinear_updated_lag_gov5} \triangle_{t}\mathbf{E}_{NL}=\dfrac{1}{2}(\dfrac{\partial\triangle\mathbf{u}}{\partial^{t}x})^{T}\cdot\dfrac{\partial\triangle\mathbf{u}}{\partial^{t}x} \end{align} \]

    Similarly,

    \[ _{t}^{t'}\mathbf{S}=_{t}^{t}\mathbf{S}+\triangle_{t}\mathbf{S} \]

    Substituting equations \(\eqref{eq:ch5_nonlinear_updated_lag_gov3}\) and \(\eqref{eq:ch5_nonlinear_updated_lag_gov2}\) into governing equations \(\eqref{eq:ch5_nonlinear_updated_lag_gov1}\), we have

    \[ \intop_{^{t}v}\triangle_{t}\mathbf{S}:(\delta\triangle_{t}\mathbf{E}_{L}+\delta\triangle_{t}\mathbf{E}_{NL})d^{t}v+\intop_{V}\thinspace_{t}^{t}\mathbf{S}\colon\delta\triangle_{t}\mathbf{E}_{NL}d^{t}v=^{t'}\delta\mathbf{R}-\intop_{^{t}v}\thinspace_{t}^{t}\mathbf{S}:\delta\triangle_{t}\mathbf{E}_{L}d^{t}v \]

    where \(\triangle_{t}\mathbf{S}\) is assumed to be

    \[ \triangle_{t}\mathbf{S}=_{t}^{t}\mathbf{C}\colon\triangle_{t}\mathbf{E}_{L} \]

    then we have

    \[ \begin{align} \label{eq:ch5_nonlinear_updated_lag_gov7} \intop_{v}(\mathbf{C}\colon\triangle t\mathbf{E}_{L}):\delta\triangle_{t}\mathbf{E}_{L}dV+\intop_{V}\thinspace_{t}^{t}\mathbf{S}\colon\delta\triangle_{t}\mathbf{E}_{NL}dV=^{t'}\delta\mathbf{R}-\intop_{V}\thinspace_{t}^{t}\mathbf{S}:\delta\triangle_{t}\mathbf{E}_{L}dV \end{align} \]

    Equation \(\eqref{eq:ch5_nonlinear_updated_lag_gov7}\) can be discreted to finite element formulation

    \[ \delta\mathbf{U}^{T}(_{t}^{t}\mathbf{K}_{L}+{}_{t}^{t}\mathbf{K}_{NL})\triangle\mathbf{U}=\delta\mathbf{U}^{T}\thinspace_{t}^{t'}\mathbf{F}-\delta\mathbf{\mathbf{U}}^{T}\thinspace_{t}^{t'}\mathbf{Q} \]

    where \(_{t}^{t}\mathbf{K}_{L}\), \(_{t}^{t}\mathbf{K}_{NL}\), \(_{t}^{t'}\mathbf{F}\), \(_{t}^{t}\mathbf{Q}\) are the initial material stiffness matrix, initial geometric stiffness (stress) matrix, external force vector, and internal force vector, respectively. The recursive algorithm to calculate the deformation status at time t' from time t is given:

    Step 1: i = 0

    \[ \quad\quad_{t}^{t'}\mathbf{K}^{(i)}=_{t}^{t}\mathbf{K}_{L}+_{t}^{t}\mathbf{K}_{NL} \]
    \[ \quad\quad_{t}^{t'}\mathbf{Q}^{(i)}=_{t}^{t}\mathbf{Q} \]
    \[ \quad\quad^{t'}\mathbf{U}^{(i)}=^{t}\mathbf{U} \]

    Step 2:

    \[ \quad\quad_{0}^{t'}\mathbf{K}^{(i)}\triangle\mathbf{U}^{(i)}=_{0}^{t'}\mathbf{F}-_{0}^{t'}\mathbf{Q}^{(i-1)} \]

    Step 3:

    \[ \quad\quad^{t'}\mathbf{U}^{(i)}=^{t'}\mathbf{U}^{(i-1)}+\triangle\mathbf{U}^{(i)} \]
    \ No newline at end of file + Structures with geometric nonlinearity - WelSim Documentation

    Structures with geometric nonlinearity

    In the analysis of finite deformation problems, the principle equation of virtual work becomes a nonlinear equation regarding the displacement-strain relation. To solve the nonlinear equation, an iterative algorithm is generally applied. When implementing an incremental analysis for a finite deformation problem, whether to refer to the initial status as a reference layout, or refer to the starting point of the increments can be selected. The former is called the total Lagrange method, and the latter is called the updated Lagrange method. Both the total Lagrange and updated Lagrange methods are available in the program. This section discusses the various geometrically nonlinear options available, including the large strain.

    Decomposition of increments of virtual work equation

    Given the solid deformation at time t is known, the status at time t'=t+\triangle t is unknown. The equilibrium equation, dynamic boundary condition, and external boundary condition can be expressed as

    \[ \begin{align} \label{eq:ch5_nonlinear_gov1} \nabla_{t'\mathbf{x}}\cdot^{t'}\sigma+^{t'}\mathbf{b}=0\quad\text{in}V \end{align} \]
    \[ ^{t'}\sigma\cdot^{t'}\mathbf{n}=^{t'}\mathbf{t}\quad\mathrm{on}\thinspace^{t'}S \]
    \[ ^{t'}\mathbf{u}=^{t'}\bar{\mathbf{u}} \]

    where \(^{t'}\sigma\), \(^{t'}\mathbf{b}\), \(^{t'}\mathbf{n}\), \(^{t'}\mathbf{t}\), \(^{t'}\mathbf{u}\) are the Cauchy stress, body force, outward normal vector of the object's surface, fixed surface force, and fixed displacement in each time t'.

    Principle of virtual work

    The principle of virtual work to the equation \(\eqref{eq:ch5_nonlinear_gov1}\) is

    \[ \begin{align} \label{eq:ch5_nonlinear_gov2} \int_{^{t'}V}^{t'}\sigma:\delta^{t'}\mathbf{A}_{(L)}d^{t'}v=\int_{^{t'}S_{t}}^{t'}\mathbf{t}\cdot\delta\mathbf{u}d^{t'}s+\int_{V}^{t'}\mathbf{b}\cdot\delta\mathbf{u}d^{t'}v \end{align} \]

    where \(^{t'}\mathbf{A}_{(L)}\) is the linear portion of the Almansi strain tensor and can be calculated by

    \[ ^{t'}\mathbf{A}_{(L)}=\dfrac{1}{2}\{\dfrac{\partial^{t'}\mathbf{u}}{\partial^{t'}\mathbf{x}}+(\dfrac{\partial^{t'}\mathbf{u}}{\partial^{t'}\mathbf{x}})^{T}\} \]

    The equation \(\eqref{eq:ch5_nonlinear_gov2}\) needs to be solved referring to layout V at time 0, or layout \(^{t}v\) at time t. The following sections will introduce these two algorithms: total Lagrange method and updated Lagrange method, respectively.

    Formulation of total lagrange algorithm

    The principle equation of the virtual work at time t' assuming the initial layout of time 0 is the reference domain, which is shown below.

    \[ \begin{align} \label{eq:ch5_nonlinear_total_lag_gov1} \intop_{V}\thinspace_{0}^{t'}\mathbf{S}:\delta_{0}^{t'}\mathbf{E}dV=^{t'}\delta\mathbf{R} \end{align} \]
    \[ \begin{align} \label{eq:ch5_nonlinear_total_lag_gov2} ^{t'}\delta\mathbf{R}=\intop_{S_{t}}\thinspace_{0}^{t'}\mathbf{t}\cdot\delta dS+\intop_{V}\thinspace_{0}^{t'}\mathbf{b}\cdot\delta\mathbf{u}dV \end{align} \]

    where \(_{0}^{t'}\mathbf{S}\) and \(_{0}^{t'}\mathbf{E}\) are the 2nd order Piola-Kirchhoff stress tensor and the Green-Lagrange strain tensor at time t', respectively. The initial domain at time 0 is called the reference domain. The body force \(_{0}^{t'}\mathbf{b}\) and nominal surface force vector \(_{0}^{t'}\mathbf{t}\) are

    \[ _{0}^{t'}\mathbf{t}=\dfrac{d^{t'}s}{dS}\thinspace^{t'}\mathbf{t} \]
    \[ _{0}^{t'}\mathbf{b}=\dfrac{d^{t'}v}{dV}\thinspace^{t'}\mathbf{b} \]

    The Green-Lagrange strain tensor at time t is defined by

    \[ _{0}^{t}\mathbf{E}=\dfrac{1}{2}\{\dfrac{\partial^{t}\mathbf{u}}{\partial\mathbf{X}}+(\dfrac{\partial^{t}\mathbf{u}}{\partial\mathbf{X}})^{T}+(\dfrac{\partial^{t}\mathbf{u}}{\partial\mathbf{X}})^{T}\cdot\dfrac{\partial^{t}\mathbf{u}}{\partial\mathbf{X}}\} \]

    Then the displacement \(^{t'}\mathbf{u}\) and 2nd order Piola-Kirchhoff stress \(_{0}^{t'}\mathbf{S}\) at time t' are

    \[ \begin{align} \label{eq:ch5_nonlinear_total_lag_gov3} ^{t'}\mathbf{u}=^{t}\mathbf{u}+\triangle\mathbf{u} \end{align} \]
    \[ \begin{align} \label{eq:ch5_nonlinear_total_lag_gov4} _{0}^{t'}\mathbf{S}=_{0}^{t}\mathbf{S}+\triangle\mathbf{S} \end{align} \]

    Similarly, the incremental Green-Lagrange strain can be defined as

    \[ \begin{align} \label{eq:ch5_nonlinear_total_lag_gov5} ^{t'}\mathbf{E}=^{t}\mathbf{E}+\triangle\mathbf{E} \end{align} \]
    \[ \begin{align} \label{eq:ch5_nonlinear_total_lag_gov6} \triangle\mathbf{E}=\triangle\mathbf{E}_{L}+\triangle\mathbf{E}_{NL} \end{align} \]

    where

    \[ \triangle\mathbf{E}_{L}=\dfrac{1}{2}\{\dfrac{\partial\triangle\mathbf{u}}{\partial\mathbf{X}}+(\dfrac{\partial\triangle\mathbf{u}}{\partial\mathbf{X}})^{T}+(\dfrac{\partial\triangle\mathbf{u}}{\partial\mathbf{X}})^{T}\cdot\dfrac{\partial^{t}\mathbf{u}}{\partial\mathbf{X}}+(\dfrac{\partial^{t}\mathbf{u}}{\partial\mathbf{X}})^{T}\cdot\dfrac{\partial\triangle\mathbf{u}}{\partial\mathbf{X}}\} \]
    \[ \triangle\mathbf{E}_{NL}=\dfrac{1}{2}(\dfrac{\partial\triangle\mathbf{u}}{\partial\mathbf{X}})^{T}\cdot\dfrac{\partial\triangle\mathbf{u}}{\partial\mathbf{X}} \]

    Substituting equations \(\eqref{eq:ch5_nonlinear_total_lag_gov3}\), \(\eqref{eq:ch5_nonlinear_total_lag_gov4}\), \(\eqref{eq:ch5_nonlinear_total_lag_gov5}\), and \(\eqref{eq:ch5_nonlinear_total_lag_gov6}\) into governing equations \(\eqref{eq:ch5_nonlinear_total_lag_gov1}\) and \(\eqref{eq:ch5_nonlinear_total_lag_gov2}\), we have

    \[ \intop_{v}\triangle\mathbf{S}:(\delta\triangle\mathbf{E}_{L}+\delta\triangle\mathbf{E}_{NL})dV+\intop_{V}\thinspace_{0}^{t}\mathbf{S}\colon\delta\triangle\mathbf{E}_{NL}dV=^{t'}\delta\mathbf{R}-\intop_{V}\thinspace_{0}^{t}\mathbf{S}:\delta\triangle\mathbf{E}_{L}dV \]

    where \(\triangle\mathbf{S}\) is assumed to be

    \[ \triangle\mathbf{S}=_{0}^{t}\mathbf{C}\colon\triangle\mathbf{E}_{L} \]

    then we have

    \[ \begin{align} \label{eq:ch5_nonlinear_total_lag_gov7} \intop_{v}(\mathbf{C}\colon\triangle\mathbf{E}):\delta\triangle\mathbf{E}_{L}dV+\intop_{V}\thinspace_{0}^{t}\mathbf{S}\colon\delta\triangle\mathbf{E}_{NL}dV=^{t'}\delta\mathbf{R}-\intop_{V}\thinspace_{0}^{t}\mathbf{S}:\delta\triangle\mathbf{E}_{L}dV \end{align} \]

    Equation \(\eqref{eq:ch5_nonlinear_total_lag_gov7}\) can be discreted to finite element formulation

    \[ \delta\mathbf{U}^{T}(_{0}^{t}\mathbf{K}_{L}+{}_{0}^{t}\mathbf{K}_{NL})\triangle\mathbf{U}=\delta\mathbf{U}^{T}\thinspace_{0}^{t'}\mathbf{F}-\delta\mathbf{\mathbf{U}}^{T}\thinspace_{0}^{t'}\mathbf{Q} \]

    where \(_{0}^{t}\mathbf{K}_{L}\), \(_{0}^{t}\mathbf{K}_{NL}\), \(_{0}^{t'}\mathbf{F}\), \(_{0}^{t}\mathbf{Q}\) are the initial material stiffness matrix, initial geometric stiffness (stress) matrix, external force vector, and internal force vector, respectively. The recursive algorithm to calculate the deformation status at time t' from time t is given:

    Step 1: i = 0

    \[ \quad\quad_{0}^{t'}\mathbf{K}^{(0)}=_{0}^{t}\mathbf{K}_{L}+_{0}^{t}\mathbf{K}_{NL} \]
    \[ \quad\quad_{0}^{t'}\mathbf{Q}^{(0)}=_{0}^{t}\mathbf{Q} \]
    \[ \quad\quad^{t'}\mathbf{U}^{(0)}=^{t}\mathbf{U} \]

    Step 2:

    \[ \quad\quad_{0}^{t'}\mathbf{K}^{(i)}\triangle\mathbf{U}^{(i)}=_{0}^{t'}\mathbf{F}-_{0}^{t'}\mathbf{Q}^{(i-1)} \]

    Step 3:

    \[ \quad\quad^{t'}\mathbf{U}^{(i)}=^{t'}\mathbf{U}^{(i-1)}+\triangle\mathbf{U}^{(i)} \]

    Formulation of updated lagrange algorithm

    In addition to the total Lagrange algorithm, the updated Lagrange algorithm is also widely applied in the nonlinear structural model computation. The principle virtual work equation at time t' uses the current domain at time t as reference domain.

    \[ \begin{align} \label{eq:ch5_nonlinear_updated_lag_gov1} \intop_{V}\thinspace_{t}^{t'}\mathbf{S}:\delta_{t}^{t'}\mathbf{E}dV=^{t'}\delta\mathbf{R} \end{align} \]
    \[ \begin{align} \label{eq:ch5_nonlinear_updated_lag_gov2} ^{t'}\delta\mathbf{R}=\intop_{S_{t}}\thinspace_{t}^{t'}\mathbf{t}\cdot\delta dS+\intop_{V}\thinspace_{t}^{t'}\mathbf{b}\cdot\delta\mathbf{u}dV \end{align} \]

    where

    \[ _{t}^{t'}\mathbf{t}=\dfrac{d^{t'}s}{d^{t}s}\thinspace^{t'}\mathbf{t} \]
    \[ _{t}^{t'}\mathbf{b}=\dfrac{d^{t'}v}{d^{t}v}\thinspace^{t'}\mathbf{b} \]

    The tensors \(_{t}^{t'}\mathbf{S}\), \(_{t}^{t'}\mathbf{E}\) and vectors \(_{t}^{t'}\mathbf{t}\), \(_{t}^{t'}\mathbf{b}\) are using the current time domain t as the reference domain. Therefore, the Green-Lagrange strain does not contain the initial displacement (the displacement at the time t) \(^{t}\mathbf{u}\);

    \[ \begin{align} \label{eq:ch5_nonlinear_updated_lag_gov3} _{t}^{t'}\mathbf{E}=\triangle_{t}\mathbf{E}_{L}+\triangle_{t}\mathbf{E}_{NL} \end{align} \]

    where

    \[ \begin{align} \label{eq:ch5_nonlinear_updated_lag_gov4} \triangle_{t}\mathbf{E}_{L}=\dfrac{1}{2}\{\dfrac{\partial\triangle\mathbf{u}}{\partial^{t}x}+(\dfrac{\partial\triangle\mathbf{u}}{\partial^{t}x})^{T}\} \end{align} \]
    \[ \begin{align} \label{eq:ch5_nonlinear_updated_lag_gov5} \triangle_{t}\mathbf{E}_{NL}=\dfrac{1}{2}(\dfrac{\partial\triangle\mathbf{u}}{\partial^{t}x})^{T}\cdot\dfrac{\partial\triangle\mathbf{u}}{\partial^{t}x} \end{align} \]

    Similarly,

    \[ _{t}^{t'}\mathbf{S}=_{t}^{t}\mathbf{S}+\triangle_{t}\mathbf{S} \]

    Substituting equations \(\eqref{eq:ch5_nonlinear_updated_lag_gov3}\) and \(\eqref{eq:ch5_nonlinear_updated_lag_gov2}\) into governing equations \(\eqref{eq:ch5_nonlinear_updated_lag_gov1}\), we have

    \[ \intop_{^{t}v}\triangle_{t}\mathbf{S}:(\delta\triangle_{t}\mathbf{E}_{L}+\delta\triangle_{t}\mathbf{E}_{NL})d^{t}v+\intop_{V}\thinspace_{t}^{t}\mathbf{S}\colon\delta\triangle_{t}\mathbf{E}_{NL}d^{t}v=^{t'}\delta\mathbf{R}-\intop_{^{t}v}\thinspace_{t}^{t}\mathbf{S}:\delta\triangle_{t}\mathbf{E}_{L}d^{t}v \]

    where \(\triangle_{t}\mathbf{S}\) is assumed to be

    \[ \triangle_{t}\mathbf{S}=_{t}^{t}\mathbf{C}\colon\triangle_{t}\mathbf{E}_{L} \]

    then we have

    \[ \begin{align} \label{eq:ch5_nonlinear_updated_lag_gov7} \intop_{v}(\mathbf{C}\colon\triangle t\mathbf{E}_{L}):\delta\triangle_{t}\mathbf{E}_{L}dV+\intop_{V}\thinspace_{t}^{t}\mathbf{S}\colon\delta\triangle_{t}\mathbf{E}_{NL}dV=^{t'}\delta\mathbf{R}-\intop_{V}\thinspace_{t}^{t}\mathbf{S}:\delta\triangle_{t}\mathbf{E}_{L}dV \end{align} \]

    Equation \(\eqref{eq:ch5_nonlinear_updated_lag_gov7}\) can be discreted to finite element formulation

    \[ \delta\mathbf{U}^{T}(_{t}^{t}\mathbf{K}_{L}+{}_{t}^{t}\mathbf{K}_{NL})\triangle\mathbf{U}=\delta\mathbf{U}^{T}\thinspace_{t}^{t'}\mathbf{F}-\delta\mathbf{\mathbf{U}}^{T}\thinspace_{t}^{t'}\mathbf{Q} \]

    where \(_{t}^{t}\mathbf{K}_{L}\), \(_{t}^{t}\mathbf{K}_{NL}\), \(_{t}^{t'}\mathbf{F}\), \(_{t}^{t}\mathbf{Q}\) are the initial material stiffness matrix, initial geometric stiffness (stress) matrix, external force vector, and internal force vector, respectively. The recursive algorithm to calculate the deformation status at time t' from time t is given:

    Step 1: i = 0

    \[ \quad\quad_{t}^{t'}\mathbf{K}^{(i)}=_{t}^{t}\mathbf{K}_{L}+_{t}^{t}\mathbf{K}_{NL} \]
    \[ \quad\quad_{t}^{t'}\mathbf{Q}^{(i)}=_{t}^{t}\mathbf{Q} \]
    \[ \quad\quad^{t'}\mathbf{U}^{(i)}=^{t}\mathbf{U} \]

    Step 2:

    \[ \quad\quad_{0}^{t'}\mathbf{K}^{(i)}\triangle\mathbf{U}^{(i)}=_{0}^{t'}\mathbf{F}-_{0}^{t'}\mathbf{Q}^{(i-1)} \]

    Step 3:

    \[ \quad\quad^{t'}\mathbf{U}^{(i)}=^{t'}\mathbf{U}^{(i-1)}+\triangle\mathbf{U}^{(i)} \]
    \ No newline at end of file diff --git a/welsim/theory/introduction/index.html b/welsim/theory/introduction/index.html index 7238d58..53e9e7a 100755 --- a/welsim/theory/introduction/index.html +++ b/welsim/theory/introduction/index.html @@ -1 +1 @@ - Introduction - WelSim Documentation

    Introduction

    This theory reference presents theoretical descriptions of all algorithms, as well as many procedures and elements used in these products. It is useful to any of our users who need to understand how the software program calculates the output based on the inputs.

    \ No newline at end of file + Introduction - WelSim Documentation

    Introduction

    This theory reference presents theoretical descriptions of all algorithms, as well as many procedures and elements used in these products. It is useful to any of our users who need to understand how the software program calculates the output based on the inputs.

    \ No newline at end of file diff --git a/welsim/theory/materialnl/index.html b/welsim/theory/materialnl/index.html index 6258ecd..8a85b74 100755 --- a/welsim/theory/materialnl/index.html +++ b/welsim/theory/materialnl/index.html @@ -1 +1 @@ - Structures with material nonlinearities - WelSim Documentation

    Structures with material nonlinearities

    Material nonlinearities occur because of the nonlinear relationship between stress and strain; that is, the stress is a nonlinear function of the strain. The relationship is also path-dependent (except for the case of nonlinear elasticity and hyperelasticity), so that the stress depends on the strain history as well as the strain itself.

    The program can account for many material nonlinearities, as follows:

    1. Rate-independent plasticity is characterized by the irreversible instantaneous straining that occurs in a material.

    2. Rate-dependent plasticity allows the plastic-strains to develop over a time interval. It is also termed viscoplasticity.

    3. Creep is also an irreversible straining that occurs in a material and is rate-dependent so that the strains develop over time. The time frame for creep is usually much larger than that for rate-dependent plasticity.

    4. Nonlinear elasticity allows a nonlinear stress-strain relationship to be specified. All straining is reversible.

    5. Hyperelasticity is defined by a strain-energy density potential that characterizes elastomeric and foam-type materials. All straining is reversible.

    6. Viscoelasticity is a rate-dependent material characterization that includes a viscous contribution to the elastic straining.

    When the material applicable for analysis is an elastoplastic material, the updated Lagrange method is applied, and the total Lagrange method is applied for hyperelastic material. Moreover, the Newton-Raphson method is applied to the repetitive analysis method.

    Strain definitions

    For the case of nonlinear materials, the definition of elastic strain given in Equation \(\eqref{eq:ch4_theory_stress_strain_relation}\) expands to

    \[ \begin{align} \label{eq:ch4_guide_strain_full} \{\epsilon\}=\{\epsilon^{el}\}+\{\epsilon^{th}\}+\{e^{pl}\}+\{\epsilon^{cr}\}+\{\epsilon^{sw}\} \end{align} \]

    where \(\epsilon\) is the total strain vector, \(\epsilon^{el}\) is elastic strain vector, \(\epsilon^{th}\) is the thermal strain vector, \(\epsilon^{pl}\) is the plastic strain vector, \(\epsilon^{cr}\) is the creep strain vector, and \(\epsilon^{sw}\) is the swelling strain vector.

    Hyperelasticity

    The elastic potential energy in hyperelastic material can be obtained from the initial state with no stress activation. Therefore, we have the main invariable terms of the right Cauchy-Green deformation tensor C(\(I_{1}\), \(I_{2}\), \(I_{3}\)), or the main invariable of the deformation tensor excluding the volume changes (\(\bar{I}_{1}\), \(\bar{I}_{2}\), \(\bar{I}_{3}\)). The potential can be expressed as \(\mathbf{W}=\mathbf{W}(I_{1},I_{2},I_{3})\), or \(\mathbf{W}=\mathbf{W}(\bar{I}_{1},\bar{I}_{2},\bar{I}_{3})\).

    The nonlinear constitutive relation of hyperelastic material is defined by the relation between the second order Piola-Kirchhoff stress and the Green-Lagrange strain, the total Lagrange method is more efficient in solving such models.

    When the elastic potential energy \(W\) of the hyperelasticity is known, the second Piola-Kirchhoff stress and strain-stress relationship can be calculated as follows

    \[ S=2\dfrac{\partial W}{\partial C} \]
    \[ C=4\dfrac{\partial^{2}W}{\partial C\partial C} \]

    Arruda-Boyce model

    The form of the strain-energy potential for Arruda-Boyce model is

    \[ \begin{array}{ccc} W & = & [\dfrac{1}{2}(\bar{I}_{1}-3)+\dfrac{1}{20\lambda_{m}^{2}}(\bar{I_{1}^{2}}-9)+\dfrac{11}{1050\lambda_{m}^{4}}(\bar{I_{1}^{3}}-27)\\ & + & \dfrac{19}{7000\lambda_{m}^{6}}(\bar{I_{1}^{4}}-81)+\dfrac{519}{673750\lambda_{m}^{8}}(\bar{I_{1}^{5}}-243)]+\dfrac{1}{D_1}(\dfrac{J^{2}-1}{2}-\mathrm{ln}J) \end{array} \]

    where \(\lambda_{m}\) is limiting network stretch, and \(D_1\) is the material incompressibility parameter.

    The initial shear modulus is

    \[ \mu=\dfrac{\mu_{0}}{1+\dfrac{3}{5\lambda_{m}^{2}}+\dfrac{99}{175\lambda_{m}^{4}}+\dfrac{513}{875\lambda_{m}^{6}}+\dfrac{42039}{67375\lambda_{m}^{8}}} \]

    The initial bulk modulus is

    \[ K=\dfrac{2}{D_1} \]

    As the parameter \(\lambda_L\) goes to infinity, the model is equivalent to neo-Hookean form.

    Blatz-Ko foam model

    The form of strain-energy potential for the Blatz-Ko model is:

    \[ W=\frac{\mu}{2}\left(\frac{I_{2}}{I_{3}}+2\sqrt{I_{3}}-5\right) \]

    where \(\mu\) is initla shear modulus of material. The initial bulk modulus is defined as :

    \[ K = \frac{5}{3}\mu \]

    Extended tube model

    The elastic strain-energy potential for the extended tube model is:

    \[ \begin{array}{ccc} W & = & \frac{G_{c}}{2}\left[\frac{\left(1-\delta^{2}\right)\left(\bar{I}_{1}-3\right)}{1-\delta^{2}\left(\bar{I}_{1}-3\right)}+\mathrm{ln}\left(1-\delta^{2}\left(\bar{I}_{1}-3\right)\right)\right]\\ & + & \frac{2G_{e}}{\beta^{2}}\sum_{i=1}^{3}\left(\bar{\lambda}_{i}^{-\beta}-1\right)+\frac{1}{D_1}\left(J-1\right)^{2} \end{array} \]

    where the initial shear modulus is \(G\)=\(G_c\) + \(G_e\), and \(G_e\) is constraint contribution to modulus, \(G_c\) is crosslinked contribution to modulus, \(\delta\) is extensibility parameter, \(\beta\) is empirical parameter (0\(\leq \beta \leq\)1), and \(D_1\) is material incompressibility parameter.

    Extended tube model is equivalent ot a two-term Ogden model with the following parameters:

    \[ \begin{array}{cccc} \alpha_1 = 2 &, & \alpha_2=-\beta\\ \mu_1=G_c &, & \mu_2=-\dfrac{2}{\beta}G_e, & \delta=0 \end{array} \]

    Gent model

    The form of the strian-energy potential for the Gent model is:

    \[ W=-\frac{\mu J_{m}}{2}\mathrm{ln}\left(1-\frac{\bar{I}_{1}-3}{J_{m}}\right)+\frac{1}{D_1}\left(\frac{J^{2}-1}{2}-\mathrm{ln}J\right) \]

    where \(\mu\) is initial shear modulus of material, \(J_m\) is limiting value of \(\bar{I}_1-3\), \(D_1\) is material incompressibility parameter.

    The initial bulk modulus is

    \[ K=\dfrac{2}{D_1} \]

    When the parameter \(J_m\) goes to infinity, the Gent model is equivalent to neo-Hookean form.

    Mooney-Rivlin model

    This model includes two-, three-, five-, and nine-terma Mooney-Rivlin models. The form of the strain-energy potential for a two-parameter Mooney-Rivlin model is

    \[ W=C_{10}\left(\bar{I}_{1}-3\right)+C_{01}\left(\bar{I}_{2}-3\right)+\frac{1}{D_1}\left(J-1\right)^{2} \]

    where \(C_{10}\), \(C_{01}\), and \(D_{1}\) are the material constants.

    The form of strain-energy potential for a three-parameter Mooney-Rivlin model is

    \[ W=C_{10}\left(\bar{I}_{1}-3\right)+C_{01}\left(\bar{I}_{2}-3\right)+C_{11}\left(\bar{I}_{1}-3\right)\left(\bar{I}_{2}-3\right)+\frac{1}{D_1}\left(J-1\right)^{2} \]

    where \(C_{10}\), \(C_{01}\), \(C_{11}\), and \(D_1\) are material ocnstants.

    The form of strain-energy potential for a five-parameter Mooney-Rivlin model is

    \[ \begin{array}{ccc} W & = & C_{10}\left(\bar{I}_{1}-3\right)+C_{01}\left(\bar{I}_{2}-3\right)+C_{20}\left(\bar{I}_{1}-3\right)^{2}\\ & + & C_{11}\left(\bar{I}_{1}-3\right)\left(\bar{I}_{2}-3\right)+C_{02}\left(\bar{I}_{2}-3\right)^{2}+\frac{1}{D_1}\left(J-1\right)^{2} \end{array} \]

    where \(C_{10}\), \(C_{01}\), \(C_{20}\), \(C_{11}\), \(C_{02}\), and \(D_1\) are material ocnstants.

    The form of strain-energy potential for a nine-parameter Mooney-Rivlin model is

    \[ \begin{array}{ccc} W & = & C_{10}\left(\bar{I}_{1}-3\right)+C_{01}\left(\bar{I}_{2}-3\right)+C_{20}\left(\bar{I}_{1}-3\right)^{2}\\ & + & C_{11}\left(\bar{I}_{1}-3\right)\left(\bar{I}_{2}-3\right)+C_{02}\left(\bar{I}_{2}-3\right)^{2}+C_{30}\left(\bar{I}_{1}-3\right)^{3}\\ & + & C_{21}\left(\bar{I}_{1}-3\right)^{2}\left(\bar{I}_{2}-3\right)+C_{12}\left(\bar{I}_{1}-3\right)\left(\bar{I}_{2}-3\right)^{2}+C_{03}\left(\bar{I}_{2}-3\right)^{3}+\frac{1}{D_1}\left(J-1\right)^{2} \end{array} \]

    where \(C_{10}\), \(C_{01}\), \(C_{20}\), \(C_{11}\), \(C_{02}\), \(C_{30}\), \(C_{21}\), \(C_{12}\), \(C_{03}\), and \(D_1\) are material ocnstants.

    The initial shear modulus is given by:

    \[ \mu=2(C_{10}+C_{01}) \]

    The initial bulk modulus is

    \[ K=\dfrac{2}{D_1} \]

    Neo-Hookean model

    The Neo-Hookean model is a well-known hyperelastic model with an expanded linear rule (Hooke rule) having isotropy so that it can respond to finite deformation problems. The elastic potential is as follows.

    \[ W=\frac{\mu}{2}(\bar{I}_{1}-3)+\dfrac{1}{D_{1}}(J-1)^{2} \]

    where \(\mu\) is initial shear modulus of materials, \(D_{1}\) is the material constant.

    The initial bulk modulus is given by:

    \[ K=\dfrac{2}{D_1} \]

    Ogden compressible foam model

    The strain-energy potential of the Ogden compressible foam model is based on the principal stretches of left Cauchy strain tensor, which has the form:

    \[ W=\sum_{i=1}^{N}\frac{\mu_{i}}{\alpha_{i}}\left(J^{\alpha_{i}/3}\left(\bar{\lambda}_{1}^{\alpha_{i}}+\bar{\lambda}_{2}^{\alpha_{i}}+\bar{\lambda}_{3}^{\alpha_{i}}\right)-3\right)+\sum_{i=1}^{N}\frac{\mu_{i}}{\alpha_{i}\beta_{i}}\left(J^{-\alpha_{i}\beta_{i}}-1\right) \]

    where N determines the order of the polynomial, \(\mu_i\), \(\alpha_i\) are material constants, \(D_k\) is incompressiblity parameter. The reduced principal strench is defined by:

    \[ \bar{\lambda}_{p}=J^{-\frac{1}{3}}\lambda_p,\; J=(\lambda_{1}\lambda_{2}\lambda_{3})^{\frac{1}{2}} \]

    The initial shear modulus is given by:

    \[ \mu=\dfrac{\sum_{i=1}^{N}\mu_{i}\alpha_{i}}{2} \]

    The initial bulk modulus K is defined by

    \[ K = \sum_{i=1}^{N}\mu_{i}\alpha_{i}\left(\dfrac{1}{3}+\beta_{i}\right) \]

    When parameters N=1, \(\alpha_1\)=-2, \(\mu_1\)=-\(\mu\), and \(\beta\)=0.5, the Ogden compressible model is converted to the Blatz-Ko model.

    Ogden model

    The strain-energy potential of the Ogden compressible foam model is based on the principal stretches of left Cauchy strain tensor, which has the form:

    \[ W=\sum_{i=1}^{N}\frac{\mu_{i}}{\alpha_{i}}\left(\bar{\lambda}_{1}^{\alpha_{i}}+\bar{\lambda}_{2}^{\alpha_{i}}+\bar{\lambda}_{3}^{\alpha_{i}}-3\right)+\sum_{k=1}^{N}\frac{1}{D_{k}}\left(J-1\right)^{2k} \]

    where N determines the order of the polynomial, \(\mu_i\), \(\alpha_i\) are material constants, \(D_k\) is incompressiblity parameter. The reduced principal strench is defined by:

    \[ \bar{\lambda}_{p}=J^{-\frac{1}{3}}\lambda_p,\; J=(\lambda_{1}\lambda_{2}\lambda_{3})^{\frac{1}{2}} \]

    The initial shear modulus is given by:

    \[ \mu=\dfrac{\sum_{i=1}^{N}\mu_{i}\alpha_{i}}{2} \]

    The initial bulk modulus K is defined by

    \[ K = \dfrac{2}{D_1} \]

    When parameters N=1, \(\alpha_1\)=2, the Ogden model is converted to the neo-Hookean model. When parameters N=2, \(\alpha_1\)=2 and \(\alpha_2\)=-2, the Ogden model is converted to the 2-parameter Mooney-Rivlin model.

    Polynomial form

    The polynomial form of strain-energy potential is:

    \[ W=\sum_{i+j=1}^{N}c_{ij}\left(\bar{I}_{1}-3\right)^{i}\left(\bar{I_{2}}-3\right)^{j}+\sum_{k=1}^{N}\frac{1}{D_{k}}\left(J-1\right)^{2k} \]

    where \(N\) determines the order of polynomial, \(c_{ij}\), \(D_k\) are material constants.

    The initial shear modulus is given by:

    \[ \mu=2\left(C_{10}+C_{01}\right) \]

    The initial bulk modulus K is defined by

    \[ K = \dfrac{2}{D_1} \]

    The Polynomial model is converted to following models with specific paramters:

    Parameters of Polynomial model Equivalent model
    N=1, \(C_{01}\)=0 neo-Hookean
    N=1 2-parameter Mooney-Rivlin
    N=2 5-parameter Mooney-Rivlin
    N=3 9-parameter Mooney-Rivlin

    Yeoh model

    The Yeoh model is also called the reduced polynomial form. The strain-energy potential is

    \[ W=\sum_{i=1}^{N}c_{i0}\left(\bar{I}_{1}-3\right)^{i}+\sum_{k=1}^{N}\frac{1}{D_{k}}\left(J-1\right)^{2k} \]

    where N denotes the order of polynomial, \(C_{i0}\) and \(D_k\) are material constants. When N=1, Yeoh becomes neo-Hookean model.

    The initial shear modulus is defined:

    \[ \mu=2c_{10} \]

    The initial bulk modulus is:

    \[ K=\frac{2}{D_1} \]

    Rate-independent plasticity

    The elastoplasticity based on the flow rule is applied in this program. The constitutive relation between Jaumman rate and the deformation rate tensor of the Kirchhoff stress is numerically solved using the updated Lagrange method.

    Elastoplastic constitutive equation

    The yield criteria of an elasto-plastic solid can be written into math formulas. The initial yield criteria are

    \[ F(\sigma,\sigma_{y0})=0 \]

    The Consecutive yield criteria are

    \[ F(\sigma,\sigma_{y}(e^{-p}))=0 \]

    where \(F\) is the yield function, \(\sigma_{y0}\) is initial yield stress, \(\sigma_{y}\) is consecutive yield stress, \(\sigma\) is stress tensor, \(\mathbf{e}\) is the infinitesimal strain tensor, \(\mathbf{e}^{p}\) is the plastic strain tensor, \(\bar{\mathbf{e}}^{p}\) is equivalent plastic strain.

    The yield stress-equivalent plastic strain relationship is assumed to conform to the stress-plastic strain relation in a single axis state. The stress-plastic strain relation about one single axis state is:

    \[ \sigma=H(e^{p}) \]
    \[ \dfrac{d\sigma}{de^{p}}=H' \]

    where \(H'\) is the strain hardening factor. The equivalent stress-equivalent plastic strain relation is :

    \[ \bar{\sigma}=H(\bar{e}^{p}) \]
    \[ \dot{\bar{\sigma}}=H'\dot{\bar{e^{p}}} \]

    The consecutive yield function is generally a function of temperature and plastic strain work. In this program, this function is assumed to be related to the equivalent plastic strain \bar{e}^{p}. Since condition F=0 holds during the plastic deformation, we have

    \[ \begin{align} \label{eq:ch5_plastic_gov1} \dot{F}=\dfrac{\partial F}{\partial\sigma}\colon\dot{\sigma}+\dfrac{\partial F}{\partial\mathbf{e}^{p}}\colon\dot{\mathbf{e}}^{p}=0 \end{align} \]

    where \(\dot{F}\) is the time derivative function of \(F\).

    In this case, we assume the existence of the plastic potential \(\Theta\), the plastic strain rate is

    \[ \dot{\mathbf{e}}^{p}=\dot{\lambda}\dfrac{\partial\Theta}{\partial\sigma} \]

    where \(\dot{\lambda}\) is the factor. Moreover, assuming the plastic potential \(\Theta\) is equivalent to yield function \(F\), the associated flow rule is assumed as

    \[ \dot{\mathbf{e}}^{p}=\dot{\lambda}\dfrac{\partial F}{\partial\sigma} \]

    which is substituted with equation \(\eqref{eq:ch5_plastic_gov1}\), we have

    \[ \dot{\lambda}=\dfrac{\mathbf{a}^{T}\colon\mathbf{d}_{D}}{A+\mathbf{a}^{T}\colon\mathbf{D}\colon\mathbf{a}}\mathbf{\dot{\mathbf{e}}} \]

    where \(\mathbf{D}\) is the elastic matrix, and

    \[ \mathbf{a}^{T}=\dfrac{\partial F}{\partial\sigma}\quad\mathbf{d}_{D}=\mathbf{D}\mathbf{a}^{T}\quad A=-\dfrac{1}{\dot{\lambda}}\dfrac{\partial F}{\partial\mathbf{\mathbf{e}}^{p}}\colon\dot{\mathbf{e}}^{p} \]

    The stress-strain relation for elastoplasicity can be rewritten to

    \[ \begin{align} \label{eq:ch5_plastic_yield_func1} \dot{\sigma}=\{\mathbf{D}-\dfrac{\mathbf{d}_{D}\otimes\mathbf{d}_{D}^{T}}{A+\mathbf{d}_{D}^{T}\mathbf{a}}\}\colon\dot{\mathbf{e}} \end{align} \]

    Here we give the explicit form of several yield functions that are applied in the program.

    Von-Mises yield function

    \[ F=\sqrt{3\mathbf{J}_{2}}-\sigma_{y} = 0 \]

    Mohr-Coulomb yield function

    \[ F=\sigma_{1}-\sigma_{3}+(\sigma_{1}+\sigma_{3})\mathrm{sin}\phi-2c\mathrm{cos}\phi = 0 \]

    Drucker-Prager yield function

    \[ F=\sqrt{\mathbf{J}_{2}}-\alpha\sigma\colon\mathbf{I}-\sigma_{y}=0 \]

    where material constant \(\alpha\) and \(\sigma_{y}\) are calculated from the viscosity and friction angle of the material as shown below

    \[ \alpha=\dfrac{2\mathrm{sin}\phi}{3+\mathrm{sin}\phi},\quad\sigma_{y}=\dfrac{6c\mathrm{cos}\phi}{3+\mathrm{sin}\phi} \]

    Viscoelasticity

    A material is viscoelastic if the material has both elastic (recoverable) and viscous (nonrecoverable) parts. Upon loads, the elastic deformation is instantaneous while the viscous part occurs over time. A viscoelastic model can depicts the deformation behavior of glass or glass-like materials and simulate heating and cooling processing of such materials.

    Constitutive Equations

    A generalized Maxwell model is applied for viscoelasticity in this program. The constitutive equation becomes a function of deviatoric strain \(\mathbf{e}\) and deviatoric viscosity strain \(\mathbf{q}\),

    \[ \sigma(t)=K\thinspace tr(\epsilon\mathbf{I})+2G(\mu_{0}\mathbf{e}+\mu\mathbf{q}) \]

    where

    \[ \mu\mathbf{q}=\sum_{m=1}^{M}\mu_{m}\mathbf{q}^{(m)};\quad\sum_{m=0}^{M}\mu_{m}=1 \]

    moveover, the deviatoric viscosity strain \(\mathbf{q}\) can be calculated by

    \[ \dot{\mathbf{q}}\thinspace^{(m)}+\dfrac{1}{\tau_{m}}\mathbf{q}^{(m)}=\dot{\mathbf{e}} \]

    where \(\tau_{m}\) is the relaxation time. The shear and volumetric relaxation coefficient \(G\) is represented by the following Prony series:

    \[ G(t)=G[\mu_{0}^{G}+\sum_{i=1}^{M}\mu_{i}^{G}e^{-(t/\tau_{i}^{G})}] \]
    \[ K(t)=K[\mu_{0}^{K}+\sum_{i=1}^{M}\mu_{i}^{K} e^{-\frac{t}{\tau_{i}^{K}}}] \]

    where \(\tau_{i}^{G}\) and \(\tau_{i}^{K}\) are relaxation times for each Prony component, \(G_i\) and \(K_i\) are shear and volumetric moduli, respectively.

    Themorheological Simplicity

    Viscous material depends strongly on temperature. For instance, A glass-like material turninto viscous fluids at high temperatures and behave like a solid material at low temperatures. The thermorheological simplicity is proposed to assumes that material response to a load at a high temperature over a short duration is identical to that at lower temperature but over a longer duration. Essentially, the relaxation times in Prony components oby the scaling law:

    \[ \tau_{i}^{G}(T) = \dfrac{\tau_{i}^{G}(T_r)}{A(T,T_r)} ,\qquad \tau_{i}^{K}(T) = \dfrac{\tau_{i}^{K}(T_r)}{A(T,T_r)} \]

    where \(A(T,T_r)\) is called the shift function.

    Shift Functions

    WELSIM offers the following forms of the shift function:

    • Williams-Landel-Ferry Shift Function

    Williams-Landel-Ferry Shift Function

    The Williams-Landel-Ferry (WLF) shift function is defined by

    \[ log_{10}(A) = \dfrac{C1(T-T_r)}{C2+T-T_r} \]

    where T is temperature, \(T_r\) is reference temperature, \(C_1\) and \(C_2\) are the WLF constants.

    Rate-dependent plasticity (including creep and viscoplasticity)

    The creep is a deformation phenomenon that the displacement depends on the time even under constant stress condition. The viscoelasticity can be viewed as linear creep. Several nonlinear creep are described in this section. In the mathematical theory, we define creep strain \(\epsilon^{c}\) and creep strain rate \(\dot{\epsilon}^{c}\)

    \[ \begin{align} \label{eq:ch5_creep_gov1} \dot{\epsilon}^{c}=\dfrac{\partial\epsilon^{c}}{\partial t}=\beta(\sigma,\epsilon^{c}) \end{align} \]

    In this case, if the instantaneous strain is assumed as the elasticity strain \(\epsilon^{e}\), the total strain can be expressed as the summary of elastic and creep strains

    \[ \epsilon=\epsilon^{e}+\epsilon^{c} \]

    where the elastic strain can be calculated by

    \[ \epsilon^{e}=\mathbf{c}^{e-1}\colon\sigma \]

    When the creep occurs in the deformation, the stress becomes

    \[ \sigma_{n+1}=\mathbf{c}\colon(\epsilon_{n+1}-\epsilon_{n+1}^{c}) \]
    \[ \epsilon_{n+1}^{c}=\epsilon_{n}^{c}+\triangle t\beta_{n+\theta} \]

    where \(\beta_{n+\theta}\) becomes

    \[ \beta_{n+\theta}=(1+\theta)\beta_{n}+\theta\beta_{n+1} \]

    The incremental creep strain \(\triangle\epsilon^{c}\) can be simplified to a nonlinear equation

    \[ \mathbf{R}_{n+1}=\epsilon_{n+1}-\mathbf{c}^{-1}\colon\sigma_{n+1}-\epsilon_{n}^{c}-\triangle t\beta_{n+\theta}=0 \]

    The Newton-Raphson method is applied to solve the nonlinear conditions. The iterative scheme in the finite element framework is

    \[ \begin{align} \label{eq:ch5_creep_gov2} \mathbf{R}_{n+1}^{(k+1)}=0=\mathbf{R}_{n+1}^{(k)}-(\mathbf{c}^{-1}+\triangle t\mathbf{c}_{n+1}^{c})d\sigma_{n+1}^{(k)} \end{align} \]

    which yields

    \[ \begin{align} \label{eq:ch5_creep_gov3} \mathbf{c}_{n+1}^{c}=\dfrac{\partial\beta}{\partial\sigma}\mid_{n+\theta}=\theta\dfrac{\partial\beta}{\partial\sigma}\mid_{n+1} \end{align} \]

    The above equations \(\eqref{eq:ch5_creep_gov2}\) and \(\eqref{eq:ch5_creep_gov3}\) are used in the iterative scheme. As the residual \(\mathbf{R}\) gets close to zero, the stress \(\sigma_{n+1}\) and tangent tensile modulus are

    \[ \mathbf{c}_{n+1}^{*}=[\mathbf{c}^{-1}+\triangle t\mathbf{c}_{n+1}^{c}]^{-1} \]

    To solve the equation \(\eqref{eq:ch5_creep_gov1}\), the following Norton model is applied in the program. The equivalent clip strain \(\dot{\epsilon}^{cr}\) is defined to be the function of Mises stress \(q\) and time \(t\).

    \[ \dot{\epsilon}^{cr}=Aq^{n}t^{m} \]

    where \(A\), \(m\), \(n\) are the material coefficients.

    Creep

    Creep is the inelastic, irreversible deformation of structures during time. It is a life limiting factor and depends on stress, strain, temperature and time. This dependency can be modeled as followed:

    \[ \dot{\epsilon}^{cr}=f(\sigma,\epsilon,T,t) \]

    Creep can occur in all crystalline materials, such as metal or glass, has various impacts on the behavior of the material.

    Three types of creep

    Creep can be divided in three different stages: primary creep, secondary creep and irradiation induced creep.

    Primary creep (0<m<1) starts rapidly with an infinite creep rate at the initialization. Here is m the time index. It occurs after a certain amount of time and slows down constantly. It occurs in the first hour after applying the load and is essential in calculating the relaxation over time.

    Secondary creep (m=1) follows right after the primary creep stage. The strain rate is now constant over a long period of time.

    The strain rate in the irradiation induced creep stage is growing rapidly until failure. This happens in a short period of time and is not of great interest. Therefore only primary and secondary creep are modeled in WelSim.

    Creep models

    WELSIM supports implicit creep models including Strain Hardening, Time Hardening, Generalized Exponentia, Generalized Graham, Generalized Blackburn, Modified Time Hardening, Modified Strain Hardening, Generalized Garofalo, Exponential form, Norton, Combined Time Hardening, Rational polynomial, and Generalized Time Hardening. The details of these models are given in the table below.

    Creep Model
    (index)
    Name Equations Parameters Type
    1 Strain Hardening \(\dot{\epsilon}_{cr}=C_{1}\sigma^{C_2}\epsilon_{cr}^{C_3}e^{-C_4/T}\) \(C_1>0\) Primary
    2 Time Hardening \(\dot{\epsilon}_{cr}=C_{1}\sigma^{C_2}t^{C_3}e^{-C_4/T}\) \(C_1>0\) Primary
    3 Generalized Exponential \(\dot{\epsilon}_{cr}=C_{1}\sigma^{C_2}re^{-rt}\), \(r=C_{5}\sigma^{C_3}e^{-C4/T}\) \(C_1>0\)
    \(C_5>0\)
    Primary
    4 Generalized Graham \(\dot{\epsilon}_{cr}=C_{1}\sigma^{C_2}\left( t^{C_3} + C_{4}t^{C_5} + C_{6}t^{C_7} \right) e^{-C_8/T}\) \(C_1>0\) Primary
    5 Generalized Blackburn \(\dot{\epsilon}_{cr} = f\left(1-e^{-rt}\right)+gt\)
    \(f=C_{1}e^{C_2\sigma}\), \(r=C_3\left(\sigma/C_4\right)^{C_5}\), \(g=C_{6}e^{C_{7}\sigma}\)
    \(C_1>0\)
    \(C_3>0\)
    \(C_6>0\)
    Primary
    6 Modified Time Hardening \(\dot{\epsilon}_{cr}=\dfrac{C_{1}}{C_3+1}\sigma^{C_2}t^{C_3+1}e^{-C_4/T}\) \(C_1>0\) Primary
    7 Modified Strain Hardening \(\dot{\epsilon}_{cr}= \{ C_{1} \sigma^{C_2} \left[\left( C_3+1\right)\epsilon_{cr} \right]^{C_3} \}^{1/(C_3+1)} e^{-C_4/T}\) \(C_1>0\) Primary
    8 Generalized Garofalo \(\dot{\epsilon}_{cr}=C_1\left[ sinh(C_2\sigma)\right]^{C_3} e^{-C_4/T}\) \(C_1>0\) Secondary
    9 Exponential form \(\dot{\epsilon}_{cr}=C_1 e^{\sigma/C_2} e^{-C_3/T}\) \(C_1>0\) Secondary
    10 Norton \(\dot{\epsilon}_{cr}=C_1 \sigma^{C_2} e^{-C_3/T}\) \(C_1>0\) Secondary
    11 Combined Time Hardening \(\dot{\epsilon}_{cr}=\dfrac{C_1}{C_3+1} \sigma^{C_2} t^{C_3+1} e^{-C_4/T} + C_5 \sigma^{C_6}te^{-C_7/T}\) \(C_1>0\),
    \(C_5>0\)
    Primary + Secondary
    12 Rational Polynomial \(\dot{\epsilon}_{cr}=C_1 \dfrac{\partial\epsilon_c}{\partial t}\), \(\epsilon_{c}=\dfrac{cpt}{1+pt}+\dot{\epsilon}_m t\)
    \(\dot{\epsilon}_m=C_2(10)^{C_3\sigma}\sigma^{C_4}\)
    \(c=C_7\dot{\epsilon}_m^{C_8}\sigma^{C_9}\), \(p=C_{10}\dot{\epsilon}_{m}^{C_{11}}\sigma^{C_{12}}\)
    \(C_2>0\) Primary + Secondary
    13 Generalized Time Hardening \(\dot{\epsilon}_{cr}=ft^r e^{-C_6/T}\)
    \(f=C_1\sigma+C_2\sigma^2+C_3\sigma^3\)
    \(r=C_4 + C_5\sigma\)
    - Primary

    where \(\epsilon_{cr}\) is equivalent creep strain, \(\dot{\epsilon}_{cr}\) is the change in equivalent creep strain with respect to time, \(\sigma\) is equivalent stress. \(T\) is temperature. \(C_1\) through \(C_{12}\) are creep constants. \(t\) is time at end of substep. \(e\) is natural logarithm base.

    \ No newline at end of file + Structures with material nonlinearities - WelSim Documentation

    Structures with material nonlinearities

    Material nonlinearities occur because of the nonlinear relationship between stress and strain; that is, the stress is a nonlinear function of the strain. The relationship is also path-dependent (except for the case of nonlinear elasticity and hyperelasticity), so that the stress depends on the strain history as well as the strain itself.

    The program can account for many material nonlinearities, as follows:

    1. Rate-independent plasticity is characterized by the irreversible instantaneous straining that occurs in a material.

    2. Rate-dependent plasticity allows the plastic-strains to develop over a time interval. It is also termed viscoplasticity.

    3. Creep is also an irreversible straining that occurs in a material and is rate-dependent so that the strains develop over time. The time frame for creep is usually much larger than that for rate-dependent plasticity.

    4. Nonlinear elasticity allows a nonlinear stress-strain relationship to be specified. All straining is reversible.

    5. Hyperelasticity is defined by a strain-energy density potential that characterizes elastomeric and foam-type materials. All straining is reversible.

    6. Viscoelasticity is a rate-dependent material characterization that includes a viscous contribution to the elastic straining.

    When the material applicable for analysis is an elastoplastic material, the updated Lagrange method is applied, and the total Lagrange method is applied for hyperelastic material. Moreover, the Newton-Raphson method is applied to the repetitive analysis method.

    Strain definitions

    For the case of nonlinear materials, the definition of elastic strain given in Equation \(\eqref{eq:ch4_theory_stress_strain_relation}\) expands to

    \[ \begin{align} \label{eq:ch4_guide_strain_full} \{\epsilon\}=\{\epsilon^{el}\}+\{\epsilon^{th}\}+\{e^{pl}\}+\{\epsilon^{cr}\}+\{\epsilon^{sw}\} \end{align} \]

    where \(\epsilon\) is the total strain vector, \(\epsilon^{el}\) is elastic strain vector, \(\epsilon^{th}\) is the thermal strain vector, \(\epsilon^{pl}\) is the plastic strain vector, \(\epsilon^{cr}\) is the creep strain vector, and \(\epsilon^{sw}\) is the swelling strain vector.

    Hyperelasticity

    The elastic potential energy in hyperelastic material can be obtained from the initial state with no stress activation. Therefore, we have the main invariable terms of the right Cauchy-Green deformation tensor C(\(I_{1}\), \(I_{2}\), \(I_{3}\)), or the main invariable of the deformation tensor excluding the volume changes (\(\bar{I}_{1}\), \(\bar{I}_{2}\), \(\bar{I}_{3}\)). The potential can be expressed as \(\mathbf{W}=\mathbf{W}(I_{1},I_{2},I_{3})\), or \(\mathbf{W}=\mathbf{W}(\bar{I}_{1},\bar{I}_{2},\bar{I}_{3})\).

    The nonlinear constitutive relation of hyperelastic material is defined by the relation between the second order Piola-Kirchhoff stress and the Green-Lagrange strain, the total Lagrange method is more efficient in solving such models.

    When the elastic potential energy \(W\) of the hyperelasticity is known, the second Piola-Kirchhoff stress and strain-stress relationship can be calculated as follows

    \[ S=2\dfrac{\partial W}{\partial C} \]
    \[ C=4\dfrac{\partial^{2}W}{\partial C\partial C} \]

    Arruda-Boyce model

    The form of the strain-energy potential for Arruda-Boyce model is

    \[ \begin{array}{ccc} W & = & [\dfrac{1}{2}(\bar{I}_{1}-3)+\dfrac{1}{20\lambda_{m}^{2}}(\bar{I_{1}^{2}}-9)+\dfrac{11}{1050\lambda_{m}^{4}}(\bar{I_{1}^{3}}-27)\\ & + & \dfrac{19}{7000\lambda_{m}^{6}}(\bar{I_{1}^{4}}-81)+\dfrac{519}{673750\lambda_{m}^{8}}(\bar{I_{1}^{5}}-243)]+\dfrac{1}{D_1}(\dfrac{J^{2}-1}{2}-\mathrm{ln}J) \end{array} \]

    where \(\lambda_{m}\) is limiting network stretch, and \(D_1\) is the material incompressibility parameter.

    The initial shear modulus is

    \[ \mu=\dfrac{\mu_{0}}{1+\dfrac{3}{5\lambda_{m}^{2}}+\dfrac{99}{175\lambda_{m}^{4}}+\dfrac{513}{875\lambda_{m}^{6}}+\dfrac{42039}{67375\lambda_{m}^{8}}} \]

    The initial bulk modulus is

    \[ K=\dfrac{2}{D_1} \]

    As the parameter \(\lambda_L\) goes to infinity, the model is equivalent to neo-Hookean form.

    Blatz-Ko foam model

    The form of strain-energy potential for the Blatz-Ko model is:

    \[ W=\frac{\mu}{2}\left(\frac{I_{2}}{I_{3}}+2\sqrt{I_{3}}-5\right) \]

    where \(\mu\) is initla shear modulus of material. The initial bulk modulus is defined as :

    \[ K = \frac{5}{3}\mu \]

    Extended tube model

    The elastic strain-energy potential for the extended tube model is:

    \[ \begin{array}{ccc} W & = & \frac{G_{c}}{2}\left[\frac{\left(1-\delta^{2}\right)\left(\bar{I}_{1}-3\right)}{1-\delta^{2}\left(\bar{I}_{1}-3\right)}+\mathrm{ln}\left(1-\delta^{2}\left(\bar{I}_{1}-3\right)\right)\right]\\ & + & \frac{2G_{e}}{\beta^{2}}\sum_{i=1}^{3}\left(\bar{\lambda}_{i}^{-\beta}-1\right)+\frac{1}{D_1}\left(J-1\right)^{2} \end{array} \]

    where the initial shear modulus is \(G\)=\(G_c\) + \(G_e\), and \(G_e\) is constraint contribution to modulus, \(G_c\) is crosslinked contribution to modulus, \(\delta\) is extensibility parameter, \(\beta\) is empirical parameter (0\(\leq \beta \leq\)1), and \(D_1\) is material incompressibility parameter.

    Extended tube model is equivalent ot a two-term Ogden model with the following parameters:

    \[ \begin{array}{cccc} \alpha_1 = 2 &, & \alpha_2=-\beta\\ \mu_1=G_c &, & \mu_2=-\dfrac{2}{\beta}G_e, & \delta=0 \end{array} \]

    Gent model

    The form of the strian-energy potential for the Gent model is:

    \[ W=-\frac{\mu J_{m}}{2}\mathrm{ln}\left(1-\frac{\bar{I}_{1}-3}{J_{m}}\right)+\frac{1}{D_1}\left(\frac{J^{2}-1}{2}-\mathrm{ln}J\right) \]

    where \(\mu\) is initial shear modulus of material, \(J_m\) is limiting value of \(\bar{I}_1-3\), \(D_1\) is material incompressibility parameter.

    The initial bulk modulus is

    \[ K=\dfrac{2}{D_1} \]

    When the parameter \(J_m\) goes to infinity, the Gent model is equivalent to neo-Hookean form.

    Mooney-Rivlin model

    This model includes two-, three-, five-, and nine-terma Mooney-Rivlin models. The form of the strain-energy potential for a two-parameter Mooney-Rivlin model is

    \[ W=C_{10}\left(\bar{I}_{1}-3\right)+C_{01}\left(\bar{I}_{2}-3\right)+\frac{1}{D_1}\left(J-1\right)^{2} \]

    where \(C_{10}\), \(C_{01}\), and \(D_{1}\) are the material constants.

    The form of strain-energy potential for a three-parameter Mooney-Rivlin model is

    \[ W=C_{10}\left(\bar{I}_{1}-3\right)+C_{01}\left(\bar{I}_{2}-3\right)+C_{11}\left(\bar{I}_{1}-3\right)\left(\bar{I}_{2}-3\right)+\frac{1}{D_1}\left(J-1\right)^{2} \]

    where \(C_{10}\), \(C_{01}\), \(C_{11}\), and \(D_1\) are material ocnstants.

    The form of strain-energy potential for a five-parameter Mooney-Rivlin model is

    \[ \begin{array}{ccc} W & = & C_{10}\left(\bar{I}_{1}-3\right)+C_{01}\left(\bar{I}_{2}-3\right)+C_{20}\left(\bar{I}_{1}-3\right)^{2}\\ & + & C_{11}\left(\bar{I}_{1}-3\right)\left(\bar{I}_{2}-3\right)+C_{02}\left(\bar{I}_{2}-3\right)^{2}+\frac{1}{D_1}\left(J-1\right)^{2} \end{array} \]

    where \(C_{10}\), \(C_{01}\), \(C_{20}\), \(C_{11}\), \(C_{02}\), and \(D_1\) are material ocnstants.

    The form of strain-energy potential for a nine-parameter Mooney-Rivlin model is

    \[ \begin{array}{ccc} W & = & C_{10}\left(\bar{I}_{1}-3\right)+C_{01}\left(\bar{I}_{2}-3\right)+C_{20}\left(\bar{I}_{1}-3\right)^{2}\\ & + & C_{11}\left(\bar{I}_{1}-3\right)\left(\bar{I}_{2}-3\right)+C_{02}\left(\bar{I}_{2}-3\right)^{2}+C_{30}\left(\bar{I}_{1}-3\right)^{3}\\ & + & C_{21}\left(\bar{I}_{1}-3\right)^{2}\left(\bar{I}_{2}-3\right)+C_{12}\left(\bar{I}_{1}-3\right)\left(\bar{I}_{2}-3\right)^{2}+C_{03}\left(\bar{I}_{2}-3\right)^{3}+\frac{1}{D_1}\left(J-1\right)^{2} \end{array} \]

    where \(C_{10}\), \(C_{01}\), \(C_{20}\), \(C_{11}\), \(C_{02}\), \(C_{30}\), \(C_{21}\), \(C_{12}\), \(C_{03}\), and \(D_1\) are material ocnstants.

    The initial shear modulus is given by:

    \[ \mu=2(C_{10}+C_{01}) \]

    The initial bulk modulus is

    \[ K=\dfrac{2}{D_1} \]

    Neo-Hookean model

    The Neo-Hookean model is a well-known hyperelastic model with an expanded linear rule (Hooke rule) having isotropy so that it can respond to finite deformation problems. The elastic potential is as follows.

    \[ W=\frac{\mu}{2}(\bar{I}_{1}-3)+\dfrac{1}{D_{1}}(J-1)^{2} \]

    where \(\mu\) is initial shear modulus of materials, \(D_{1}\) is the material constant.

    The initial bulk modulus is given by:

    \[ K=\dfrac{2}{D_1} \]

    Ogden compressible foam model

    The strain-energy potential of the Ogden compressible foam model is based on the principal stretches of left Cauchy strain tensor, which has the form:

    \[ W=\sum_{i=1}^{N}\frac{\mu_{i}}{\alpha_{i}}\left(J^{\alpha_{i}/3}\left(\bar{\lambda}_{1}^{\alpha_{i}}+\bar{\lambda}_{2}^{\alpha_{i}}+\bar{\lambda}_{3}^{\alpha_{i}}\right)-3\right)+\sum_{i=1}^{N}\frac{\mu_{i}}{\alpha_{i}\beta_{i}}\left(J^{-\alpha_{i}\beta_{i}}-1\right) \]

    where N determines the order of the polynomial, \(\mu_i\), \(\alpha_i\) are material constants, \(D_k\) is incompressiblity parameter. The reduced principal strench is defined by:

    \[ \bar{\lambda}_{p}=J^{-\frac{1}{3}}\lambda_p,\; J=(\lambda_{1}\lambda_{2}\lambda_{3})^{\frac{1}{2}} \]

    The initial shear modulus is given by:

    \[ \mu=\dfrac{\sum_{i=1}^{N}\mu_{i}\alpha_{i}}{2} \]

    The initial bulk modulus K is defined by

    \[ K = \sum_{i=1}^{N}\mu_{i}\alpha_{i}\left(\dfrac{1}{3}+\beta_{i}\right) \]

    When parameters N=1, \(\alpha_1\)=-2, \(\mu_1\)=-\(\mu\), and \(\beta\)=0.5, the Ogden compressible model is converted to the Blatz-Ko model.

    Ogden model

    The strain-energy potential of the Ogden compressible foam model is based on the principal stretches of left Cauchy strain tensor, which has the form:

    \[ W=\sum_{i=1}^{N}\frac{\mu_{i}}{\alpha_{i}}\left(\bar{\lambda}_{1}^{\alpha_{i}}+\bar{\lambda}_{2}^{\alpha_{i}}+\bar{\lambda}_{3}^{\alpha_{i}}-3\right)+\sum_{k=1}^{N}\frac{1}{D_{k}}\left(J-1\right)^{2k} \]

    where N determines the order of the polynomial, \(\mu_i\), \(\alpha_i\) are material constants, \(D_k\) is incompressiblity parameter. The reduced principal strench is defined by:

    \[ \bar{\lambda}_{p}=J^{-\frac{1}{3}}\lambda_p,\; J=(\lambda_{1}\lambda_{2}\lambda_{3})^{\frac{1}{2}} \]

    The initial shear modulus is given by:

    \[ \mu=\dfrac{\sum_{i=1}^{N}\mu_{i}\alpha_{i}}{2} \]

    The initial bulk modulus K is defined by

    \[ K = \dfrac{2}{D_1} \]

    When parameters N=1, \(\alpha_1\)=2, the Ogden model is converted to the neo-Hookean model. When parameters N=2, \(\alpha_1\)=2 and \(\alpha_2\)=-2, the Ogden model is converted to the 2-parameter Mooney-Rivlin model.

    Polynomial form

    The polynomial form of strain-energy potential is:

    \[ W=\sum_{i+j=1}^{N}c_{ij}\left(\bar{I}_{1}-3\right)^{i}\left(\bar{I_{2}}-3\right)^{j}+\sum_{k=1}^{N}\frac{1}{D_{k}}\left(J-1\right)^{2k} \]

    where \(N\) determines the order of polynomial, \(c_{ij}\), \(D_k\) are material constants.

    The initial shear modulus is given by:

    \[ \mu=2\left(C_{10}+C_{01}\right) \]

    The initial bulk modulus K is defined by

    \[ K = \dfrac{2}{D_1} \]

    The Polynomial model is converted to following models with specific paramters:

    Parameters of Polynomial model Equivalent model
    N=1, \(C_{01}\)=0 neo-Hookean
    N=1 2-parameter Mooney-Rivlin
    N=2 5-parameter Mooney-Rivlin
    N=3 9-parameter Mooney-Rivlin

    Yeoh model

    The Yeoh model is also called the reduced polynomial form. The strain-energy potential is

    \[ W=\sum_{i=1}^{N}c_{i0}\left(\bar{I}_{1}-3\right)^{i}+\sum_{k=1}^{N}\frac{1}{D_{k}}\left(J-1\right)^{2k} \]

    where N denotes the order of polynomial, \(C_{i0}\) and \(D_k\) are material constants. When N=1, Yeoh becomes neo-Hookean model.

    The initial shear modulus is defined:

    \[ \mu=2c_{10} \]

    The initial bulk modulus is:

    \[ K=\frac{2}{D_1} \]

    Rate-independent plasticity

    The elastoplasticity based on the flow rule is applied in this program. The constitutive relation between Jaumman rate and the deformation rate tensor of the Kirchhoff stress is numerically solved using the updated Lagrange method.

    Elastoplastic constitutive equation

    The yield criteria of an elasto-plastic solid can be written into math formulas. The initial yield criteria are

    \[ F(\sigma,\sigma_{y0})=0 \]

    The Consecutive yield criteria are

    \[ F(\sigma,\sigma_{y}(e^{-p}))=0 \]

    where \(F\) is the yield function, \(\sigma_{y0}\) is initial yield stress, \(\sigma_{y}\) is consecutive yield stress, \(\sigma\) is stress tensor, \(\mathbf{e}\) is the infinitesimal strain tensor, \(\mathbf{e}^{p}\) is the plastic strain tensor, \(\bar{\mathbf{e}}^{p}\) is equivalent plastic strain.

    The yield stress-equivalent plastic strain relationship is assumed to conform to the stress-plastic strain relation in a single axis state. The stress-plastic strain relation about one single axis state is:

    \[ \sigma=H(e^{p}) \]
    \[ \dfrac{d\sigma}{de^{p}}=H' \]

    where \(H'\) is the strain hardening factor. The equivalent stress-equivalent plastic strain relation is :

    \[ \bar{\sigma}=H(\bar{e}^{p}) \]
    \[ \dot{\bar{\sigma}}=H'\dot{\bar{e^{p}}} \]

    The consecutive yield function is generally a function of temperature and plastic strain work. In this program, this function is assumed to be related to the equivalent plastic strain \bar{e}^{p}. Since condition F=0 holds during the plastic deformation, we have

    \[ \begin{align} \label{eq:ch5_plastic_gov1} \dot{F}=\dfrac{\partial F}{\partial\sigma}\colon\dot{\sigma}+\dfrac{\partial F}{\partial\mathbf{e}^{p}}\colon\dot{\mathbf{e}}^{p}=0 \end{align} \]

    where \(\dot{F}\) is the time derivative function of \(F\).

    In this case, we assume the existence of the plastic potential \(\Theta\), the plastic strain rate is

    \[ \dot{\mathbf{e}}^{p}=\dot{\lambda}\dfrac{\partial\Theta}{\partial\sigma} \]

    where \(\dot{\lambda}\) is the factor. Moreover, assuming the plastic potential \(\Theta\) is equivalent to yield function \(F\), the associated flow rule is assumed as

    \[ \dot{\mathbf{e}}^{p}=\dot{\lambda}\dfrac{\partial F}{\partial\sigma} \]

    which is substituted with equation \(\eqref{eq:ch5_plastic_gov1}\), we have

    \[ \dot{\lambda}=\dfrac{\mathbf{a}^{T}\colon\mathbf{d}_{D}}{A+\mathbf{a}^{T}\colon\mathbf{D}\colon\mathbf{a}}\mathbf{\dot{\mathbf{e}}} \]

    where \(\mathbf{D}\) is the elastic matrix, and

    \[ \mathbf{a}^{T}=\dfrac{\partial F}{\partial\sigma}\quad\mathbf{d}_{D}=\mathbf{D}\mathbf{a}^{T}\quad A=-\dfrac{1}{\dot{\lambda}}\dfrac{\partial F}{\partial\mathbf{\mathbf{e}}^{p}}\colon\dot{\mathbf{e}}^{p} \]

    The stress-strain relation for elastoplasicity can be rewritten to

    \[ \begin{align} \label{eq:ch5_plastic_yield_func1} \dot{\sigma}=\{\mathbf{D}-\dfrac{\mathbf{d}_{D}\otimes\mathbf{d}_{D}^{T}}{A+\mathbf{d}_{D}^{T}\mathbf{a}}\}\colon\dot{\mathbf{e}} \end{align} \]

    Here we give the explicit form of several yield functions that are applied in the program.

    Von-Mises yield function

    \[ F=\sqrt{3\mathbf{J}_{2}}-\sigma_{y} = 0 \]

    Mohr-Coulomb yield function

    \[ F=\sigma_{1}-\sigma_{3}+(\sigma_{1}+\sigma_{3})\mathrm{sin}\phi-2c\mathrm{cos}\phi = 0 \]

    Drucker-Prager yield function

    \[ F=\sqrt{\mathbf{J}_{2}}-\alpha\sigma\colon\mathbf{I}-\sigma_{y}=0 \]

    where material constant \(\alpha\) and \(\sigma_{y}\) are calculated from the viscosity and friction angle of the material as shown below

    \[ \alpha=\dfrac{2\mathrm{sin}\phi}{3+\mathrm{sin}\phi},\quad\sigma_{y}=\dfrac{6c\mathrm{cos}\phi}{3+\mathrm{sin}\phi} \]

    Viscoelasticity

    A material is viscoelastic if the material has both elastic (recoverable) and viscous (nonrecoverable) parts. Upon loads, the elastic deformation is instantaneous while the viscous part occurs over time. A viscoelastic model can depicts the deformation behavior of glass or glass-like materials and simulate heating and cooling processing of such materials.

    Constitutive Equations

    A generalized Maxwell model is applied for viscoelasticity in this program. The constitutive equation becomes a function of deviatoric strain \(\mathbf{e}\) and deviatoric viscosity strain \(\mathbf{q}\),

    \[ \sigma(t)=K\thinspace tr(\epsilon\mathbf{I})+2G(\mu_{0}\mathbf{e}+\mu\mathbf{q}) \]

    where

    \[ \mu\mathbf{q}=\sum_{m=1}^{M}\mu_{m}\mathbf{q}^{(m)};\quad\sum_{m=0}^{M}\mu_{m}=1 \]

    moveover, the deviatoric viscosity strain \(\mathbf{q}\) can be calculated by

    \[ \dot{\mathbf{q}}\thinspace^{(m)}+\dfrac{1}{\tau_{m}}\mathbf{q}^{(m)}=\dot{\mathbf{e}} \]

    where \(\tau_{m}\) is the relaxation time. The shear and volumetric relaxation coefficient \(G\) is represented by the following Prony series:

    \[ G(t)=G[\mu_{0}^{G}+\sum_{i=1}^{M}\mu_{i}^{G}e^{-(t/\tau_{i}^{G})}] \]
    \[ K(t)=K[\mu_{0}^{K}+\sum_{i=1}^{M}\mu_{i}^{K} e^{-\frac{t}{\tau_{i}^{K}}}] \]

    where \(\tau_{i}^{G}\) and \(\tau_{i}^{K}\) are relaxation times for each Prony component, \(G_i\) and \(K_i\) are shear and volumetric moduli, respectively.

    Themorheological Simplicity

    Viscous material depends strongly on temperature. For instance, A glass-like material turninto viscous fluids at high temperatures and behave like a solid material at low temperatures. The thermorheological simplicity is proposed to assumes that material response to a load at a high temperature over a short duration is identical to that at lower temperature but over a longer duration. Essentially, the relaxation times in Prony components oby the scaling law:

    \[ \tau_{i}^{G}(T) = \dfrac{\tau_{i}^{G}(T_r)}{A(T,T_r)} ,\qquad \tau_{i}^{K}(T) = \dfrac{\tau_{i}^{K}(T_r)}{A(T,T_r)} \]

    where \(A(T,T_r)\) is called the shift function.

    Shift Functions

    WELSIM offers the following forms of the shift function:

    • Williams-Landel-Ferry Shift Function

    Williams-Landel-Ferry Shift Function

    The Williams-Landel-Ferry (WLF) shift function is defined by

    \[ log_{10}(A) = \dfrac{C1(T-T_r)}{C2+T-T_r} \]

    where T is temperature, \(T_r\) is reference temperature, \(C_1\) and \(C_2\) are the WLF constants.

    Rate-dependent plasticity (including creep and viscoplasticity)

    The creep is a deformation phenomenon that the displacement depends on the time even under constant stress condition. The viscoelasticity can be viewed as linear creep. Several nonlinear creep are described in this section. In the mathematical theory, we define creep strain \(\epsilon^{c}\) and creep strain rate \(\dot{\epsilon}^{c}\)

    \[ \begin{align} \label{eq:ch5_creep_gov1} \dot{\epsilon}^{c}=\dfrac{\partial\epsilon^{c}}{\partial t}=\beta(\sigma,\epsilon^{c}) \end{align} \]

    In this case, if the instantaneous strain is assumed as the elasticity strain \(\epsilon^{e}\), the total strain can be expressed as the summary of elastic and creep strains

    \[ \epsilon=\epsilon^{e}+\epsilon^{c} \]

    where the elastic strain can be calculated by

    \[ \epsilon^{e}=\mathbf{c}^{e-1}\colon\sigma \]

    When the creep occurs in the deformation, the stress becomes

    \[ \sigma_{n+1}=\mathbf{c}\colon(\epsilon_{n+1}-\epsilon_{n+1}^{c}) \]
    \[ \epsilon_{n+1}^{c}=\epsilon_{n}^{c}+\triangle t\beta_{n+\theta} \]

    where \(\beta_{n+\theta}\) becomes

    \[ \beta_{n+\theta}=(1+\theta)\beta_{n}+\theta\beta_{n+1} \]

    The incremental creep strain \(\triangle\epsilon^{c}\) can be simplified to a nonlinear equation

    \[ \mathbf{R}_{n+1}=\epsilon_{n+1}-\mathbf{c}^{-1}\colon\sigma_{n+1}-\epsilon_{n}^{c}-\triangle t\beta_{n+\theta}=0 \]

    The Newton-Raphson method is applied to solve the nonlinear conditions. The iterative scheme in the finite element framework is

    \[ \begin{align} \label{eq:ch5_creep_gov2} \mathbf{R}_{n+1}^{(k+1)}=0=\mathbf{R}_{n+1}^{(k)}-(\mathbf{c}^{-1}+\triangle t\mathbf{c}_{n+1}^{c})d\sigma_{n+1}^{(k)} \end{align} \]

    which yields

    \[ \begin{align} \label{eq:ch5_creep_gov3} \mathbf{c}_{n+1}^{c}=\dfrac{\partial\beta}{\partial\sigma}\mid_{n+\theta}=\theta\dfrac{\partial\beta}{\partial\sigma}\mid_{n+1} \end{align} \]

    The above equations \(\eqref{eq:ch5_creep_gov2}\) and \(\eqref{eq:ch5_creep_gov3}\) are used in the iterative scheme. As the residual \(\mathbf{R}\) gets close to zero, the stress \(\sigma_{n+1}\) and tangent tensile modulus are

    \[ \mathbf{c}_{n+1}^{*}=[\mathbf{c}^{-1}+\triangle t\mathbf{c}_{n+1}^{c}]^{-1} \]

    To solve the equation \(\eqref{eq:ch5_creep_gov1}\), the following Norton model is applied in the program. The equivalent clip strain \(\dot{\epsilon}^{cr}\) is defined to be the function of Mises stress \(q\) and time \(t\).

    \[ \dot{\epsilon}^{cr}=Aq^{n}t^{m} \]

    where \(A\), \(m\), \(n\) are the material coefficients.

    Creep

    Creep is the inelastic, irreversible deformation of structures during time. It is a life limiting factor and depends on stress, strain, temperature and time. This dependency can be modeled as followed:

    \[ \dot{\epsilon}^{cr}=f(\sigma,\epsilon,T,t) \]

    Creep can occur in all crystalline materials, such as metal or glass, has various impacts on the behavior of the material.

    Three types of creep

    Creep can be divided in three different stages: primary creep, secondary creep and irradiation induced creep.

    Primary creep (0<m<1) starts rapidly with an infinite creep rate at the initialization. Here is m the time index. It occurs after a certain amount of time and slows down constantly. It occurs in the first hour after applying the load and is essential in calculating the relaxation over time.

    Secondary creep (m=1) follows right after the primary creep stage. The strain rate is now constant over a long period of time.

    The strain rate in the irradiation induced creep stage is growing rapidly until failure. This happens in a short period of time and is not of great interest. Therefore only primary and secondary creep are modeled in WelSim.

    Creep models

    WELSIM supports implicit creep models including Strain Hardening, Time Hardening, Generalized Exponentia, Generalized Graham, Generalized Blackburn, Modified Time Hardening, Modified Strain Hardening, Generalized Garofalo, Exponential form, Norton, Combined Time Hardening, Rational polynomial, and Generalized Time Hardening. The details of these models are given in the table below.

    Creep Model
    (index)
    Name Equations Parameters Type
    1 Strain Hardening \(\dot{\epsilon}_{cr}=C_{1}\sigma^{C_2}\epsilon_{cr}^{C_3}e^{-C_4/T}\) \(C_1>0\) Primary
    2 Time Hardening \(\dot{\epsilon}_{cr}=C_{1}\sigma^{C_2}t^{C_3}e^{-C_4/T}\) \(C_1>0\) Primary
    3 Generalized Exponential \(\dot{\epsilon}_{cr}=C_{1}\sigma^{C_2}re^{-rt}\), \(r=C_{5}\sigma^{C_3}e^{-C4/T}\) \(C_1>0\)
    \(C_5>0\)
    Primary
    4 Generalized Graham \(\dot{\epsilon}_{cr}=C_{1}\sigma^{C_2}\left( t^{C_3} + C_{4}t^{C_5} + C_{6}t^{C_7} \right) e^{-C_8/T}\) \(C_1>0\) Primary
    5 Generalized Blackburn \(\dot{\epsilon}_{cr} = f\left(1-e^{-rt}\right)+gt\)
    \(f=C_{1}e^{C_2\sigma}\), \(r=C_3\left(\sigma/C_4\right)^{C_5}\), \(g=C_{6}e^{C_{7}\sigma}\)
    \(C_1>0\)
    \(C_3>0\)
    \(C_6>0\)
    Primary
    6 Modified Time Hardening \(\dot{\epsilon}_{cr}=\dfrac{C_{1}}{C_3+1}\sigma^{C_2}t^{C_3+1}e^{-C_4/T}\) \(C_1>0\) Primary
    7 Modified Strain Hardening \(\dot{\epsilon}_{cr}= \{ C_{1} \sigma^{C_2} \left[\left( C_3+1\right)\epsilon_{cr} \right]^{C_3} \}^{1/(C_3+1)} e^{-C_4/T}\) \(C_1>0\) Primary
    8 Generalized Garofalo \(\dot{\epsilon}_{cr}=C_1\left[ sinh(C_2\sigma)\right]^{C_3} e^{-C_4/T}\) \(C_1>0\) Secondary
    9 Exponential form \(\dot{\epsilon}_{cr}=C_1 e^{\sigma/C_2} e^{-C_3/T}\) \(C_1>0\) Secondary
    10 Norton \(\dot{\epsilon}_{cr}=C_1 \sigma^{C_2} e^{-C_3/T}\) \(C_1>0\) Secondary
    11 Combined Time Hardening \(\dot{\epsilon}_{cr}=\dfrac{C_1}{C_3+1} \sigma^{C_2} t^{C_3+1} e^{-C_4/T} + C_5 \sigma^{C_6}te^{-C_7/T}\) \(C_1>0\),
    \(C_5>0\)
    Primary + Secondary
    12 Rational Polynomial \(\dot{\epsilon}_{cr}=C_1 \dfrac{\partial\epsilon_c}{\partial t}\), \(\epsilon_{c}=\dfrac{cpt}{1+pt}+\dot{\epsilon}_m t\)
    \(\dot{\epsilon}_m=C_2(10)^{C_3\sigma}\sigma^{C_4}\)
    \(c=C_7\dot{\epsilon}_m^{C_8}\sigma^{C_9}\), \(p=C_{10}\dot{\epsilon}_{m}^{C_{11}}\sigma^{C_{12}}\)
    \(C_2>0\) Primary + Secondary
    13 Generalized Time Hardening \(\dot{\epsilon}_{cr}=ft^r e^{-C_6/T}\)
    \(f=C_1\sigma+C_2\sigma^2+C_3\sigma^3\)
    \(r=C_4 + C_5\sigma\)
    - Primary

    where \(\epsilon_{cr}\) is equivalent creep strain, \(\dot{\epsilon}_{cr}\) is the change in equivalent creep strain with respect to time, \(\sigma\) is equivalent stress. \(T\) is temperature. \(C_1\) through \(C_{12}\) are creep constants. \(t\) is time at end of substep. \(e\) is natural logarithm base.

    \ No newline at end of file diff --git a/welsim/theory/modal/index.html b/welsim/theory/modal/index.html index c95afb8..690a65a 100755 --- a/welsim/theory/modal/index.html +++ b/welsim/theory/modal/index.html @@ -1 +1 @@ - Modal analysis (eiginvalue) - WelSim Documentation

    Modal analysis

    Generalized eigenvalue problem

    When conducting a free oscillation analysis of the continuum, assuming no damping in the free vibration. The governing eqatuion is

    \[ \begin{align} \label{eq:ch5_modal_gov} \mathbf{M}\ddot{\mathbf{u}}+\mathbf{Ku}=0 \end{align} \]

    where \(\mathbf{u}\) is the generated displacement vector, \(\mathbf{M}\) is the mass matrix and \(\mathbf{K}\) is the stiffness matrix. The solution is assumed to

    \[ \begin{align} \label{eq:ch5_eigenvalue_vector} \mathbf{u}(t)=(asin\omega t+bcos\omega t)\mathbf{x} \end{align} \]

    where \(\omega\) is the natural angular frequency, \(a\) and \(b\) are the arbitrary constants. Herein, the second order differential of equation \(\eqref{eq:ch5_eigenvalue_vector}\) is

    \[ \begin{align} \label{eq:ch5_modal_acceleration} \ddot{\mathbf{u}}(t)=\omega(asin\omega t-bsin\omega t)\mathbf{x} \end{align} \]

    Combining equations \(\eqref{eq:ch5_modal_gov}\), \(\eqref{eq:ch5_eigenvalue_vector}\), and \(\eqref{eq:ch5_modal_acceleration}\), we have

    \[ \begin{align} \label{eq:ch5_modal_gov3} \mathbf{M}\ddot{\mathbf{u}}+\mathbf{Ku}=(a\mathrm{sin}\omega t+b\mathrm{cos}\omega t)(-\omega^{2}\mathbf{M}+\mathbf{K}\mathbf{x})=(-\lambda\mathbf{M}\mathbf{x}+\mathbf{K}\mathbf{x})=0 \end{align} \]

    which simplifies

    \[ \mathbf{K}\mathbf{x}=\lambda\mathbf{M}\mathbf{x} \]

    which indicates that if factor \(\lambda(=\omega^{2})\) and vector \(\mathbf{x}\) satisfies equation \(\eqref{eq:ch5_modal_gov3}\), function \(\mathbf{u}(t)\) becomes the solution of equation \(\eqref{eq:ch5_modal_gov}\). The factor \(\lambda\) is called the eigenvalue, vector \(\mathbf{x}\) is called the eigenvector.

    Problem settings

    Equation \(\eqref{eq:ch5_modal_acceleration}\) can be expanded to calculate arbitrary order frequencies, which may appear at real engineering practices. To solve various physical problems, we assume the system is Hermitian(Matrix Symmetrical). Thus, a complex matrix can be transposed into a conjugate complex number and a real symmetric matrix. The relationship can be expressed by the equation below

    \[ k_{ij}=\bar{k}_{ji} \]

    In this manual, the matrix in modal analysis is assumed to be symmetrical and positive definite. A positively definite matrix always yields to positive eigenvalues. Thus a matrix in the modal system always satisfies the following equation

    \[ \mathbf{x}^{T}\mathbf{Ax}>0 \]

    Shifted inverse iteration method

    In the practical structural modal analysis, not all eigen values are required. There are many cases that some low order eigenvalues are sufficient for the engineering analysis. In the large scale problem that contains large sparse matrix, efficiently calculate the eigenvalues of the low order modes becomes important.

    When the lower limit of the eigenvalue is given, the equation \(\eqref{eq:ch5_modal_gov3}\) can be derived to:

    \[ \begin{align} \label{eq:ch5_modal_gov4} (\mathbf{K}-\sigma\mathbf{M})^{-1}\mathbf{M}\mathbf{x}=[1/(\lambda-\sigma)]\mathbf{x} \end{align} \]

    this formation of the equations has following advantages in numerical calculation:

    • The mode is reversed.
    • The eigenvalue around \mathbf{\sigma} is maximized.

    In the computing practice, the maximum eigenvalue may be calculated by first. For this reason, we use the equation \(\eqref{eq:ch5_modal_gov4}\) rather than equation \(\eqref{eq:ch5_modal_gov3}\) to calculate the eigenvalues around \sigma. This scheme is called the shifted inverse iteration.

    Lanczos method

    In the WELSIM application, the Lanczos method is applied to solve the eigenvalues. Lanczos method is a numerical method performing tridiagonalization of matrices. It has capabilities of :

    • an iterative method, has advantages in solving sparse matrices.
    • the algorithm is well structured with matrix and vector operations, and naturally fits for parallel computing.
    • is suitable for the geometric domain decomposition method (DDM) that is embedded finite element mesh.
    • calculate arbitrary number of the eigenvalues and modes.

    The Lanczos method calculates the base of partial spaces by creating orthogonal vectors from the initial vectors. This method has advantages of computation speed over the subspace method. However, Lanczos method is easily affected by numerical errors. It is essential to check the solution with the numerical errors.

    Geometric meaning in the lanczos method

    Based on equation \(\eqref{eq:ch5_modal_gov4}\), we define

    \[ \begin{align} \label{eq:ch5_modal_gov5} \begin{cases} \mathbf{A}=(\mathbf{K}-\sigma\mathbf{M})^{-1}\\{} [1/(\lambda-\sigma)]=\zeta \end{cases} \end{align} \]

    which can be rewritten to the following equation

    \[ \mathbf{Ax}=\zeta\mathbf{x} \]

    The algorithm of the Lanczos method is the Gram-Schmidt orthogonalization for column vectors. Those column vectors are also called the columns of Krylov, and the space created by this scheme is called the Krylov subspace. When the Gram-Schmidt orthogonalization is performed in this space, the vectors can be acquired using the two nearest vectors. This is called the principle of Lanczos.

    \ No newline at end of file + Modal analysis (eiginvalue) - WelSim Documentation

    Modal analysis

    Generalized eigenvalue problem

    When conducting a free oscillation analysis of the continuum, assuming no damping in the free vibration. The governing eqatuion is

    \[ \begin{align} \label{eq:ch5_modal_gov} \mathbf{M}\ddot{\mathbf{u}}+\mathbf{Ku}=0 \end{align} \]

    where \(\mathbf{u}\) is the generated displacement vector, \(\mathbf{M}\) is the mass matrix and \(\mathbf{K}\) is the stiffness matrix. The solution is assumed to

    \[ \begin{align} \label{eq:ch5_eigenvalue_vector} \mathbf{u}(t)=(asin\omega t+bcos\omega t)\mathbf{x} \end{align} \]

    where \(\omega\) is the natural angular frequency, \(a\) and \(b\) are the arbitrary constants. Herein, the second order differential of equation \(\eqref{eq:ch5_eigenvalue_vector}\) is

    \[ \begin{align} \label{eq:ch5_modal_acceleration} \ddot{\mathbf{u}}(t)=\omega(asin\omega t-bsin\omega t)\mathbf{x} \end{align} \]

    Combining equations \(\eqref{eq:ch5_modal_gov}\), \(\eqref{eq:ch5_eigenvalue_vector}\), and \(\eqref{eq:ch5_modal_acceleration}\), we have

    \[ \begin{align} \label{eq:ch5_modal_gov3} \mathbf{M}\ddot{\mathbf{u}}+\mathbf{Ku}=(a\mathrm{sin}\omega t+b\mathrm{cos}\omega t)(-\omega^{2}\mathbf{M}+\mathbf{K}\mathbf{x})=(-\lambda\mathbf{M}\mathbf{x}+\mathbf{K}\mathbf{x})=0 \end{align} \]

    which simplifies

    \[ \mathbf{K}\mathbf{x}=\lambda\mathbf{M}\mathbf{x} \]

    which indicates that if factor \(\lambda(=\omega^{2})\) and vector \(\mathbf{x}\) satisfies equation \(\eqref{eq:ch5_modal_gov3}\), function \(\mathbf{u}(t)\) becomes the solution of equation \(\eqref{eq:ch5_modal_gov}\). The factor \(\lambda\) is called the eigenvalue, vector \(\mathbf{x}\) is called the eigenvector.

    Problem settings

    Equation \(\eqref{eq:ch5_modal_acceleration}\) can be expanded to calculate arbitrary order frequencies, which may appear at real engineering practices. To solve various physical problems, we assume the system is Hermitian(Matrix Symmetrical). Thus, a complex matrix can be transposed into a conjugate complex number and a real symmetric matrix. The relationship can be expressed by the equation below

    \[ k_{ij}=\bar{k}_{ji} \]

    In this manual, the matrix in modal analysis is assumed to be symmetrical and positive definite. A positively definite matrix always yields to positive eigenvalues. Thus a matrix in the modal system always satisfies the following equation

    \[ \mathbf{x}^{T}\mathbf{Ax}>0 \]

    Shifted inverse iteration method

    In the practical structural modal analysis, not all eigen values are required. There are many cases that some low order eigenvalues are sufficient for the engineering analysis. In the large scale problem that contains large sparse matrix, efficiently calculate the eigenvalues of the low order modes becomes important.

    When the lower limit of the eigenvalue is given, the equation \(\eqref{eq:ch5_modal_gov3}\) can be derived to:

    \[ \begin{align} \label{eq:ch5_modal_gov4} (\mathbf{K}-\sigma\mathbf{M})^{-1}\mathbf{M}\mathbf{x}=[1/(\lambda-\sigma)]\mathbf{x} \end{align} \]

    this formation of the equations has following advantages in numerical calculation:

    • The mode is reversed.
    • The eigenvalue around \mathbf{\sigma} is maximized.

    In the computing practice, the maximum eigenvalue may be calculated by first. For this reason, we use the equation \(\eqref{eq:ch5_modal_gov4}\) rather than equation \(\eqref{eq:ch5_modal_gov3}\) to calculate the eigenvalues around \sigma. This scheme is called the shifted inverse iteration.

    Lanczos method

    In the WELSIM application, the Lanczos method is applied to solve the eigenvalues. Lanczos method is a numerical method performing tridiagonalization of matrices. It has capabilities of :

    • an iterative method, has advantages in solving sparse matrices.
    • the algorithm is well structured with matrix and vector operations, and naturally fits for parallel computing.
    • is suitable for the geometric domain decomposition method (DDM) that is embedded finite element mesh.
    • calculate arbitrary number of the eigenvalues and modes.

    The Lanczos method calculates the base of partial spaces by creating orthogonal vectors from the initial vectors. This method has advantages of computation speed over the subspace method. However, Lanczos method is easily affected by numerical errors. It is essential to check the solution with the numerical errors.

    Geometric meaning in the lanczos method

    Based on equation \(\eqref{eq:ch5_modal_gov4}\), we define

    \[ \begin{align} \label{eq:ch5_modal_gov5} \begin{cases} \mathbf{A}=(\mathbf{K}-\sigma\mathbf{M})^{-1}\\{} [1/(\lambda-\sigma)]=\zeta \end{cases} \end{align} \]

    which can be rewritten to the following equation

    \[ \mathbf{Ax}=\zeta\mathbf{x} \]

    The algorithm of the Lanczos method is the Gram-Schmidt orthogonalization for column vectors. Those column vectors are also called the columns of Krylov, and the space created by this scheme is called the Krylov subspace. When the Gram-Schmidt orthogonalization is performed in this space, the vectors can be acquired using the two nearest vectors. This is called the principle of Lanczos.

    \ No newline at end of file diff --git a/welsim/theory/shapefunction/index.html b/welsim/theory/shapefunction/index.html index 0b654d6..cd23eaf 100755 --- a/welsim/theory/shapefunction/index.html +++ b/welsim/theory/shapefunction/index.html @@ -1 +1 @@ - Shape functions - WelSim Documentation

    Shape functions

    This chapter describes the shape functions for the finite elements.

    Understanding shape function notations

    The notations used in shape functions are listed below:

    • u: displacement in x (or s) direction.
    • v: displacement in y (or t) direction.
    • w: displacement in z (or s) direction.
    • \(\theta_{x}\): Rotation about x direction.
    • \(\theta_{y}\): Rotation about y direction.
    • \(\theta_{z}\): Rotation about z direction.
    • \(A_{x}\): x-component of vector magnetic potential.
    • \(A_{y}\): y-component of vector magnetic potential.
    • \(A_{z}\): z-component of vector magnetic potential.
    • C: Concentration.
    • P: Pressure.
    • T: Temperature.
    • V: Electric potential or source current.
    • For the shell element, the u and v represent in-plane motions, and w denotes the out-of-plane motion.

    3D shell elements

    This section describes the shape functions for 3D shell elements that are applied in the WELSIM application.

    3-Node triangle

    The shape functions for the 3-node triangular shell elements are:

    \[ u=u_{0}L_{0}+u_{1}L_{1}+u_{2}L_{2} \]
    \[ v=v_{0}L_{0}+v_{1}L_{1}+v_{2}L_{2} \]
    \[ w=w_{0}L_{0}+w_{1}L_{1}+w_{2}L_{2} \]
    \[ A_{x}=A_{x0}L_{0}+A_{x1}L_{1}+A_{x2}L_{2} \]
    \[ A_{y}=A_{y0}L_{0}+A_{y1}L_{1}+A_{y2}L_{2} \]
    \[ A_{z}=A_{z0}L_{0}+A_{z1}L_{1}+A_{z2}L_{2} \]
    \[ T=T_{0}L_{0}+T_{1}L_{1}+T_{2}L_{2} \]
    \[ V=V_{0}L_{0}+V_{1}L_{1}+V_{2}L_{2} \]

    6-Node triangle

    The shape functions for the 6-node triangular shell elements are:

    \[ u=u_{0}(2L_{0}-1)L_{0}+u_{1}(2L_{1}-1)L_{1}+u_{2}(2L_{2}-1)L_{2}+u_{3}(4L_{0}L_{1})+u_{4}(4L_{1}L_{2})+u_{5}(4L_{2}L_{0}) \]
    \[ v=v_{0}(2L_{0}-1)L_{0}+v_{1}(2L_{1}-1)L_{1}+v_{2}(2L_{2}-1)L_{2}+v_{3}(4L_{0}L_{1})+v_{4}(4L_{1}L_{2})+v_{5}(4L_{2}L_{0}) \]
    \[ w=w_{0}(2L_{0}-1)L_{0}+w_{1}(2L_{1}-1)L_{1}+w_{2}(2L_{2}-1)L_{2}+w_{3}(4L_{0}L_{1})+w_{4}(4L_{1}L_{2})+w_{5}(4L_{2}L_{0}) \]

    3D solid elements

    This section describes the shape functions for the 3D solid elements that are applied in the WELSIM application.

    4-Node tetrahedra

    The 4-node tetrahedra is also called liner tetrahedra element. The shape functions are:

    \[ u=u_{0}L_{0}+u_{1}L_{1}+u_{2}L_{2}+u_{3}L_{3} \]
    \[ v=v_{0}L_{0}+v_{1}L_{1}+v_{2}L_{2}+v_{3}L_{3} \]
    \[ w=w_{0}L_{0}+w_{1}L_{1}+w_{2}L_{2}+w_{3}L_{3} \]

    10-Node tetrahedra

    The 10-node tetrahedra is also called bilinear tetrahedra element. The shape functions are:

    \[ u=u_{0}(2L_{0}-1)L_{0}+u_{1}(2L_{1}-1)L_{1}+u_{2}(2L_{2}-1)L_{2}+u_{3}(2L_{3}-1)L_{3}+4u_{4}L_{0}L_{1}+u_{5}L_{1}L_{2}+u_{6}L_{0}L_{2}+u_{7}L_{0}L_{3}+u_{8}L_{1}L_{3}+u_{9}L_{2}L_{3} \]
    \[ v=...\text{(analogous to u)} \]
    \[ w=...\text{(analogous to u)} \]
    \ No newline at end of file + Shape functions - WelSim Documentation

    Shape functions

    This chapter describes the shape functions for the finite elements.

    Understanding shape function notations

    The notations used in shape functions are listed below:

    • u: displacement in x (or s) direction.
    • v: displacement in y (or t) direction.
    • w: displacement in z (or s) direction.
    • \(\theta_{x}\): Rotation about x direction.
    • \(\theta_{y}\): Rotation about y direction.
    • \(\theta_{z}\): Rotation about z direction.
    • \(A_{x}\): x-component of vector magnetic potential.
    • \(A_{y}\): y-component of vector magnetic potential.
    • \(A_{z}\): z-component of vector magnetic potential.
    • C: Concentration.
    • P: Pressure.
    • T: Temperature.
    • V: Electric potential or source current.
    • For the shell element, the u and v represent in-plane motions, and w denotes the out-of-plane motion.

    3D shell elements

    This section describes the shape functions for 3D shell elements that are applied in the WELSIM application.

    3-Node triangle

    The shape functions for the 3-node triangular shell elements are:

    \[ u=u_{0}L_{0}+u_{1}L_{1}+u_{2}L_{2} \]
    \[ v=v_{0}L_{0}+v_{1}L_{1}+v_{2}L_{2} \]
    \[ w=w_{0}L_{0}+w_{1}L_{1}+w_{2}L_{2} \]
    \[ A_{x}=A_{x0}L_{0}+A_{x1}L_{1}+A_{x2}L_{2} \]
    \[ A_{y}=A_{y0}L_{0}+A_{y1}L_{1}+A_{y2}L_{2} \]
    \[ A_{z}=A_{z0}L_{0}+A_{z1}L_{1}+A_{z2}L_{2} \]
    \[ T=T_{0}L_{0}+T_{1}L_{1}+T_{2}L_{2} \]
    \[ V=V_{0}L_{0}+V_{1}L_{1}+V_{2}L_{2} \]

    6-Node triangle

    The shape functions for the 6-node triangular shell elements are:

    \[ u=u_{0}(2L_{0}-1)L_{0}+u_{1}(2L_{1}-1)L_{1}+u_{2}(2L_{2}-1)L_{2}+u_{3}(4L_{0}L_{1})+u_{4}(4L_{1}L_{2})+u_{5}(4L_{2}L_{0}) \]
    \[ v=v_{0}(2L_{0}-1)L_{0}+v_{1}(2L_{1}-1)L_{1}+v_{2}(2L_{2}-1)L_{2}+v_{3}(4L_{0}L_{1})+v_{4}(4L_{1}L_{2})+v_{5}(4L_{2}L_{0}) \]
    \[ w=w_{0}(2L_{0}-1)L_{0}+w_{1}(2L_{1}-1)L_{1}+w_{2}(2L_{2}-1)L_{2}+w_{3}(4L_{0}L_{1})+w_{4}(4L_{1}L_{2})+w_{5}(4L_{2}L_{0}) \]

    3D solid elements

    This section describes the shape functions for the 3D solid elements that are applied in the WELSIM application.

    4-Node tetrahedra

    The 4-node tetrahedra is also called liner tetrahedra element. The shape functions are:

    \[ u=u_{0}L_{0}+u_{1}L_{1}+u_{2}L_{2}+u_{3}L_{3} \]
    \[ v=v_{0}L_{0}+v_{1}L_{1}+v_{2}L_{2}+v_{3}L_{3} \]
    \[ w=w_{0}L_{0}+w_{1}L_{1}+w_{2}L_{2}+w_{3}L_{3} \]

    10-Node tetrahedra

    The 10-node tetrahedra is also called bilinear tetrahedra element. The shape functions are:

    \[ u=u_{0}(2L_{0}-1)L_{0}+u_{1}(2L_{1}-1)L_{1}+u_{2}(2L_{2}-1)L_{2}+u_{3}(2L_{3}-1)L_{3}+4u_{4}L_{0}L_{1}+u_{5}L_{1}L_{2}+u_{6}L_{0}L_{2}+u_{7}L_{0}L_{3}+u_{8}L_{1}L_{3}+u_{9}L_{2}L_{3} \]
    \[ v=...\text{(analogous to u)} \]
    \[ w=...\text{(analogous to u)} \]
    \ No newline at end of file diff --git a/welsim/theory/structures/index.html b/welsim/theory/structures/index.html index 41ad1ee..fd30c85 100755 --- a/welsim/theory/structures/index.html +++ b/welsim/theory/structures/index.html @@ -1 +1 @@ - Structures - WelSim Documentation

    Structures

    This section describes the mathematical and numerical theories used in this finite element analysis program. In the stress analysis of solids, the infinitesimal deformation linear elasticity static analysis method is discussed by first. The geometric nonlinearity and elastoplasticity are introduced to describe the finite deformation in solids.

    Infinitesimal deformation linear elasticity static analysis

    The infinitesimal deformation theory is the essential formulation for the linear elasticity, which assumes the stress-strain constitutive relation is linear. The equilibrium equation of solid mechanics, boundary conditions are given by the following equation.

    \[ \begin{align} \label{eq:ch5_equilibrium_eqn1} \nabla\cdot\mathbf{\sigma}+\mathbf{b}=0\quad\mathrm{in}V \end{align} \]
    \[ \begin{align} \label{eq:ch5_equilibrium_eqn2} \sigma\cdot\mathbf{n}=\mathbf{t}\quad\mathrm{on}\thinspace S_{t} \end{align} \]
    \[ \begin{align} \label{eq:ch5_equilibrium_eqn3} \mathbf{u}=\mathbf{u}_{0}\quad\mathrm{on}\thinspace S_{u} \end{align} \]

    where \(\sigma\) is the stress, \(\mathbf{t}\) is the surface force, \(\mathbf{b}\) is the body force, and S_{t} expresses the dynamic boundary and the \(S_{u}\) expresses the geometric boundary. The strain and displacement relation in the infinitesimal deformation is given

    \[ \epsilon=\nabla_{s}\mathbf{u} \]

    The stress and strain constitutive relation in the linear elastic body is given

    \[ \sigma=\mathbf{C}\colon\epsilon \]

    where \(\mathbf{C}\) is the fourth order elasticity tensor.

    Principle of virtual work

    The principle of the virtual work regarding the equilibrium equations \(\eqref{eq:ch5_equilibrium_eqn1}\), \(\eqref{eq:ch5_equilibrium_eqn2}\), and \(\eqref{eq:ch5_equilibrium_eqn3}\) is

    \[ \begin{align} \label{eq:ch5_equilibrium_virtual1} \int_{V}\sigma\colon\delta\epsilon dV=\int_{S_{t}}\mathbf{t}\cdot\delta\mathbf{u}dS+\int_{V}\mathbf{b}\cdot\delta\mathbf{u}dV \end{align} \]
    \[ \delta\mathbf{u}=0\quad\mathrm{on}\quad S_{u} \]

    which can be rewritten into

    \[ \begin{align} \label{eq:ch5_equilibrium_virtual2} \int_{V}(\mathbf{C}\colon\epsilon)\colon\delta\epsilon dV=\int_{S_{t}}\mathbf{t}\cdot\delta\mathbf{u}dS+\int_{V}\mathbf{b}\cdot\delta\mathbf{u}dV \end{align} \]

    where \(\epsilon\) is the strain tensor, \(\sigma\) is the stress tensor, and \(\mathbf{C}\) is the fourth order elasticity tensor. The strain tensor \(\epsilon\) and stress tensor \(\sigma\) can be rewritten into vector forms \(\hat{\epsilon}\) and \(\hat{\sigma}\), respectively. Then we have

    \[ \begin{align} \label{eq:ch4_theory_stress_strain_relation} \hat{\sigma}=\mathbf{D}\hat{\epsilon} \end{align} \]

    where \(\mathbf{D}\) is the elasticity matrix. Given the strain and stress in the vector form, we can rewrite the governing equation ([eq:ch5_equilibrium_virtual1]) into

    \[ \begin{align} \label{eq:ch5_equilibrium_virtual3} \int_{V}\hat{\epsilon}^{T}\mathbf{D}\delta\hat{\epsilon}dV=\int_{S_{t}}\delta\mathbf{u^{T}}\mathbf{t}dS+\int_{V}\delta\mathbf{u}^{T}\mathbf{b}dV \end{align} \]

    Equation ([eq:ch5_equilibrium_virtual3]) is the principles of the virtual work applied in this software program.

    Finite element formulation

    The principle governing equation ([eq:ch5_equilibrium_virtual3]) of the virtual work can be discreted for each finite element:

    \[ \begin{align} \label{eq:ch5_equilibrium_fe_form1} \sum_{e}\int_{V^{e}}\hat{\epsilon}^{T}\mathbf{D}\delta\hat{\epsilon}dV=\sum_{e}\int_{S_{t}^{e}}\delta\mathbf{u}^{T}\mathbf{t}dS+\sum_{e}\int_{V^{e}}\delta\mathbf{u}^{T}\mathbf{b}dV \end{align} \]

    where the displacement field is interpolated for each element

    \[ \begin{align} \label{eq:ch5_equilibrium_fe_form2} \mathbf{u}=\sum_{i=1}^{m}N_{i}\mathbf{u}_{i}=\mathbf{NU} \end{align} \]

    Similarly, the strain component can be expressed as

    \[ \begin{align} \label{eq:ch5_equilibrium_fe_form3} \hat{\epsilon}=\mathbf{BU} \end{align} \]

    Substituting equations \(\eqref{eq:ch5_equilibrium_fe_form2}\) and \(\eqref{eq:ch5_equilibrium_fe_form3}\) into \(\eqref{eq:ch5_equilibrium_fe_form1}\), we have

    \[ \begin{align} \label{eq:ch5_equilibrium_fe_form4} \sum_{e}\delta\mathbf{U}^{T}(\int_{V^{e}}\mathbf{B}^{T}\mathbf{DB}dV)\mathbf{U}=\sum_{e}\delta\mathbf{U}^{T}\cdot\int_{S_{t}^{e}}\mathbf{N}^{T}\mathbf{t}dS+\sum_{e}\delta\mathbf{U}^{T}\int_{V^{e}}\mathbf{N}^{T}\mathbf{b}dV \end{align} \]

    The equation above can be summarized as

    \[ \begin{align} \label{eq:ch5_equilibrium_fe_form5} \delta\mathbf{U}^{T}\mathbf{KU}=\delta\mathbf{U}^{T}\mathbf{F} \end{align} \]

    where

    \[ \begin{align} \label{eq:ch5_equilibrium_fe_form6} \mathbf{K}=\sum_{e}\int_{V^{e}}\mathbf{B}^{T}\mathbf{DB}dV \end{align} \]
    \[ \begin{align} \label{eq:ch5_equilibrium_fe_form7} \mathbf{F}=\sum\int_{S_{t}^{e}}\mathbf{N}^{T}\mathbf{t}dS+\int_{V^{e}}\mathbf{N}^{T}\mathbf{b}dV \end{align} \]

    The components of the matrix and vectors defined by equations \(\eqref{eq:ch5_equilibrium_fe_form6}\) and \(\eqref{eq:ch5_equilibrium_fe_form7}\) can be calculated for each finite element. For arbitrary virtual displacement \(\delta\mathbf{U}\), equation \(\eqref{eq:ch5_equilibrium_fe_form5}\) can be rewritten into

    \[ \mathbf{KU=F} \]
    \ No newline at end of file + Structures - WelSim Documentation

    Structures

    This section describes the mathematical and numerical theories used in this finite element analysis program. In the stress analysis of solids, the infinitesimal deformation linear elasticity static analysis method is discussed by first. The geometric nonlinearity and elastoplasticity are introduced to describe the finite deformation in solids.

    Infinitesimal deformation linear elasticity static analysis

    The infinitesimal deformation theory is the essential formulation for the linear elasticity, which assumes the stress-strain constitutive relation is linear. The equilibrium equation of solid mechanics, boundary conditions are given by the following equation.

    \[ \begin{align} \label{eq:ch5_equilibrium_eqn1} \nabla\cdot\mathbf{\sigma}+\mathbf{b}=0\quad\mathrm{in}V \end{align} \]
    \[ \begin{align} \label{eq:ch5_equilibrium_eqn2} \sigma\cdot\mathbf{n}=\mathbf{t}\quad\mathrm{on}\thinspace S_{t} \end{align} \]
    \[ \begin{align} \label{eq:ch5_equilibrium_eqn3} \mathbf{u}=\mathbf{u}_{0}\quad\mathrm{on}\thinspace S_{u} \end{align} \]

    where \(\sigma\) is the stress, \(\mathbf{t}\) is the surface force, \(\mathbf{b}\) is the body force, and S_{t} expresses the dynamic boundary and the \(S_{u}\) expresses the geometric boundary. The strain and displacement relation in the infinitesimal deformation is given

    \[ \epsilon=\nabla_{s}\mathbf{u} \]

    The stress and strain constitutive relation in the linear elastic body is given

    \[ \sigma=\mathbf{C}\colon\epsilon \]

    where \(\mathbf{C}\) is the fourth order elasticity tensor.

    Principle of virtual work

    The principle of the virtual work regarding the equilibrium equations \(\eqref{eq:ch5_equilibrium_eqn1}\), \(\eqref{eq:ch5_equilibrium_eqn2}\), and \(\eqref{eq:ch5_equilibrium_eqn3}\) is

    \[ \begin{align} \label{eq:ch5_equilibrium_virtual1} \int_{V}\sigma\colon\delta\epsilon dV=\int_{S_{t}}\mathbf{t}\cdot\delta\mathbf{u}dS+\int_{V}\mathbf{b}\cdot\delta\mathbf{u}dV \end{align} \]
    \[ \delta\mathbf{u}=0\quad\mathrm{on}\quad S_{u} \]

    which can be rewritten into

    \[ \begin{align} \label{eq:ch5_equilibrium_virtual2} \int_{V}(\mathbf{C}\colon\epsilon)\colon\delta\epsilon dV=\int_{S_{t}}\mathbf{t}\cdot\delta\mathbf{u}dS+\int_{V}\mathbf{b}\cdot\delta\mathbf{u}dV \end{align} \]

    where \(\epsilon\) is the strain tensor, \(\sigma\) is the stress tensor, and \(\mathbf{C}\) is the fourth order elasticity tensor. The strain tensor \(\epsilon\) and stress tensor \(\sigma\) can be rewritten into vector forms \(\hat{\epsilon}\) and \(\hat{\sigma}\), respectively. Then we have

    \[ \begin{align} \label{eq:ch4_theory_stress_strain_relation} \hat{\sigma}=\mathbf{D}\hat{\epsilon} \end{align} \]

    where \(\mathbf{D}\) is the elasticity matrix. Given the strain and stress in the vector form, we can rewrite the governing equation ([eq:ch5_equilibrium_virtual1]) into

    \[ \begin{align} \label{eq:ch5_equilibrium_virtual3} \int_{V}\hat{\epsilon}^{T}\mathbf{D}\delta\hat{\epsilon}dV=\int_{S_{t}}\delta\mathbf{u^{T}}\mathbf{t}dS+\int_{V}\delta\mathbf{u}^{T}\mathbf{b}dV \end{align} \]

    Equation ([eq:ch5_equilibrium_virtual3]) is the principles of the virtual work applied in this software program.

    Finite element formulation

    The principle governing equation ([eq:ch5_equilibrium_virtual3]) of the virtual work can be discreted for each finite element:

    \[ \begin{align} \label{eq:ch5_equilibrium_fe_form1} \sum_{e}\int_{V^{e}}\hat{\epsilon}^{T}\mathbf{D}\delta\hat{\epsilon}dV=\sum_{e}\int_{S_{t}^{e}}\delta\mathbf{u}^{T}\mathbf{t}dS+\sum_{e}\int_{V^{e}}\delta\mathbf{u}^{T}\mathbf{b}dV \end{align} \]

    where the displacement field is interpolated for each element

    \[ \begin{align} \label{eq:ch5_equilibrium_fe_form2} \mathbf{u}=\sum_{i=1}^{m}N_{i}\mathbf{u}_{i}=\mathbf{NU} \end{align} \]

    Similarly, the strain component can be expressed as

    \[ \begin{align} \label{eq:ch5_equilibrium_fe_form3} \hat{\epsilon}=\mathbf{BU} \end{align} \]

    Substituting equations \(\eqref{eq:ch5_equilibrium_fe_form2}\) and \(\eqref{eq:ch5_equilibrium_fe_form3}\) into \(\eqref{eq:ch5_equilibrium_fe_form1}\), we have

    \[ \begin{align} \label{eq:ch5_equilibrium_fe_form4} \sum_{e}\delta\mathbf{U}^{T}(\int_{V^{e}}\mathbf{B}^{T}\mathbf{DB}dV)\mathbf{U}=\sum_{e}\delta\mathbf{U}^{T}\cdot\int_{S_{t}^{e}}\mathbf{N}^{T}\mathbf{t}dS+\sum_{e}\delta\mathbf{U}^{T}\int_{V^{e}}\mathbf{N}^{T}\mathbf{b}dV \end{align} \]

    The equation above can be summarized as

    \[ \begin{align} \label{eq:ch5_equilibrium_fe_form5} \delta\mathbf{U}^{T}\mathbf{KU}=\delta\mathbf{U}^{T}\mathbf{F} \end{align} \]

    where

    \[ \begin{align} \label{eq:ch5_equilibrium_fe_form6} \mathbf{K}=\sum_{e}\int_{V^{e}}\mathbf{B}^{T}\mathbf{DB}dV \end{align} \]
    \[ \begin{align} \label{eq:ch5_equilibrium_fe_form7} \mathbf{F}=\sum\int_{S_{t}^{e}}\mathbf{N}^{T}\mathbf{t}dS+\int_{V^{e}}\mathbf{N}^{T}\mathbf{b}dV \end{align} \]

    The components of the matrix and vectors defined by equations \(\eqref{eq:ch5_equilibrium_fe_form6}\) and \(\eqref{eq:ch5_equilibrium_fe_form7}\) can be calculated for each finite element. For arbitrary virtual displacement \(\delta\mathbf{U}\), equation \(\eqref{eq:ch5_equilibrium_fe_form5}\) can be rewritten into

    \[ \mathbf{KU=F} \]
    \ No newline at end of file diff --git a/welsim/theory/thermal/index.html b/welsim/theory/thermal/index.html index 32ddf43..3f4ccf6 100755 --- a/welsim/theory/thermal/index.html +++ b/welsim/theory/thermal/index.html @@ -1 +1 @@ - Thermal analysis - WelSim Documentation

    Thermal analysis

    This section discuss the theories used in the WESLIM thermal analysis.

    Governing equations

    The governing equations applied in thermal analysis are:

    \[ \begin{align} \label{eq:ch5_thermal_gov} \rho c\frac{\partial T}{\partial t}=\nabla\cdot(k\nabla T) \end{align} \]

    where \(\rho=\rho(x)\) is mass density, \(c=c(x,T)\) is the specific heat, \(T=T(x,t)\) is the temperature, \(K=k(x,T)\) is the thermal conductivity, \(Q=Q(x,T,t)\) is the calorific value. \(x\) is the position in the modeling domain, \(T\) is the temperature and \(t\) is the time.

    The modeling domain is represented by S, and the boundary is represented by \(\varGamma\). When assuming the boundary conditions of either the Dirichlet or Neumann type, those boundary conditions can be mathematically expressed as

    \[ T=T_{1}(x,t) \qquad X\in\Gamma_{1} \]
    \[ k\frac{\partial T}{\partial n}=q(x,T,t) \qquad X\in\Gamma_{2} \]

    where the term \(T_{1}\), \(q\) is already known. \(q\) is the heat flux outflow from the boundary. Three types of heat flux can be considered in WELSIM thermal module.

    \[ q=-q_{s}+q_{c}+q_{r} \]
    \[ q_{s}=q_{s}(x,t) \]
    \[ q_{c}=hc(T-T_{c}) \]
    \[ q_{r}=hc(T^{4}-T_{r}^{4}) \]

    where \(q_{s}\) is the distributed heat flux, \(q_{c}\) is the heat flux by the convective heat transfer, and \(q_{r}\) is the heat flux by the radiant heat transfer. The other quantities are

    • \(T_{c}=T_{c}(x,t)\) Convective heat transfer coefficient ambient temperature
    • \(h_{c}=h_{c}(x,t)\) Convective heat transfer factor
    • \(T_{r}=T_{r}(x,t)\) Radiant heat transfer coefficient ambient temperature
    • \(h_{r}=\epsilon\sigma F=h_{r}(x,t)\) Radiant heat transfer factor. \(\epsilon\) is the radiant rate, \(\sigma\) is the Stefan-Boltzmann constant, \(F\) is the shape factor.

    Derivation of heat flow matrices

    When equation \(\eqref{eq:ch5_thermal_gov}\) is discreted by the Galerkin approximation, it becomes as follows,

    \[ \begin{align} \label{eq:ch5_thermal_gov2} [\mathbf{K}]\{T\}+[\mathbf{M}]\frac{\partial T}{\partial t}=\{F\} \end{align} \]

    where the matrices and vectors are

    \[ \begin{array}{ccc} [\mathbf{K}] & = & \int(k_{xx}\dfrac{\partial\{N\}^{T}}{\partial x}\dfrac{\partial\{N\}}{\partial x}+k_{yy}\dfrac{\partial\{N\}^{T}}{\partial y}\dfrac{\partial\{N\}}{\partial y}+k_{zz}\dfrac{\partial\{N\}^{T}}{\partial z}\dfrac{\partial\{N\}}{\partial z})dV\\ & + & \int h_{c}\{N\}^{T}\{N\}ds+\int h_{r}\{N\}^{T}\{N\}ds \end{array} \]
    \[ [\mathbf{M}]=\int\rho c\{N\}^{T}\{N\}dV \]
    \[ \{F\}=\int Q\{N\}^{T}dV-\int q_{s}\{N\}^{T}dS+\int h_{c}T_{c}\{N\}^{T}dS+\int h_{r}T_{r}(T+T_{r})(T^{2}+T_{r}^{2})\{N\}^{T}dS \]

    where shape function

    \[ \{N\}=(N^{1},N^{2},.......),\thinspace N_{i}=N_{i}(x) \]

    Equation \(\eqref{eq:ch5_thermal_gov2}\) is nonlinear and unsteady. When the time is discretized by the backward Euler's rule and the temperature at time t=t_{0} is known, the temperature at t=t_{0+\triangle t} is calculated using the following equation.

    \[ \begin{align} \label{eq:ch5_thermal_gov_disc1} [\mathbf{K}]_{t=t_{0+\triangle t}}\{T\}_{t=t_{0+\triangle t}}+[\mathbf{M}]_{t=t_{0+\triangle t}}\dfrac{\{T\}_{t=t_{0+\triangle t}}-\{T\}_{t=t_{0}}}{\triangle t}=\{F\}_{t=t_{0+\triangle t}} \end{align} \]

    The temperature vector can be expressed as

    \[ \begin{align} \label{eq:ch5_thermal_gov_disc2} \{T\}_{t=t_{0}+\triangle t}=\{T\}_{t=t_{0}+\triangle t}^{(i)}+\{\triangle T\}_{t=t_{0}+\triangle t}^{(i)} \end{align} \]

    The product of the heat conduction matrix and temperature vector, mass matrix and etc. are expressed in approximation as in the following equation.

    \[ \begin{align} \label{eq:ch5_thermal_gov_disc3} [\mathbf{K}]_{t=t_{0+\triangle t}}\{T\}_{t=t_{0+\triangle t}}\cong[\mathbf{K}]_{t=t_{0+\triangle t}}^{(i)}\{T\}_{t=t_{0+\triangle t}}^{(i)}+\dfrac{\partial[\mathbf{K}]_{t=t_{0+\triangle t}}^{(i)}\{T\}_{t=t_{0+\triangle t}}^{(i)}}{\partial\{T\}_{t=t_{0+\triangle t}}^{(i)}}\{\triangle T\}_{t=t_{0+\triangle t}}^{(i)} \end{align} \]
    \[ \begin{align} \label{eq:ch5_thermal_gov_disc4} [M]_{t=t_{0+\triangle t}}\cong[M]_{t=t_{0}+\triangle t}^{(i)}+\dfrac{\partial[M]_{t=t_{0}+\triangle t}^{(i)}}{\partial\{T\}_{t=t_{0+\triangle t}}^{\{i\}}}\{\triangle T\}_{t=t_{0+\triangle t}}^{(i)} \end{align} \]

    Substituting equations \(\eqref{eq:ch5_thermal_gov_disc2}\), \(\eqref{eq:ch5_thermal_gov_disc3}\), and \(\eqref{eq:ch5_thermal_gov_disc4}\) into equation \(\eqref{eq:ch5_thermal_gov_disc1}\) and skipping the high order polynomial terms, we have

    \[ (\dfrac{[\mathbf{M}]_{t=t_{0+\triangle t}}^{(i)}}{\triangle t}+\dfrac{\partial[\mathbf{M}]_{t=t_{0+\triangle t}}^{(i)}\{T\}_{t=t_{0}+\text{\triangle t}}^{(i)}}{\partial\{T\}_{t=t_{0}+\triangle t}^{(i)}}\dfrac{\{T\}_{t=t_{0}+\triangle t}^{(i)}-\{T\}_{t=t0}}{\triangle t}+\dfrac{\partial[\mathbf{K}]_{t=t_{0}+\triangle t}^{(i)}\{T\}_{t=t_{0}+\triangle t}^{(i)}}{\partial\{T\}_{t=t_{0}+\triangle t}^{(i)}})\{\triangle T\}_{t=t_{0}+\triangle t}^{(i)}\\=\{F\}_{t=t_{0}+\triangle t}-[\mathbf{M}]_{t=t_{0}+\triangle t}^{(i)}\dfrac{\{T\}_{t=t_{0}+\triangle t}^{(i)}-\{T\}_{t=t_{0}}}{\triangle t}-[\mathbf{K}]_{t=t_{0}+\triangle t}^{(i)}\{T\}_{t=t_{0}+\triangle t}^{(i)} \]

    Furthermore, an approximation evaluation for the left hand side factor is given below,

    \[ [\mathbf{K}^{*}]^{(i)}=\dfrac{[M]_{t=t_{0}+\triangle t}^{(i)}}{\triangle t}+\dfrac{\partial[\mathbf{K}]_{t=t_{0}+\triangle t}^{(t)}}{\partial\{T\}_{t=t_{0}+\triangle t}^{(i)}}\{T\}_{t=t_{0}+\triangle t}^{(i)}=\dfrac{[M]_{t=t_{0}+\triangle t}^{(i)}}{\triangle t}+[\mathbf{K}_{T}]_{t=t_{0}+\triangle t}^{(i)} \]

    where \([\mathbf{K}_{T}]_{t=t_{0}+\triangle t}^{(i)}\) tangent stiffness matrix.

    Eventually, the temperature at time \(t=t_{0}+\triangle t\) can be calculated by iterative solver using the following scheme:

    \[ \begin{array}{cc} [\mathbf{K}^{*}]^{(i)}\{T\}_{t=t_{0}+\triangle t}^{(i)}=\{F\}_{t=t_{0}+\triangle t}-[\mathbf{M}]_{t=t_{0}+\triangle t}^{(i)}\dfrac{\{T\}_{t=t_{0}+\triangle t}^{(i)}-\{T\}_{t=t_{0}}}{\triangle t}-[\mathbf{K}]_{t=t_{0}+\triangle t}^{(i)}\\ \{T\}_{t=t_{0}+\triangle t}^{(i+1)}=\{T\}_{t=t_{0}+\triangle t}^{(i)}+\{\triangle T\}_{t=t_{0}+\triangle t}^{(i)} \end{array} \]

    For the steady state analysis, the iteration algorithm is given below

    \[ \begin{array}{cc} [\mathbf{K}_{T}]^{(i)}\{\triangle T\}_{t=\infty}^{(i)}=\{F\}_{t=\infty}-[\mathbf{K}_{T}]^{(i)}\{\triangle T\}_{t=\infty}^{(i)}\\ \{T\}_{t=\infty}^{(i+1)}=\{T\}_{t=\infty}^{(i)}+\{\triangle T\}_{t=\infty}^{(i)} \end{array} \]

    Since the implicit time solver is applied in the program, the selection of incremental time \(\triangle t\) is relatively flexible. However, if the magnitude of \(\triangle t\) is too large, the convergence frequency will be decreased in the iterative computation. The program contains automatic incremental functions to monitor the size of the residual vectors during the iterations. As the convergence rate becomes slow, the incremental time \(\triangle t\) is automatically reduced. When the convergence rate becomes high, the program increases the incremental time \(\triangle t\). Doing this automatic scheme can improve the numerical performance and saving computational time.

    \ No newline at end of file + Thermal analysis - WelSim Documentation

    Thermal analysis

    This section discuss the theories used in the WESLIM thermal analysis.

    Governing equations

    The governing equations applied in thermal analysis are:

    \[ \begin{align} \label{eq:ch5_thermal_gov} \rho c\frac{\partial T}{\partial t}=\nabla\cdot(k\nabla T) \end{align} \]

    where \(\rho=\rho(x)\) is mass density, \(c=c(x,T)\) is the specific heat, \(T=T(x,t)\) is the temperature, \(K=k(x,T)\) is the thermal conductivity, \(Q=Q(x,T,t)\) is the calorific value. \(x\) is the position in the modeling domain, \(T\) is the temperature and \(t\) is the time.

    The modeling domain is represented by S, and the boundary is represented by \(\varGamma\). When assuming the boundary conditions of either the Dirichlet or Neumann type, those boundary conditions can be mathematically expressed as

    \[ T=T_{1}(x,t) \qquad X\in\Gamma_{1} \]
    \[ k\frac{\partial T}{\partial n}=q(x,T,t) \qquad X\in\Gamma_{2} \]

    where the term \(T_{1}\), \(q\) is already known. \(q\) is the heat flux outflow from the boundary. Three types of heat flux can be considered in WELSIM thermal module.

    \[ q=-q_{s}+q_{c}+q_{r} \]
    \[ q_{s}=q_{s}(x,t) \]
    \[ q_{c}=hc(T-T_{c}) \]
    \[ q_{r}=hc(T^{4}-T_{r}^{4}) \]

    where \(q_{s}\) is the distributed heat flux, \(q_{c}\) is the heat flux by the convective heat transfer, and \(q_{r}\) is the heat flux by the radiant heat transfer. The other quantities are

    • \(T_{c}=T_{c}(x,t)\) Convective heat transfer coefficient ambient temperature
    • \(h_{c}=h_{c}(x,t)\) Convective heat transfer factor
    • \(T_{r}=T_{r}(x,t)\) Radiant heat transfer coefficient ambient temperature
    • \(h_{r}=\epsilon\sigma F=h_{r}(x,t)\) Radiant heat transfer factor. \(\epsilon\) is the radiant rate, \(\sigma\) is the Stefan-Boltzmann constant, \(F\) is the shape factor.

    Derivation of heat flow matrices

    When equation \(\eqref{eq:ch5_thermal_gov}\) is discreted by the Galerkin approximation, it becomes as follows,

    \[ \begin{align} \label{eq:ch5_thermal_gov2} [\mathbf{K}]\{T\}+[\mathbf{M}]\frac{\partial T}{\partial t}=\{F\} \end{align} \]

    where the matrices and vectors are

    \[ \begin{array}{ccc} [\mathbf{K}] & = & \int(k_{xx}\dfrac{\partial\{N\}^{T}}{\partial x}\dfrac{\partial\{N\}}{\partial x}+k_{yy}\dfrac{\partial\{N\}^{T}}{\partial y}\dfrac{\partial\{N\}}{\partial y}+k_{zz}\dfrac{\partial\{N\}^{T}}{\partial z}\dfrac{\partial\{N\}}{\partial z})dV\\ & + & \int h_{c}\{N\}^{T}\{N\}ds+\int h_{r}\{N\}^{T}\{N\}ds \end{array} \]
    \[ [\mathbf{M}]=\int\rho c\{N\}^{T}\{N\}dV \]
    \[ \{F\}=\int Q\{N\}^{T}dV-\int q_{s}\{N\}^{T}dS+\int h_{c}T_{c}\{N\}^{T}dS+\int h_{r}T_{r}(T+T_{r})(T^{2}+T_{r}^{2})\{N\}^{T}dS \]

    where shape function

    \[ \{N\}=(N^{1},N^{2},.......),\thinspace N_{i}=N_{i}(x) \]

    Equation \(\eqref{eq:ch5_thermal_gov2}\) is nonlinear and unsteady. When the time is discretized by the backward Euler's rule and the temperature at time t=t_{0} is known, the temperature at t=t_{0+\triangle t} is calculated using the following equation.

    \[ \begin{align} \label{eq:ch5_thermal_gov_disc1} [\mathbf{K}]_{t=t_{0+\triangle t}}\{T\}_{t=t_{0+\triangle t}}+[\mathbf{M}]_{t=t_{0+\triangle t}}\dfrac{\{T\}_{t=t_{0+\triangle t}}-\{T\}_{t=t_{0}}}{\triangle t}=\{F\}_{t=t_{0+\triangle t}} \end{align} \]

    The temperature vector can be expressed as

    \[ \begin{align} \label{eq:ch5_thermal_gov_disc2} \{T\}_{t=t_{0}+\triangle t}=\{T\}_{t=t_{0}+\triangle t}^{(i)}+\{\triangle T\}_{t=t_{0}+\triangle t}^{(i)} \end{align} \]

    The product of the heat conduction matrix and temperature vector, mass matrix and etc. are expressed in approximation as in the following equation.

    \[ \begin{align} \label{eq:ch5_thermal_gov_disc3} [\mathbf{K}]_{t=t_{0+\triangle t}}\{T\}_{t=t_{0+\triangle t}}\cong[\mathbf{K}]_{t=t_{0+\triangle t}}^{(i)}\{T\}_{t=t_{0+\triangle t}}^{(i)}+\dfrac{\partial[\mathbf{K}]_{t=t_{0+\triangle t}}^{(i)}\{T\}_{t=t_{0+\triangle t}}^{(i)}}{\partial\{T\}_{t=t_{0+\triangle t}}^{(i)}}\{\triangle T\}_{t=t_{0+\triangle t}}^{(i)} \end{align} \]
    \[ \begin{align} \label{eq:ch5_thermal_gov_disc4} [M]_{t=t_{0+\triangle t}}\cong[M]_{t=t_{0}+\triangle t}^{(i)}+\dfrac{\partial[M]_{t=t_{0}+\triangle t}^{(i)}}{\partial\{T\}_{t=t_{0+\triangle t}}^{\{i\}}}\{\triangle T\}_{t=t_{0+\triangle t}}^{(i)} \end{align} \]

    Substituting equations \(\eqref{eq:ch5_thermal_gov_disc2}\), \(\eqref{eq:ch5_thermal_gov_disc3}\), and \(\eqref{eq:ch5_thermal_gov_disc4}\) into equation \(\eqref{eq:ch5_thermal_gov_disc1}\) and skipping the high order polynomial terms, we have

    \[ (\dfrac{[\mathbf{M}]_{t=t_{0+\triangle t}}^{(i)}}{\triangle t}+\dfrac{\partial[\mathbf{M}]_{t=t_{0+\triangle t}}^{(i)}\{T\}_{t=t_{0}+\text{\triangle t}}^{(i)}}{\partial\{T\}_{t=t_{0}+\triangle t}^{(i)}}\dfrac{\{T\}_{t=t_{0}+\triangle t}^{(i)}-\{T\}_{t=t0}}{\triangle t}+\dfrac{\partial[\mathbf{K}]_{t=t_{0}+\triangle t}^{(i)}\{T\}_{t=t_{0}+\triangle t}^{(i)}}{\partial\{T\}_{t=t_{0}+\triangle t}^{(i)}})\{\triangle T\}_{t=t_{0}+\triangle t}^{(i)}\\=\{F\}_{t=t_{0}+\triangle t}-[\mathbf{M}]_{t=t_{0}+\triangle t}^{(i)}\dfrac{\{T\}_{t=t_{0}+\triangle t}^{(i)}-\{T\}_{t=t_{0}}}{\triangle t}-[\mathbf{K}]_{t=t_{0}+\triangle t}^{(i)}\{T\}_{t=t_{0}+\triangle t}^{(i)} \]

    Furthermore, an approximation evaluation for the left hand side factor is given below,

    \[ [\mathbf{K}^{*}]^{(i)}=\dfrac{[M]_{t=t_{0}+\triangle t}^{(i)}}{\triangle t}+\dfrac{\partial[\mathbf{K}]_{t=t_{0}+\triangle t}^{(t)}}{\partial\{T\}_{t=t_{0}+\triangle t}^{(i)}}\{T\}_{t=t_{0}+\triangle t}^{(i)}=\dfrac{[M]_{t=t_{0}+\triangle t}^{(i)}}{\triangle t}+[\mathbf{K}_{T}]_{t=t_{0}+\triangle t}^{(i)} \]

    where \([\mathbf{K}_{T}]_{t=t_{0}+\triangle t}^{(i)}\) tangent stiffness matrix.

    Eventually, the temperature at time \(t=t_{0}+\triangle t\) can be calculated by iterative solver using the following scheme:

    \[ \begin{array}{cc} [\mathbf{K}^{*}]^{(i)}\{T\}_{t=t_{0}+\triangle t}^{(i)}=\{F\}_{t=t_{0}+\triangle t}-[\mathbf{M}]_{t=t_{0}+\triangle t}^{(i)}\dfrac{\{T\}_{t=t_{0}+\triangle t}^{(i)}-\{T\}_{t=t_{0}}}{\triangle t}-[\mathbf{K}]_{t=t_{0}+\triangle t}^{(i)}\\ \{T\}_{t=t_{0}+\triangle t}^{(i+1)}=\{T\}_{t=t_{0}+\triangle t}^{(i)}+\{\triangle T\}_{t=t_{0}+\triangle t}^{(i)} \end{array} \]

    For the steady state analysis, the iteration algorithm is given below

    \[ \begin{array}{cc} [\mathbf{K}_{T}]^{(i)}\{\triangle T\}_{t=\infty}^{(i)}=\{F\}_{t=\infty}-[\mathbf{K}_{T}]^{(i)}\{\triangle T\}_{t=\infty}^{(i)}\\ \{T\}_{t=\infty}^{(i+1)}=\{T\}_{t=\infty}^{(i)}+\{\triangle T\}_{t=\infty}^{(i)} \end{array} \]

    Since the implicit time solver is applied in the program, the selection of incremental time \(\triangle t\) is relatively flexible. However, if the magnitude of \(\triangle t\) is too large, the convergence frequency will be decreased in the iterative computation. The program contains automatic incremental functions to monitor the size of the residual vectors during the iterations. As the convergence rate becomes slow, the incremental time \(\triangle t\) is automatically reduced. When the convergence rate becomes high, the program increases the incremental time \(\triangle t\). Doing this automatic scheme can improve the numerical performance and saving computational time.

    \ No newline at end of file diff --git a/welsim/theory/transient/index.html b/welsim/theory/transient/index.html index 827a1b6..3236b95 100755 --- a/welsim/theory/transient/index.html +++ b/welsim/theory/transient/index.html @@ -1 +1 @@ - Structures with transient analysis - WelSim Documentation

    Structures with transient analysis

    The time integration method applied in structural transient analysis is described in the section.

    Formulation of implicit method

    In the direct time integration, the equation of motion can be expressed as follows

    \[ \begin{align} \label{eq:ch5_time_solver_imp1} \mathbf{M}(t+\triangle t)\ddot{\mathbf{U}}(t+\triangle t)+\mathbf{C}(t+\triangle t)\dot{\mathbf{U}}(t+\triangle t)+\mathbf{Q}(t+\triangle t)=\mathbf{F}(t+\triangle t) \end{align} \]

    where \(\mathbf{M}\) and \(\mathbf{C}\) is the mass matrix and damping matrix, respectively. The \(\mathbf{Q}\) and \(\mathbf{F}\) are the internal force vector, and external force vector, respectively. Note that, the mass density is consistent in the structural analysis, thus the mass matrix keep constants regardless of the deformation in non-linearity.

    In the Newmark-\(\beta\) method, the displacement, velocity, and acceleration at the each time incremental \(\triangle t\) are

    \[ \begin{align} \label{eq:ch5_time_solver_imp2} \dot{\mathbf{U}}(t+\triangle t)=\dfrac{\gamma}{\beta\triangle t}\triangle\mathbf{U}(t+\triangle t)-\dfrac{\gamma-\beta}{\beta}\dot{\mathbf{U}}(t)-\triangle t\dfrac{\gamma-2\beta}{2\beta}\ddot{\mathbf{U}}(t) \end{align} \]
    \[ \begin{align} \label{eq:ch5_time_solver_imp3} \ddot{\mathbf{U}}(t+\triangle t)=\dfrac{\text{1}}{\beta\triangle t^{2}}\triangle\mathbf{U}(t+\triangle t)-\dfrac{1}{\beta\triangle t}\dot{\mathbf{U}}(t)-\dfrac{1-2\beta}{2\beta}\ddot{\mathbf{U}}(t) \end{align} \]

    where \(\gamma\) and \(\beta\) are time solver parameters. Given the specific values, the numerical algorithm becomes linear acceleration method, or the trapezoid rule.

    \[ \gamma=\frac{1}{2},\thinspace\beta=\frac{1}{6},\quad\mathrm{Linear}\thinspace\mathrm{acceleration\thinspace\mathrm{method}} \]
    \[ \gamma=\frac{1}{2},\thinspace\beta=\frac{1}{4},\quad\mathrm{Trapezoid}\thinspace\mathrm{rule} \]

    substituting equations \(\eqref{eq:ch5_time_solver_imp2}\) and \(\eqref{eq:ch5_time_solver_imp3}\) into equation \(\eqref{eq:ch5_time_solver_imp1}\), the following equation can be acquired

    \[ \begin{array}{ccc} (\dfrac{1}{\beta\triangle t^{2}}\mathbf{M}+\dfrac{\gamma}{\beta\triangle t}\mathbf{C}+\mathbf{K})\triangle\mathbf{U}(t+\triangle t) & = & \mathbf{F}(t+\triangle t)-\mathbf{Q}(t+\triangle t)\\ & + & \dfrac{1}{\beta\triangle t}\mathbf{\mathbf{M}\dot{\mathbf{U}}}(t)+\dfrac{1-2\beta}{2\beta}\mathbf{M}\ddot{\mathbf{U}}(t)+\dfrac{\gamma-\beta}{\beta}\mathbf{C}\dot{\mathbf{U}}(t)\\ & + & \triangle t\dfrac{\gamma-2\beta}{2\beta}\mathbf{C}\ddot{\mathbf{U}}(t) \end{array} \]

    when we use linear stiffness matrix \(\mathbf{K}_{L}\) for a linear problem, the equation above becomes \(\mathbf{Q}(t+\triangle t)=\mathbf{K}_{L}\mathbf{U}(t+\triangle t)\). Substituting this term into the equation (), we have

    \[ \begin{array}{ccc} \{\mathbf{M}(-\dfrac{1}{(\triangle t)^{2}\beta}\mathbf{U}(t)-\dfrac{1}{(\triangle t)\beta}\dot{\mathbf{U}}(t)-\dfrac{1-2\beta}{2\beta}\ddot{\mathbf{U}}(t))\\ +\mathbf{C}(-\dfrac{\gamma}{(\triangle t)\beta}\mathbf{U}(t)+(1-\dfrac{\gamma}{\beta})\dot{\mathbf{U}}(t)+\triangle t\dfrac{2\beta-\gamma}{2\beta}\ddot{\mathbf{U}}(t))\}\\ +\{\dfrac{1}{(\triangle t)^{2}\beta}\mathbf{M}+\dfrac{\gamma}{(\triangle t)\beta}\mathbf{C}+\mathbf{K}_{L}\}\mathbf{U}(t+\triangle t) & = & \mathbf{F}(t+\triangle t) \end{array} \]

    In the analysis practice, the acceleration and velocity boundary conditions are imposed. Then the displacement of the following equation can be derived from equation \(\eqref{eq:ch5_time_solver_imp1}\).

    \[ u_{is}(t+\triangle t)=u_{is}(t)+\triangle t\dot{u}_{is}(t)+(\triangle t)^{2}(\frac{1}{2}-\beta)\ddot{u}_{is}(t+\triangle t) \]

    where \(u_{is}(t+\triangle t)\) is the nodal displacement at time \(t+\triangle t\), \(\dot{u}{}_{is}(t+\triangle t)\) is the nodal velocity, \(\ddot{u}{}_{is}(t+\triangle t)\) is the nodal acceleration, i is the degree of freedom per node, s is the node number.

    The mass and damping terms are treated as follows

    1. The lumped mass matrix is used at most of cases in this program.
    2. The damping matrix is treated using Rayleigh algorithm \(\mathbf{C}=R_{m}\mathbf{M}+R_{k}\mathbf{K}_{L}\).

    Formulation of explicit method

    This section discuss how the explicit time solver is formulation to solve the governing equation below

    \[ \begin{align} \label{eq:ch5_time_solver_exp1} \mathbf{M}\ddot{\mathbf{U}}(t)+\mathbf{C}\text{(t)}\dot{\mathbf{U}(t)+\mathbf{Q}(t)=\mathbf{F}(t)} \end{align} \]

    where the displacement at the time \(t+\triangle t\) and \(t-\triangle t\) can be expressed by the Taylor's expansion at time t with the second order truncation.

    \[ \begin{align} \label{eq:ch5_time_solver_exp2} \mathbf{U}(t+\triangle t)=\mathbf{U}(t)+\dot{\mathbf{U}}(t)(\triangle t)+\dfrac{1}{2!}\ddot{\mathbf{U}}(t)(\triangle t)^{2} \end{align} \]
    \[ \begin{align} \label{eq:ch5_time_solver_exp3} \mathbf{U}(t-\triangle t)=\mathbf{U}(t)-\dot{\mathbf{U}}(t)(\triangle t)+\dfrac{1}{2!}\ddot{\mathbf{U}}(t)(\triangle t)^{2} \end{align} \]

    Differentiating equations \(\eqref{eq:ch5_time_solver_exp2}\) and \(\eqref{eq:ch5_time_solver_exp3}\), we have

    \[ \begin{align} \label{eq:ch5_time_solver_exp4} \dot{\mathbf{U}}(t)=\dfrac{1}{2\triangle t}(\mathbf{U}(t+\triangle t)-\mathbf{U}(t-\triangle t)) \end{align} \]
    \[ \begin{align} \label{eq:ch5_time_solver_exp5} \ddot{\mathbf{U}}(t)=\dfrac{1}{(\triangle t)^{2}}(\mathbf{U}(t+\triangle t)-2\mathbf{U}(t)+\mathbf{U}(t-\triangle t)) \end{align} \]

    Substituting equations \(\eqref{eq:ch5_time_solver_exp4}\) and \(\eqref{eq:ch5_time_solver_exp5}\) into \(\eqref{eq:ch5_time_solver_exp1}\), we have

    \[ (\dfrac{1}{\triangle t^{2}}\mathbf{M}+\dfrac{1}{2\triangle t}\mathbf{C})\mathbf{U}(t+\triangle t)=\mathbf{F}(t)-\mathbf{Q}(t)-\dfrac{1}{\triangle t^{2}}\mathbf{M}[2\mathbf{U}(t)-\mathbf{U}(t-\triangle t)]-\dfrac{1}{2\triangle t}\mathbf{CU}(t-\triangle t) \]

    For the linear problem, we also have condition \(\mathbf{Q}(t)=\mathbf{K}_{L}\mathbf{U}(t)\) for equation. Finally, the displacement at \(t+\triangle t\) is:

    \[ \mathbf{U}(t+\triangle t)=\dfrac{1}{(\frac{1}{\triangle t^{2}}\mathbf{M}+\frac{1}{2\triangle t}\mathbf{C})}\{\mathbf{F}(t)-\mathbf{Q}(t)-\dfrac{1}{\triangle t^{2}}\mathbf{M}[2\mathbf{U}(t)-\mathbf{U}(t-\triangle t)]-\dfrac{1}{2\triangle t}\mathbf{C}(t-\triangle t)\mathbf{U}\} \]
    \ No newline at end of file + Structures with transient analysis - WelSim Documentation

    Structures with transient analysis

    The time integration method applied in structural transient analysis is described in the section.

    Formulation of implicit method

    In the direct time integration, the equation of motion can be expressed as follows

    \[ \begin{align} \label{eq:ch5_time_solver_imp1} \mathbf{M}(t+\triangle t)\ddot{\mathbf{U}}(t+\triangle t)+\mathbf{C}(t+\triangle t)\dot{\mathbf{U}}(t+\triangle t)+\mathbf{Q}(t+\triangle t)=\mathbf{F}(t+\triangle t) \end{align} \]

    where \(\mathbf{M}\) and \(\mathbf{C}\) is the mass matrix and damping matrix, respectively. The \(\mathbf{Q}\) and \(\mathbf{F}\) are the internal force vector, and external force vector, respectively. Note that, the mass density is consistent in the structural analysis, thus the mass matrix keep constants regardless of the deformation in non-linearity.

    In the Newmark-\(\beta\) method, the displacement, velocity, and acceleration at the each time incremental \(\triangle t\) are

    \[ \begin{align} \label{eq:ch5_time_solver_imp2} \dot{\mathbf{U}}(t+\triangle t)=\dfrac{\gamma}{\beta\triangle t}\triangle\mathbf{U}(t+\triangle t)-\dfrac{\gamma-\beta}{\beta}\dot{\mathbf{U}}(t)-\triangle t\dfrac{\gamma-2\beta}{2\beta}\ddot{\mathbf{U}}(t) \end{align} \]
    \[ \begin{align} \label{eq:ch5_time_solver_imp3} \ddot{\mathbf{U}}(t+\triangle t)=\dfrac{\text{1}}{\beta\triangle t^{2}}\triangle\mathbf{U}(t+\triangle t)-\dfrac{1}{\beta\triangle t}\dot{\mathbf{U}}(t)-\dfrac{1-2\beta}{2\beta}\ddot{\mathbf{U}}(t) \end{align} \]

    where \(\gamma\) and \(\beta\) are time solver parameters. Given the specific values, the numerical algorithm becomes linear acceleration method, or the trapezoid rule.

    \[ \gamma=\frac{1}{2},\thinspace\beta=\frac{1}{6},\quad\mathrm{Linear}\thinspace\mathrm{acceleration\thinspace\mathrm{method}} \]
    \[ \gamma=\frac{1}{2},\thinspace\beta=\frac{1}{4},\quad\mathrm{Trapezoid}\thinspace\mathrm{rule} \]

    substituting equations \(\eqref{eq:ch5_time_solver_imp2}\) and \(\eqref{eq:ch5_time_solver_imp3}\) into equation \(\eqref{eq:ch5_time_solver_imp1}\), the following equation can be acquired

    \[ \begin{array}{ccc} (\dfrac{1}{\beta\triangle t^{2}}\mathbf{M}+\dfrac{\gamma}{\beta\triangle t}\mathbf{C}+\mathbf{K})\triangle\mathbf{U}(t+\triangle t) & = & \mathbf{F}(t+\triangle t)-\mathbf{Q}(t+\triangle t)\\ & + & \dfrac{1}{\beta\triangle t}\mathbf{\mathbf{M}\dot{\mathbf{U}}}(t)+\dfrac{1-2\beta}{2\beta}\mathbf{M}\ddot{\mathbf{U}}(t)+\dfrac{\gamma-\beta}{\beta}\mathbf{C}\dot{\mathbf{U}}(t)\\ & + & \triangle t\dfrac{\gamma-2\beta}{2\beta}\mathbf{C}\ddot{\mathbf{U}}(t) \end{array} \]

    when we use linear stiffness matrix \(\mathbf{K}_{L}\) for a linear problem, the equation above becomes \(\mathbf{Q}(t+\triangle t)=\mathbf{K}_{L}\mathbf{U}(t+\triangle t)\). Substituting this term into the equation (), we have

    \[ \begin{array}{ccc} \{\mathbf{M}(-\dfrac{1}{(\triangle t)^{2}\beta}\mathbf{U}(t)-\dfrac{1}{(\triangle t)\beta}\dot{\mathbf{U}}(t)-\dfrac{1-2\beta}{2\beta}\ddot{\mathbf{U}}(t))\\ +\mathbf{C}(-\dfrac{\gamma}{(\triangle t)\beta}\mathbf{U}(t)+(1-\dfrac{\gamma}{\beta})\dot{\mathbf{U}}(t)+\triangle t\dfrac{2\beta-\gamma}{2\beta}\ddot{\mathbf{U}}(t))\}\\ +\{\dfrac{1}{(\triangle t)^{2}\beta}\mathbf{M}+\dfrac{\gamma}{(\triangle t)\beta}\mathbf{C}+\mathbf{K}_{L}\}\mathbf{U}(t+\triangle t) & = & \mathbf{F}(t+\triangle t) \end{array} \]

    In the analysis practice, the acceleration and velocity boundary conditions are imposed. Then the displacement of the following equation can be derived from equation \(\eqref{eq:ch5_time_solver_imp1}\).

    \[ u_{is}(t+\triangle t)=u_{is}(t)+\triangle t\dot{u}_{is}(t)+(\triangle t)^{2}(\frac{1}{2}-\beta)\ddot{u}_{is}(t+\triangle t) \]

    where \(u_{is}(t+\triangle t)\) is the nodal displacement at time \(t+\triangle t\), \(\dot{u}{}_{is}(t+\triangle t)\) is the nodal velocity, \(\ddot{u}{}_{is}(t+\triangle t)\) is the nodal acceleration, i is the degree of freedom per node, s is the node number.

    The mass and damping terms are treated as follows

    1. The lumped mass matrix is used at most of cases in this program.
    2. The damping matrix is treated using Rayleigh algorithm \(\mathbf{C}=R_{m}\mathbf{M}+R_{k}\mathbf{K}_{L}\).

    Formulation of explicit method

    This section discuss how the explicit time solver is formulation to solve the governing equation below

    \[ \begin{align} \label{eq:ch5_time_solver_exp1} \mathbf{M}\ddot{\mathbf{U}}(t)+\mathbf{C}\text{(t)}\dot{\mathbf{U}(t)+\mathbf{Q}(t)=\mathbf{F}(t)} \end{align} \]

    where the displacement at the time \(t+\triangle t\) and \(t-\triangle t\) can be expressed by the Taylor's expansion at time t with the second order truncation.

    \[ \begin{align} \label{eq:ch5_time_solver_exp2} \mathbf{U}(t+\triangle t)=\mathbf{U}(t)+\dot{\mathbf{U}}(t)(\triangle t)+\dfrac{1}{2!}\ddot{\mathbf{U}}(t)(\triangle t)^{2} \end{align} \]
    \[ \begin{align} \label{eq:ch5_time_solver_exp3} \mathbf{U}(t-\triangle t)=\mathbf{U}(t)-\dot{\mathbf{U}}(t)(\triangle t)+\dfrac{1}{2!}\ddot{\mathbf{U}}(t)(\triangle t)^{2} \end{align} \]

    Differentiating equations \(\eqref{eq:ch5_time_solver_exp2}\) and \(\eqref{eq:ch5_time_solver_exp3}\), we have

    \[ \begin{align} \label{eq:ch5_time_solver_exp4} \dot{\mathbf{U}}(t)=\dfrac{1}{2\triangle t}(\mathbf{U}(t+\triangle t)-\mathbf{U}(t-\triangle t)) \end{align} \]
    \[ \begin{align} \label{eq:ch5_time_solver_exp5} \ddot{\mathbf{U}}(t)=\dfrac{1}{(\triangle t)^{2}}(\mathbf{U}(t+\triangle t)-2\mathbf{U}(t)+\mathbf{U}(t-\triangle t)) \end{align} \]

    Substituting equations \(\eqref{eq:ch5_time_solver_exp4}\) and \(\eqref{eq:ch5_time_solver_exp5}\) into \(\eqref{eq:ch5_time_solver_exp1}\), we have

    \[ (\dfrac{1}{\triangle t^{2}}\mathbf{M}+\dfrac{1}{2\triangle t}\mathbf{C})\mathbf{U}(t+\triangle t)=\mathbf{F}(t)-\mathbf{Q}(t)-\dfrac{1}{\triangle t^{2}}\mathbf{M}[2\mathbf{U}(t)-\mathbf{U}(t-\triangle t)]-\dfrac{1}{2\triangle t}\mathbf{CU}(t-\triangle t) \]

    For the linear problem, we also have condition \(\mathbf{Q}(t)=\mathbf{K}_{L}\mathbf{U}(t)\) for equation. Finally, the displacement at \(t+\triangle t\) is:

    \[ \mathbf{U}(t+\triangle t)=\dfrac{1}{(\frac{1}{\triangle t^{2}}\mathbf{M}+\frac{1}{2\triangle t}\mathbf{C})}\{\mathbf{F}(t)-\mathbf{Q}(t)-\dfrac{1}{\triangle t^{2}}\mathbf{M}[2\mathbf{U}(t)-\mathbf{U}(t-\triangle t)]-\dfrac{1}{2\triangle t}\mathbf{C}(t-\triangle t)\mathbf{U}\} \]
    \ No newline at end of file diff --git a/welsim/troubleshooting/index.html b/welsim/troubleshooting/index.html index 8935191..32db1e3 100755 --- a/welsim/troubleshooting/index.html +++ b/welsim/troubleshooting/index.html @@ -1 +1 @@ - Troubleshooting - WelSim Documentation

    Troubleshooting

    If you encounter an issue that cannot be resolved here, please send the project file (*.wsdb and the associated folder), and the system information to info@welsim.com. Your computer information can be acquired by clicking About button on the toolbar.

    Graphical window issue

    The graphics window fails to display items, and the context is all black. The screen capture of this issue is shown in Figure [fig:ch6_issue_opengl].

    finite_element_analysis_welsim_troubleshooting_1

    • Cause: This issue is due to an unsupported graphics card or driver.

    • Solution: Set the environment variable QT_OPENGL=desktop then restart the WelSim application. The graphics window shall display the context correctly.

    \ No newline at end of file + Troubleshooting - WelSim Documentation

    Troubleshooting

    If you encounter an issue that cannot be resolved here, please send the project file (*.wsdb and the associated folder), and the system information to info@welsim.com. Your computer information can be acquired by clicking About button on the toolbar.

    Graphical window issue

    The graphics window fails to display items, and the context is all black. The screen capture of this issue is shown in Figure below.

    finite_element_analysis_welsim_troubleshooting_1

    • Cause: This issue is due to an unsupported graphics card or driver.

    • Solution: Set the environment variable QT_OPENGL=desktop then restart the WelSim application. The graphics window shall display the context correctly.

    Result data matching issue

    The result fails to display contours due to the dismatched mesh. The error message of this issue is shown in Figure below.

    finite_element_analysis_welsim_result_data_point_error1

    • Cause: This issue is due to dismatched data between result and mesh.

    • Solution: This could be a software defect, send the model to the info@welsim.com for investigation.

    \ No newline at end of file diff --git a/welsim/users/analysistypes/index.html b/welsim/users/analysistypes/index.html index 4912310..d6b415e 100755 --- a/welsim/users/analysistypes/index.html +++ b/welsim/users/analysistypes/index.html @@ -1 +1 @@ - Physics and analysis types - WelSim Documentation

    Physics and analysis types

    WELSIM supports several types of finite element analyses. This section describes those analysis types that you can perform in the WELSIM user interface.

    Static structural analysis

    As one of the most widely used analysis types, a static structural analysis discloses the structural displacements, stresses, strains, and forces caused by loads or other mechanical effects. In this static analysis, the constant loading and response are assumed.

    The static structural analysis can be either linear or nonlinear. The non-linearity can be introduced by the large deformations, in-elasticity, contact, hyperelasticity, etc. For the nonlinear problem, it is recommended to set multiple substeps in the Study Settings.

    Conducting a static structural analysis

    The following lists the general and specifics steps in conducting static structural analysis:

    1. Creating analysis environment: In the Properties View of the FEM Project object, set the Physics Type to Structural and Analysis Type to Static. Since the static structural analysis is the default analysis type, you do not need to change these properties if the analysis is newly created. See Creating Analysis Environment for details.

    2. Defining materials: The material properties can be either linear or nonlinear. You must define the sufficient properties that are required in the solving process. See Defining Materials for details.

    3. Specifying geometries: See Specifying Geometries for details.

    4. Defining part behaviors: The Structure Type property of the Part object determines the successive meshing and solving algorithms, the default setting is Solid. You need to change this property value accordingly if the geometry is Shell or other types. See Defining Part Behaviors for details.

    5. Setting bonnections: Optional. Contacts are supported in a static structural analysis. See Setting Connections for details.

    6. Applying mesh: It is recommended to generate Tet10 elements for Solid analysis and the Tri6 element for the Shell analysis. See Applying Mesh for details.

    7. Configuring study settings: You usually do not need to change these settings for simple linear analyses. For the complex analyses such as nonlinear models, the analysis controls you can tune: Step Controls in Study object, Substep Controls and Nonlinear Controls in Study Settings object. See Configuring Study Settings for details.

    8. Setting up boundary conditions: For a static structural analysis, the applicable boundary conditions are Fixed Supported, Fixed Rotation, Displacement, Force, and Pressure. The following body conditions are supported: Body Force, Acceleration, Earth Gravity, and Rotational Velocity. See Setting up Boundary Conditions for details.

    9. Solving: Output window continuously updates messages from the solvers and provides information on the numerical steps in solving the given problem. The convergence data is also explicitly shown in the Output window. See Solving for details.

    10. Evaluating results: For a static structural analysis, the applicable results are Deformations, Stresses, Strains, Rotations, Reaction Forces, and Reaction Moments. The Tabular Data and Chart windows display the maximum and minimum result values along the time/set number. See Evaluating Results for details.

    Transient structural analysis

    In the transient structural analysis, the dynamic response is updated and is a function of time. You can impose general time-dependent boundary conditions on the model and obtain the time-varying responded to these transient loads or constraints. The inertia or damping effects play important roles in this analysis type, if the inertia and damping effects are minimal, you could use the static analysis instead.

    The transient structural analysis can be either linear or nonlinear. The non-linearity can be introduced by the large deformations, inelasticity, contact, hyperelasticity, etc. For the nonlinear problem, it is recommended to set multiple substeps for each load step in the Study Settings.

    Conducting a transient structural analysis

    The following lists the general and specifics steps in conducting transient structural analysis:

    1. Creating analysis environment: In the Properties View of the FEM Project object, set the Physics Type to Structural and Analysis Type to Transient. You can choose either Implicit or Explicit time integration solver. See Creating Analysis Environment for details.

    2. Defining materials: The material properties can be either linear or nonlinear. You must define the sufficient properties that are required in the solving process. See Defining Materials for details.

    3. Specifying geometries: See Specifying Geometries for details.

    4. Defining part behaviors: The Structure Type property of the Part object determines the successive meshing and solving algorithms, and the default setting is Solid. You need to change this property value accordingly if the geometry is Shell or other types. See Defining Part Behaviors for details.

    5. Setting connections: Optional. Contacts are supported in a transient structural analysis. See Setting Connections for details.

    6. Applying mesh: It is recommended to generate Tet10 elements for Solid analysis and the Tri6 element for the Shell analysis. See Applying Mesh for details.

    7. Configuring study settings: You usually do not need to change these settings for simple linear analyses. For the complex analyses such as nonlinear models, the analysis controls you can tune are Step Controls in Study object, Substep Controls and Nonlinear Controls in Study Settings object. See Configuring Study Settings for details.

    8. Defining initial conditions: Optional. In the transient structural analysis, you can define the initial status of boundary and body conditions. The Initial Status property provides two options: None and Equal to Step 1. The default option None set the initial value to zero, the option Equal to Step 1 set the initial value to that of step 1. See Defining Initial Conditions for details.

    9. Setting up boundary conditions: For the transient structural analysis, the applicable boundary conditions are Fixed Supported, Fixed Rotation, Displacement, Force, Pressure, Velocity, and Acceleration. The following body conditions are supported: Body Force, Acceleration, Earth Gravity, and Rotational Velocity. See Setting up Boundary Conditions for details.

    10. Solving: Output window continuously updates messages from the solvers and provides information on the numerical steps in solving the given problem. The convergence data is also explicitly shown in the Output window. See Solving for details.

    11. Evaluating results: For the transient structural analysis, the applicable results are: Deformations, Stresses, Strains, Rotations, Reaction Forces, Reaction Moments, Velocity, and Acceleration. The Tabular Data and Chart windows display the maximum and minimum result values along the time/set number. See Evaluating Results for details.

    finite_element_analysis_welsim_structural_tran_prop

    The modal analysis investigates the vibration characteristics of a structure or component. You can obtain the natural frequencies and mode shapes, which serve as a starting pointing for dynamic analysis of the target structure.

    Conducting a modal structural analysis

    The following lists the general and specifics steps in conducting modal structural analysis:

    1. Creating analysis environment: From the properties view of FEM Project object, set the Physics Type to Structural and Analysis Type to Modal. See Creating Analysis Environment for details.

    2. Defining materials: The material properties can be either linear or nonlinear. However, the nonlinearity in the modal analysis is ignored due to the characteristics of eigen solver algorithms. You must define the sufficient properties that are required in the solving process. For example, the mass density parameter must be defined. See Defining Materials for details.

    3. Specifying geometries: See Specifying Geometries for details.

    4. Defining part behaviors: The Structure Type property of the Part object determines the successive meshing and solving algorithms, and the default setting is Solid. You need to change this property value accordingly if the geometry is Shell or other types. See Defining Part Behaviors for details.

    5. Setting connections: Optional. The Bonded Contacts are supported in a modal structural analysis. See Setting Connections for details.

    6. Applying mesh: It is recommended to generate the Tet10 elements for Solid analysis and the Tri6 element for the Shell analysis. See Applying Mesh for details.

    7. Configuring study settings: You typically do not need to change these settings for simple modal analyses. The default number of modes is 6, increasing this value yields to calculate more natural frequency modes, while it requires more computational resources. See Configuring Study Settings for details.

    8. Setting up boundary conditions: For the modal structural analysis, the applicable boundary conditions are Fixed Supported, Fixed Rotation, zero Displacement. The following body conditions are supported: Body Force, Acceleration, Earth Gravity, and Rotational Velocity. Note that only constraint-type boundaries are applicable in modal analysis. See Setting up Boundary Conditions for details.

    9. Solving: Output window continuously updates messages from the solvers and provides information on the numerical steps in solving the given problem. The convergence data is also explicitly shown in the Output window. See Solving for details.

    10. Evaluating results: For the modal structural analysis, the applicable results are Deformations, and Frequencies. Note that deformation results here are just relative quantities intended to show the shape modes. The Tabular Data and Chart windows display the frequencies and related mode numbers. See Evaluating Results for details.

    finite_element_analysis_welsim_modal_study_ana_prop

    Steady-state thermal analysis

    In the steady-state thermal analysis, you can determine the temperatures in objects that are impacted by the time-invariant thermal loads. Users are recommended to perform a steady-state analysis before conducting a transient study in a complex model.

    The static thermal analysis can be either linear or nonlinear. The nonlinearity can be introduced by the temperature-depend material properties, or radiation and convection coefficient. For the nonlinear problem, it is recommended to set multiple substeps in the Study Settings.

    Conducting a static structural analysis

    The following lists the general and specifics steps in conducting static structural analysis:

    1. Creating analysis environment: In the Properties View of the FEM Project object, set the Physics Type to Thermal and Analysis Type to Static. See Creating Analysis Environment for details.

    2. Defining materials: The material properties can be either linear or nonlinear. You must define the sufficient properties that are required in the solving process. See Defining Materials for details.

    3. Specifying geometries: See Specifying Geometries for details.

    4. Defining part behaviors: The Structure Type property of the Part object determines the successive meshing and solving algorithms, and the default setting is Solid. You need to change this property value accordingly if the geometry is Shell or other types. See Defining Part Behaviors for details.

    5. Setting connections: Optional. The steady-state thermal analysis supports the Bonded Contact. See Setting Connections for details.

    6. Applying mesh: It is recommended to generate the Tet10 elements for Solid analysis, and the Tri6 element for the Shell analysis. See Applying Mesh for details.

    7. Configuring study settings: You usually do not need to change these settings for simple linear analyses. For the complex analysis such as nonlinear models, the analysis controls you can tune are Step Controls in Study object, Substep Controls and Nonlinear Controls in Study Settings object. See Configuring Study Settings for details.

    8. Setting up boundary conditions: In the steady-state thermal analysis, the applicable boundary conditions are: Temperature, Heat Flux, Convection, and Radiation. See Setting up Boundary Conditions for details.

    9. Solving: Output window continuously updates messages from the solvers and provides information on the numerical steps in solving the given problem. The convergence data is also explicitly shown in the Output window. See Solving for details.

    10. Evaluating results: In steady-state thermal analysis, the applicable results are Temperature. The Tabular Data and Chart windows display the maximum and minimum result values along the time/set number. See Evaluating Results for details.

    Transient thermal analysis

    In the transient thermal analysis, you can obtain the temperatures of objects that vary over time. Many heat transfer applications such as coiling or quenching problems, and so on involve transient thermal analysis. The transient thermal analysis can be either linear or nonlinear. The nonlinearity can be introduced by the temperature-dependent material properties or convection and radiation boundary conditions. For the nonlinear problem, it is recommended to define multiple substeps for each load step in the Study Settings.

    Conducting a transient thermal analysis

    The following lists the general and specifics steps in conducting transient thermal analysis:

    1. Creating analysis environment: In the Properties View of the FEM Project object, set the Physics Type to Thermal and Analysis Type to Transient. See Creating Analysis Environment for details.

    2. Defining materials: The material properties can be either linear or nonlinear. You must define the sufficient properties that are required in the solving process. See Defining Materials for details.

    3. Specifying geometries: See Specifying Geometries for details.

    4. Defining part behaviors: The Structure Type property of the Part object determines the successive meshing and solving algorithms, and the default setting is Solid. You need to change this property value accordingly if the geometry is Shell or other types. See Defining Part Behaviors for details.

    5. Setting connections: Optional. In the transient thermal analysis, the Bonded Contact is supported. See Setting Connections for details.

    6. Applying mesh: It is recommended to generate the Tet10 elements for Solid analysis and the Tri6 element for the Shell analysis. See Applying Mesh for details.

    7. Configuring study settings: You usually do not need to change these settings for simple linear analyses. For the complex analysis such as nonlinear models, the analysis controls you can tune are Step Controls in Study object, Substep Controls and Nonlinear Controls in Study Settings object. See Configuring Study Settings for details.

    8. Setting up boundary conditions: In the transient thermal analysis, the applicable boundary conditions are: Temperature, Heat Flux, Convection, and Radiation. See Setting up Boundary Conditions for details.

    9. Defining initial conditions: You can define the global initial temperature condition for the analysis. In the transient thermal analysis, you can define the initial status of boundary and body conditions. The Initial Status property provides two options: None and Equal to Step 1. The default option None set the initial value to zero, the option Equal to Step 1 set the initial value to that of step 1. See Defining Initial Conditions for details.

    10. Solving: Output window continuously updates messages from the solvers and provides information on the numerical steps in solving the given problem. The convergence data is also explicitly shown in the Output window. See Solving for details.

    11. Evaluating results: In the transient thermal analysis, the applicable results are Temperature. The Tabular Data and Chart windows display the maximum and minimum result values along the time/set number. See Evaluating Results for details.

    ElectroStatic Analysis

    The electrostatic analysis can be applied to determine the distribution of electric potential in a conducting body under voltage or current conditions. You can obtain the solution results such as voltage, electric field, etc. The electrostatic analysis supports the single body analysis.

    An electrostatic analysis could be either linear or nonlinear. The electric field dependent material properties can introduce the nonlinearity. For the nonlinear problem, it is recommended to set multiple substeps in the Study Settings.

    Conducting an electrostatic analysis

    The following lists the general and specifics steps in conducting electrostatic analysis:

    1. Creating analysis environment: In the Properties View of the FEM Project object, set the Physics Type to Electromagnetic and Analysis Type to ElectroStatic. See Creating Analysis Environment for details.

    2. Defining materials: The material properties can be either linear or nonlinear. You must define the sufficient properties that are required in the solving process. See Defining Materials for details.

    3. Specifying geometries: See Specifying Geometries for details.

    4. Defining part behaviors: The Structure Type property of the Part object determines the successive meshing and solving algorithms, and the default setting is Solid. An electrostatic analysis only supports the Solid geometry type. See Defining Part Behaviors for details.

    5. Applying mesh: It is recommended to generate Tet10 elements for Solid analysis. See Applying Mesh for details.

    6. Configuring study settings: You usually do not need to change these settings for simple linear analyses. For the complex analysis such as nonlinear models, the analysis controls you can tune are Step Controls in Study object, Substep Controls and Nonlinear Controls in Study Settings object. See Configuring Study Settings for details.

    7. Setting up boundary conditions: In the electrostatic analysis, the applicable boundary conditions are Ground, Voltage, Symmetry, Zero Charge, Surface Charge Density, and Electric Displacement. See Setting up Boundary Conditions for details.

    8. Solving: Output window continuously updates messages from the solvers and provides information on the numerical steps in solving the given problem. The convergence data is also explicitly shown in the Output window. See Solving for details.

    9. Evaluating results: In the electrostatic analysis, the applicable results are Voltage, Electric Field, Electric Displacement, and Energy Density. The Tabular Data and Chart windows display the maximum and minimum result values along the time/set number. See Evaluating Results for details.

    MagnetoStatic analysis

    The magnetostatic analysis determines the magnetic field in and around a magnetic body.

    A magnetostatic analysis requires the medium such as air surrounding the geometry be included as part of the entire simulation domain. In many cases, the full model can be reduced to the symmetric model by applying a symmetric boundary condition on the symmetric surface.

    Conducting a magnetostatic analysis

    The following lists the general and specifics steps in conducting magnetostatic analysis:

    1. Creating analysis environment: In the Properties View of the FEM Project object, set the Physics Type to Electromagnetic and Analysis Type to MagnetoStatic. See Creating Analysis Environment for details.

    2. Defining materials: The material properties can be either linear or nonlinear. You must define the sufficient properties that are required in the solving process. See Defining Materials for details.

    3. Specifying geometries: See Specifying Geometries for details.

    4. Defining part behaviors: The Structure Type property of the Part object determines the successive meshing and solving algorithms, and the default setting is Solid. A magnetostatic analysis only supports the Solid geometry type. See Defining Part Behaviors for details.

    5. Applying mesh: It is recommended to generate the Tet10 elements for magnetostatic analysis. See Applying Mesh for details.

    6. Configuring study settings: You usually do not need to change these settings for simple linear analyses. For the complex analysis such as nonlinear models, the analysis controls you can tune are Step Controls in Study object, Substep Controls and Nonlinear Controls in Study Settings object. See Configuring Study Settings for details.

    7. Setting up boundary conditions: In the magnetostatic analysis, the applicable boundary conditions are Insulating, Symmetry, Magnetic Potential, and Magnetic Flux Density. See Setting up Boundary Conditions for details.

    8. Solving: Output window continuously updates messages from the solvers and provides information on the numerical steps in solving the given problem. The convergence data is also explicitly shown in the Output window. See Solving for details.

    9. Evaluating results: In the magnetostatic analysis, the applicable results are Magnetic Potential, Magnetic Field, Magnetic Induction Field, and Energy Density. The Tabular Data and Chart windows display the maximum and minimum result values along the time/set number. See Evaluating Results for details.

    finite_element_analysis_welsim_mat_ui_lib

    finite_element_analysis_welsim_mat_ui_build

    The following describes the widget components in the material editor interface:

    • Library Outline Tab: Display the available pre-defined material data for you to select. All materials are classified into several categories including General Materials, Nonlinear Materials, Hyperelastic Materials, Thermal Materials, Electromagnetic Materials, and Acoustic Materials.

    • Build Outline Tab: Display the available properties for you to add to the material. All properties are classified into several categories including Baisc, Linear Elastic, Hyper-elastic, Plastic, Creep, Visco-elastic, and Electromagnetic. The toggled properties are added to the material data and shown in the Property Pane.

    • Material Properties View Pane: Displays the properties of the selected properties items. You can modify the values of the properties. Click OK button to close the spreadsheet and save the material data into the Material Object.

    Library outline tab

    The Library Outline Tab shows an outline of the contents of the selectable material sources. You can directly load a material data from this pre-defined source by one of the methods below:

    • Double click a material entry.
    • Select a material entry, and press the Import button.
    \ No newline at end of file + Physics and analysis types - WelSim Documentation

    Physics and analysis types

    WELSIM supports several types of finite element analyses. This section describes those analysis types that you can perform in the WELSIM user interface.

    Static structural analysis

    As one of the most widely used analysis types, a static structural analysis discloses the structural displacements, stresses, strains, and forces caused by loads or other mechanical effects. In this static analysis, the constant loading and response are assumed.

    The static structural analysis can be either linear or nonlinear. The non-linearity can be introduced by the large deformations, in-elasticity, contact, hyperelasticity, etc. For the nonlinear problem, it is recommended to set multiple substeps in the Study Settings.

    Conducting a static structural analysis

    The following lists the general and specifics steps in conducting static structural analysis:

    1. Creating analysis environment: In the Properties View of the FEM Project object, set the Physics Type to Structural and Analysis Type to Static. Since the static structural analysis is the default analysis type, you do not need to change these properties if the analysis is newly created. See Creating Analysis Environment for details.

    2. Defining materials: The material properties can be either linear or nonlinear. You must define the sufficient properties that are required in the solving process. See Defining Materials for details.

    3. Specifying geometries: See Specifying Geometries for details.

    4. Defining part behaviors: The Structure Type property of the Part object determines the successive meshing and solving algorithms, the default setting is Solid. You need to change this property value accordingly if the geometry is Shell or other types. See Defining Part Behaviors for details.

    5. Setting bonnections: Optional. Contacts are supported in a static structural analysis. See Setting Connections for details.

    6. Applying mesh: It is recommended to generate Tet10 elements for Solid analysis and the Tri6 element for the Shell analysis. See Applying Mesh for details.

    7. Configuring study settings: You usually do not need to change these settings for simple linear analyses. For the complex analyses such as nonlinear models, the analysis controls you can tune: Step Controls in Study object, Substep Controls and Nonlinear Controls in Study Settings object. See Configuring Study Settings for details.

    8. Setting up boundary conditions: For a static structural analysis, the applicable boundary conditions are Fixed Supported, Fixed Rotation, Displacement, Force, and Pressure. The following body conditions are supported: Body Force, Acceleration, Earth Gravity, and Rotational Velocity. See Setting up Boundary Conditions for details.

    9. Solving: Output window continuously updates messages from the solvers and provides information on the numerical steps in solving the given problem. The convergence data is also explicitly shown in the Output window. See Solving for details.

    10. Evaluating results: For a static structural analysis, the applicable results are Deformations, Stresses, Strains, Rotations, Reaction Forces, and Reaction Moments. The Tabular Data and Chart windows display the maximum and minimum result values along the time/set number. See Evaluating Results for details.

    Transient structural analysis

    In the transient structural analysis, the dynamic response is updated and is a function of time. You can impose general time-dependent boundary conditions on the model and obtain the time-varying responded to these transient loads or constraints. The inertia or damping effects play important roles in this analysis type, if the inertia and damping effects are minimal, you could use the static analysis instead.

    The transient structural analysis can be either linear or nonlinear. The non-linearity can be introduced by the large deformations, inelasticity, contact, hyperelasticity, etc. For the nonlinear problem, it is recommended to set multiple substeps for each load step in the Study Settings.

    Conducting a transient structural analysis

    The following lists the general and specifics steps in conducting transient structural analysis:

    1. Creating analysis environment: In the Properties View of the FEM Project object, set the Physics Type to Structural and Analysis Type to Transient. You can choose either Implicit or Explicit time integration solver. See Creating Analysis Environment for details.

    2. Defining materials: The material properties can be either linear or nonlinear. You must define the sufficient properties that are required in the solving process. See Defining Materials for details.

    3. Specifying geometries: See Specifying Geometries for details.

    4. Defining part behaviors: The Structure Type property of the Part object determines the successive meshing and solving algorithms, and the default setting is Solid. You need to change this property value accordingly if the geometry is Shell or other types. See Defining Part Behaviors for details.

    5. Setting connections: Optional. Contacts are supported in a transient structural analysis. See Setting Connections for details.

    6. Applying mesh: It is recommended to generate Tet10 elements for Solid analysis and the Tri6 element for the Shell analysis. See Applying Mesh for details.

    7. Configuring study settings: You usually do not need to change these settings for simple linear analyses. For the complex analyses such as nonlinear models, the analysis controls you can tune are Step Controls in Study object, Substep Controls and Nonlinear Controls in Study Settings object. See Configuring Study Settings for details.

    8. Defining initial conditions: Optional. In the transient structural analysis, you can define the initial status of boundary and body conditions. The Initial Status property provides two options: None and Equal to Step 1. The default option None set the initial value to zero, the option Equal to Step 1 set the initial value to that of step 1. See Defining Initial Conditions for details.

    9. Setting up boundary conditions: For the transient structural analysis, the applicable boundary conditions are Fixed Supported, Fixed Rotation, Displacement, Force, Pressure, Velocity, and Acceleration. The following body conditions are supported: Body Force, Acceleration, Earth Gravity, and Rotational Velocity. See Setting up Boundary Conditions for details.

    10. Solving: Output window continuously updates messages from the solvers and provides information on the numerical steps in solving the given problem. The convergence data is also explicitly shown in the Output window. See Solving for details.

    11. Evaluating results: For the transient structural analysis, the applicable results are: Deformations, Stresses, Strains, Rotations, Reaction Forces, Reaction Moments, Velocity, and Acceleration. The Tabular Data and Chart windows display the maximum and minimum result values along the time/set number. See Evaluating Results for details.

    finite_element_analysis_welsim_structural_tran_prop

    The modal analysis investigates the vibration characteristics of a structure or component. You can obtain the natural frequencies and mode shapes, which serve as a starting pointing for dynamic analysis of the target structure.

    Conducting a modal structural analysis

    The following lists the general and specifics steps in conducting modal structural analysis:

    1. Creating analysis environment: From the properties view of FEM Project object, set the Physics Type to Structural and Analysis Type to Modal. See Creating Analysis Environment for details.

    2. Defining materials: The material properties can be either linear or nonlinear. However, the nonlinearity in the modal analysis is ignored due to the characteristics of eigen solver algorithms. You must define the sufficient properties that are required in the solving process. For example, the mass density parameter must be defined. See Defining Materials for details.

    3. Specifying geometries: See Specifying Geometries for details.

    4. Defining part behaviors: The Structure Type property of the Part object determines the successive meshing and solving algorithms, and the default setting is Solid. You need to change this property value accordingly if the geometry is Shell or other types. See Defining Part Behaviors for details.

    5. Setting connections: Optional. The Bonded Contacts are supported in a modal structural analysis. See Setting Connections for details.

    6. Applying mesh: It is recommended to generate the Tet10 elements for Solid analysis and the Tri6 element for the Shell analysis. See Applying Mesh for details.

    7. Configuring study settings: You typically do not need to change these settings for simple modal analyses. The default number of modes is 6, increasing this value yields to calculate more natural frequency modes, while it requires more computational resources. See Configuring Study Settings for details.

    8. Setting up boundary conditions: For the modal structural analysis, the applicable boundary conditions are Fixed Supported, Fixed Rotation, zero Displacement. The following body conditions are supported: Body Force, Acceleration, Earth Gravity, and Rotational Velocity. Note that only constraint-type boundaries are applicable in modal analysis. See Setting up Boundary Conditions for details.

    9. Solving: Output window continuously updates messages from the solvers and provides information on the numerical steps in solving the given problem. The convergence data is also explicitly shown in the Output window. See Solving for details.

    10. Evaluating results: For the modal structural analysis, the applicable results are Deformations, and Frequencies. Note that deformation results here are just relative quantities intended to show the shape modes. The Tabular Data and Chart windows display the frequencies and related mode numbers. See Evaluating Results for details.

    finite_element_analysis_welsim_modal_study_ana_prop

    Steady-state thermal analysis

    In the steady-state thermal analysis, you can determine the temperatures in objects that are impacted by the time-invariant thermal loads. Users are recommended to perform a steady-state analysis before conducting a transient study in a complex model.

    The static thermal analysis can be either linear or nonlinear. The nonlinearity can be introduced by the temperature-depend material properties, or radiation and convection coefficient. For the nonlinear problem, it is recommended to set multiple substeps in the Study Settings.

    Conducting a static structural analysis

    The following lists the general and specifics steps in conducting static structural analysis:

    1. Creating analysis environment: In the Properties View of the FEM Project object, set the Physics Type to Thermal and Analysis Type to Static. See Creating Analysis Environment for details.

    2. Defining materials: The material properties can be either linear or nonlinear. You must define the sufficient properties that are required in the solving process. See Defining Materials for details.

    3. Specifying geometries: See Specifying Geometries for details.

    4. Defining part behaviors: The Structure Type property of the Part object determines the successive meshing and solving algorithms, and the default setting is Solid. You need to change this property value accordingly if the geometry is Shell or other types. See Defining Part Behaviors for details.

    5. Setting connections: Optional. The steady-state thermal analysis supports the Bonded Contact. See Setting Connections for details.

    6. Applying mesh: It is recommended to generate the Tet10 elements for Solid analysis, and the Tri6 element for the Shell analysis. See Applying Mesh for details.

    7. Configuring study settings: You usually do not need to change these settings for simple linear analyses. For the complex analysis such as nonlinear models, the analysis controls you can tune are Step Controls in Study object, Substep Controls and Nonlinear Controls in Study Settings object. See Configuring Study Settings for details.

    8. Setting up boundary conditions: In the steady-state thermal analysis, the applicable boundary conditions are: Temperature, Heat Flux, Convection, and Radiation. See Setting up Boundary Conditions for details.

    9. Solving: Output window continuously updates messages from the solvers and provides information on the numerical steps in solving the given problem. The convergence data is also explicitly shown in the Output window. See Solving for details.

    10. Evaluating results: In steady-state thermal analysis, the applicable results are Temperature. The Tabular Data and Chart windows display the maximum and minimum result values along the time/set number. See Evaluating Results for details.

    Transient thermal analysis

    In the transient thermal analysis, you can obtain the temperatures of objects that vary over time. Many heat transfer applications such as coiling or quenching problems, and so on involve transient thermal analysis. The transient thermal analysis can be either linear or nonlinear. The nonlinearity can be introduced by the temperature-dependent material properties or convection and radiation boundary conditions. For the nonlinear problem, it is recommended to define multiple substeps for each load step in the Study Settings.

    Conducting a transient thermal analysis

    The following lists the general and specifics steps in conducting transient thermal analysis:

    1. Creating analysis environment: In the Properties View of the FEM Project object, set the Physics Type to Thermal and Analysis Type to Transient. See Creating Analysis Environment for details.

    2. Defining materials: The material properties can be either linear or nonlinear. You must define the sufficient properties that are required in the solving process. See Defining Materials for details.

    3. Specifying geometries: See Specifying Geometries for details.

    4. Defining part behaviors: The Structure Type property of the Part object determines the successive meshing and solving algorithms, and the default setting is Solid. You need to change this property value accordingly if the geometry is Shell or other types. See Defining Part Behaviors for details.

    5. Setting connections: Optional. In the transient thermal analysis, the Bonded Contact is supported. See Setting Connections for details.

    6. Applying mesh: It is recommended to generate the Tet10 elements for Solid analysis and the Tri6 element for the Shell analysis. See Applying Mesh for details.

    7. Configuring study settings: You usually do not need to change these settings for simple linear analyses. For the complex analysis such as nonlinear models, the analysis controls you can tune are Step Controls in Study object, Substep Controls and Nonlinear Controls in Study Settings object. See Configuring Study Settings for details.

    8. Setting up boundary conditions: In the transient thermal analysis, the applicable boundary conditions are: Temperature, Heat Flux, Convection, and Radiation. See Setting up Boundary Conditions for details.

    9. Defining initial conditions: You can define the global initial temperature condition for the analysis. In the transient thermal analysis, you can define the initial status of boundary and body conditions. The Initial Status property provides two options: None and Equal to Step 1. The default option None set the initial value to zero, the option Equal to Step 1 set the initial value to that of step 1. See Defining Initial Conditions for details.

    10. Solving: Output window continuously updates messages from the solvers and provides information on the numerical steps in solving the given problem. The convergence data is also explicitly shown in the Output window. See Solving for details.

    11. Evaluating results: In the transient thermal analysis, the applicable results are Temperature. The Tabular Data and Chart windows display the maximum and minimum result values along the time/set number. See Evaluating Results for details.

    ElectroStatic Analysis

    The electrostatic analysis can be applied to determine the distribution of electric potential in a conducting body under voltage or current conditions. You can obtain the solution results such as voltage, electric field, etc. The electrostatic analysis supports the single body analysis.

    An electrostatic analysis could be either linear or nonlinear. The electric field dependent material properties can introduce the nonlinearity. For the nonlinear problem, it is recommended to set multiple substeps in the Study Settings.

    Conducting an electrostatic analysis

    The following lists the general and specifics steps in conducting electrostatic analysis:

    1. Creating analysis environment: In the Properties View of the FEM Project object, set the Physics Type to Electromagnetic and Analysis Type to ElectroStatic. See Creating Analysis Environment for details.

    2. Defining materials: The material properties can be either linear or nonlinear. You must define the sufficient properties that are required in the solving process. See Defining Materials for details.

    3. Specifying geometries: See Specifying Geometries for details.

    4. Defining part behaviors: The Structure Type property of the Part object determines the successive meshing and solving algorithms, and the default setting is Solid. An electrostatic analysis only supports the Solid geometry type. See Defining Part Behaviors for details.

    5. Applying mesh: It is recommended to generate Tet10 elements for Solid analysis. See Applying Mesh for details.

    6. Configuring study settings: You usually do not need to change these settings for simple linear analyses. For the complex analysis such as nonlinear models, the analysis controls you can tune are Step Controls in Study object, Substep Controls and Nonlinear Controls in Study Settings object. See Configuring Study Settings for details.

    7. Setting up boundary conditions: In the electrostatic analysis, the applicable boundary conditions are Ground, Voltage, Symmetry, Zero Charge, Surface Charge Density, and Electric Displacement. See Setting up Boundary Conditions for details.

    8. Solving: Output window continuously updates messages from the solvers and provides information on the numerical steps in solving the given problem. The convergence data is also explicitly shown in the Output window. See Solving for details.

    9. Evaluating results: In the electrostatic analysis, the applicable results are Voltage, Electric Field, Electric Displacement, and Energy Density. The Tabular Data and Chart windows display the maximum and minimum result values along the time/set number. See Evaluating Results for details.

    MagnetoStatic analysis

    The magnetostatic analysis determines the magnetic field in and around a magnetic body.

    A magnetostatic analysis requires the medium such as air surrounding the geometry be included as part of the entire simulation domain. In many cases, the full model can be reduced to the symmetric model by applying a symmetric boundary condition on the symmetric surface.

    Conducting a magnetostatic analysis

    The following lists the general and specifics steps in conducting magnetostatic analysis:

    1. Creating analysis environment: In the Properties View of the FEM Project object, set the Physics Type to Electromagnetic and Analysis Type to MagnetoStatic. See Creating Analysis Environment for details.

    2. Defining materials: The material properties can be either linear or nonlinear. You must define the sufficient properties that are required in the solving process. See Defining Materials for details.

    3. Specifying geometries: See Specifying Geometries for details.

    4. Defining part behaviors: The Structure Type property of the Part object determines the successive meshing and solving algorithms, and the default setting is Solid. A magnetostatic analysis only supports the Solid geometry type. See Defining Part Behaviors for details.

    5. Applying mesh: It is recommended to generate the Tet10 elements for magnetostatic analysis. See Applying Mesh for details.

    6. Configuring study settings: You usually do not need to change these settings for simple linear analyses. For the complex analysis such as nonlinear models, the analysis controls you can tune are Step Controls in Study object, Substep Controls and Nonlinear Controls in Study Settings object. See Configuring Study Settings for details.

    7. Setting up boundary conditions: In the magnetostatic analysis, the applicable boundary conditions are Insulating, Symmetry, Magnetic Potential, and Magnetic Flux Density. See Setting up Boundary Conditions for details.

    8. Solving: Output window continuously updates messages from the solvers and provides information on the numerical steps in solving the given problem. The convergence data is also explicitly shown in the Output window. See Solving for details.

    9. Evaluating results: In the magnetostatic analysis, the applicable results are Magnetic Potential, Magnetic Field, Magnetic Induction Field, and Energy Density. The Tabular Data and Chart windows display the maximum and minimum result values along the time/set number. See Evaluating Results for details.

    finite_element_analysis_welsim_mat_ui_lib

    finite_element_analysis_welsim_mat_ui_build

    The following describes the widget components in the material editor interface:

    • Library Outline Tab: Display the available pre-defined material data for you to select. All materials are classified into several categories including General Materials, Nonlinear Materials, Hyperelastic Materials, Thermal Materials, Electromagnetic Materials, and Acoustic Materials.

    • Build Outline Tab: Display the available properties for you to add to the material. All properties are classified into several categories including Baisc, Linear Elastic, Hyper-elastic, Plastic, Creep, Visco-elastic, and Electromagnetic. The toggled properties are added to the material data and shown in the Property Pane.

    • Material Properties View Pane: Displays the properties of the selected properties items. You can modify the values of the properties. Click OK button to close the spreadsheet and save the material data into the Material Object.

    Library outline tab

    The Library Outline Tab shows an outline of the contents of the selectable material sources. You can directly load a material data from this pre-defined source by one of the methods below:

    • Double click a material entry.
    • Select a material entry, and press the Import button.
    \ No newline at end of file diff --git a/welsim/users/bcs/index.html b/welsim/users/bcs/index.html index 00f12e7..02e6886 100755 --- a/welsim/users/bcs/index.html +++ b/welsim/users/bcs/index.html @@ -1 +1 @@ - Setting up boundary conditions - WelSim Documentation

    Setting up boundary conditions

    Boundary or Body conditions are essential conditions for the most analyses. A boundary condition is imposed on the boundary of the geometry. For example, a displacement condition imposed on the face of the 3D solid geometry. A body condition is imposed on the entire body. For example, the rotational velocity imposed on the body.

    Each analysis type has its boundary and body conditions. These boundary and body conditions will be described separately regarding structural, thermal, and electromagnetic analyses.

    Note

    The boundary condition here includes both boundary and body conditions.

    Add boundary condition

    Adding boundary and body conditions in WELSIM application is straightforward. The following describes the adding method and its behaviors.

    • Adding new conditions from the Menu.
    • Adding new conditions from the Toolbar.
    • Right clicking on the Study or its children objects and selecting the condition item from the context menu.

    Scoping method

    The scoping method supports the geometry selection, and you can select the target geometry entities and set to the properties. A voltage boundary condition scoping is illustrated in Figure below. You can select multiple geometry entities such as bodies, faces, edges, or vertices to a Geometry property, but all these entities must be the same type.

    finite_element_analysis_welsim_bc_voltage_prop

    Tips in geometry selection

    The following describes the tips in selecting geometries for boundary and body conditions:

    • You can first select geometries and then apply to Geometry Selection property, or you can click the Geometry Selection property then select the geometries from the Graphics window.
    • You can select multiple entities by pressing the Ctrl or Shift key.
    • For the body conditions, you only select the volumes or bodies.
    • For the boundary conditions, you only can select the faces or edges.

    Types of boundary conditions

    This section describes the boundary conditions that are provided in the WELSIM application.

    Displacement

    Displacement determines the spatial motion of one or more faces, edges, or vertices for their original location. This boundary condition is available for all structural analysis.

    Boundary condition application

    To apply Displacement:

    1. On the menu or toolbar of the Structural, click Displacement button. Or, right-click the Study object in the tree and select Impose Conditions > Displacement.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Displacement components on X, Y, and Z directions.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Displacement vector: Component field allows you to input displacement values on X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Displacement example

    Displacement boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_disp_full

    Fixed support

    Fixed Support is a special case of Displacement boundary condition. It essentially sets the displacement to zero at the scoped geometries. This boundary condition is available for all structural analysis.

    Boundary condition application

    To apply the Fixed Support:

    1. On the menu or toolbar of the Structural, click Fixed Support button. Or, right-click the Study object in the tree and select Impose Conditions > Fixed Support.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Determine the constraint status on X, Y, and Z directions.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Constraint status: Component field allows you to set the constraints on X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Fixed support example

    Fixed support boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_fixed_support

    Fixed rotation

    Fixed Rotation constrains the rotation of the scoped geometry entities. This boundary condition is only available for Shell structural analysis.

    Boundary condition application

    To apply Fixed Rotation: 1. On the menu or toolbar of the Structural, click Fixed Rotation button. Or, right-click the Study object in the tree and select Impose Conditions > Fixed Rotation. 2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window. 3. Determine the constraint status on X, Y, and Z directions.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Constraint Status: Component field allows you to set the constraints on X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Fixed Rotation example

    Fixed Rotation boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_fixed_rot

    Pressure

    A pressure boundary condition imposes a constant normal pressure to one or more surfaces. A positive pressure acts into the surface, which compresses the scoped body. Similarly, a negative pressure pulling away from the scoped surface. This boundary condition is available for all structural analysis.

    Boundary condition application

    To apply Pressure:

    1. On the menu or toolbar of the Structural, click Pressure button. Or, right-click the Study object in the tree and select Impose Conditions > Pressure.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Input the magnitude of normal pressure. A positive pressure acts into the surface, and a negative pressure pulls away from the surface.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Normal Pressure: Scalar value field allows you to pressure. A positive value indicates a compression pressure, and negative value denotes a tensile pressure.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Pressure example

    Pressure boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_pressure

    Force

    A force boundary condition imposes a constant force to one or more entities, such as surfaces, edges, or vertices. This boundary condition is available for all structural analysis.

    Boundary condition application

    To apply Force:

    1. On the menu or toolbar of the Structural, click Force button. Or, right-click the Study object in the tree and select Impose Conditions>Force.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Force components on X, Y, and Z directions.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Force Vector: Defines the Force component values on X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Force example

    Force boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_force

    Velocity

    A velocity boundary condition imposes a constant velocity to one or more entities, such as surfaces, edges, or vertices. This boundary condition is available for transient structural analysis.

    Boundary condition application

    To apply Velocity:

    1. On the menu or toolbar of the Structural, click Velocity button. Or, right-click the Study object in the tree and select Impose Conditions > Velocity.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Velocity components on X, Y, and Z directions.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Velocity Vector: Defines the Velocity component values on X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Velocity example

    Velocity boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_velocity

    Acceleration

    An acceleration boundary condition imposes a constant acceleration to one or more entities, such as surfaces, edges, or vertices. This boundary condition is available for transient structural analysis.

    Boundary condition application

    To apply Acceleration:

    1. On the menu or toolbar of the Structural, click Acceleration button. Or, right-click the Study object in the tree and select Impose Conditions>Acceleration.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Acceleration components on X, Y, and Z directions.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Acceleration Vector: Defines the Acceleration component values on X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Acceleration example

    Acceleration boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_acceleration

    Temperature

    A temperature boundary condition imposes a constant temperature to one or more entities, such as surfaces, edges, or vertices. This boundary condition is available for all thermal analysis.

    Boundary condition application

    To apply Temperature:

    1. On the menu or toolbar of the Thermal, click Temperature button. Or, right-click the Study object in the tree and select Impose Conditions>Temperature.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Temperature scalar value.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Temperature: Defines the Temperature value.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Temperature example

    Temperature boundary condition is applied as shown in Figure below.

    Heat flux

    A Heat Flux boundary condition imposes a constant flux to one or more entities, such as surfaces, edges, or vertices. This boundary condition is available for all thermal analysis.

    Boundary condition application

    To apply Heat Flux:

    1. On the menu or toolbar of the Thermal, click Heat Flux button. Or, right-click the Study object in the tree and select Impose Conditions>Heat Flux.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Heat Flux scalar value.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Heat Flux: Defines the flux value. A positive flux acts into the boundary, and a negative heat flux acts away from the boundary.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Heat flux example

    Heat Flux boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_heat_flux

    Heat convection

    A heat convection boundary condition imposes a constant convection onto one or more entities, such as surfaces, edges, or vertices. This boundary condition is available for all thermal analysis.

    Boundary condition application

    To apply Heat Convection:

    1. On the menu or toolbar of the Thermal, click Heat Convection button. Or, right-click the Study object in the tree and select Impose Conditions > Heat Convection.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Convection Coefficient and Ambient Temperature scalar values.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Convection Coefficient: Defines the convection value. A positive convection acts into the boundary, and a negative heat convection acts away from the boundary.
    • Ambient Temperature: Defines the ambient temperature value for the convection condition.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Heat convection example

    Heat Convection boundary condition is applied in Figure below.

    finite_element_analysis_welsim_bc_heat_convection

    Heat radiation

    A heat radiation boundary condition imposes a constant radiation onto one or more entities, such as surfaces, edges, or vertices. This boundary condition is available for all thermal analysis.

    Boundary condition application

    To apply Heat Radiation:

    1. On the menu or toolbar of the Thermal, click Heat Radiation button. Or, right-click the Study object in the tree and select Impose Conditions>Heat Radiation.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Radiation Coefficient and Ambient Temperature scalar values.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Emissivity: Defines the radiation coefficient value.
    • Ambient Temperature: Defines the ambient temperature value.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Heat radiation example

    Heat Radiation boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_heat_radiation

    Initial temperature

    Boundary condition application

    To apply Initial Temperature:

    1. On the Menu or Toolbar of the Thermal, click Initial Temperature button. Or, right-click the Study object in the tree and select Impose Conditions > Heat Radiation.
    2. Set the Initial Temperature value or use the default value.

    Properties view

    The available settings in the Properties View are described below.

    • Initial temperature: Define initial temperature value.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Initial temperature example

    Initial Temperature boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_initial_temp

    Note

    Initial Temperature should be added before any other boundary conditions in all kinds of thermal analyses.

    Heat flow

    Boundary condition application

    To apply Heat Flow:

    1. On the Menu or Toolbar of the Thermal, click Heat Flow button. Or, right-click the Study object in the tree and select Impose Conditions > Heat Flow.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Set the Heat Flow value.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Heat Flow: Define the heat flow value.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Heat flow example

    Heat Flow boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_heat_flow

    Perfectly insulated

    Boundary condition application

    To apply Perfectly Insulated:

    1. On the Menu or Toolbar of the Thermal, click Heat Flow button. Or, right-click the Study object in the tree and select Impose Conditions > Heat Flow.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Perfectly insulated example

    Perfectly Insulated boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_perfectly_insulated

    Voltage

    Voltage determines the electric potential to one or more faces or edges, or vertices. This boundary condition is available for the electrostatic analysis.

    Boundary condition application

    To apply Voltage:

    1. On the menu or toolbar of the Electromagnetic, click Voltage button. Or, right-click the Study object in the tree and select Impose Conditions>Voltage.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Voltage value.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Voltage: Scalar field allows you to input voltage value.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Voltage example

    Voltage boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_voltage

    Ground

    A Ground boundary condition is a special case of Voltage boundary condition. It essentially sets the voltage to zero at the scoped geometries. This boundary condition is available for the electrostatic analysis.

    Boundary condition application

    To apply Ground:

    1. On the menu or toolbar of the Electromagnetic, click Ground command. Or, right-click the Study object in the tree and select Impose Conditions>Ground.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Ground example

    Ground boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_ground

    Symmetry

    A Symmetry boundary condition defines the symmetric boundary for the scoped geometry. This boundary condition is available for electromagnetic analyses.

    Boundary condition application

    To apply Symmetry:

    1. On the menu or toolbar of the Electromagnetic, click Symmetry button. Or, right-click the Study object in the tree and select Impose Conditions>Symmetry.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Symmetry example

    Symmetry boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_em_symmetry

    Zero charge

    A Zero Charge boundary condition defines the zero surface charge for the scoped geometry. This boundary condition is available for electrostatic analysis.

    Boundary condition application

    To apply Zero Charge:

    1. On the menu or toolbar of the Electromagnetic, click Zero Charge button. Or, right-click the Study object in the tree and select Impose Conditions>Zero Charge.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Zero charge example

    Zero Charge boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_zero_charge

    Surface charge density

    A Surface Change Density boundary condition defines the surface charge density for the scoped geometry. This boundary condition is available for electrostatic analysis.

    Boundary condition application

    To apply Surface Charge Density:

    1. On the menu or toolbar of the Electromagnetic, click Surface Charge Density button. Or, right-click the Study object in the tree and select Impose Conditions>Surface Charge Density.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Charge Density: A scalar value field determines the surface charge density on the scoped geometry.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Surface charge density example

    Surface Charge Density boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_charge_density

    Electric displacement

    An Electric Displacement boundary condition defines the electric displacement vector for the scoped geometry. This boundary condition is available for electrostatic analysis.

    Boundary condition application

    To apply Electric Displacement:

    1. On the menu or toolbar of the Electromagnetic, click Electric Displacement button. Or, right-click the Study object in the tree and select Impose Conditions>Electric Displacement.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Determine the values of Electric Displacement.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Electric Displacement: Component fields determine the electric displacement on the X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Electric displacement example

    Electric Displacement boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_electric_displacement

    Insulating

    An Insulating boundary condition defines the zero magnetic field for the scoped geometry. This boundary condition is available for the magnetic analysis.

    Boundary condition application

    To apply Insulating:

    1. On the menu or toolbar of the Electromagnetic, click Insulating command. Or, right-click the Study object in the tree and select Impose Conditions>Insulating.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Insulating example

    Insulating boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_insulating

    Vector magnetic potential

    A Vector Magnetic Potential boundary condition defines the magnetic potential vector for the scoped geometry. This boundary condition is available for magnetic analysis.

    Boundary condition application

    To apply Vector Magnetic Potential:

    1. On the menu or toolbar of the Electromagnetic, click Magnetic Potential button. Or, right-click the Study object in the tree and select Impose Conditions>Magnetic Potential.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Determine the value of Vector Magnetic Potential.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Magnetic Potential: A component field determines the magnetic potential on the X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Magnetic potential example

    Magnetic Potential boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_magnetic_potential

    Magnetic flux density

    A Magnetic Flux Density boundary condition defines the magnetic flux density for the scoped geometry. This boundary condition is available for magnetic analysis.

    Boundary condition application

    To apply Magnetic Flux Density:

    1. On the menu or toolbar of the Electromagnetic, click Magnetic Flux Density button. Or, right-click the Study object in the tree and select Impose Conditions>Magnetic Flux Density.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Magnetic Flux Density: A component field determines the magnetic flux density on the X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Magnetic flux density example

    Magnetic Flux Density boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_magnetic_flux_density

    Types of body conditions

    This section describes the Body Conditions that are provided in the WELSIM application.

    Acceleration

    The Acceleration body condition defines a linear acceleration of a structure in a particular direction. This body condition is available for all structural analysis.

    If desired, acceleration body condition can be used to mimic the Earth Gravity. For example, the standard earth gravity is 9.80665 m/s\(^{2}\) toward the ground, you can add an acceleration body condition object and apply to all or the target bodies to represent the earth gravity.

    Body condition application

    To apply Acceleration:

    1. On the menu or toolbar of the Structural, click Acceleration button. Or, right-click the Study object in the tree and select Impose Conditions>Acceleration.
    2. Keep the All bodies Scoping Method, or choose the Geometry Selection and scope the geometric entities from Graphics window.
    3. Define the Acceleration magnitude on X, Y, and Z directions.

    Properties view

    The available settings in the Properties View are described below.

    • Scoping Method: Drop-down field has options All Bodies and Geometry Selection.
    • Geometry Selection: Selection field allows you to select the body entities. This property is shown if the Scoping Method property is set to Geometry Selection.
    • Acceleration: Component field allows you to input acceleration values on X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the body condition.

    Acceleration example

    Acceleration is applied as shown in Figure below.

    finite_element_analysis_welsim_dc_acceleration

    Earth gravity

    The earth gravity condition defines gravitational effects on structure bodies. This body condition is available for all structural analysis. This condition is equivalent to the Acceleration body condition.

    Body condition application

    To apply Acceleration:

    1. On the menu or toolbar of the Structural, click Earth Gravity button. Or, right-click the Study object in the tree and select Impose Conditions>Earth Gravity.
    2. Keep the All bodies Scoping Method, or choose the Geometry Selection and scope the geometric entities from Graphics window.
    3. Define the Earth Gravity magnitude on X, Y, and Z directions.

    Properties view

    The available settings in the Properties View are described below.

    • Scoping Method: Drop-down field has options All Bodies and Geometry Selection.
    • Geometry Selection: Selection field allows you to select the body entities. This property is shown if the Scoping Method property is set to Geometry Selection.
    • Gravity: Component field allows you to input gravity values on X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the body condition.

    Earth gravity example

    The Earth Gravity body condition is applied as shown in Figure below.

    finite_element_analysis_welsim_dc_gravity

    Body force

    The body force condition defines a linear force acting structure bodies. This body condition is available for all structural analysis. The contribution of body force to the governing equation can be seen at Infinitesimal deformation linear elasticity static analysis.

    Body condition application

    To apply Body Force:

    1. On the menu or toolbar of the Structural, click Body Force button. Or, right-click the Study object in the tree and select Impose Conditions>Body Force.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Body Force magnitude on X, Y, and Z directions.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the body entities.
    • Force Vector: Component field allows you to input body force values on X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the body condition.

    Body force example

    The Body Force is applied as shown in Figure below.

    finite_element_analysis_welsim_body_force

    Rotational velocity

    The Rotational Velocity condition determines the centrifugal force generated from a part spinning at a constant rate. This body condition is available for all structural analysis.

    Body condition application

    To apply Rotational Velocity:

    1. On the menu or toolbar of the Structural, click Rotational Velocity button. Or, right-click the Study object in the tree and select Impose Conditions>Rotational Velocity.
    2. Keep the All bodies Scoping Method, or choose the Geometry Selection and scope the geometric entities from Graphics window.
    3. Define the coefficients of Angular Velocity, Rotating Axis.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the body entities. This property is shown if the Scoping Method property is set to Geometry Selection.
    • Angular Velocity: Defines the magnitude of the angular velocity.
    • Rotating Origin: Defines the origin location of the rotation axis.
    • Rotating Axis: Defines the direction vector of the rotation axis.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Rotational velocity example

    The Rotational Velocity is applied as shown in Figure below.

    finite_element_analysis_welsim_dc_rotational_velocity

    Internal heat generation

    The Internal Heat Generation condition determines the heat flow generated from the body. This body condition is available for all thermal analysis.

    Internal heat generation application

    To apply Internal Heat Generation:

    1. On the menu or toolbar of the Thermal, click Internal Heat Generation button. Or, right-click the Study object in the tree and select Impose Conditions > Internal Heat Generation.
    2. Keep the All bodies Scoping Method, or choose the Geometry Selection and scope the geometric entities from Graphics window.
    3. Define the coefficients of Heat Flow value.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the body entities. This property is shown if the Scoping Method property is set to Geometry Selection.
    • Heat Flow: Defines the magnitude of the volume heat generation.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Internal heat generation example

    The Internal Heat Generation is applied as shown in Figure below.

    \ No newline at end of file + Setting up boundary conditions - WelSim Documentation

    Setting up boundary conditions

    Boundary or Body conditions are essential conditions for the most analyses. A boundary condition is imposed on the boundary of the geometry. For example, a displacement condition imposed on the face of the 3D solid geometry. A body condition is imposed on the entire body. For example, the rotational velocity imposed on the body.

    Each analysis type has its boundary and body conditions. These boundary and body conditions will be described separately regarding structural, thermal, and electromagnetic analyses.

    Note

    The boundary condition here includes both boundary and body conditions.

    Add boundary condition

    Adding boundary and body conditions in WELSIM application is straightforward. The following describes the adding method and its behaviors.

    • Adding new conditions from the Menu.
    • Adding new conditions from the Toolbar.
    • Right clicking on the Study or its children objects and selecting the condition item from the context menu.

    Scoping method

    The scoping method supports the geometry selection, and you can select the target geometry entities and set to the properties. A voltage boundary condition scoping is illustrated in Figure below. You can select multiple geometry entities such as bodies, faces, edges, or vertices to a Geometry property, but all these entities must be the same type.

    finite_element_analysis_welsim_bc_voltage_prop

    Tips in geometry selection

    The following describes the tips in selecting geometries for boundary and body conditions:

    • You can first select geometries and then apply to Geometry Selection property, or you can click the Geometry Selection property then select the geometries from the Graphics window.
    • You can select multiple entities by pressing the Ctrl or Shift key.
    • For the body conditions, you only select the volumes or bodies.
    • For the boundary conditions, you only can select the faces or edges.

    Types of boundary conditions

    This section describes the boundary conditions that are provided in the WELSIM application.

    Displacement

    Displacement determines the spatial motion of one or more faces, edges, or vertices for their original location. This boundary condition is available for all structural analysis.

    Boundary condition application

    To apply Displacement:

    1. On the menu or toolbar of the Structural, click Displacement button. Or, right-click the Study object in the tree and select Impose Conditions > Displacement.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Displacement components on X, Y, and Z directions.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Displacement vector: Component field allows you to input displacement values on X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Displacement example

    Displacement boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_disp_full

    Fixed support

    Fixed Support is a special case of Displacement boundary condition. It essentially sets the displacement to zero at the scoped geometries. This boundary condition is available for all structural analysis.

    Boundary condition application

    To apply the Fixed Support:

    1. On the menu or toolbar of the Structural, click Fixed Support button. Or, right-click the Study object in the tree and select Impose Conditions > Fixed Support.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Determine the constraint status on X, Y, and Z directions.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Constraint status: Component field allows you to set the constraints on X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Fixed support example

    Fixed support boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_fixed_support

    Fixed rotation

    Fixed Rotation constrains the rotation of the scoped geometry entities. This boundary condition is only available for Shell structural analysis.

    Boundary condition application

    To apply Fixed Rotation: 1. On the menu or toolbar of the Structural, click Fixed Rotation button. Or, right-click the Study object in the tree and select Impose Conditions > Fixed Rotation. 2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window. 3. Determine the constraint status on X, Y, and Z directions.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Constraint Status: Component field allows you to set the constraints on X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Fixed Rotation example

    Fixed Rotation boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_fixed_rot

    Pressure

    A pressure boundary condition imposes a constant normal pressure to one or more surfaces. A positive pressure acts into the surface, which compresses the scoped body. Similarly, a negative pressure pulling away from the scoped surface. This boundary condition is available for all structural analysis.

    Boundary condition application

    To apply Pressure:

    1. On the menu or toolbar of the Structural, click Pressure button. Or, right-click the Study object in the tree and select Impose Conditions > Pressure.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Input the magnitude of normal pressure. A positive pressure acts into the surface, and a negative pressure pulls away from the surface.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Normal Pressure: Scalar value field allows you to pressure. A positive value indicates a compression pressure, and negative value denotes a tensile pressure.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Pressure example

    Pressure boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_pressure

    Force

    A force boundary condition imposes a constant force to one or more entities, such as surfaces, edges, or vertices. This boundary condition is available for all structural analysis.

    Boundary condition application

    To apply Force:

    1. On the menu or toolbar of the Structural, click Force button. Or, right-click the Study object in the tree and select Impose Conditions>Force.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Force components on X, Y, and Z directions.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Force Vector: Defines the Force component values on X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Force example

    Force boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_force

    Velocity

    A velocity boundary condition imposes a constant velocity to one or more entities, such as surfaces, edges, or vertices. This boundary condition is available for transient structural analysis.

    Boundary condition application

    To apply Velocity:

    1. On the menu or toolbar of the Structural, click Velocity button. Or, right-click the Study object in the tree and select Impose Conditions > Velocity.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Velocity components on X, Y, and Z directions.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Velocity Vector: Defines the Velocity component values on X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Velocity example

    Velocity boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_velocity

    Acceleration

    An acceleration boundary condition imposes a constant acceleration to one or more entities, such as surfaces, edges, or vertices. This boundary condition is available for transient structural analysis.

    Boundary condition application

    To apply Acceleration:

    1. On the menu or toolbar of the Structural, click Acceleration button. Or, right-click the Study object in the tree and select Impose Conditions>Acceleration.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Acceleration components on X, Y, and Z directions.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Acceleration Vector: Defines the Acceleration component values on X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Acceleration example

    Acceleration boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_acceleration

    Temperature

    A temperature boundary condition imposes a constant temperature to one or more entities, such as surfaces, edges, or vertices. This boundary condition is available for all thermal analysis.

    Boundary condition application

    To apply Temperature:

    1. On the menu or toolbar of the Thermal, click Temperature button. Or, right-click the Study object in the tree and select Impose Conditions>Temperature.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Temperature scalar value.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Temperature: Defines the Temperature value.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Temperature example

    Temperature boundary condition is applied as shown in Figure below.

    Heat flux

    A Heat Flux boundary condition imposes a constant flux to one or more entities, such as surfaces, edges, or vertices. This boundary condition is available for all thermal analysis.

    Boundary condition application

    To apply Heat Flux:

    1. On the menu or toolbar of the Thermal, click Heat Flux button. Or, right-click the Study object in the tree and select Impose Conditions>Heat Flux.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Heat Flux scalar value.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Heat Flux: Defines the flux value. A positive flux acts into the boundary, and a negative heat flux acts away from the boundary.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Heat flux example

    Heat Flux boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_heat_flux

    Heat convection

    A heat convection boundary condition imposes a constant convection onto one or more entities, such as surfaces, edges, or vertices. This boundary condition is available for all thermal analysis.

    Boundary condition application

    To apply Heat Convection:

    1. On the menu or toolbar of the Thermal, click Heat Convection button. Or, right-click the Study object in the tree and select Impose Conditions > Heat Convection.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Convection Coefficient and Ambient Temperature scalar values.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Convection Coefficient: Defines the convection value. A positive convection acts into the boundary, and a negative heat convection acts away from the boundary.
    • Ambient Temperature: Defines the ambient temperature value for the convection condition.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Heat convection example

    Heat Convection boundary condition is applied in Figure below.

    finite_element_analysis_welsim_bc_heat_convection

    Heat radiation

    A heat radiation boundary condition imposes a constant radiation onto one or more entities, such as surfaces, edges, or vertices. This boundary condition is available for all thermal analysis.

    Boundary condition application

    To apply Heat Radiation:

    1. On the menu or toolbar of the Thermal, click Heat Radiation button. Or, right-click the Study object in the tree and select Impose Conditions>Heat Radiation.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Radiation Coefficient and Ambient Temperature scalar values.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Emissivity: Defines the radiation coefficient value.
    • Ambient Temperature: Defines the ambient temperature value.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Heat radiation example

    Heat Radiation boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_heat_radiation

    Initial temperature

    Boundary condition application

    To apply Initial Temperature:

    1. On the Menu or Toolbar of the Thermal, click Initial Temperature button. Or, right-click the Study object in the tree and select Impose Conditions > Heat Radiation.
    2. Set the Initial Temperature value or use the default value.

    Properties view

    The available settings in the Properties View are described below.

    • Initial temperature: Define initial temperature value.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Initial temperature example

    Initial Temperature boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_initial_temp

    Note

    Initial Temperature should be added before any other boundary conditions in all kinds of thermal analyses.

    Heat flow

    Boundary condition application

    To apply Heat Flow:

    1. On the Menu or Toolbar of the Thermal, click Heat Flow button. Or, right-click the Study object in the tree and select Impose Conditions > Heat Flow.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Set the Heat Flow value.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Heat Flow: Define the heat flow value.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Heat flow example

    Heat Flow boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_heat_flow

    Perfectly insulated

    Boundary condition application

    To apply Perfectly Insulated:

    1. On the Menu or Toolbar of the Thermal, click Heat Flow button. Or, right-click the Study object in the tree and select Impose Conditions > Heat Flow.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Perfectly insulated example

    Perfectly Insulated boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_perfectly_insulated

    Voltage

    Voltage determines the electric potential to one or more faces or edges, or vertices. This boundary condition is available for the electrostatic analysis.

    Boundary condition application

    To apply Voltage:

    1. On the menu or toolbar of the Electromagnetic, click Voltage button. Or, right-click the Study object in the tree and select Impose Conditions>Voltage.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Voltage value.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Voltage: Scalar field allows you to input voltage value.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Voltage example

    Voltage boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_voltage

    Ground

    A Ground boundary condition is a special case of Voltage boundary condition. It essentially sets the voltage to zero at the scoped geometries. This boundary condition is available for the electrostatic analysis.

    Boundary condition application

    To apply Ground:

    1. On the menu or toolbar of the Electromagnetic, click Ground command. Or, right-click the Study object in the tree and select Impose Conditions>Ground.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Ground example

    Ground boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_ground

    Symmetry

    A Symmetry boundary condition defines the symmetric boundary for the scoped geometry. This boundary condition is available for electromagnetic analyses.

    Boundary condition application

    To apply Symmetry:

    1. On the menu or toolbar of the Electromagnetic, click Symmetry button. Or, right-click the Study object in the tree and select Impose Conditions>Symmetry.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Symmetry example

    Symmetry boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_em_symmetry

    Zero charge

    A Zero Charge boundary condition defines the zero surface charge for the scoped geometry. This boundary condition is available for electrostatic analysis.

    Boundary condition application

    To apply Zero Charge:

    1. On the menu or toolbar of the Electromagnetic, click Zero Charge button. Or, right-click the Study object in the tree and select Impose Conditions>Zero Charge.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Zero charge example

    Zero Charge boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_zero_charge

    Surface charge density

    A Surface Change Density boundary condition defines the surface charge density for the scoped geometry. This boundary condition is available for electrostatic analysis.

    Boundary condition application

    To apply Surface Charge Density:

    1. On the menu or toolbar of the Electromagnetic, click Surface Charge Density button. Or, right-click the Study object in the tree and select Impose Conditions>Surface Charge Density.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Charge Density: A scalar value field determines the surface charge density on the scoped geometry.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Surface charge density example

    Surface Charge Density boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_charge_density

    Electric displacement

    An Electric Displacement boundary condition defines the electric displacement vector for the scoped geometry. This boundary condition is available for electrostatic analysis.

    Boundary condition application

    To apply Electric Displacement:

    1. On the menu or toolbar of the Electromagnetic, click Electric Displacement button. Or, right-click the Study object in the tree and select Impose Conditions>Electric Displacement.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Determine the values of Electric Displacement.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Electric Displacement: Component fields determine the electric displacement on the X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Electric displacement example

    Electric Displacement boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_electric_displacement

    Insulating

    An Insulating boundary condition defines the zero magnetic field for the scoped geometry. This boundary condition is available for the magnetic analysis.

    Boundary condition application

    To apply Insulating:

    1. On the menu or toolbar of the Electromagnetic, click Insulating command. Or, right-click the Study object in the tree and select Impose Conditions>Insulating.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Insulating example

    Insulating boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_insulating

    Vector magnetic potential

    A Vector Magnetic Potential boundary condition defines the magnetic potential vector for the scoped geometry. This boundary condition is available for magnetic analysis.

    Boundary condition application

    To apply Vector Magnetic Potential:

    1. On the menu or toolbar of the Electromagnetic, click Magnetic Potential button. Or, right-click the Study object in the tree and select Impose Conditions>Magnetic Potential.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Determine the value of Vector Magnetic Potential.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Magnetic Potential: A component field determines the magnetic potential on the X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Magnetic potential example

    Magnetic Potential boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_magnetic_potential

    Magnetic flux density

    A Magnetic Flux Density boundary condition defines the magnetic flux density for the scoped geometry. This boundary condition is available for magnetic analysis.

    Boundary condition application

    To apply Magnetic Flux Density:

    1. On the menu or toolbar of the Electromagnetic, click Magnetic Flux Density button. Or, right-click the Study object in the tree and select Impose Conditions>Magnetic Flux Density.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the Face, Edge, or Vertex entities. The selected entities must be the same type.
    • Magnetic Flux Density: A component field determines the magnetic flux density on the X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Magnetic flux density example

    Magnetic Flux Density boundary condition is applied as shown in Figure below.

    finite_element_analysis_welsim_bc_magnetic_flux_density

    Types of body conditions

    This section describes the Body Conditions that are provided in the WELSIM application.

    Acceleration

    The Acceleration body condition defines a linear acceleration of a structure in a particular direction. This body condition is available for all structural analysis.

    If desired, acceleration body condition can be used to mimic the Earth Gravity. For example, the standard earth gravity is 9.80665 m/s\(^{2}\) toward the ground, you can add an acceleration body condition object and apply to all or the target bodies to represent the earth gravity.

    Body condition application

    To apply Acceleration:

    1. On the menu or toolbar of the Structural, click Acceleration button. Or, right-click the Study object in the tree and select Impose Conditions>Acceleration.
    2. Keep the All bodies Scoping Method, or choose the Geometry Selection and scope the geometric entities from Graphics window.
    3. Define the Acceleration magnitude on X, Y, and Z directions.

    Properties view

    The available settings in the Properties View are described below.

    • Scoping Method: Drop-down field has options All Bodies and Geometry Selection.
    • Geometry Selection: Selection field allows you to select the body entities. This property is shown if the Scoping Method property is set to Geometry Selection.
    • Acceleration: Component field allows you to input acceleration values on X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the body condition.

    Acceleration example

    Acceleration is applied as shown in Figure below.

    finite_element_analysis_welsim_dc_acceleration

    Earth gravity

    The earth gravity condition defines gravitational effects on structure bodies. This body condition is available for all structural analysis. This condition is equivalent to the Acceleration body condition.

    Body condition application

    To apply Acceleration:

    1. On the menu or toolbar of the Structural, click Earth Gravity button. Or, right-click the Study object in the tree and select Impose Conditions>Earth Gravity.
    2. Keep the All bodies Scoping Method, or choose the Geometry Selection and scope the geometric entities from Graphics window.
    3. Define the Earth Gravity magnitude on X, Y, and Z directions.

    Properties view

    The available settings in the Properties View are described below.

    • Scoping Method: Drop-down field has options All Bodies and Geometry Selection.
    • Geometry Selection: Selection field allows you to select the body entities. This property is shown if the Scoping Method property is set to Geometry Selection.
    • Gravity: Component field allows you to input gravity values on X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the body condition.

    Earth gravity example

    The Earth Gravity body condition is applied as shown in Figure below.

    finite_element_analysis_welsim_dc_gravity

    Body force

    The body force condition defines a linear force acting structure bodies. This body condition is available for all structural analysis. The contribution of body force to the governing equation can be seen at Infinitesimal deformation linear elasticity static analysis.

    Body condition application

    To apply Body Force:

    1. On the menu or toolbar of the Structural, click Body Force button. Or, right-click the Study object in the tree and select Impose Conditions>Body Force.
    2. Click the property of Geometry Selection, and scope the geometric entities from Graphics window.
    3. Define the Body Force magnitude on X, Y, and Z directions.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the body entities.
    • Force Vector: Component field allows you to input body force values on X, Y, and Z directions.
    • Suppressed: Include (False - default) or exclude (True) the body condition.

    Body force example

    The Body Force is applied as shown in Figure below.

    finite_element_analysis_welsim_body_force

    Rotational velocity

    The Rotational Velocity condition determines the centrifugal force generated from a part spinning at a constant rate. This body condition is available for all structural analysis.

    Body condition application

    To apply Rotational Velocity:

    1. On the menu or toolbar of the Structural, click Rotational Velocity button. Or, right-click the Study object in the tree and select Impose Conditions>Rotational Velocity.
    2. Keep the All bodies Scoping Method, or choose the Geometry Selection and scope the geometric entities from Graphics window.
    3. Define the coefficients of Angular Velocity, Rotating Axis.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the body entities. This property is shown if the Scoping Method property is set to Geometry Selection.
    • Angular Velocity: Defines the magnitude of the angular velocity.
    • Rotating Origin: Defines the origin location of the rotation axis.
    • Rotating Axis: Defines the direction vector of the rotation axis.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Rotational velocity example

    The Rotational Velocity is applied as shown in Figure below.

    finite_element_analysis_welsim_dc_rotational_velocity

    Internal heat generation

    The Internal Heat Generation condition determines the heat flow generated from the body. This body condition is available for all thermal analysis.

    Internal heat generation application

    To apply Internal Heat Generation:

    1. On the menu or toolbar of the Thermal, click Internal Heat Generation button. Or, right-click the Study object in the tree and select Impose Conditions > Internal Heat Generation.
    2. Keep the All bodies Scoping Method, or choose the Geometry Selection and scope the geometric entities from Graphics window.
    3. Define the coefficients of Heat Flow value.

    Properties view

    The available settings in the Properties View are described below.

    • Geometry Selection: Selection field allows you to select the body entities. This property is shown if the Scoping Method property is set to Geometry Selection.
    • Heat Flow: Defines the magnitude of the volume heat generation.
    • Suppressed: Include (False - default) or exclude (True) the boundary condition.

    Internal heat generation example

    The Internal Heat Generation is applied as shown in Figure below.

    \ No newline at end of file diff --git a/welsim/users/connections/index.html b/welsim/users/connections/index.html index d697f3f..8303738 100755 --- a/welsim/users/connections/index.html +++ b/welsim/users/connections/index.html @@ -1 +1 @@ - Setting connections - WelSim Documentation

    Setting connections

    The Connections object acts as a group folder includes all connecting related settings, such as Contact Pair.

    Connections group

    The Connections group is a unique container in WELSIM application for all types of connection objects. As illustrated in Figure below, the Connections object includes multiple Contact Pair objects.

    finite_element_analysis_welsim_connections_obj

    Contact pairs

    Contact Pairs are applied when two separate parts (solid, surface, and line bodies) in an assembly touch one another (they are mutually tangent). The contact bodies/surfaces:

    • Transmit normal forces and tangential frictional forces.
    • Can be bonded contact (Linear).
    • Can separate or collide (Nonlinear).
    • Do not penetrate one another in the structures.

    As shown in Figure below, the Contact for structure analysis support three types of contact: Bonded, Frictionless, and Frictional. For the Frictionless and Frictional types, the contact pairs (surfaces, edges) are free to separate and move away from one another, which is called to have status-changing nonlinearity. The stiffness matrice in the solving change dramatically as the parts are touching or separated.

    finite_element_analysis_welsim_contact_prop

    Formulation of contact

    Since the contact algorithms are complicated, it is recommended to use the default formulation method for your contact analysis. This section describes the theory of contact formulations: Lagrange and Augmented Lagrange methods. Those methods only exist in the structural analysis.

    Bonded

    For the Non-Separated Bonded contact, the MPC algorithm is applied internally to add constraint equations to the tied nodes on the contact entities (surfaces, edges). The bonded contact has no penetration, no separation behaviors during the motion.

    Lagrange method

    This formulation adds an extra contact pressure term to satisfy the contact compatibility. Thus the contact force is solved explicitly as an unknown degree of freedom.

    Augmented lagrange method

    Augmented Lagrange method is a penalty-based contact formulation. The finite contact force is

    \[ F_{Normal}=k_{Normal}x_{Penetration}+\lambda \]

    where \(k_{Normal}\) is the contact stiffness, \(x_{Penetration}\) is the penetration depth along the normal direction. The smaller the penetration depth, the more accurate numerical solutions. The exist of term \(\lambda\) is the difference between the traditional penalty method and the augmented Lagrange method.

    Contact settings

    When you select a Contact Pair object in the tree, the contact settings become available in the Properties view. The Target Geometry and Master Geometry properties allow you to scope the contact pairs from the Graphics window. Note that the valid Target and Master Geometries show in different colors. You can change the highlight color in the Display tab of the contact Properties View.

    When you choose the Frictionless or Frictional option in the Contact Type property, the following properties shows:

    • Formulation: Provides two options: Lagrange and Augmented Lagrange methods. The default is the Lagrange method. The Formation property is described in Formulation of Contact.
    • Finite Sliding: Supports the finite sliding as the contact occurs. The default is false.
    • Normal Direction Tolerance: Determines the distance tolerance on the normal direction. The default value is 1e-5.
    • Tangential Direction Tolerance: Determines the distance tolerance on the tangential direction. The default value is 1e-3.
    • Normal Direction Penalty: Determines the penalty tolerance on the normal direction. The Default value is 1e3.
    • Tangential Direction Penalty: Determines the penalty tolerance on the tangential direction. The default value is 1e3.

    Supported contact types

    The Table below identifies the supported formulations for the various contact geometries.

    Contact Geometry Face (Master) Edge (Master) Vertex (Master)
    Face (Target) Yes Yes Not Supported for solving
    Edge (Target) Yes Yes Not Supported for solving
    Vertex (Target) Not Supported for solving Not Supported for solving Not Supported for solving

    Ease of use contact

    Flipping master and target scoping geometries

    This feature provides you a command to quickly swap master and target geometries that are already scoped in the Properties View. You can achieve this by right clicking on the specific Contact Pair, and choosing Switch Target/Master Contacts from the context menu as shown in Figure below.

    finite_element_analysis_welsim_contact_switch

    Note

    This feature is not applicable to Face to Edge contact where faces and edges are always designated as targets and masters, respectively.

    \ No newline at end of file + Setting connections - WelSim Documentation

    Setting connections

    The Connections object acts as a group folder includes all connecting related settings, such as Contact Pair.

    Connections group

    The Connections group is a unique container in WELSIM application for all types of connection objects. As illustrated in Figure below, the Connections object includes multiple Contact Pair objects.

    finite_element_analysis_welsim_connections_obj

    Contact pairs

    Contact Pairs are applied when two separate parts (solid, surface, and line bodies) in an assembly touch one another (they are mutually tangent). The contact bodies/surfaces:

    • Transmit normal forces and tangential frictional forces.
    • Can be bonded contact (Linear).
    • Can separate or collide (Nonlinear).
    • Do not penetrate one another in the structures.

    As shown in Figure below, the Contact for structure analysis support three types of contact: Bonded, Frictionless, and Frictional. For the Frictionless and Frictional types, the contact pairs (surfaces, edges) are free to separate and move away from one another, which is called to have status-changing nonlinearity. The stiffness matrice in the solving change dramatically as the parts are touching or separated.

    finite_element_analysis_welsim_contact_prop

    Formulation of contact

    Since the contact algorithms are complicated, it is recommended to use the default formulation method for your contact analysis. This section describes the theory of contact formulations: Lagrange and Augmented Lagrange methods. Those methods only exist in the structural analysis.

    Bonded

    For the Non-Separated Bonded contact, the MPC algorithm is applied internally to add constraint equations to the tied nodes on the contact entities (surfaces, edges). The bonded contact has no penetration, no separation behaviors during the motion.

    Lagrange method

    This formulation adds an extra contact pressure term to satisfy the contact compatibility. Thus the contact force is solved explicitly as an unknown degree of freedom.

    Augmented lagrange method

    Augmented Lagrange method is a penalty-based contact formulation. The finite contact force is

    \[ F_{Normal}=k_{Normal}x_{Penetration}+\lambda \]

    where \(k_{Normal}\) is the contact stiffness, \(x_{Penetration}\) is the penetration depth along the normal direction. The smaller the penetration depth, the more accurate numerical solutions. The exist of term \(\lambda\) is the difference between the traditional penalty method and the augmented Lagrange method.

    Contact settings

    When you select a Contact Pair object in the tree, the contact settings become available in the Properties view. The Target Geometry and Master Geometry properties allow you to scope the contact pairs from the Graphics window. Note that the valid Target and Master Geometries show in different colors. You can change the highlight color in the Display tab of the contact Properties View.

    When you choose the Frictionless or Frictional option in the Contact Type property, the following properties shows:

    • Formulation: Provides two options: Lagrange and Augmented Lagrange methods. The default is the Lagrange method. The Formation property is described in Formulation of Contact.
    • Finite Sliding: Supports the finite sliding as the contact occurs. The default is false.
    • Normal Direction Tolerance: Determines the distance tolerance on the normal direction. The default value is 1e-5.
    • Tangential Direction Tolerance: Determines the distance tolerance on the tangential direction. The default value is 1e-3.
    • Normal Direction Penalty: Determines the penalty tolerance on the normal direction. The Default value is 1e3.
    • Tangential Direction Penalty: Determines the penalty tolerance on the tangential direction. The default value is 1e3.

    Supported contact types

    The Table below identifies the supported formulations for the various contact geometries.

    Contact Geometry Face (Master) Edge (Master) Vertex (Master)
    Face (Target) Yes Yes Not Supported for solving
    Edge (Target) Yes Yes Not Supported for solving
    Vertex (Target) Not Supported for solving Not Supported for solving Not Supported for solving

    Ease of use contact

    Flipping master and target scoping geometries

    This feature provides you a command to quickly swap master and target geometries that are already scoped in the Properties View. You can achieve this by right clicking on the specific Contact Pair, and choosing Switch Target/Master Contacts from the context menu as shown in Figure below.

    finite_element_analysis_welsim_contact_switch

    Note

    This feature is not applicable to Face to Edge contact where faces and edges are always designated as targets and masters, respectively.

    \ No newline at end of file diff --git a/welsim/users/geometry/index.html b/welsim/users/geometry/index.html index c186bd2..094752b 100755 --- a/welsim/users/geometry/index.html +++ b/welsim/users/geometry/index.html @@ -1 +1 @@ - Specifying geometry - WelSim Documentation

    Specifying geometry

    Geometry fundamentals

    Part is the fundamental object carries the geometry data. An assembly model may contain one or multiple parts. There is no limit of parts in WELSIM application, and large assemblie require more hardware resources to process the geometric operations. All parts object are grouped in the Geometry Group object.

    Working with parts

    The part has these attributes:

    • Each part object has a Material property, which determines the assigned material on the part.
    • Parts can be hidden/shown in the Graphics window.
    • Parts can be Suppressed/Unsuppressed for the successive analysis.
    • The imported part can adjust the size of geometry by tuning the Scale property value.

    Color scheme of parts

    The geometry is assigned with predefined random color. However, you can define the color of part to visually identify different components in an assembly. Click the Display tab from the Properties view of the Part Object, and click the Color By property to determine the color scheme. The following lists the available color schemes:

    • Part Color
    • Material

    You can reset the colors back to the default color scheme by right click on the Geometry object in the tree and selecting Reset Body Colors.

    Overview

    The WELSIM geometry module's interface is similar to that most other features. The graphical user interface of geometry commands is consist of three regions:

    1. Toolbars: Located at the top of the interface, there is a toolbar.
    2. Geometry Menu: Located at the Menu, the Geometry Menu provides all geometry related commands.
    3. Context Menu: Popped up at Geometry tree objects, the context menu provides geometry related commands as shown in Figure below.

    finite_element_analysis_welsim_context_menu_geometry

    Creating primitive geometry

    The system provides built-in commands to allow you to create primitive geometries. The following describes the supported geometries: Box, Cylinder, Plate, and Line.

    Box

    An example of a created box shape is shown in Figure [fig:ch3_guide_geom_box]. finite_element_analysis_welsim_geom_box

    Cylinder

    An example of a created cylinder shape is shown in Figure [fig:ch3_guide_geom_cylinder]. finite_element_analysis_welsim_geom_cylinder

    Plate

    An example of a created plate shape is shown in Figure [fig:ch3_guide_geom_plate]. finite_element_analysis_welsim_geom_plate

    Line

    An example of a created Line shape is shown in Figure [fig:ch3_guide_geom_line]. finite_element_analysis_welsim_geom_line

    Importing and exporting geometry

    Importing

    The geometry importing feature supports the STEP and IGES format files, and the STEP file is recommended. The following lists the behaviors of importing geometry:

    • An imported STEP file may lead to creating multiple Part objects in the tree if the file contains an assembly.
    • IGES file contains the surface information only, you need to implement Make Solid command to the imported geometry to obtain the solid geometry.
    • Using the Scale property to tune the size of the imported geometry.

    Exporting

    The geometries in the tree can be exported to an external STEP file. The following methods show you how to export:

    • Click the Export... button from the Toolbar.
    • Click the Export... item from the Geometry Menu.
    • Right click on the target geometries and select the Export... from the context menu.

    Boolean operations

    The WELSIM geometry module supports fundamental Boolean operations, which allow users to manipulate the shape of geometries. The available operations are Union, Intersection, and Difference. You can select multiple geometry objects from the tree list and press the Boolean commands to implement the operations. You can hold Ctrl or Shift keys to select multiple geometry objects from the project tree.

    Union

    The union operation consolidates two or more geometry into one geometry. An example of Union geometry of a box and cylinder shape is shown in Figure below.

    finite_element_analysis_welsim_geom_union

    Intersection

    The intersection operation keeps the commonly shared portions of two or more geometries. An example of Intersection geometry of a box and cylinder shape is shown in Figure below.

    finite_element_analysis_welsim_geom_intersection

    Difference

    The Difference operation subtracts the secondly selected geometry from the first selected geometry. Thus the selection order plays an important role in the final generated geometry. You can see the results of two different selection orders in Figures below.

    finite_element_analysis_welsim_geom_diff1 finite_element_analysis_welsim_geom_diff2

    Geometry commands

    In addition to the fundamental geometry commands, the following lists the commands that may be applied in the geometry modeling:

    Generate solid

    In the most of analysis, the model needs to be solid to generate the 3D solid finite element. If the imported geometry only contains the surface data, the mesher cannot generate solid elements. In this scenario, you need to convert a surface geometry to solid geometry. The Generate Solid command provides you with a tool to complete this conversion.

    To convert a surface to solid geometry, you can follow the steps below:

    1. Select the surface geometry objects from the tree.
    2. Click the Generate Solid command from the Geometry Menu, or right click on the selected geometry objects, and select the Generate Solid command from the context menu.

    Part structure types

    Solid bodies

    The solid bodies including parts and assembly support all simulation features of WELSIM application.

    Surface bodies

    The surface bodies are treated as Shell structure in the structural and thermal analyses. In the Properties View of the Shell part, you need to specify the thickness of the shell, as shown in Figure below.

    finite_element_analysis_welsim_part_shell_thickness

    \ No newline at end of file + Specifying geometry - WelSim Documentation

    Specifying geometry

    Geometry fundamentals

    Part is the fundamental object carries the geometry data. An assembly model may contain one or multiple parts. There is no limit of parts in WELSIM application, and large assemblie require more hardware resources to process the geometric operations. All parts object are grouped in the Geometry Group object.

    Working with parts

    The part has these attributes:

    • Each part object has a Material property, which determines the assigned material on the part.
    • Parts can be hidden/shown in the Graphics window.
    • Parts can be Suppressed/Unsuppressed for the successive analysis.
    • The imported part can adjust the size of geometry by tuning the Scale property value.

    Color scheme of parts

    The geometry is assigned with predefined random color. However, you can define the color of part to visually identify different components in an assembly. Click the Display tab from the Properties view of the Part Object, and click the Color By property to determine the color scheme. The following lists the available color schemes:

    • Part Color
    • Material

    You can reset the colors back to the default color scheme by right click on the Geometry object in the tree and selecting Reset Body Colors.

    Overview

    The WELSIM geometry module's interface is similar to that most other features. The graphical user interface of geometry commands is consist of three regions:

    1. Toolbars: Located at the top of the interface, there is a toolbar.
    2. Geometry Menu: Located at the Menu, the Geometry Menu provides all geometry related commands.
    3. Context Menu: Popped up at Geometry tree objects, the context menu provides geometry related commands as shown in Figure below.

    finite_element_analysis_welsim_context_menu_geometry

    Creating primitive geometry

    The system provides built-in commands to allow you to create primitive geometries. The following describes the supported geometries: Box, Cylinder, Plate, and Line.

    Box

    An example of a created box shape is shown in Figure [fig:ch3_guide_geom_box]. finite_element_analysis_welsim_geom_box

    Cylinder

    An example of a created cylinder shape is shown in Figure [fig:ch3_guide_geom_cylinder]. finite_element_analysis_welsim_geom_cylinder

    Plate

    An example of a created plate shape is shown in Figure [fig:ch3_guide_geom_plate]. finite_element_analysis_welsim_geom_plate

    Line

    An example of a created Line shape is shown in Figure [fig:ch3_guide_geom_line]. finite_element_analysis_welsim_geom_line

    Importing and exporting geometry

    Importing

    The geometry importing feature supports the STEP and IGES format files, and the STEP file is recommended. The following lists the behaviors of importing geometry:

    • An imported STEP file may lead to creating multiple Part objects in the tree if the file contains an assembly.
    • IGES file contains the surface information only, you need to implement Make Solid command to the imported geometry to obtain the solid geometry.
    • Using the Scale property to tune the size of the imported geometry.

    Exporting

    The geometries in the tree can be exported to an external STEP file. The following methods show you how to export:

    • Click the Export... button from the Toolbar.
    • Click the Export... item from the Geometry Menu.
    • Right click on the target geometries and select the Export... from the context menu.

    Boolean operations

    The WELSIM geometry module supports fundamental Boolean operations, which allow users to manipulate the shape of geometries. The available operations are Union, Intersection, and Difference. You can select multiple geometry objects from the tree list and press the Boolean commands to implement the operations. You can hold Ctrl or Shift keys to select multiple geometry objects from the project tree.

    Union

    The union operation consolidates two or more geometry into one geometry. An example of Union geometry of a box and cylinder shape is shown in Figure below.

    finite_element_analysis_welsim_geom_union

    Intersection

    The intersection operation keeps the commonly shared portions of two or more geometries. An example of Intersection geometry of a box and cylinder shape is shown in Figure below.

    finite_element_analysis_welsim_geom_intersection

    Difference

    The Difference operation subtracts the secondly selected geometry from the first selected geometry. Thus the selection order plays an important role in the final generated geometry. You can see the results of two different selection orders in Figures below.

    finite_element_analysis_welsim_geom_diff1 finite_element_analysis_welsim_geom_diff2

    Geometry commands

    In addition to the fundamental geometry commands, the following lists the commands that may be applied in the geometry modeling:

    Generate solid

    In the most of analysis, the model needs to be solid to generate the 3D solid finite element. If the imported geometry only contains the surface data, the mesher cannot generate solid elements. In this scenario, you need to convert a surface geometry to solid geometry. The Generate Solid command provides you with a tool to complete this conversion.

    To convert a surface to solid geometry, you can follow the steps below:

    1. Select the surface geometry objects from the tree.
    2. Click the Generate Solid command from the Geometry Menu, or right click on the selected geometry objects, and select the Generate Solid command from the context menu.

    Part structure types

    Solid bodies

    The solid bodies including parts and assembly support all simulation features of WELSIM application.

    Surface bodies

    The surface bodies are treated as Shell structure in the structural and thermal analyses. In the Properties View of the Shell part, you need to specify the thickness of the shell, as shown in Figure below.

    finite_element_analysis_welsim_part_shell_thickness

    \ No newline at end of file diff --git a/welsim/users/gui/index.html b/welsim/users/gui/index.html index 2d99ac2..b5d85a0 100755 --- a/welsim/users/gui/index.html +++ b/welsim/users/gui/index.html @@ -1,2 +1,2 @@ - Application user interface - WelSim Documentation

    Application user interface

    This section describes the fundamental components of the WELSIM application interface, their usage, and behaviors.

    WELSIM application window

    The functional components of the graphical user interface include the following as listed in Table below.

    Window Component Description
    Main Menus This menu includes all application level actions such as File and About
    Standard Toolbar This toolbar contains commonly used actions such as Mesh and Solve
    Graphics Toolbar This toolbar contains graphics related actions such as Zoom and Selection
    Project Explorer (Tree) Window This window contains a list of simulation objects that represents the modeling settings. Since it contains the branches and trunk, this windows is also called tree outline. The context menu for each object could vary. The object can be renamed, deleted, duplicated, copied and pasted
    Properties Window This window displays the properties of each object in the tree list. The user can view or edit the property values
    Graphics View This window shows and manipulates the visual content of the simulation entities. This window can display: 3D geometry, mesh, annotation, coordinate system symbol, spreadsheet, etc
    Output Window This window display the messages from the system or solvers
    Tabular Data Window This window lists the data that is input from user or output from the solvers. The listed data is always consistent with the curves in the Chart window
    Chart Window This window plots the graphics that is input from user or output from the solvers. The curves are always consistent with the table data in the Tabular Data window
    Context Menu This menu shows up as user right mouse button click on objects, graphics, toolbars, etc. Different entities may show different context
    Status Bar This widget shows the message and status on the bottom area of the application interface

    Windows management

    The WELSIM window owns panes that can carry project objects, properties, graphics, output, tabular data, and chart views.Window management functionalities enable you to dock, hide, show, move, and resize the windows.

    Hiding and showing

    The windows can be hidden or shown by setting the view controller. As shown in Figure [tab:ch3_guide_gui_windows], there are two ways to control the window views:

    1. Browse the View Menu > Windows, toggle the windows that you would show or hide.
    2. Right mouse button clicks on the Toolbar, you can toggle the windows.

    You also can click the cross button on the title bar to hide the window.

    finite_element_analysis_welsim_gui_window1 finite_element_analysis_welsim_gui_window2

    Docking and undocking

    You can drag a window's title bar to move a window pane. Once you start to drag the window, the activated window is moving with your mouse. You can release the button on the target area to settle the new docking area. You can double-click a window's title bar to move it around the screen. The size of the window can be adjusted easily by dragging the borders or corners. You also can click the undocking button on the title bar to undock the window.

    Moving and resizing

    You can drag a window's title bar to move and undock a window pane. Once you start to drag the window, the potential dock target area appears in the allowed space. At this moment, you can release the button to dock the window on the target area.

    Main windows

    Besides the menu and toolbar widgets of the user interface, some other widgets are available. Those windows appear by default or when specific options are activated. The availability of those windows is controlled by the VIEW > Windows menu. This section discusses the following windows:

    • Project Explorer (Tree list)
    • Properties View
    • Graphics Window
    • Output Window
    • Tabular Data Window
    • Chart Window
    • Spreadsheet Window

    As the user selects a tree object in the Project Explorer window, all attributes for the selected object in Properties View, Tabular Data, and Chart Window are displayed or updated. The Properties window contains two tabs, and the Data tab shows the attributes about the object data, the Display tab lists the specifications about the graphics. The Graphics window shows the three-dimensional geometry model, depending on the tree object selection, shows information about the object details, highlighted areas, and annotations. The Output window displays the messages from the system or solvers. The Spreadsheet window shows the worksheet data for specific tree objects.

    Those user interface components are described in the following sections:

    Project explorer

    The object Tree list represents the logical steps of the conducted simulation study. All branches relate to the parenting object. For instance, a key object called Study contains Study Settings and boundary condition objects. The user can right click on an object to activate a context menu that relates to the clicked object. The objects can be copied, pasted, duplicated, and renamed.

    An example of the Project Explorer window is shown in Figure below.

    finite_element_analysis_welsim_gui_tree1

    Note

    The tree outline contains all elements that applied in the simulation study. The root object displays the number of projects in the solution. The Material project node includes all material specification. The FEM project contains the analysis settings, multiple FEM projects are allowed in the solution.

    Knowing the tree objects

    The tree objects in the Project Explorer window have the following conventions:

    • Object Icon appears to the left of the object in the tree list. The icon is intended for users to identify the type of object. For example, icons for computational results always consist of three colors (red, green, and blue), which can help distinguish other objects.
    • A right-head arrow symbol to the left of the object indicates that this object contains child sub-objects. Clicking the arrow to expand the object and display the children.
    • A down-head arrow symbol to the left of the object indicates that the object expends all child objects. Clicking the arrow to collapse the sub-objects.
    • To delete an object from the tree list, you can right click on the target object and select Delete.

    Object status symbols

    The status icons are smaller than the tree object icon and located to the right bottom corner of the object icon. These symbols are intend to provide a quick visual reference to the status of the object. The details of the status symbols are described in Table below.

    Status Name Symbol Icon Description
    Underdefined finite_element_analysis_welsim_status_undefined A study object or its child objects requires user input values
    Error finite_element_analysis_welsim_status_error A fixed supported object may stop the simulation due to the confliction with other settings, user needs to resolve the confliction to continue the modeling
    OK finite_element_analysis_welsim_status_ok A mesh settings object is well defined or any action about this object is succeed
    Suppressed finite_element_analysis_welsim_status_suppressed An object is suppressed, such object becomes deactivated and won't participate the simulation. User can unsuppress the object
    Needs to be Updated finite_element_analysis_welsim_status_needtoupdate An answers object or its child objects are not evaluated. Waiting for user to update

    Suppressing/Unsuppressing objects

    Most of the objects in the Project Explorer window can be suppressed or unsuppressed by users. A suppressed object means that it is excluded from the further analysis. For example, suppressing a boundary condition excludes the boundary condition from the study and the further solutions. You also can unsuppress the object with the restored object attributes.

    There are two ways to suppress/unsuppress an object:

    • Right-click the object, and then select Suppress from the context menu. Or
    • In the property view of the object, set the Suppressed option to True. Conversely, you can unsuppress objects by setting the Suppressed option to False.

    Properties view

    The Properties View is located in the bottom left corner of the main user interface by default, and the user can change the location by dragging the window pane. This view window provides the user with details and information that relate to the selected object in the Project Explorer. Some properties are read-only that cannot be changed by the users, and some properties allow users to input values. An example of Properties View of the object is shown in Figures below.

    finite_element_analysis_welsim_properties_view1 finite_element_analysis_welsim_properties_view2

    Features

    The features of the Properties View include:

    • Resizable and movable.
    • Drop-down cells for Boolean or Enumeration list.
    • Buttons to display a dialog box (such as color picker).
    • OK/Cancel buttons for geometry selection.
    • Property cell can change background color according to the content.

    Group property

    The Group Property is a read-only and occupy the entire row of the Properties pane, as shown in Figure below.

    finite_element_analysis_welsim_group_property

    The group provides you better user experience by organizing the properties into distinct categories.

    Undefined or invalid properties

    In the Properties View, the undefined or invalid fields are highlighted in yellow as shown in Figure below.

    finite_element_analysis_welsim_invalid_property

    Once the property is well defined and becomes valid, highlight yellow color disappears.

    The combo property shows the drop-down list as user clicks the attribute as shown in Figure below.

    finite_element_analysis_welsim_dropdown_property

    Note

    You can adjust the width of the columns by dragging the separator between the columns.

    Text entry

    In the text entry field, you can input strings, numbers, or integers, depending on the type of the cell as shown in Figure below.

    finite_element_analysis_welsim_text_property

    The invalid value for the specific cell will be discarded, or the cell shows red background.

    Geometry selection

    Geometry Selection allows users to scope topological entities from the graphics window. An example of Geometry Selection property is shown in Figure below.

    finite_element_analysis_welsim_property_sel2

    After selecting appropriate geometry entities, you can click the OK button to set the current selection into the field. Clicking the Cancel button does not change the pre-existing selection.

    Graphics window

    The Graphics window displays the geometry, annotation, mesh, result, etc. The components in the graphics window could be:

    • 3D Graphics
    • A scale rule
    • A legend and a coutour controller (for result display)
    • 2D Annotations (for boundary conditions, result display)
    • 3D Annotations (for boundary conditions)
    • Global coordinate system symbol
    • Graphical toolbar
    • Multi-purpose tabs
    • WELSIM logo and version number

    An example view of the Grpahics window is shown in Figure below.

    finite_element_analysis_welsim_graphics_full

    Tabular data window

    Tabular Data window is designed in better reviewing the input and output data. When you select the following objects in the tree window, both Tabular Data and Chart windows display data on the interface.

    • Boundary conditions
    • Body conditions
    • Results
    • Probe Results

    The listed data in Tabular Data window is consistent with the curves in the Chart window. As an example shown in Figure below, you can see the maximum and minimum values at all time steps are consistent between those two windows.

    finite_element_analysis_welsim_tabular_data_view1

    Chart window

    The Chart window displays the curves for the selected tree object. The curves are consistent with the data in the Tabular Data window. An example of Chart window drawing the maximum and minimum values along time is shown in Figure below.

    finite_element_analysis_welsim_chart_view1

    Spreadsheet window

    The spreadsheet window provides object data in the form of tables, charts, or text to you. This widget usually contains the summarized data for a collection of properties. Note that not all objects contain a spreadsheet window, only the object that has large data may own a spreadsheet window. The behaviors of the spreadsheet window are:

    1. A spreadsheet designed to show large data on one field does not automatically display the data. You can open the spreadsheet window by double-clicking specific objects, such as Material and Study Setting objects.
    2. A new tab shows up as the spreadsheet window is open. You can close the window by clicking the cross button on the tab, or by pressing the OK button on the spreadsheet.

    An example of the spreadsheet window is shown in Figure below.

    finite_element_analysis_welsim_spreadsheet_view1

    Output window

    The output window prompts you with feedback concerning the results of your actions in using WELSIM. In the current version, the output window mainly displays the message from the solvers. An example of output window displaying the solver messages is shown in Figure below.

    finite_element_analysis_welsim_output_view1

    The Output window pane contains several buttons, there are:

    • Save Output Text: saves the output text into an external file.
    • Clear Text: clears the text field.
    • Stop Interprocess: discontinues the solver process.

    The main menus contain the following items as shown in Figure below.

    finite_element_analysis_welsim_main_menu

    File menu

    The FILE menu includes the following actions:

    • New: Creates a new finite element analysis project.
    • Open: Resumes the WELSIM solution from an external “*.wsdb” file.
    • Save: stores the WELSIM solution to an external “.wsdb” file.
    • Save As: stores the WELSIM solution to another external “.wsdb” file.
    • Close Project: deletes the current finite element project.
    • Close All: deletes all projects in the solution.
    • Quit: Exit the application.

    The items of the File menu is shown in Figure below.

    finite_element_analysis_welsim_menu_file

    View menu

    The VIEW menu includes the following actions:

    • Zooms: adjusts display scale of the graphics field, contains sub-items: Zoom Extents, Zoom In, Zoom Out, Box Zoom.
    • Views: changes the viewpoint to the graphics display field. Includes sub-items: Isometric, Top, Right, Front.
    • Graphics Window: changes the mode of the graphics window. Includes sub-items: Docked, Undocked, and Full Screen.
    • Toolbars: determines to show the toolbars on the uesr interface. The available toolbars include File, Material, Geometry, FEM, Structural, Thermal, Electromagnetic, Tools, and Help.
    • Windows: controls the display of the windows. The options that can be toggled are Project Explorer, Properties, Output, Tabular Data, and Chart windows.
    • Status Bar: toggles the display of the status bar to the bottom of the main window.

    The items of the View menu is shown in Figure below.

    finite_element_analysis_welsim_menu_view

    Material menu

    The MATERIAL menu includes the following actions:

    • New Material Project: adds a new material project if the tree has no material project.
    • Add Material: defines a new material object.
    • Export Materials: outputs material data into an external file with JSON format.

    The items of the Material Menu is shown in Figure below.

    finite_element_analysis_welsim_menu_material

    Geometry menu

    The GEOMETRY menu includes the following actions:

    • Import: creates new geometries from the external files with STEP or IGES format.
    • Export: saves geometries into external STEP file.
    • Add Box: creates a new 3D box shape.
    • Add Cylinder: creates a new 3D cylinder shape.
    • Add Plate: creates a new 3D plate shape.
    • Add Line: creates a new 3D line shape.
    • Generate Solid: create a 3D solid shape according to the enclosed surface shape.
    • Union: consolidates multiple geometries into one geometry.
    • Intersection: creates a geometry that is the common area of multiple geometries.
    • Difference: creates a geometry that is differentiated between the selected geometries.
    • Show: displays the selected geometry objects.
    • Hide: hides the selected geometry objects.
    • Show All: displays all geometries.
    • Hide All: hides all geometries.

    The items of the Geometry Menu is shown in Figure below.

    finite_element_analysis_welsim_menu_geometry

    FEM menu

    The FEM Menu includes the following actions:

    • Mesh All: generates the mesh for the entire domain.
    • Clear Generated Mesh: removes all generated mesh.
    • Check Mesh: examines the quality of the generated mesh.
    • Add Mesh Settings: adds a global mesh settings object to the tree.
    • Add Mesh Method: adds a local mesh method object to the tree.
    • Mesh Method: generates the mesh for the geometries that are scoped in the mesh method object.
    • Connections: adds a Connections object if no connection object is presented.
    • Add Contact: adds a Contact Pair object to the tree.
    • Add Study Settings: adds a Study Settings object to the tree if no study settings object is presented.
    • Compute: solves the finite element model.
    • Clear Calculated Solution: remove the solved data in the current project.
    • User Defined Result: adds a user-defined result object to the tree.
    • Evaluate Result: evaluates the selected result objects.
    • Evaluate All: evaluate all result objects in current project.
    • Clear Result: remove the generated result data.
    • Export Result: export the result data into an external file in ASCII format.

    The items of the FEM Menu is shown in Figure below.

    finite_element_analysis_welsim_menu_fem

    Structural menu

    The STRUCTURAL menu includes the following actions:

    • Constraint: adds a fixed support boundary condition object. It essentially sets displacement to zero.
    • Displacement: adds a displacement boundary condition object.
    • Force: adds a force boundary condition object.
    • Pressure: adds a pressure boundary condition object.
    • Fixed Rotation: adds a fixed rotation boundary condition object, specifically for the shell model.
    • Velocity: adds a velocity boundary condition object, specifically for the transient structural analysis.
    • Acceleration: adds a velocity boundary condition object, specifically for the transient structural analysis.
    • Body Force: adds a body force condition object.
    • Acceleration: adds a body acceleration condition object.
    • Earth Gravity: adds a standard earth gravity condition object.
    • Rotational Velocity: adds a rotational velocity object.
    • Displacement Result: adds a displacement result object.
    • Stress Result: adds a stress result object.
    • Strain Result: adds a strain result object.
    • Velocity Result: adds a velocity result object. It is available for the transient structural analysis.
    • Acceleration Result: adds an acceleration result object. It is available for the transient structural analysis.
    • Rotation Result: adds a ratation result object. It is available for the shell structure.
    • Reaction Force Probe: adds a force reaction probe result.
    • Reaction Moment Probe: adds a moment reaction probe result. It is available for the shell structure.

    The items of the Structural menu is shown in Figure below.

    finite_element_analysis_welsim_menu_structural

    Thermal menu

    The THERMAL menu includes the following actions:

    • Temperature: adds a temperature boundary condition object.
    • Heat Flux: adds a heat flux boundary condition object.
    • Convection: adds a heat convection boundary condition object.
    • Radiation: adds a heat radiation boundary condition object.
    • Initial Temperature: adds a initial temperature condition object. It is available for transient thermal analysis.
    • Temperature Result: adds a temperature result object.

    The items on the Thermal menu is shown in Figure below.

    finite_element_analysis_welsim_menu_thermal

    Electromagnetic menu

    The ELECTROMAGNETIC menu includes the following actions:

    • Ground: adds a ground boundary condition object. It essentially sets the voltage to zero.
    • Voltage: adds a voltage boundary condition object.
    • Symmetry: adds a symmetry boundary condition object.
    • Zero Charge: adds a zero charge boundary condition object.
    • Surface Charge Density: adds a surface charge density boundary condition object.
    • Electric Displacement: adds an electric displacement boundary condition object.
    • Insulating: adds an insulating boundary condition object. It essentially sets zero magnetic potential.
    • Magnetic Potential: adds a magnetic potential boundary condition object.
    • Magnetic Flux Density: adds a magnetic flux density boundary condition object.
    • Voltage Result: adds a voltage result object.
    • Electric Field Result: adds an electric field result object.
    • Electric Displacement Result: adds an electric displacement result object.
    • Magnetic Potential Result: adds a magnetic potential result object.
    • Magnetic Field Result: adds a magnetic field result object.
    • Magnetic Induction Field Result: adds a magnetic induction field result object.
    • Energy Density Result: adds an energy density result object.

    The items of the Electromagnetic menu is shown in Figure below.

    finite_element_analysis_welsim_menu_em

    Tools menu

    The TOOLS menu includes the following actions:

    • Export Input Script: generates solver input scripts to the designated directory.
    • Reveal Files in Explorer: opens the local directory that contains project files.

    The items of the Tools menu is shown in Figure below.

    finite_element_analysis_welsim_menu_tools

    Help menu

    The HELP menu includes the following actions:

    • Documentation: opens the default internet web browser, and visits online documentation.
    • Website: opens the default internet web browser, and visits official website.
    • License Manager: opens WELSIM license manager interface. You can activate the application with the license key or update the license here.
    • About: provides copyright and application version information.

    The items of the Help menu is shown in Figure below.

    finite_element_analysis_welsim_menu_help

    Toolbars

    Toolbars are displayed across the top of the main user interface. Toolbars are dockable, and you can drag the toolbar to your preferred field.

    File toolbar

    The File toolbar contains application-level commands as shown in Figure below. Each icon button and its description follows:

    • finite_element_analysis_welsim_gui_newdoc: creates a new finite element analysis project.
    • finite_element_analysis_welsim_gui_save: saves solution into an external “*.wsdb” file.
    • finite_element_analysis_welsim_gui_opendoc: resumes solution from an external “*.wsdb” file.
    • finite_element_analysis_welsim_gui_closedoc: closes the current analysis project.

    finite_element_analysis_welsim_toolbar_file

    Material toolbar

    The Material toolbar contains material-related simulation commands as shown in Figure below. Each icon button and its description follows:

    • finite_element_analysis_welsim_materialobject: creates a new material object.
    • finite_element_analysis_welsim_exportmaterial: exports all material data into an external JSON file.

    finite_element_analysis_welsim_toolbar_material

    Geometry toolbar

    The Geometry toolbar contains geometry-related commands as shown in Figure below. Each icon button and its description follows:

    • finite_element_analysis_welsim_gui_import: imports the geometries from an external STEP or IGES file.
    • finite_element_analysis_welsim_gui_export_part: exports the geometries into an external STEP file.
    • finite_element_analysis_welsim_part_box: creates a box shape.
    • finite_element_analysis_welsim_part_cylinder: creates a cylinder shape.
    • finite_element_analysis_welsim_part_face: creates a plate shape.
    • finite_element_analysis_welsim_part_line: creates a line shape.
    • finite_element_analysis_welsim_part_union: consolidates the selected geometries into one part.
    • finite_element_analysis_welsim_part_intersec: creates geometry from the commonly shared field of multiple geometries.
    • finite_element_analysis_welsim_part_diff: creates geometry from the difference among multiple geometries.

    finite_element_analysis_welsim_toolbar_geometry

    FEM toolbar

    The FEM toolbar contains finite element analysis commands as shown in Figure below. Each icon button and its description follows:

    • finite_element_analysis_welsim_gui_import: generates the mesh for the entire domain.
    • finite_element_analysis_welsim_gui_import: clear the generated mesh.
    • finite_element_analysis_welsim_gui_import: examines the mesh quality.
    • finite_element_analysis_welsim_gui_import: creates a mesh method object, which is used for the local mesh settings.
    • finite_element_analysis_welsim_gui_import: generates the mesh for the scoped geometries in mesh method object.
    • finite_element_analysis_welsim_gui_import: creates a new contact pair object.
    • finite_element_analysis_welsim_gui_import: solves the finite element model.
    • finite_element_analysis_welsim_gui_import: creates a new user-defined result object.
    • finite_element_analysis_welsim_gui_import: evaluates the selected result objects.
    • finite_element_analysis_welsim_gui_import: evaluates all result objects in current project.

    finite_element_analysis_welsim_toolbar_fem

    Structural toolbar

    The Structural toolbar contains structural analysis commands as shown in Figure below. Each icon button and its description follows:

    • finite_element_analysis_welsim_bc_fixed: creates a fixed support boundary condition object.
    • finite_element_analysis_welsim_bc_displacement: creates a displacement boundary condition object.
    • finite_element_analysis_welsim_bc_force: creates a force boundary condition object.
    • finite_element_analysis_welsim_bc_pressure: creates a pressure boundary condition object.
    • finite_element_analysis_welsim_bc_fixed_rot: creates a fixed rotation boundary condition object.
    • finite_element_analysis_welsim_bc_velocity: creates a velocity boundary condition object. It is available for the transient structural analysis.
    • finite_element_analysis_welsim_bc_acceleration: creates a acceleration boundary condition object. It is available for the transient structural analysis.
    • finite_element_analysis_welsim_dc_bodyforce: creates a body force domain condition object.
    • finite_element_analysis_welsim_dc_acceleration: creates an acceleration domain condition object.
    • finite_element_analysis_welsim_dc_gravity: creates a standard earth gravity domain condition object.
    • finite_element_analysis_welsim_dc_rotvelocity: creates a rotational velocity domain condition object.
    • finite_element_analysis_welsim_result_disp: creates a displacement result object.
    • finite_element_analysis_welsim_result_stress: creates a stress result object.
    • finite_element_analysis_welsim_result_strain: creates a strain result object.
    • finite_element_analysis_welsim_rst_velocity: creates a velocity result object. It is available for the transient structural analysis.
    • finite_element_analysis_welsim_rst_acceleration: creates a velocity result object. It is available for the transient structural analysis.
    • finite_element_analysis_welsim_rst_reaction_force: creates a rotation result object. It is available for the shell model.
    • finite_element_analysis_welsim_rst_reaction_force: creates a force reaction probe object.
    • finite_element_analysis_welsim_rst_reaction_moment: creates a moment reaction probe object. It is available for the shell model.

    finite_element_analysis_welsim_toolbar_structural

    Thermal toolbar

    The Thermal toolbar contains thermal analysis commands as shown in Figure below. Each icon button and its description follows:

    • finite_element_analysis_welsim_bc_temperature: creates a temperature boundary condition object.
    • finite_element_analysis_welsim_bc_heatflux: creates a heat flux boundary condition object.
    • finite_element_analysis_welsim_bc_heat_convection: creates a heat convection boundary condition object.
    • finite_element_analysis_welsim_bc_radiation: creates a heat radiation boundary condition object.
    • finite_element_analysis_welsim_initial_temperature: creates an initial temperature boundary condition object. It is available for the transient thermal analysis.
    • finite_element_analysis_welsim_result_temperature: creates a temperature result object.

    finite_element_analysis_welsim_toolbar_thermal

    Electromagnetic toolbar

    The Electromagnetic toolbar contains electric and magnetic analyses commands as shown in Figure below. Each icon button and its description follows:

    • finite_element_analysis_welsim_bc_ground: creates a ground boundary condition object.
    • finite_element_analysis_welsim_bc_voltage: creates a velocity boundary condition object.
    • finite_element_analysis_welsim_bc_em_symmetry: creates a symmetry boundary condition object.
    • finite_element_analysis_welsim_bc_zero_charge: creates a zero charge boundary condition object.
    • finite_element_analysis_welsim_bc_surface_charge: creates a surface charge density boundary condition object.
    • finite_element_analysis_welsim_bc_electricdisp: creates an electric displacement boundary condition object.
    • finite_element_analysis_welsim_bc_em_insulting: creates an insulating boundary condition object.
    • finite_element_analysis_welsim_bc_magneticpotential: creates a magnetic potential boundary condition object.
    • finite_element_analysis_welsim_bc_magneticfluxdensity: creates a magnetic flux density boundary condition object.
    • finite_element_analysis_welsim_rst_voltage: creates a voltage result object.
    • finite_element_analysis_welsim_rst_efield: creates an electric field result object.
    • finite_element_analysis_welsim_rst_dfield: creates an electric displacement result object.
    • finite_element_analysis_welsim_rst_magneticpotential: creates a vector magnetic potential result object.
    • finite_element_analysis_welsim_rst_hfield: creates a magnetic field result object.
    • finite_element_analysis_welsim_rst_bfield: creates a magnetic induction field result object.
    • finite_element_analysis_welsim_rst_emenergydensity: creates an electromagnetic energy density result object.

    finite_element_analysis_welsim_toolbar_em

    Tool toolbar

    The Tool toolbar contains assistance commands as shown in Figure below. Each icon button and its description follows:

    To be added ...
    -

    Help toolbar

    The Help toolbar contains assistance commands as shown in Figure below. Each icon button and its description follows:

    • finite_element_analysis_welsim_gui_onlinedoc: opens the default internet web browser, and visits online documentation.
    • finite_element_analysis_welsim_gui_website: opens the default internet web browser, and visits official website.
    • finite_element_analysis_welsim_gui_licmgr: opens WELSIM license manager interface. You can activate the application with the license key or update the license here.
    • finite_element_analysis_welsim_about: displays the copyrights and version information of WELSIM application.

    finite_element_analysis_welsim_toolbar_help

    Graphics toolbar

    The Graphics toolbar contains graphical operation commands as shown in Figure below. Each icon button and its description follows:

    • finite_element_analysis_welsim_gui_zoomall: fits the entire model in the graphics window.
    • finite_element_analysis_welsim_gui_zoomin: displays a closer view of the geometries.
    • finite_element_analysis_welsim_gui_zoomout: displays a more distant view of the geometries.
    • finite_element_analysis_welsim_gui_zoombox: displays the selected area of a model in a box that you define.
    • finite_element_analysis_welsim_view_axo: displays the 3D model in an isometric view.
    • finite_element_analysis_welsim_view_xy: displays the 3D model in an XY-plane view.
    • finite_element_analysis_welsim_view_yz: displays the 3D model in a YZ-plane view.
    • finite_element_analysis_welsim_view_xz: displays the 3D model in an XZ-plane view.
    • finite_element_analysis_welsim_select_volume: set the volume selectable.
    • finite_element_analysis_welsim_select_face: set the face selectable.
    • finite_element_analysis_welsim_select_edge: set the edge selectable.
    • finite_element_analysis_welsim_select_vertex: set the vertex selectable.

    finite_element_analysis_welsim_toolbar_graphics

    Working with graphics

    The following lists the tips for working with WELSIM graphics:

    • You can use the ruler, presented at the bottom of the graphics window, to estimate the scale of the geometry size.
    • You can rotate the view of geometries by holding and dragging the left mouse button.
    • You can select or deselect multiple topological entities by pressing CTRL or SHIFT key.
    • You can pan the view by dragging your right mouse button or arrow keys.
    • You can zoom in/out the view by scrolling the mouse wheel or using ± and CTRL keys.
    • You can rotate the view by using the left mouse button.
    • You can open a context menu of views by right-clicking on the graphics field.

    PreSelecting geometry

    This section discusses the pre-selection features in the Graphics window.

    Highlighting

    As you hover the cursor over a geometry entity, the graphics highlights the selection and shows the location of the pointer. The pre-selection is controlled by the selection filter, and only the allowed entity types can be pre-selected and highlighted.

    As shown in Figure below, the face are highlighted in green color at pre-selection mode.

    finite_element_analysis_welsim_graphics_presel

    Selecting geometry

    This section discusses how to select and pick geometry in the Graphics window.

    Picking

    You can pick visible geometries by left clicking on the entities. A valid picking sets the geometry selection property for specific objects, such as boundary conditions.

    You can hold the Ctrl or Shift key down to add or remove multiple selections from the current selections. A pick in the free space clears the current selection.

    Selection filters

    The selection filters control the user selection mode and provide an easy interface for users to pick or select the geometry entities. A pressed button in the selection filter toolbar denotes a selectable geometry type. The following describes the filters.

    • Volumes: Allows selection of the entire body. Highlighted by body surfaces in green. Depressing this filter releases the Faces, Edges, and Vertices filters.
    • Faces: Allows selection of faces. Highlighted by surfaces in green. Depressing this filter releases the Volumes filters.
    • Edges: Allows selection of edges. Highlighted by lines in green. Depressing this filter releases the Volumes filters.
    • Vertices: Allows selection of vertices. Highlighted by points in green. Depressing this filter releases the Volumes filters.

    Controlling graphical view

    The section describes the controlling and manipulating the graphical view with mouse and keys.

    • Zoom: Middle scrolling.
    • Pan: Right clicking, or arrow keys.
    • Rotate: Left clicking and dragging.

    View annotations

    Graphics window may contain these types of annotations:

    • 2D annotation: statically locates at the left top of the graphics windows. This annotation shows texts about the object type and name and color indicator for specific objects such as boundary conditions.

    • 3D annotation: dynamically locates on the geometry area, the position can be changed as the user rotates, zooms or pans the view.

    \ No newline at end of file + Application user interface - WelSim Documentation

    Application user interface

    This section describes the fundamental components of the WELSIM application interface, their usage, and behaviors.

    WELSIM application window

    The functional components of the graphical user interface include the following as listed in Table below.

    Window Component Description
    Main Menus This menu includes all application level actions such as File and About
    Standard Toolbar This toolbar contains commonly used actions such as Mesh and Solve
    Graphics Toolbar This toolbar contains graphics related actions such as Zoom and Selection
    Project Explorer (Tree) Window This window contains a list of simulation objects that represents the modeling settings. Since it contains the branches and trunk, this windows is also called tree outline. The context menu for each object could vary. The object can be renamed, deleted, duplicated, copied and pasted
    Properties Window This window displays the properties of each object in the tree list. The user can view or edit the property values
    Graphics View This window shows and manipulates the visual content of the simulation entities. This window can display: 3D geometry, mesh, annotation, coordinate system symbol, spreadsheet, etc
    Output Window This window display the messages from the system or solvers
    Tabular Data Window This window lists the data that is input from user or output from the solvers. The listed data is always consistent with the curves in the Chart window
    Chart Window This window plots the graphics that is input from user or output from the solvers. The curves are always consistent with the table data in the Tabular Data window
    Context Menu This menu shows up as user right mouse button click on objects, graphics, toolbars, etc. Different entities may show different context
    Status Bar This widget shows the message and status on the bottom area of the application interface

    Windows management

    The WELSIM window owns panes that can carry project objects, properties, graphics, output, tabular data, and chart views.Window management functionalities enable you to dock, hide, show, move, and resize the windows.

    Hiding and showing

    The windows can be hidden or shown by setting the view controller. As shown in Figure [tab:ch3_guide_gui_windows], there are two ways to control the window views:

    1. Browse the View Menu > Windows, toggle the windows that you would show or hide.
    2. Right mouse button clicks on the Toolbar, you can toggle the windows.

    You also can click the cross button on the title bar to hide the window.

    finite_element_analysis_welsim_gui_window1 finite_element_analysis_welsim_gui_window2

    Docking and undocking

    You can drag a window's title bar to move a window pane. Once you start to drag the window, the activated window is moving with your mouse. You can release the button on the target area to settle the new docking area. You can double-click a window's title bar to move it around the screen. The size of the window can be adjusted easily by dragging the borders or corners. You also can click the undocking button on the title bar to undock the window.

    Moving and resizing

    You can drag a window's title bar to move and undock a window pane. Once you start to drag the window, the potential dock target area appears in the allowed space. At this moment, you can release the button to dock the window on the target area.

    Main windows

    Besides the menu and toolbar widgets of the user interface, some other widgets are available. Those windows appear by default or when specific options are activated. The availability of those windows is controlled by the VIEW > Windows menu. This section discusses the following windows:

    • Project Explorer (Tree list)
    • Properties View
    • Graphics Window
    • Output Window
    • Tabular Data Window
    • Chart Window
    • Spreadsheet Window

    As the user selects a tree object in the Project Explorer window, all attributes for the selected object in Properties View, Tabular Data, and Chart Window are displayed or updated. The Properties window contains two tabs, and the Data tab shows the attributes about the object data, the Display tab lists the specifications about the graphics. The Graphics window shows the three-dimensional geometry model, depending on the tree object selection, shows information about the object details, highlighted areas, and annotations. The Output window displays the messages from the system or solvers. The Spreadsheet window shows the worksheet data for specific tree objects.

    Those user interface components are described in the following sections:

    Project explorer

    The object Tree list represents the logical steps of the conducted simulation study. All branches relate to the parenting object. For instance, a key object called Study contains Study Settings and boundary condition objects. The user can right click on an object to activate a context menu that relates to the clicked object. The objects can be copied, pasted, duplicated, and renamed.

    An example of the Project Explorer window is shown in Figure below.

    finite_element_analysis_welsim_gui_tree1

    Note

    The tree outline contains all elements that applied in the simulation study. The root object displays the number of projects in the solution. The Material project node includes all material specification. The FEM project contains the analysis settings, multiple FEM projects are allowed in the solution.

    Knowing the tree objects

    The tree objects in the Project Explorer window have the following conventions:

    • Object Icon appears to the left of the object in the tree list. The icon is intended for users to identify the type of object. For example, icons for computational results always consist of three colors (red, green, and blue), which can help distinguish other objects.
    • A right-head arrow symbol to the left of the object indicates that this object contains child sub-objects. Clicking the arrow to expand the object and display the children.
    • A down-head arrow symbol to the left of the object indicates that the object expends all child objects. Clicking the arrow to collapse the sub-objects.
    • To delete an object from the tree list, you can right click on the target object and select Delete.

    Object status symbols

    The status icons are smaller than the tree object icon and located to the right bottom corner of the object icon. These symbols are intend to provide a quick visual reference to the status of the object. The details of the status symbols are described in Table below.

    Status Name Symbol Icon Description
    Underdefined finite_element_analysis_welsim_status_undefined A study object or its child objects requires user input values
    Error finite_element_analysis_welsim_status_error A fixed supported object may stop the simulation due to the confliction with other settings, user needs to resolve the confliction to continue the modeling
    OK finite_element_analysis_welsim_status_ok A mesh settings object is well defined or any action about this object is succeed
    Suppressed finite_element_analysis_welsim_status_suppressed An object is suppressed, such object becomes deactivated and won't participate the simulation. User can unsuppress the object
    Needs to be Updated finite_element_analysis_welsim_status_needtoupdate An answers object or its child objects are not evaluated. Waiting for user to update

    Suppressing/Unsuppressing objects

    Most of the objects in the Project Explorer window can be suppressed or unsuppressed by users. A suppressed object means that it is excluded from the further analysis. For example, suppressing a boundary condition excludes the boundary condition from the study and the further solutions. You also can unsuppress the object with the restored object attributes.

    There are two ways to suppress/unsuppress an object:

    • Right-click the object, and then select Suppress from the context menu. Or
    • In the property view of the object, set the Suppressed option to True. Conversely, you can unsuppress objects by setting the Suppressed option to False.

    Properties view

    The Properties View is located in the bottom left corner of the main user interface by default, and the user can change the location by dragging the window pane. This view window provides the user with details and information that relate to the selected object in the Project Explorer. Some properties are read-only that cannot be changed by the users, and some properties allow users to input values. An example of Properties View of the object is shown in Figures below.

    finite_element_analysis_welsim_properties_view1 finite_element_analysis_welsim_properties_view2

    Features

    The features of the Properties View include:

    • Resizable and movable.
    • Drop-down cells for Boolean or Enumeration list.
    • Buttons to display a dialog box (such as color picker).
    • OK/Cancel buttons for geometry selection.
    • Property cell can change background color according to the content.

    Group property

    The Group Property is a read-only and occupy the entire row of the Properties pane, as shown in Figure below.

    finite_element_analysis_welsim_group_property

    The group provides you better user experience by organizing the properties into distinct categories.

    Undefined or invalid properties

    In the Properties View, the undefined or invalid fields are highlighted in yellow as shown in Figure below.

    finite_element_analysis_welsim_invalid_property

    Once the property is well defined and becomes valid, highlight yellow color disappears.

    The combo property shows the drop-down list as user clicks the attribute as shown in Figure below.

    finite_element_analysis_welsim_dropdown_property

    Note

    You can adjust the width of the columns by dragging the separator between the columns.

    Text entry

    In the text entry field, you can input strings, numbers, or integers, depending on the type of the cell as shown in Figure below.

    finite_element_analysis_welsim_text_property

    The invalid value for the specific cell will be discarded, or the cell shows red background.

    Geometry selection

    Geometry Selection allows users to scope topological entities from the graphics window. An example of Geometry Selection property is shown in Figure below.

    finite_element_analysis_welsim_property_sel2

    After selecting appropriate geometry entities, you can click the OK button to set the current selection into the field. Clicking the Cancel button does not change the pre-existing selection.

    Graphics window

    The Graphics window displays the geometry, annotation, mesh, result, etc. The components in the graphics window could be:

    • 3D Graphics
    • A scale rule
    • A legend and a coutour controller (for result display)
    • 2D Annotations (for boundary conditions, result display)
    • 3D Annotations (for boundary conditions)
    • Global coordinate system symbol
    • Graphical toolbar
    • Multi-purpose tabs
    • WELSIM logo and version number

    An example view of the Grpahics window is shown in Figure below.

    finite_element_analysis_welsim_graphics_full

    Tabular data window

    Tabular Data window is designed in better reviewing the input and output data. When you select the following objects in the tree window, both Tabular Data and Chart windows display data on the interface.

    • Boundary conditions
    • Body conditions
    • Results
    • Probe Results

    The listed data in Tabular Data window is consistent with the curves in the Chart window. As an example shown in Figure below, you can see the maximum and minimum values at all time steps are consistent between those two windows.

    finite_element_analysis_welsim_tabular_data_view1

    Chart window

    The Chart window displays the curves for the selected tree object. The curves are consistent with the data in the Tabular Data window. An example of Chart window drawing the maximum and minimum values along time is shown in Figure below.

    finite_element_analysis_welsim_chart_view1

    Spreadsheet window

    The spreadsheet window provides object data in the form of tables, charts, or text to you. This widget usually contains the summarized data for a collection of properties. Note that not all objects contain a spreadsheet window, only the object that has large data may own a spreadsheet window. The behaviors of the spreadsheet window are:

    1. A spreadsheet designed to show large data on one field does not automatically display the data. You can open the spreadsheet window by double-clicking specific objects, such as Material and Study Setting objects.
    2. A new tab shows up as the spreadsheet window is open. You can close the window by clicking the cross button on the tab, or by pressing the OK button on the spreadsheet.

    An example of the spreadsheet window is shown in Figure below.

    finite_element_analysis_welsim_spreadsheet_view1

    Output window

    The output window prompts you with feedback concerning the results of your actions in using WELSIM. In the current version, the output window mainly displays the message from the solvers. An example of output window displaying the solver messages is shown in Figure below.

    finite_element_analysis_welsim_output_view1

    The Output window pane contains several buttons, there are:

    • Save Output Text: saves the output text into an external file.
    • Clear Text: clears the text field.
    • Stop Interprocess: discontinues the solver process.

    The main menus contain the following items as shown in Figure below.

    finite_element_analysis_welsim_main_menu

    File menu

    The FILE menu includes the following actions:

    • New: Creates a new finite element analysis project.
    • Open: Resumes the WELSIM solution from an external “*.wsdb” file.
    • Save: stores the WELSIM solution to an external “.wsdb” file.
    • Save As: stores the WELSIM solution to another external “.wsdb” file.
    • Close Project: deletes the current finite element project.
    • Close All: deletes all projects in the solution.
    • Quit: Exit the application.

    The items of the File menu is shown in Figure below.

    finite_element_analysis_welsim_menu_file

    View menu

    The VIEW menu includes the following actions:

    • Zooms: adjusts display scale of the graphics field, contains sub-items: Zoom Extents, Zoom In, Zoom Out, Box Zoom.
    • Views: changes the viewpoint to the graphics display field. Includes sub-items: Isometric, Top, Right, Front.
    • Graphics Window: changes the mode of the graphics window. Includes sub-items: Docked, Undocked, and Full Screen.
    • Toolbars: determines to show the toolbars on the uesr interface. The available toolbars include File, Material, Geometry, FEM, Structural, Thermal, Electromagnetic, Tools, and Help.
    • Windows: controls the display of the windows. The options that can be toggled are Project Explorer, Properties, Output, Tabular Data, and Chart windows.
    • Status Bar: toggles the display of the status bar to the bottom of the main window.

    The items of the View menu is shown in Figure below.

    finite_element_analysis_welsim_menu_view

    Material menu

    The MATERIAL menu includes the following actions:

    • New Material Project: adds a new material project if the tree has no material project.
    • Add Material: defines a new material object.
    • Export Materials: outputs material data into an external file with JSON format.

    The items of the Material Menu is shown in Figure below.

    finite_element_analysis_welsim_menu_material

    Geometry menu

    The GEOMETRY menu includes the following actions:

    • Import: creates new geometries from the external files with STEP or IGES format.
    • Export: saves geometries into external STEP file.
    • Add Box: creates a new 3D box shape.
    • Add Cylinder: creates a new 3D cylinder shape.
    • Add Plate: creates a new 3D plate shape.
    • Add Line: creates a new 3D line shape.
    • Generate Solid: create a 3D solid shape according to the enclosed surface shape.
    • Union: consolidates multiple geometries into one geometry.
    • Intersection: creates a geometry that is the common area of multiple geometries.
    • Difference: creates a geometry that is differentiated between the selected geometries.
    • Show: displays the selected geometry objects.
    • Hide: hides the selected geometry objects.
    • Show All: displays all geometries.
    • Hide All: hides all geometries.

    The items of the Geometry Menu is shown in Figure below.

    finite_element_analysis_welsim_menu_geometry

    FEM menu

    The FEM Menu includes the following actions:

    • Mesh All: generates the mesh for the entire domain.
    • Clear Generated Mesh: removes all generated mesh.
    • Check Mesh: examines the quality of the generated mesh.
    • Add Mesh Settings: adds a global mesh settings object to the tree.
    • Add Mesh Method: adds a local mesh method object to the tree.
    • Mesh Method: generates the mesh for the geometries that are scoped in the mesh method object.
    • Connections: adds a Connections object if no connection object is presented.
    • Add Contact: adds a Contact Pair object to the tree.
    • Add Study Settings: adds a Study Settings object to the tree if no study settings object is presented.
    • Compute: solves the finite element model.
    • Clear Calculated Solution: remove the solved data in the current project.
    • User Defined Result: adds a user-defined result object to the tree.
    • Evaluate Result: evaluates the selected result objects.
    • Evaluate All: evaluate all result objects in current project.
    • Clear Result: remove the generated result data.
    • Export Result: export the result data into an external file in ASCII format.

    The items of the FEM Menu is shown in Figure below.

    finite_element_analysis_welsim_menu_fem

    Structural menu

    The STRUCTURAL menu includes the following actions:

    • Constraint: adds a fixed support boundary condition object. It essentially sets displacement to zero.
    • Displacement: adds a displacement boundary condition object.
    • Force: adds a force boundary condition object.
    • Pressure: adds a pressure boundary condition object.
    • Fixed Rotation: adds a fixed rotation boundary condition object, specifically for the shell model.
    • Velocity: adds a velocity boundary condition object, specifically for the transient structural analysis.
    • Acceleration: adds a velocity boundary condition object, specifically for the transient structural analysis.
    • Body Force: adds a body force condition object.
    • Acceleration: adds a body acceleration condition object.
    • Earth Gravity: adds a standard earth gravity condition object.
    • Rotational Velocity: adds a rotational velocity object.
    • Displacement Result: adds a displacement result object.
    • Stress Result: adds a stress result object.
    • Strain Result: adds a strain result object.
    • Velocity Result: adds a velocity result object. It is available for the transient structural analysis.
    • Acceleration Result: adds an acceleration result object. It is available for the transient structural analysis.
    • Rotation Result: adds a ratation result object. It is available for the shell structure.
    • Reaction Force Probe: adds a force reaction probe result.
    • Reaction Moment Probe: adds a moment reaction probe result. It is available for the shell structure.

    The items of the Structural menu is shown in Figure below.

    finite_element_analysis_welsim_menu_structural

    Thermal menu

    The THERMAL menu includes the following actions:

    • Temperature: adds a temperature boundary condition object.
    • Heat Flux: adds a heat flux boundary condition object.
    • Convection: adds a heat convection boundary condition object.
    • Radiation: adds a heat radiation boundary condition object.
    • Initial Temperature: adds a initial temperature condition object. It is available for transient thermal analysis.
    • Temperature Result: adds a temperature result object.

    The items on the Thermal menu is shown in Figure below.

    finite_element_analysis_welsim_menu_thermal

    Electromagnetic menu

    The ELECTROMAGNETIC menu includes the following actions:

    • Ground: adds a ground boundary condition object. It essentially sets the voltage to zero.
    • Voltage: adds a voltage boundary condition object.
    • Symmetry: adds a symmetry boundary condition object.
    • Zero Charge: adds a zero charge boundary condition object.
    • Surface Charge Density: adds a surface charge density boundary condition object.
    • Electric Displacement: adds an electric displacement boundary condition object.
    • Insulating: adds an insulating boundary condition object. It essentially sets zero magnetic potential.
    • Magnetic Potential: adds a magnetic potential boundary condition object.
    • Magnetic Flux Density: adds a magnetic flux density boundary condition object.
    • Voltage Result: adds a voltage result object.
    • Electric Field Result: adds an electric field result object.
    • Electric Displacement Result: adds an electric displacement result object.
    • Magnetic Potential Result: adds a magnetic potential result object.
    • Magnetic Field Result: adds a magnetic field result object.
    • Magnetic Induction Field Result: adds a magnetic induction field result object.
    • Energy Density Result: adds an energy density result object.

    The items of the Electromagnetic menu is shown in Figure below.

    finite_element_analysis_welsim_menu_em

    Tools menu

    The TOOLS menu includes the following actions:

    • Export Input Script: generates solver input scripts to the designated directory.
    • Reveal Files in Explorer: opens the local directory that contains project files.

    The items of the Tools menu is shown in Figure below.

    finite_element_analysis_welsim_menu_tools

    Help menu

    The HELP menu includes the following actions:

    • Documentation: opens the default internet web browser, and visits online documentation.
    • Website: opens the default internet web browser, and visits official website.
    • License Manager: opens WELSIM license manager interface. You can activate the application with the license key or update the license here.
    • About: provides copyright and application version information.

    The items of the Help menu is shown in Figure below.

    finite_element_analysis_welsim_menu_help

    Toolbars

    Toolbars are displayed across the top of the main user interface. Toolbars are dockable, and you can drag the toolbar to your preferred field.

    File toolbar

    The File toolbar contains application-level commands as shown in Figure below. Each icon button and its description follows:

    • finite_element_analysis_welsim_gui_newdoc: creates a new finite element analysis project.
    • finite_element_analysis_welsim_gui_save: saves solution into an external “*.wsdb” file.
    • finite_element_analysis_welsim_gui_opendoc: resumes solution from an external “*.wsdb” file.
    • finite_element_analysis_welsim_gui_closedoc: closes the current analysis project.

    finite_element_analysis_welsim_toolbar_file

    Material toolbar

    The Material toolbar contains material-related simulation commands as shown in Figure below. Each icon button and its description follows:

    • finite_element_analysis_welsim_materialobject: creates a new material object.
    • finite_element_analysis_welsim_exportmaterial: exports all material data into an external JSON file.

    finite_element_analysis_welsim_toolbar_material

    Geometry toolbar

    The Geometry toolbar contains geometry-related commands as shown in Figure below. Each icon button and its description follows:

    • finite_element_analysis_welsim_gui_import: imports the geometries from an external STEP or IGES file.
    • finite_element_analysis_welsim_gui_export_part: exports the geometries into an external STEP file.
    • finite_element_analysis_welsim_part_box: creates a box shape.
    • finite_element_analysis_welsim_part_cylinder: creates a cylinder shape.
    • finite_element_analysis_welsim_part_face: creates a plate shape.
    • finite_element_analysis_welsim_part_line: creates a line shape.
    • finite_element_analysis_welsim_part_union: consolidates the selected geometries into one part.
    • finite_element_analysis_welsim_part_intersec: creates geometry from the commonly shared field of multiple geometries.
    • finite_element_analysis_welsim_part_diff: creates geometry from the difference among multiple geometries.

    finite_element_analysis_welsim_toolbar_geometry

    FEM toolbar

    The FEM toolbar contains finite element analysis commands as shown in Figure below. Each icon button and its description follows:

    • finite_element_analysis_welsim_gui_import: generates the mesh for the entire domain.
    • finite_element_analysis_welsim_gui_import: clear the generated mesh.
    • finite_element_analysis_welsim_gui_import: examines the mesh quality.
    • finite_element_analysis_welsim_gui_import: creates a mesh method object, which is used for the local mesh settings.
    • finite_element_analysis_welsim_gui_import: generates the mesh for the scoped geometries in mesh method object.
    • finite_element_analysis_welsim_gui_import: creates a new contact pair object.
    • finite_element_analysis_welsim_gui_import: solves the finite element model.
    • finite_element_analysis_welsim_gui_import: creates a new user-defined result object.
    • finite_element_analysis_welsim_gui_import: evaluates the selected result objects.
    • finite_element_analysis_welsim_gui_import: evaluates all result objects in current project.

    finite_element_analysis_welsim_toolbar_fem

    Structural toolbar

    The Structural toolbar contains structural analysis commands as shown in Figure below. Each icon button and its description follows:

    • finite_element_analysis_welsim_bc_fixed: creates a fixed support boundary condition object.
    • finite_element_analysis_welsim_bc_displacement: creates a displacement boundary condition object.
    • finite_element_analysis_welsim_bc_force: creates a force boundary condition object.
    • finite_element_analysis_welsim_bc_pressure: creates a pressure boundary condition object.
    • finite_element_analysis_welsim_bc_fixed_rot: creates a fixed rotation boundary condition object.
    • finite_element_analysis_welsim_bc_velocity: creates a velocity boundary condition object. It is available for the transient structural analysis.
    • finite_element_analysis_welsim_bc_acceleration: creates a acceleration boundary condition object. It is available for the transient structural analysis.
    • finite_element_analysis_welsim_dc_bodyforce: creates a body force domain condition object.
    • finite_element_analysis_welsim_dc_acceleration: creates an acceleration domain condition object.
    • finite_element_analysis_welsim_dc_gravity: creates a standard earth gravity domain condition object.
    • finite_element_analysis_welsim_dc_rotvelocity: creates a rotational velocity domain condition object.
    • finite_element_analysis_welsim_result_disp: creates a displacement result object.
    • finite_element_analysis_welsim_result_stress: creates a stress result object.
    • finite_element_analysis_welsim_result_strain: creates a strain result object.
    • finite_element_analysis_welsim_rst_velocity: creates a velocity result object. It is available for the transient structural analysis.
    • finite_element_analysis_welsim_rst_acceleration: creates a velocity result object. It is available for the transient structural analysis.
    • finite_element_analysis_welsim_rst_reaction_force: creates a rotation result object. It is available for the shell model.
    • finite_element_analysis_welsim_rst_reaction_force: creates a force reaction probe object.
    • finite_element_analysis_welsim_rst_reaction_moment: creates a moment reaction probe object. It is available for the shell model.

    finite_element_analysis_welsim_toolbar_structural

    Thermal toolbar

    The Thermal toolbar contains thermal analysis commands as shown in Figure below. Each icon button and its description follows:

    • finite_element_analysis_welsim_bc_temperature: creates a temperature boundary condition object.
    • finite_element_analysis_welsim_bc_heatflux: creates a heat flux boundary condition object.
    • finite_element_analysis_welsim_bc_heat_convection: creates a heat convection boundary condition object.
    • finite_element_analysis_welsim_bc_radiation: creates a heat radiation boundary condition object.
    • finite_element_analysis_welsim_initial_temperature: creates an initial temperature boundary condition object. It is available for the transient thermal analysis.
    • finite_element_analysis_welsim_result_temperature: creates a temperature result object.

    finite_element_analysis_welsim_toolbar_thermal

    Electromagnetic toolbar

    The Electromagnetic toolbar contains electric and magnetic analyses commands as shown in Figure below. Each icon button and its description follows:

    • finite_element_analysis_welsim_bc_ground: creates a ground boundary condition object.
    • finite_element_analysis_welsim_bc_voltage: creates a velocity boundary condition object.
    • finite_element_analysis_welsim_bc_em_symmetry: creates a symmetry boundary condition object.
    • finite_element_analysis_welsim_bc_zero_charge: creates a zero charge boundary condition object.
    • finite_element_analysis_welsim_bc_surface_charge: creates a surface charge density boundary condition object.
    • finite_element_analysis_welsim_bc_electricdisp: creates an electric displacement boundary condition object.
    • finite_element_analysis_welsim_bc_em_insulting: creates an insulating boundary condition object.
    • finite_element_analysis_welsim_bc_magneticpotential: creates a magnetic potential boundary condition object.
    • finite_element_analysis_welsim_bc_magneticfluxdensity: creates a magnetic flux density boundary condition object.
    • finite_element_analysis_welsim_rst_voltage: creates a voltage result object.
    • finite_element_analysis_welsim_rst_efield: creates an electric field result object.
    • finite_element_analysis_welsim_rst_dfield: creates an electric displacement result object.
    • finite_element_analysis_welsim_rst_magneticpotential: creates a vector magnetic potential result object.
    • finite_element_analysis_welsim_rst_hfield: creates a magnetic field result object.
    • finite_element_analysis_welsim_rst_bfield: creates a magnetic induction field result object.
    • finite_element_analysis_welsim_rst_emenergydensity: creates an electromagnetic energy density result object.

    finite_element_analysis_welsim_toolbar_em

    Tool toolbar

    The Tool toolbar contains assistance commands as shown in Figure below. Each icon button and its description follows:

    To be added ...
    +

    Help toolbar

    The Help toolbar contains assistance commands as shown in Figure below. Each icon button and its description follows:

    • finite_element_analysis_welsim_gui_onlinedoc: opens the default internet web browser, and visits online documentation.
    • finite_element_analysis_welsim_gui_website: opens the default internet web browser, and visits official website.
    • finite_element_analysis_welsim_gui_licmgr: opens WELSIM license manager interface. You can activate the application with the license key or update the license here.
    • finite_element_analysis_welsim_about: displays the copyrights and version information of WELSIM application.

    finite_element_analysis_welsim_toolbar_help

    Graphics toolbar

    The Graphics toolbar contains graphical operation commands as shown in Figure below. Each icon button and its description follows:

    • finite_element_analysis_welsim_gui_zoomall: fits the entire model in the graphics window.
    • finite_element_analysis_welsim_gui_zoomin: displays a closer view of the geometries.
    • finite_element_analysis_welsim_gui_zoomout: displays a more distant view of the geometries.
    • finite_element_analysis_welsim_gui_zoombox: displays the selected area of a model in a box that you define.
    • finite_element_analysis_welsim_view_axo: displays the 3D model in an isometric view.
    • finite_element_analysis_welsim_view_xy: displays the 3D model in an XY-plane view.
    • finite_element_analysis_welsim_view_yz: displays the 3D model in a YZ-plane view.
    • finite_element_analysis_welsim_view_xz: displays the 3D model in an XZ-plane view.
    • finite_element_analysis_welsim_select_volume: set the volume selectable.
    • finite_element_analysis_welsim_select_face: set the face selectable.
    • finite_element_analysis_welsim_select_edge: set the edge selectable.
    • finite_element_analysis_welsim_select_vertex: set the vertex selectable.

    finite_element_analysis_welsim_toolbar_graphics

    Working with graphics

    The following lists the tips for working with WELSIM graphics:

    • You can use the ruler, presented at the bottom of the graphics window, to estimate the scale of the geometry size.
    • You can rotate the view of geometries by holding and dragging the left mouse button.
    • You can select or deselect multiple topological entities by pressing CTRL or SHIFT key.
    • You can pan the view by dragging your right mouse button or arrow keys.
    • You can zoom in/out the view by scrolling the mouse wheel or using ± and CTRL keys.
    • You can rotate the view by using the left mouse button.
    • You can open a context menu of views by right-clicking on the graphics field.

    PreSelecting geometry

    This section discusses the pre-selection features in the Graphics window.

    Highlighting

    As you hover the cursor over a geometry entity, the graphics highlights the selection and shows the location of the pointer. The pre-selection is controlled by the selection filter, and only the allowed entity types can be pre-selected and highlighted.

    As shown in Figure below, the face are highlighted in green color at pre-selection mode.

    finite_element_analysis_welsim_graphics_presel

    Selecting geometry

    This section discusses how to select and pick geometry in the Graphics window.

    Picking

    You can pick visible geometries by left clicking on the entities. A valid picking sets the geometry selection property for specific objects, such as boundary conditions.

    You can hold the Ctrl or Shift key down to add or remove multiple selections from the current selections. A pick in the free space clears the current selection.

    Selection filters

    The selection filters control the user selection mode and provide an easy interface for users to pick or select the geometry entities. A pressed button in the selection filter toolbar denotes a selectable geometry type. The following describes the filters.

    • Volumes: Allows selection of the entire body. Highlighted by body surfaces in green. Depressing this filter releases the Faces, Edges, and Vertices filters.
    • Faces: Allows selection of faces. Highlighted by surfaces in green. Depressing this filter releases the Volumes filters.
    • Edges: Allows selection of edges. Highlighted by lines in green. Depressing this filter releases the Volumes filters.
    • Vertices: Allows selection of vertices. Highlighted by points in green. Depressing this filter releases the Volumes filters.

    Controlling graphical view

    The section describes the controlling and manipulating the graphical view with mouse and keys.

    • Zoom: Middle scrolling.
    • Pan: Right clicking, or arrow keys.
    • Rotate: Left clicking and dragging.

    View annotations

    Graphics window may contain these types of annotations:

    • 2D annotation: statically locates at the left top of the graphics windows. This annotation shows texts about the object type and name and color indicator for specific objects such as boundary conditions.

    • 3D annotation: dynamically locates on the geometry area, the position can be changed as the user rotates, zooms or pans the view.

    \ No newline at end of file diff --git a/welsim/users/objects/index.html b/welsim/users/objects/index.html index 884f87f..c893e5d 100755 --- a/welsim/users/objects/index.html +++ b/welsim/users/objects/index.html @@ -1 +1 @@ - Objects reference - WelSim Documentation

    Objects reference

    This reference provides a specification for the objects in the tree.

    Answers

    The Answers object customizes the solution properties and contains all result-level objects. The Properties View of the Answers object is shown in Figure below.

    finite_element_analysis_welsim_obj_answers

    Tree dependencies

    Insertion options

    Appears by default when you create a new FEM project.

    Object properties

    The Properties View for this object include the following:

    Property Name Description
    ID A read-only field denotes the ID of this object
    Class Label A read-only field denotes the class name
    Solver Method A drop-down field allows you to select a solver from the options: CG(Conjugate Gradient), BiCGStab, GMRES, GPBiCG, MUMPS, Direct, DIRECTmkl, where MUMPS, Direct, and DIRECTmkl are direct solvers, and the rest are iterative solvers. The default solver is MUMPS
    Number of Iterations A number field defines the maximum number of the linear algebra solver iterations. The default is 10000
    Residual Threshold A number field defines the residual threshold for the linear algebra solver. The default is 1e-7
    Output Time Log A Boolean field outputs the log for each time step. The default is False
    Output Iteration Log A Boolean field outputs the log each iteration step. The default is False
    Generate Result Files A Boolean field generates ASCII format result file. The default is False
    Output Frequency A number field determines the frequency of the result data output. The default value is 1, which outputs result data every step.

    Body conditions

    Body condition type objects enable you to impose the body condition onto the geometry bodies.

    Application objects

    Body Force, Acceleration, Earth Gravity, Rotational Velocity

    Tree dependencies

    • Valid Parent Tree Object: Study.
    • Valid Child Tree Objects: None.

    Insertion options

    You can use any of the following methods to insert body conditions:

    • Click the item from the standard Toolbar.
    • Click the item from the Menu.
    • Right click on the Study level objects, and choose the target object from the pop-up context menu.

    Object properties

    The properties may vary for different body conditions. See the Setting Up Boundary Conditions section for more information about body conditions.

    Boundary conditions

    Boundary condition type objects enable you to impose the boundary condition onto the geometry entities, such as faces, edges, and vertices.

    Application objects

    Displacement, Fixed Support, Fixed Rotation, Pressure, Force, Velocity, Acceleration, Temperature, Heat Flux, Convection, Radiation, Voltage, Ground, Symmetry, Zero Charge, Surface Charge Density, Electric Displacement, Insulating, Magnetic Potential, Magnetic Flux Density

    Tree dependencies

    • Valid Parent Tree Object: Study.
    • Valid Child Tree Objects: None.

    Insertion options

    You can use any of the following methods to insert boundary condition:

    • Click the item from the standard Toolbar.
    • Click the item from the Menu.
    • Right click on the Study level objects, and choose the target object from the pop-up context menu.

    Object properties

    The properties may vary for different body conditions. See the Setting up Boundary Conditions section for more information about Boundary Conditions.

    Box

    The Box object defines a shape that is generated by the built-in modeler. An example of Box object and properties are illustrated in Figure below.

    finite_element_analysis_welsim_obj_box_prop

    Tree dependencies

    • Valid Parent Tree Object: Geometry Group.
    • Valid Child Tree Objects: None.

    Insertion options

    Appears when you create a box shape. You can use any of the following methods to insert a Box:

    • Click the Add Box item from the standard Toolbar.
    • Click the Add Box item from the Geometry Menu.
    • Right click on the Geometry level objects, and choose the Add Box from the pop-up context menu.

    Object properties

    The Properties View for this object include the following:

    Property Name Description
    ID A read-only field denotes the ID of this object
    Class Label A read-only field denotes the class name
    Suppressed Include (False - default) or exclude (True) the geometry from the analysis
    Length A vector component field to determine the length, width, and height of the box. The default value is 10
    Origin A vector component field to determine the location of origin. The default vector is 0
    Material A drop-down field to assign the material for the selected part. The available material candidates are defined in the Material Project
    Source A read-only field indicates the shape is generated internally

    Connections

    The Connections object is a group-type object that may contain the connection objects between two or more parts. The currently supported children object types are Contact Pair.

    Tree dependencies

    Insertion options

    Connections object is automatically inserted as you add a contact pair object to the tree.

    Object properties

    The Properties View for this object include the following:

    Property Name Description
    ID A read-only field denotes the ID of this object
    Class Label A read-only field denotes the class name
    Suppressed A Boolean field to include (False - Default) or exclude (True) the object in the analysis

    Contact pair

    This object defines a contact pair between parts.

    Tree dependencies

    • Valid Parent Tree Object: Connections.
    • Valid Child Tree Objects: None.

    Insertion options

    You can use any of the following methods to insert contact pairs:

    • Click the item from the standard Toolbar.
    • Click the item from the FEM Menu.
    • Right click on the Connections level objects, and select Add Contact command from the pop-up context menu.

    Object properties

    The Properties View for this object include the following:

    Property Name Description
    ID A read-only field denotes the ID of this object
    Class Label A read-only field denotes the class name
    Suppressed A Boolean field to include (False - Default) or exclude (True) the object in the analysis
    Master Geometry A Geometry Selection field to scope geometry entities, such as faces, edges
    Target Geometry A Geometry Selection field to scope geometry entities, such as faces, edges
    Contact Type A drop-down enumeration field to select a type from three options: Bonded, Frictionless, and Frictional
    Formulation A drop-down enumeration field to selection contact formulation from two options: Lagrange and Augmented Lagrange. This property is only available for Frictionless or Frictional contact type
    Finite Sliding A Boolean field to turn on (True) or off (False - default) the finite sliding algorithm. This property is only available for Frictionless or Frictional contact type
    Normal Direction Tolerance A number field to determine the distance tolerance in the normal direction. The default value is 1e-5
    Tangential Direction Tolerance A number field to determine the distance tolerance in the tangential direction. The default value is 1e-5
    Normal Direction Penalty A number field to determine the penalty value in the normal direction. The default value is 1e3
    Tangential Direction Penalty A number field to determine the penalty value in the tangential direction. The default value is 1e3

    Cylinder

    The Cylinder object defines a shape that is generated by the built-in modeler. An example of Cylinder object and properties are illustrated in Figure below.

    finite_element_analysis_welsim_obj_cylinder_prop

    Tree dependencies

    • Valid Parent Tree Object: Geometry Group.
    • Valid Child Tree Objects: None.

    Insertion options

    Appears when you create a Cylinder shape. You can use any of the following methods to insert a Cylinder:

    • Click the Add Cylinder item from the standard Toolbar.
    • Click the Add Cylinder item from the Geometry Menu.
    • Right click on the Geometry level objects, and choose the Add Cylinder from the pop-up context menu.

    Object properties

    The Properties View for this object include the following:

    Property Name Description
    ID A read-only field denotes the ID of this object
    Class Label A read-only field denotes the class name
    Suppressed Include (False - default) or exclude (True) the geometry from the analysis
    Normal A vector component field to determine the direction of the cylinder. The default value is (0,0,1)
    Radius A number component field to determine the radius of the cylinder base. The default value is 10
    Height A number component field to determine the height of the cylinder. The default value is 30
    Angle A number component field to determine the sweeping angle of the cylinder circle. The default value 360 gives a full cylinder
    Origin A vector component field to determine the location of origin. The default vector is 0
    Material A drop-down field to assign the material for the selected part. The available material candidates are defined in the Material Project
    Source A read-only field indicates the shape is generated internally

    FEM project

    The FEM Project object represents an independent analysis, which contains Geometry, Mesh, Study, and Answers objects. The Connections object is not created until you add a contact pair object. An example of FEM Project and properties are illustrated in Figure [fig:ch3_guide_obj_fem_proj].

    finite_element_analysis_welsim_obj_fem_project

    Tree dependencies

    Insertion options

    Appears by default when you create a new FEM project.

    Object properties

    The Properties View for this object include the following:

    Property Name Description
    ID A read-only field denotes the ID of this object
    Class Label A read-only field denotes the class name
    Numerical Method A read-only field to indicate the Finite Element Method applied in this project
    Dimension A read-only field to indicate a 3D analysis of this project
    Physics Type A drop-down enumeration field for you to select the physics type. The available options are Structural, Thermal, and Electromagnetic. The default is Structural. Note that change this property may change the validation of existing objects and display of object's properties
    Analysis Type A drop-down enumeration field for you to select the analysis type. Depending on the Physics Type, the available options vary. For the Structural analysis, the options are Static, Transient, and Modal. For the Thermal analysis, the options are Steady-State and Transient. For the Electromagnetic analysis, the options are ElectroStatic and MagnetoStatic
    Ambient Temperature A number field to determine the environment temperature for the analysis, the default value is 22.3

    Geometry group

    Geometry Group object contains the geometries in the form of a part or assembly. All imported and created geometries are included in this group-level object as shown in Figure below.

    finite_element_analysis_welsim_obj_geometry_group

    Tree dependencies

    • Valid Parent Tree Object: FEM Project.
    • Valid Child Tree Objects: Part, Box, Cylinder, Plane, Line.

    Insertion options

    Appears by default when you create a new FEM project.

    Object properties

    The Properties View for this object include the following:

    Property Name Description
    ID A read-only field denotes the ID of this object
    Class Label A read-only field denotes the class name

    Initial temperature

    Initial Temperature defines the temperature status at the beginning of the simulation for transient thermal analysis. An example of Initial Temperature and its properties are shown in Figure below.

    finite_element_analysis_welsim_obj_initial_temperature

    Tree dependencies

    • Valid Parent Tree Object: Study.
    • Valid Child Tree Objects: None.

    Insertion options

    You can use any of the following methods to insert initial temperature:

    • Click the item from the standard Toolbar.
    • Click the item from the FEM Menu.
    • Right click on the Study level objects, and choose Insert Conditions... > Initial Temperature command from the pop-up context menu.

    Note

    Inserting initial condition command is only applicable when the Physics Type and Analysis Type properties of FEM Project object are Thermal and Transient, respectively.

    Object properties

    The Properties View for this object include the following:

    Property Name Description
    ID A read-only field denotes the ID of this object
    Class Label A read-only field denotes the class name
    Suppressed A Boolean field to include (False - Default) or exclude (True) the object in the analysis
    Scoping Method A read-only field shows All
    Initial Temperature A number field to define the temperature value. The default is 22.3

    Line

    The Line object defines a shape that is generated by the built-in modeler. An example of Line object and properties are illustrated in Figure below.

    finite_element_analysis_welsim_obj_line

    Tree dependencies

    • Valid Parent Tree Object: Geometry Group.
    • Valid Child Tree Objects: None.

    Insertion options

    Appears when you create a line shape. You can use any of the following methods to insert a Line:

    • Click the Add Line item from the standard Toolbar.
    • Click the Add Line item from the Geometry Menu.
    • Right click on the Geometry level objects, and choose the Add Line from the pop-up context menu.

    Object properties

    The Properties View for this object include the following:

    Property Name Description
    ID A read-only field denotes the ID of this object
    Class Label A read-only field denotes the class name
    Suppressed Include (False - default) or exclude (True) the geometry from the analysis
    Start Point A vector component field to determine one point of a line. The default value is 0
    End Point A vector component field to determine another point of a line. The default value is (10, 10, 0)
    Material A drop-down field to assign the material for the selected part. The available material candidates are defined in the Material Project
    Source A read-only field indicates the shape is generated internally

    Material

    A Material object defines a material data using the associated properties and spreadsheet data. You can define multiple material objects in the WELSIM application. An example of a Material object and its properties and spreadsheet are shown in Figure below.

    finite_element_analysis_welsim_obj_mat

    Tree dependencies

    Insertion options

    You can use any of the following methods to insert material:

    • Click the Add Material item from the standard Toolbar.
    • Click the Add Material item from the Material Menu.
    • Right click on the Material level objects, and choose Add Material command from the pop-up context menu.

    Object properties

    The Properties View for this object include the following:

    Property Name Description
    ID A read-only field denotes the ID of this object
    Class Label A read-only field denotes the class name
    Suppressed A Boolean field to include (False - Default) or exclude (True) the object in the analysis

    Spreadsheet

    The Material object is able to display the Spreadsheet window, which provides a friendly user interface for defining all material properties as shown in Figure below. You can double click or right click on the Material object and select the Edit command to display the spreadsheet window.

    Material project

    The Material Project object holds all material definition objects.

    Tree dependencies

    Insertion options

    Appears by default when you create a new FEM project.

    Object properties

    The Properties View for this object include the following:

    Property Name Description
    ID A read-only field denotes the ID of this object
    Class Label A read-only field denotes the class name

    Mesh group

    Mesh Group manages all meshing features and tools for the project. An example of mesh object and properties is shown in Figure below.

    finite_element_analysis_welsim_obj_mesh_group

    Tree dependencies

    Insertion options

    Appears by default when you create a new FEM project.

    Object properties

    The Properties View for this object include the following:

    Property Name Description
    ID A read-only field denotes the ID of this object
    Class Label A read-only field denotes the class name
    Number of Nodes A read-only output field to show the number of generated nodes. The value is automatically updated as the mesh is completed
    Number of Elements A read-only output field to show the number of generated elements. The value is automatically updated as the mesh is completed
    Number of Tetrahedrons A read-only output field to show the number of generated tetrahedrons. The value is automatically updated as the mesh is completed
    Number of Triangles A read-only output field to show the number of generated triangles. The value is automatically updated as the mesh is completed

    Mesh method

    In the multi-body analysis, different parts may need different mesh density due to the various sizes of geometries. Mesh Method object helps you fine tuning the mesh for the specifically scoped geometries. An example of Mesh Method object is shown in Figure below.

    finite_element_analysis_welsim_obj_mesh_method

    Tree dependencies

    • Valid Parent Tree Object: Mesh Group.
    • Valid Child Tree Objects: None.

    Insertion options

    You can use any of the following methods to insert Mesh Method:

    • Click the item from the standard Toolbar.
    • Click the item from the FEM Menu.
    • Right click on the Mesh level objects, and choose Add Mesh Method command from the pop-up context menu.

    Object properties

    The Properties View for this object include the following:

    Property Name Description
    ID A read-only field denotes the ID of this object
    Class Label A read-only field denotes the class name
    Scoping Method A read-only field indicates the scoping method
    Geometry A geometry selection field to scope the geometry entities (volume/body only)
    Maximum Size A number field determines the maximum size of the generated finite element
    Quadratic A read-only field to show the order of the generated element. This property is determined by the Quadratic property in the global Mesh Settings object
    Mesh Density A drop-down enumeration field to determine the mesh density for the scoped geometries. The options are Very Coarse, Coarse, Regular, Fine, Very Fine, and User Defined. The default is Regular. If you select User Defined, additional properties Growth Rate, Segments per Edge, and Segments per Radius are shown
    Growth Rate A number field determines the change of mesh density in spatial. The default value is 0.3
    Segments per Edge A number field determines the number of element segments per edge. The default value is 1. The higher value, the more dense mesh
    Segments per Radius A number field determines the number of element segments per radius. The default value is 2. The higher value, the more dense mesh
    Number of Nodes A read-only output field to show the number of generated nodes. The value is updated as the mesh is completed
    Number of Elements A read-only output field to show the number of generated elements. The value is updated as the mesh is completed
    Number of Tetrahedrons A read-only output field to show the number of generated tetrahedrons. The value is updated as the mesh is completed
    Number of Triangles A read-only output field to show the number of generated triangles. The value is updated as the mesh is completed

    Mesh settings

    The Mesh Settings object is a global setting for the meshing operations. You change the global mesh settings by tuning the properties of this object. An example of Mesh Settings object is shown in Figure [fig:ch3_guide_obj_mesh_settings].

    finite_element_analysis_welsim_obj_mesh_settings

    Tree dependencies

    • Valid Parent Tree Object: Mesh Group.
    • Valid Child Tree Objects: None.

    Insertion options

    Appears by default when you create a new FEM project.

    Object properties

    The Properties View for this object include the following:

    Property Name Description
    ID A read-only field denotes the ID of this object
    Class Label A read-only field denotes the class name
    Maximum Size A number field to determine the maximum size of the generated finite element
    Quadratic A Boolean field to determine the linear element (False) or bilinear element (True)
    Mesh Density A drop-down enumeration field to determine the mesh density for the scoped geometries. The options are Very Coarse, Coarse, Regular, Fine, Very Fine, and User Defined. The default is Regular. If you select User Defined, additional properties Growth Rate, Segments per Edge, and Segments per Radius are shown
    Growth Rate A number field indicate the change of mesh density in spatial. The default value is 0.3
    Segments per Edge A number field indicate the element segment per edge. The default value is 1. The higher value, the more dense mesh
    Segments per Radius A number field indicate the element segment per radius. The default value is 2. The higher value, the more dense mesh

    Part

    The Part object defines a component of the geometry that is imported from an external CAD file. An example of Part object and properties are illustrated in Figure [fig:ch3_guide_obj_part].

    finite_element_analysis_welsim_obj_part

    Tree dependencies

    • Valid Parent Tree Object: Geometry Group.
    • Valid Child Tree Objects: None.

    Insertion options

    Appears when you import geometry from external files. You can use any of the following methods to insert Part:

    • Click the item from the standard Toolbar.
    • Click the Import item from the Menu.
    • Right click on the Geometry level objects, and choose the Insert... from the pop-up context menu.

    Object properties

    The Properties View for this object include the following:

    Property Name Description
    ID A read-only field denotes the ID of this object
    Class Label A read-only field denotes the class name
    Suppressed Include (False - default) or exclude (True) the part from the analysis
    Scale A number field to manipulate the size of the imported geometry. The default value is 1
    Origin A vector component field to determine the location of origin. The default vector is 0
    Material A drop-down field to assign the material for the selected part. The available material candidates are defined in the Material Project
    Structure Type A drop-down field to define the structure type. The available options are Solid, Shell, Beam, and Truss. The default is Solid
    Source A read-only field indicates the name of the imported geometry file

    Plate

    The Plate object defines a shape that is generated by the built-in modeler. An example of Plate object and properties are illustrated in Figure [fig:ch3_guide_obj_part].

    finite_element_analysis_welsim_obj_plate_prop

    Tree dependencies

    • Valid Parent Tree Object: Geometry Group.
    • Valid Child Tree Objects: None.

    Insertion options

    Appears when you create a plate shape. You can use any of the following methods to insert a Plate:

    • Click the Add Plate item from the standard Toolbar.
    • Click the Add Plate item from the Geometry Menu.
    • Right click on on the Geometry level objects, and choose the Add Plate from the pop-up context menu.

    Object properties

    The Properties View for this object include the following:

    Property Name Description
    ID A read-only field denotes the ID of this object
    Class Label A read-only field denotes the class name
    Suppressed Include (False - default) or exclude (True) the geometry from the analysis
    Length A vector component field to determine the length vector of the plate. The default value is (10, 0, 0)
    Width A vector component field to determine the width vector from the origin. The default vector is (0, 5, 0)
    Material A drop-down field to assign the material for the selected part. The available material candidates are defined in the Material Project
    Thickness A number field to determine the thickness of the plate. The default value is 0.01
    Source A read-only field indicates the shape is generated internally

    Results

    The Result objects define the simulation output for displaying and analyzing the results from a solution.

    Application objects

    Deformation, Stress, Strain, Acceleration, Velocity, Rotation, Reaction Force, Reaction Moment, Temperature, Voltage, Electric Field, Electric Displacement, Electromagnetic Energy Density, Magnetic Potential, Magnetic Flux Density, Magnetic Field, User-Defined Result.

    Tree dependencies

    • Valid Parent Tree Object: Answers.
    • Valid Child Tree Objects: None.

    Insertion options

    Appears by default when you start the WELSIM application.

    Object properties

    The properties may vary for different result types. The following lists the properties that may be shown for the most of Result objects. See the Using results section for more information.

    Property Name Description
    ID A read-only field denotes the ID of this object
    Class Label A read-only field denotes the class name
    Suppressed Include (False - default) or exclude (True) the result object from the analysis
    Result By Determines the result loading type
    Set Number Determines the set number to retrieve the result data
    Maximum Value The maximum result value at the current step
    Minimum Value The minimum result value at the current step

    Solution

    The Solution object acts as a root object in the WELSIM application. Only one Solution can exist per simulation session, and one solution can contain multiple FEM projects.

    Tree dependencies

    • Valid Parent Tree Object: None - highest level in the tree.
    • Valid Child Tree Objects: FEM Project.

    Insertion options

    Appears by default when you create a new FEM project.

    Study

    The Study object holds all analysis related objects such as Study Settings, Boundary Conditions, Body Conditions, and Initial Conditions. An example of Study object is shown in Figure [fig:ch3_guide_obj_study].

    finite_element_analysis_welsim_obj_study

    Tree dependencies

    Insertion options

    Appears by default when you create a new FEM project.

    Object properties

    The Properties View for this object include the following:

    Property Name Description
    ID A read-only field denotes the ID of this object
    Class Label A read-only field denotes the class name
    Number of Steps A number field to determine the total number of steps. The default value is 1. The input value must be positive
    Current Step A number field to determine the current step for the successive settings. The default value is 1. The input value must be less than or equal to the Number of Steps. Note that Current Step property of Study object is adjustable, and determines the Current Step properties in other objects such as Study Settings, and Boundary Conditions
    Current End Time a number field to determine the end time of the current step. The value must be larger than that of the last step

    Study Settings

    The Study Settings object allows you to define analysis and solving settings to customize a specific simulation model. An example of Study Settings object is shown in Figure [fig:ch3_guide_obj_study_settings].

    finite_element_analysis_welsim_obj_study_settings

    Tree dependencies

    • Valid Parent Tree Object: Study.
    • Valid Child Tree Objects: None.

    Insertion options

    Appears by default when you create a new FEM project.

    Object properties

    The properties of Study Settings vary for different Physics and Analysis types. The following lists the available properties according to Analysis Type:

    • Static Structural and Thermal: Current Step (Read-Only), Number of SubSteps, Relative Tolerance, Absolute Tolerance, Maximum Iterations.
    • Transient Structural and Thermal: Current Step (Read-Only), Auto-Timing, Number of SubSteps, Time Incremental (Shown as Auto Timing is False), Relative Tolerance, Absolute Tolerance, Maximum Iterations.
    • Modal Structural: Number of Modes, Lancos Tolerance, Lancos Iterations.
    • ElectroStatic and MagnetoStatic: Current Step (Read-Only), Relative Tolerance, Absolute Tolerance, Maximum Iterations.

    Spreadsheet

    The Study Settings object can display the Spreadsheet window, which provides a friendly user interface to review properties at all steps as shown in Figure [fig:ch3_guide_obj_study_settings]. You can double click or right click on the Study Settings object and select the Edit command to display the Spreadsheet window.

    \ No newline at end of file + Objects reference - WelSim Documentation

    Objects reference

    This reference provides a specification for the objects in the tree.

    Answers

    The Answers object customizes the solution properties and contains all result-level objects. The Properties View of the Answers object is shown in Figure below.

    finite_element_analysis_welsim_obj_answers

    Tree dependencies

    Insertion options

    Appears by default when you create a new FEM project.

    Object properties

    The Properties View for this object include the following:

    Property Name Description
    ID A read-only field denotes the ID of this object
    Class Label A read-only field denotes the class name
    Solver Method A drop-down field allows you to select a solver from the options: CG(Conjugate Gradient), BiCGStab, GMRES, GPBiCG, MUMPS, Direct, DIRECTmkl, where MUMPS, Direct, and DIRECTmkl are direct solvers, and the rest are iterative solvers. The default solver is MUMPS
    Number of Iterations A number field defines the maximum number of the linear algebra solver iterations. The default is 10000
    Residual Threshold A number field defines the residual threshold for the linear algebra solver. The default is 1e-7
    Output Time Log A Boolean field outputs the log for each time step. The default is False
    Output Iteration Log A Boolean field outputs the log each iteration step. The default is False
    Generate Result Files A Boolean field generates ASCII format result file. The default is False
    Output Frequency A number field determines the frequency of the result data output. The default value is 1, which outputs result data every step.

    Body conditions

    Body condition type objects enable you to impose the body condition onto the geometry bodies.

    Application objects

    Body Force, Acceleration, Earth Gravity, Rotational Velocity

    Tree dependencies

    • Valid Parent Tree Object: Study.
    • Valid Child Tree Objects: None.

    Insertion options

    You can use any of the following methods to insert body conditions:

    • Click the item from the standard Toolbar.
    • Click the item from the Menu.
    • Right click on the Study level objects, and choose the target object from the pop-up context menu.

    Object properties

    The properties may vary for different body conditions. See the Setting Up Boundary Conditions section for more information about body conditions.

    Boundary conditions

    Boundary condition type objects enable you to impose the boundary condition onto the geometry entities, such as faces, edges, and vertices.

    Application objects

    Displacement, Fixed Support, Fixed Rotation, Pressure, Force, Velocity, Acceleration, Temperature, Heat Flux, Convection, Radiation, Voltage, Ground, Symmetry, Zero Charge, Surface Charge Density, Electric Displacement, Insulating, Magnetic Potential, Magnetic Flux Density

    Tree dependencies

    • Valid Parent Tree Object: Study.
    • Valid Child Tree Objects: None.

    Insertion options

    You can use any of the following methods to insert boundary condition:

    • Click the item from the standard Toolbar.
    • Click the item from the Menu.
    • Right click on the Study level objects, and choose the target object from the pop-up context menu.

    Object properties

    The properties may vary for different body conditions. See the Setting up Boundary Conditions section for more information about Boundary Conditions.

    Box

    The Box object defines a shape that is generated by the built-in modeler. An example of Box object and properties are illustrated in Figure below.

    finite_element_analysis_welsim_obj_box_prop

    Tree dependencies

    • Valid Parent Tree Object: Geometry Group.
    • Valid Child Tree Objects: None.

    Insertion options

    Appears when you create a box shape. You can use any of the following methods to insert a Box:

    • Click the Add Box item from the standard Toolbar.
    • Click the Add Box item from the Geometry Menu.
    • Right click on the Geometry level objects, and choose the Add Box from the pop-up context menu.

    Object properties

    The Properties View for this object include the following:

    Property Name Description
    ID A read-only field denotes the ID of this object
    Class Label A read-only field denotes the class name
    Suppressed Include (False - default) or exclude (True) the geometry from the analysis
    Length A vector component field to determine the length, width, and height of the box. The default value is 10
    Origin A vector component field to determine the location of origin. The default vector is 0
    Material A drop-down field to assign the material for the selected part. The available material candidates are defined in the Material Project
    Source A read-only field indicates the shape is generated internally

    Connections

    The Connections object is a group-type object that may contain the connection objects between two or more parts. The currently supported children object types are Contact Pair.

    Tree dependencies

    Insertion options

    Connections object is automatically inserted as you add a contact pair object to the tree.

    Object properties

    The Properties View for this object include the following:

    Property Name Description
    ID A read-only field denotes the ID of this object
    Class Label A read-only field denotes the class name
    Suppressed A Boolean field to include (False - Default) or exclude (True) the object in the analysis

    Contact pair

    This object defines a contact pair between parts.

    Tree dependencies

    • Valid Parent Tree Object: Connections.
    • Valid Child Tree Objects: None.

    Insertion options

    You can use any of the following methods to insert contact pairs:

    • Click the item from the standard Toolbar.
    • Click the item from the FEM Menu.
    • Right click on the Connections level objects, and select Add Contact command from the pop-up context menu.

    Object properties

    The Properties View for this object include the following:

    Property Name Description
    ID A read-only field denotes the ID of this object
    Class Label A read-only field denotes the class name
    Suppressed A Boolean field to include (False - Default) or exclude (True) the object in the analysis
    Master Geometry A Geometry Selection field to scope geometry entities, such as faces, edges
    Target Geometry A Geometry Selection field to scope geometry entities, such as faces, edges
    Contact Type A drop-down enumeration field to select a type from three options: Bonded, Frictionless, and Frictional
    Formulation A drop-down enumeration field to selection contact formulation from two options: Lagrange and Augmented Lagrange. This property is only available for Frictionless or Frictional contact type
    Finite Sliding A Boolean field to turn on (True) or off (False - default) the finite sliding algorithm. This property is only available for Frictionless or Frictional contact type
    Normal Direction Tolerance A number field to determine the distance tolerance in the normal direction. The default value is 1e-5
    Tangential Direction Tolerance A number field to determine the distance tolerance in the tangential direction. The default value is 1e-5
    Normal Direction Penalty A number field to determine the penalty value in the normal direction. The default value is 1e3
    Tangential Direction Penalty A number field to determine the penalty value in the tangential direction. The default value is 1e3

    Cylinder

    The Cylinder object defines a shape that is generated by the built-in modeler. An example of Cylinder object and properties are illustrated in Figure below.

    finite_element_analysis_welsim_obj_cylinder_prop

    Tree dependencies

    • Valid Parent Tree Object: Geometry Group.
    • Valid Child Tree Objects: None.

    Insertion options

    Appears when you create a Cylinder shape. You can use any of the following methods to insert a Cylinder:

    • Click the Add Cylinder item from the standard Toolbar.
    • Click the Add Cylinder item from the Geometry Menu.
    • Right click on the Geometry level objects, and choose the Add Cylinder from the pop-up context menu.

    Object properties

    The Properties View for this object include the following:

    Property Name Description
    ID A read-only field denotes the ID of this object
    Class Label A read-only field denotes the class name
    Suppressed Include (False - default) or exclude (True) the geometry from the analysis
    Normal A vector component field to determine the direction of the cylinder. The default value is (0,0,1)
    Radius A number component field to determine the radius of the cylinder base. The default value is 10
    Height A number component field to determine the height of the cylinder. The default value is 30
    Angle A number component field to determine the sweeping angle of the cylinder circle. The default value 360 gives a full cylinder
    Origin A vector component field to determine the location of origin. The default vector is 0
    Material A drop-down field to assign the material for the selected part. The available material candidates are defined in the Material Project
    Source A read-only field indicates the shape is generated internally

    FEM project

    The FEM Project object represents an independent analysis, which contains Geometry, Mesh, Study, and Answers objects. The Connections object is not created until you add a contact pair object. An example of FEM Project and properties are illustrated in Figure [fig:ch3_guide_obj_fem_proj].

    finite_element_analysis_welsim_obj_fem_project

    Tree dependencies

    Insertion options

    Appears by default when you create a new FEM project.

    Object properties

    The Properties View for this object include the following:

    Property Name Description
    ID A read-only field denotes the ID of this object
    Class Label A read-only field denotes the class name
    Numerical Method A read-only field to indicate the Finite Element Method applied in this project
    Dimension A read-only field to indicate a 3D analysis of this project
    Physics Type A drop-down enumeration field for you to select the physics type. The available options are Structural, Thermal, and Electromagnetic. The default is Structural. Note that change this property may change the validation of existing objects and display of object's properties
    Analysis Type A drop-down enumeration field for you to select the analysis type. Depending on the Physics Type, the available options vary. For the Structural analysis, the options are Static, Transient, and Modal. For the Thermal analysis, the options are Steady-State and Transient. For the Electromagnetic analysis, the options are ElectroStatic and MagnetoStatic
    Ambient Temperature A number field to determine the environment temperature for the analysis, the default value is 22.3

    Geometry group

    Geometry Group object contains the geometries in the form of a part or assembly. All imported and created geometries are included in this group-level object as shown in Figure below.

    finite_element_analysis_welsim_obj_geometry_group

    Tree dependencies

    • Valid Parent Tree Object: FEM Project.
    • Valid Child Tree Objects: Part, Box, Cylinder, Plane, Line.

    Insertion options

    Appears by default when you create a new FEM project.

    Object properties

    The Properties View for this object include the following:

    Property Name Description
    ID A read-only field denotes the ID of this object
    Class Label A read-only field denotes the class name

    Initial temperature

    Initial Temperature defines the temperature status at the beginning of the simulation for transient thermal analysis. An example of Initial Temperature and its properties are shown in Figure below.

    finite_element_analysis_welsim_obj_initial_temperature

    Tree dependencies

    • Valid Parent Tree Object: Study.
    • Valid Child Tree Objects: None.

    Insertion options

    You can use any of the following methods to insert initial temperature:

    • Click the item from the standard Toolbar.
    • Click the item from the FEM Menu.
    • Right click on the Study level objects, and choose Insert Conditions... > Initial Temperature command from the pop-up context menu.

    Note

    Inserting initial condition command is only applicable when the Physics Type and Analysis Type properties of FEM Project object are Thermal and Transient, respectively.

    Object properties

    The Properties View for this object include the following:

    Property Name Description
    ID A read-only field denotes the ID of this object
    Class Label A read-only field denotes the class name
    Suppressed A Boolean field to include (False - Default) or exclude (True) the object in the analysis
    Scoping Method A read-only field shows All
    Initial Temperature A number field to define the temperature value. The default is 22.3

    Line

    The Line object defines a shape that is generated by the built-in modeler. An example of Line object and properties are illustrated in Figure below.

    finite_element_analysis_welsim_obj_line

    Tree dependencies

    • Valid Parent Tree Object: Geometry Group.
    • Valid Child Tree Objects: None.

    Insertion options

    Appears when you create a line shape. You can use any of the following methods to insert a Line:

    • Click the Add Line item from the standard Toolbar.
    • Click the Add Line item from the Geometry Menu.
    • Right click on the Geometry level objects, and choose the Add Line from the pop-up context menu.

    Object properties

    The Properties View for this object include the following:

    Property Name Description
    ID A read-only field denotes the ID of this object
    Class Label A read-only field denotes the class name
    Suppressed Include (False - default) or exclude (True) the geometry from the analysis
    Start Point A vector component field to determine one point of a line. The default value is 0
    End Point A vector component field to determine another point of a line. The default value is (10, 10, 0)
    Material A drop-down field to assign the material for the selected part. The available material candidates are defined in the Material Project
    Source A read-only field indicates the shape is generated internally

    Material

    A Material object defines a material data using the associated properties and spreadsheet data. You can define multiple material objects in the WELSIM application. An example of a Material object and its properties and spreadsheet are shown in Figure below.

    finite_element_analysis_welsim_obj_mat

    Tree dependencies

    Insertion options

    You can use any of the following methods to insert material:

    • Click the Add Material item from the standard Toolbar.
    • Click the Add Material item from the Material Menu.
    • Right click on the Material level objects, and choose Add Material command from the pop-up context menu.

    Object properties

    The Properties View for this object include the following:

    Property Name Description
    ID A read-only field denotes the ID of this object
    Class Label A read-only field denotes the class name
    Suppressed A Boolean field to include (False - Default) or exclude (True) the object in the analysis

    Spreadsheet

    The Material object is able to display the Spreadsheet window, which provides a friendly user interface for defining all material properties as shown in Figure below. You can double click or right click on the Material object and select the Edit command to display the spreadsheet window.

    Material project

    The Material Project object holds all material definition objects.

    Tree dependencies

    Insertion options

    Appears by default when you create a new FEM project.

    Object properties

    The Properties View for this object include the following:

    Property Name Description
    ID A read-only field denotes the ID of this object
    Class Label A read-only field denotes the class name

    Mesh group

    Mesh Group manages all meshing features and tools for the project. An example of mesh object and properties is shown in Figure below.

    finite_element_analysis_welsim_obj_mesh_group

    Tree dependencies

    Insertion options

    Appears by default when you create a new FEM project.

    Object properties

    The Properties View for this object include the following:

    Property Name Description
    ID A read-only field denotes the ID of this object
    Class Label A read-only field denotes the class name
    Number of Nodes A read-only output field to show the number of generated nodes. The value is automatically updated as the mesh is completed
    Number of Elements A read-only output field to show the number of generated elements. The value is automatically updated as the mesh is completed
    Number of Tetrahedrons A read-only output field to show the number of generated tetrahedrons. The value is automatically updated as the mesh is completed
    Number of Triangles A read-only output field to show the number of generated triangles. The value is automatically updated as the mesh is completed

    Mesh method

    In the multi-body analysis, different parts may need different mesh density due to the various sizes of geometries. Mesh Method object helps you fine tuning the mesh for the specifically scoped geometries. An example of Mesh Method object is shown in Figure below.

    finite_element_analysis_welsim_obj_mesh_method

    Tree dependencies

    • Valid Parent Tree Object: Mesh Group.
    • Valid Child Tree Objects: None.

    Insertion options

    You can use any of the following methods to insert Mesh Method:

    • Click the item from the standard Toolbar.
    • Click the item from the FEM Menu.
    • Right click on the Mesh level objects, and choose Add Mesh Method command from the pop-up context menu.

    Object properties

    The Properties View for this object include the following:

    Property Name Description
    ID A read-only field denotes the ID of this object
    Class Label A read-only field denotes the class name
    Scoping Method A read-only field indicates the scoping method
    Geometry A geometry selection field to scope the geometry entities (volume/body only)
    Maximum Size A number field determines the maximum size of the generated finite element
    Quadratic A read-only field to show the order of the generated element. This property is determined by the Quadratic property in the global Mesh Settings object
    Mesh Density A drop-down enumeration field to determine the mesh density for the scoped geometries. The options are Very Coarse, Coarse, Regular, Fine, Very Fine, and User Defined. The default is Regular. If you select User Defined, additional properties Growth Rate, Segments per Edge, and Segments per Radius are shown
    Growth Rate A number field determines the change of mesh density in spatial. The default value is 0.3
    Segments per Edge A number field determines the number of element segments per edge. The default value is 1. The higher value, the more dense mesh
    Segments per Radius A number field determines the number of element segments per radius. The default value is 2. The higher value, the more dense mesh
    Number of Nodes A read-only output field to show the number of generated nodes. The value is updated as the mesh is completed
    Number of Elements A read-only output field to show the number of generated elements. The value is updated as the mesh is completed
    Number of Tetrahedrons A read-only output field to show the number of generated tetrahedrons. The value is updated as the mesh is completed
    Number of Triangles A read-only output field to show the number of generated triangles. The value is updated as the mesh is completed

    Mesh settings

    The Mesh Settings object is a global setting for the meshing operations. You change the global mesh settings by tuning the properties of this object. An example of Mesh Settings object is shown in Figure [fig:ch3_guide_obj_mesh_settings].

    finite_element_analysis_welsim_obj_mesh_settings

    Tree dependencies

    • Valid Parent Tree Object: Mesh Group.
    • Valid Child Tree Objects: None.

    Insertion options

    Appears by default when you create a new FEM project.

    Object properties

    The Properties View for this object include the following:

    Property Name Description
    ID A read-only field denotes the ID of this object
    Class Label A read-only field denotes the class name
    Maximum Size A number field to determine the maximum size of the generated finite element
    Quadratic A Boolean field to determine the linear element (False) or bilinear element (True)
    Mesh Density A drop-down enumeration field to determine the mesh density for the scoped geometries. The options are Very Coarse, Coarse, Regular, Fine, Very Fine, and User Defined. The default is Regular. If you select User Defined, additional properties Growth Rate, Segments per Edge, and Segments per Radius are shown
    Growth Rate A number field indicate the change of mesh density in spatial. The default value is 0.3
    Segments per Edge A number field indicate the element segment per edge. The default value is 1. The higher value, the more dense mesh
    Segments per Radius A number field indicate the element segment per radius. The default value is 2. The higher value, the more dense mesh

    Part

    The Part object defines a component of the geometry that is imported from an external CAD file. An example of Part object and properties are illustrated in Figure [fig:ch3_guide_obj_part].

    finite_element_analysis_welsim_obj_part

    Tree dependencies

    • Valid Parent Tree Object: Geometry Group.
    • Valid Child Tree Objects: None.

    Insertion options

    Appears when you import geometry from external files. You can use any of the following methods to insert Part:

    • Click the item from the standard Toolbar.
    • Click the Import item from the Menu.
    • Right click on the Geometry level objects, and choose the Insert... from the pop-up context menu.

    Object properties

    The Properties View for this object include the following:

    Property Name Description
    ID A read-only field denotes the ID of this object
    Class Label A read-only field denotes the class name
    Suppressed Include (False - default) or exclude (True) the part from the analysis
    Scale A number field to manipulate the size of the imported geometry. The default value is 1
    Origin A vector component field to determine the location of origin. The default vector is 0
    Material A drop-down field to assign the material for the selected part. The available material candidates are defined in the Material Project
    Structure Type A drop-down field to define the structure type. The available options are Solid, Shell, Beam, and Truss. The default is Solid
    Source A read-only field indicates the name of the imported geometry file

    Plate

    The Plate object defines a shape that is generated by the built-in modeler. An example of Plate object and properties are illustrated in Figure [fig:ch3_guide_obj_part].

    finite_element_analysis_welsim_obj_plate_prop

    Tree dependencies

    • Valid Parent Tree Object: Geometry Group.
    • Valid Child Tree Objects: None.

    Insertion options

    Appears when you create a plate shape. You can use any of the following methods to insert a Plate:

    • Click the Add Plate item from the standard Toolbar.
    • Click the Add Plate item from the Geometry Menu.
    • Right click on on the Geometry level objects, and choose the Add Plate from the pop-up context menu.

    Object properties

    The Properties View for this object include the following:

    Property Name Description
    ID A read-only field denotes the ID of this object
    Class Label A read-only field denotes the class name
    Suppressed Include (False - default) or exclude (True) the geometry from the analysis
    Length A vector component field to determine the length vector of the plate. The default value is (10, 0, 0)
    Width A vector component field to determine the width vector from the origin. The default vector is (0, 5, 0)
    Material A drop-down field to assign the material for the selected part. The available material candidates are defined in the Material Project
    Thickness A number field to determine the thickness of the plate. The default value is 0.01
    Source A read-only field indicates the shape is generated internally

    Results

    The Result objects define the simulation output for displaying and analyzing the results from a solution.

    Application objects

    Deformation, Stress, Strain, Acceleration, Velocity, Rotation, Reaction Force, Reaction Moment, Temperature, Voltage, Electric Field, Electric Displacement, Electromagnetic Energy Density, Magnetic Potential, Magnetic Flux Density, Magnetic Field, User-Defined Result.

    Tree dependencies

    • Valid Parent Tree Object: Answers.
    • Valid Child Tree Objects: None.

    Insertion options

    Appears by default when you start the WELSIM application.

    Object properties

    The properties may vary for different result types. The following lists the properties that may be shown for the most of Result objects. See the Using results section for more information.

    Property Name Description
    ID A read-only field denotes the ID of this object
    Class Label A read-only field denotes the class name
    Suppressed Include (False - default) or exclude (True) the result object from the analysis
    Result By Determines the result loading type
    Set Number Determines the set number to retrieve the result data
    Maximum Value The maximum result value at the current step
    Minimum Value The minimum result value at the current step

    Solution

    The Solution object acts as a root object in the WELSIM application. Only one Solution can exist per simulation session, and one solution can contain multiple FEM projects.

    Tree dependencies

    • Valid Parent Tree Object: None - highest level in the tree.
    • Valid Child Tree Objects: FEM Project.

    Insertion options

    Appears by default when you create a new FEM project.

    Study

    The Study object holds all analysis related objects such as Study Settings, Boundary Conditions, Body Conditions, and Initial Conditions. An example of Study object is shown in Figure [fig:ch3_guide_obj_study].

    finite_element_analysis_welsim_obj_study

    Tree dependencies

    Insertion options

    Appears by default when you create a new FEM project.

    Object properties

    The Properties View for this object include the following:

    Property Name Description
    ID A read-only field denotes the ID of this object
    Class Label A read-only field denotes the class name
    Number of Steps A number field to determine the total number of steps. The default value is 1. The input value must be positive
    Current Step A number field to determine the current step for the successive settings. The default value is 1. The input value must be less than or equal to the Number of Steps. Note that Current Step property of Study object is adjustable, and determines the Current Step properties in other objects such as Study Settings, and Boundary Conditions
    Current End Time a number field to determine the end time of the current step. The value must be larger than that of the last step

    Study Settings

    The Study Settings object allows you to define analysis and solving settings to customize a specific simulation model. An example of Study Settings object is shown in Figure [fig:ch3_guide_obj_study_settings].

    finite_element_analysis_welsim_obj_study_settings

    Tree dependencies

    • Valid Parent Tree Object: Study.
    • Valid Child Tree Objects: None.

    Insertion options

    Appears by default when you create a new FEM project.

    Object properties

    The properties of Study Settings vary for different Physics and Analysis types. The following lists the available properties according to Analysis Type:

    • Static Structural and Thermal: Current Step (Read-Only), Number of SubSteps, Relative Tolerance, Absolute Tolerance, Maximum Iterations.
    • Transient Structural and Thermal: Current Step (Read-Only), Auto-Timing, Number of SubSteps, Time Incremental (Shown as Auto Timing is False), Relative Tolerance, Absolute Tolerance, Maximum Iterations.
    • Modal Structural: Number of Modes, Lancos Tolerance, Lancos Iterations.
    • ElectroStatic and MagnetoStatic: Current Step (Read-Only), Relative Tolerance, Absolute Tolerance, Maximum Iterations.

    Spreadsheet

    The Study Settings object can display the Spreadsheet window, which provides a friendly user interface to review properties at all steps as shown in Figure [fig:ch3_guide_obj_study_settings]. You can double click or right click on the Study Settings object and select the Edit command to display the Spreadsheet window.

    \ No newline at end of file diff --git a/welsim/users/overview/index.html b/welsim/users/overview/index.html index 77e2b71..1b54709 100755 --- a/welsim/users/overview/index.html +++ b/welsim/users/overview/index.html @@ -1 +1 @@ - Overview - WelSim Documentation

    This chapter is the user guide for working with WELSIM application, which is used to perform various types of structural, thermal, and electromagnetic analyses. The entire simulation process is tied together by a unified graphical user interface.

    Overview

    WELSIM application enables you to investigate design alternative efficiently. You can modify any aspect of analysis or vary parameters, then update the project to the see results of the change in the modeling. A typical modeling process is composed of defining the model, and boundary conditions applied to it, computing for the simulation's response to the conditions, then evaluating the solutions with a variety of tools.

    The WELSIM software application has a tree structure that consists of “objects” that enable you to define simulation conditions. By clicking the objects, you activate the associated properties in the property window, and you can use the corresponding command and tools to conduct the simulation study. The following sections describe in details to use the WELSIM to set up and implement simulation studies.

    \ No newline at end of file + Overview - WelSim Documentation

    This chapter is the user guide for working with WELSIM application, which is used to perform various types of structural, thermal, and electromagnetic analyses. The entire simulation process is tied together by a unified graphical user interface.

    Overview

    WELSIM application enables you to investigate design alternative efficiently. You can modify any aspect of analysis or vary parameters, then update the project to the see results of the change in the modeling. A typical modeling process is composed of defining the model, and boundary conditions applied to it, computing for the simulation's response to the conditions, then evaluating the solutions with a variety of tools.

    The WELSIM software application has a tree structure that consists of “objects” that enable you to define simulation conditions. By clicking the objects, you activate the associated properties in the property window, and you can use the corresponding command and tools to conduct the simulation study. The following sections describe in details to use the WELSIM to set up and implement simulation studies.

    \ No newline at end of file diff --git a/welsim/users/results/index.html b/welsim/users/results/index.html index af7b2d9..ea35b04 100755 --- a/welsim/users/results/index.html +++ b/welsim/users/results/index.html @@ -1,5 +1,5 @@ - Using results - WelSim Documentation

    Using results

    This section describes the details of a result. The help for Results is classified by the physics and analysis types.

    Introduction to the results

    You can generate results to understand the behaviors of the analyzed model. The advantages of using results in WELSIM application are:

    • Illustrates result contour over the simulation domain for various solution quantities, such as stress, deformation, temperature, voltage, etc.
    • Probe results to calculate the abstract engineering quantities, such as reaction forces.
    • Displays the minimum and maximum values over time in Chart and Tabular Data windows.
    • Allows customized results using User-Defined Results.
    • Export result data to external files.

    Result application

    Applying results can be achieved by

    • Right-click on the Answer object or its children objects in the tree, select Insert Results from the pop-up context menu and then choose from the result options.
    • Click the result object from the Menu or Toolbar.

    Result definitions

    This section describes the fundamental features in result definitions.

    Result controller

    In the multi-step or transient analysis, the solution contains result data at various steps. Result By property provides a controller to select the desired step data to display. You can determine to show the result by Set Number or Time/Frequency. The default is by Set Number. Additional properties such as Set Number, Time, or Frequency shows up as you define the Result By property.

    Clear generated data

    You can clear results data from the database using the Clear Result command from the Toolbar, Menu, or the right-click context menu on a result object.

    You also can clear entire solution data from the database using the Clear Calculated Data command from the Toolbar, Menu, or the right-click context menu on an Answers object. These two commands from the context menu are shown in Figure [fig:ch3_guide_rst_clear_data].

    finite_element_analysis_welsim_rst_clear_result_menu finite_element_analysis_welsim_rst_clear_solution_menu

    Display controller

    You can select the Graphics tab on the result Properties View pane. As shown in Figure [fig:ch3_guide_rst_display_prop], the following properties are available to adjust the contour display:

    • Line Width: determines the line width of the mesh frame.
    • Show Mesh: Show (True) or hide (False - default) the mesh frames on the result contour.
    • Show Backface: Show (True - default) result contour on the back face.
    • Show Deformation: Show (True) or ignore (False - default) the structural deformation on the result contour. This option is only valid for the structural analysis.
    • Deformation Scale: Determines the scale of the deformation, the default value 1 denotes the true deformation. This option is only valid as Show Deformation is True.

    finite_element_analysis_welsim_rst_display_prop

    Structural results

    The following structural results are described in this section.

    Deformation

    Physical deformation of the modeling geometries can be calculated and plotted in the form of contour. This result is available for all structural analysis. The following gives the properties of result object:

    • Type: The available options are Deformation X, Deformation Y, Deformation Z, and Total Deformation. The default is Total Deformation, which essentially shows the magnitude of the deformation vector.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Stress

    The stress quantities provide mechanical insights to the given model and material of a part or an assembly under a specific structural loading environment. A general 3D stress state contains three normal and three shear stresses. The stress quantities in WELSIM application are the nodal values and available for all structural analysis. The equivalent stress (also called von-Mises stress) is related to the principal stresses by the equation:

    \[ \sigma_{VM}=\left[\dfrac{(\sigma_{11}-\sigma_{22})^{2}+(\sigma_{22}-\sigma_{33})^{2}+(\sigma_{33}-\sigma_{11})^{2}+6(\sigma_{12}^{2}+\sigma_{23}^{2}+\sigma_{31}^{2})}{2}\right]^{1/2} \]

    The following gives the properties of result object:

    • Type: The available options are Normal Stress X, Normal Stress Y, Normal Stress Z, Shear Stress XY, Shear Stress YZ, Shear Stress XZ, and von-Mises Stress. The default is von-Mises Stress.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Strain

    The strain quantities provide deformation insights to the given model and material of a part or an assembly under a specific structural loading environment. This result is available for all structural analysis.

    The available properties for strain result are:

    • Type: The available options are Normal Strain X, Normal Strain Y, Normal Strain Z, Shear Strain XY, Shear Strain YZ, and Shear Strain XZ. The default is Normal Strain X.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Acceleration

    The acceleration quantities demonstrate the acceleration of the given model and material of a part or an assembly under a specific structural loading environment. This result is available for transient structural analysis.

    The available properties for acceleration result are:

    • Type: The available options are Acceleration X, Acceleration Y, Acceleration Z, and Total Acceleration. The default is Total Acceleration.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Note

    Acceleration result is only available for the transient structural analysis.

    Velocity

    The velocity quantities demonstrate the velocity of the given model and material of a part or an assembly under a specific structural loading environment. This result is available for transient structural analysis.

    The available properties for velocity result are:

    • Type: The available options are Velocity X, Velocity Y, Velocity Z, and Total Velocity. The default is Total Velocity.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Note

    Velocity result is only available for the transient structural analysis.

    Rotation

    The rotation quantities demonstrate the rotation of the given model and material of a part or an assembly under a specific structural loading environment. This result is available for only shell structure.

    The available properties for rotation result are:

    • Type: The available options are Rotation XY, Rotation YZ, Rotation XZ, and Total Rotation. The default is Total Rotation.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Note

    Rotation result is only available for the shell structural analysis.

    Reaction Force Probe

    The reaction force provides an insight to abstract reaction force of the given model and material of a part or an assembly under a specific structural loading environment. This result is available for structural analysis.

    The available properties for a reaction force probe are:

    • Type: The available options are Reaction Force X, Reaction Force Y, Reaction Force Z, and Total Reaction Force. The default is Total Reaction Force.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Note

    This probe result does not show contour on the geometry. The primary output data is the Maximum Value and Minimum Value displayed in the Properties View window.

    Reaction Moment Probe

    The reaction moment provides an insight to abstract quantities of the given model and material of a part or an assembly under a specific structural loading environment. This result is available for only shell structure.

    The available properties for reaction moment probe are:

    • Type: The available options are Reaction Moment X, Reaction Moment Y, Reaction Moment Z, and Total Reaction Moment. The default is Total Reaction Moment.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Note

    Reaction moment probe result is only available for the shell structural analysis.

    Reaction moment probe result does not show contour on the geometry. The primary output data is the Maximum Value and Minimum Value displayed in the Properties View window.

    Thermal results

    The following thermal results are described in this section:

    Temperature

    The temperature, a scalar quantity, provides an insight to the temperature distribution throughout the structure. Temperature results can be displayed as a contour plot.

    The available properties for temperature are:

    • Type: The sole available option is Temperature. This field is read-only.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Electric results

    Voltage

    The voltage, a scalar quantity, provides an insight to the electric potential distribution throughout the conductor bodies.

    The available properties for voltage are:

    • Type: The sole available option is Voltage. This is a read-only field.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Electric Field

    The electric field, a vector component quantity, provides an insight to the electric field intensity distribution throughout the bodies.

    The available properties for Electric Field are:

    • Type: The available options are Electric Field X, Electric Field Y, Electric Field Z, Total Electric Field. The default Total Electric Field option displays the total magnitude of the vectors as a contour.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Current Density

    Electric Displacement

    The electric displacement, a vector component quantity, provides an insight to the electric displacement intensity distribution throughout the bodies. This quantity has the constitutive relation with Electric Field as shown in equation below:

    \[ D=\epsilon E \]

    where D is the electric displacement, E is the electric field, and \(\epsilon\) is the electric permittivity. The available properties for Electric Displacement are:

    • Type: The available options are Electric Displacement X, Electric Displacement Y, Electric Displacement Z, Total Electric Displacement. The default Total Electric Displacement option displays the total magnitude of the vectors as a contour.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Energy Density

    The energy density, a scalar quantity, provides an insight to the electromagnetic energy throughout the simulation bodies.

    The available properties for energy density are:

    • Type: The sole available option is Energy Density. This is a read-only field.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Magnetic results

    The magnetostatic analysis provides fundamental result quantities for you to investigate the field.

    Electric Potential

    Magnetic Potential

    Magnetic Potential vector components are computed throughout the simulation domain. The available properties for Magnetic Potential are:

    • Type: The available options are Magnetic Potential X, Magnetic Potential Y, Magnetic Potential Z, Total Magnetic Potential. The default Total Magnetic Potential option displays the total magnitude of the vectors as a contour.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Magnetic Flux Density

    Magnetic Flux Density vector components are computed throughout the simulation domain. The available properties for Magnetic Flux Density are:

    • Type: The available options are Magnetic Flux Density X, Magnetic Flux Density Y, Magnetic Flux Density Z, Total Magnetic Flux Density. The default Total Magnetic Flux Density option displays the total magnitude of the vectors as a contour.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Magnetic Field

    Magnetic Field vector components are computed throughout the simulation domain. The available properties for Magnetic Field are:

    • Type: The available options are Magnetic Field X, Magnetic Field Y, Magnetic Field Z, Total Magnetic Field. The default Total Magnetic Field option displays the total magnitude of the vectors as a contour.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    User-Defined Results

    This section describes the use of the User-Defined Result feature in WELSIM application. The user-defined result provides you with more flexible result evaluation methods. In addition to the system-provided result types, the User-Defined Result allows you to plot more broad kinds of results with the given expression.

    Like other result types that display contours, chart, and data, the User-Defined results:

    • Need you to input a supported Expression to retrieve the result data.
    • Need you to specify a set, time, or frequency in the Properties View window.
    • Display Maximum and Minimum values in the Properties View window.
    • Display Maximum and Minimum data over time in Tabular Data and Chart windows.

    Applying a User-Defined Result can be done using one of the following methods:

    • Select the User-Defined Result item from the Menu of FEM.
    • Select the User-Defined Result button from the standard Toolbar.
    • Right-click the Solution or Result object, and select the User-Defined Result item.

    An example of User Defined Result properties view is shown in Figure [fig:ch3_guide_user_defined_rst_prop].

    finite_element_analysis_welsim_rst_user_defined

    User Defined Result expressions

    The property Expression accepts the capital string values, and the lower case letters are converted automatically to the capital letters. The following lists the supported Expressions used in the WELSIM application:

    Expression Result description
    UVW Total deformation for structural analysis
    U Directional deformation X for structural analysis
    V Directional deformation Y for structural analysis
    W Directional deformation Z for structural analysis
    SIGVM von-Mises stress for the structural analysis
    SIG00 Normal stress X for the structural analysis
    SIG11 Normal stress Y for the structural analysis
    SIG22 Normal stress Z for the structural analysis
    SIG01 Shear stress XY for the structural analysis
    SIG12 Shear stress YZ for the structural analysis
    SIG02 Shear stress XZ for the structural analysis
    EPS00 Normal strain X for the structural analysis
    EPS11 Normal strain Y for the structural analysis
    EPS22 Normal strain Z for the structural analysis
    EPS01 Shear strain XY for the structural analysis
    EPS12 Shear strain YZ for the structural analysis
    EPS02 Shear strain XZ for the structural analysis
    RFT Total reaction force for the structural analysis
    RFX Directional reaction force X for the structural analysis
    RFY Directional reaction force Y for the structural analysis
    RFZ Directional reaction force Z for the structural analysis
    RMT Total reaction moment for the shell structural analysis
    RMX Directional reaction moment X for the shell structural analysis
    RMY Directional reaction moment Y for the shell structural analysis
    RMZ Directional reaction moment Z for the shell structural analysis
    ENEEL Total energy for the structural analysis
    V123 Total velocity for the transient structural analysis
    V1 Directional velocity X for the transient structural analysis
    V2 Directional velocity Y for the transient structural analysis
    V3 Directional velocity Z for the transient structural analysis
    A123 Total acceleration for the transient structural analysis
    A1 Directional acceleration X for the transient structural analysis
    A2 Directional acceleration Y for the transient structural analysis
    A3 Directional acceleration Z for the transient structural analysis
    ROTT Total rotation for shell structural analysis
    ROTX Directional rotation X for shell structural analysis
    ROTY Directional rotation Y for shell structural analysis
    ROTZ Directional rotation Z for shell structural analysis
    TEMP Temperature for thermal analysis
    EM_U Voltage for electromagnetic analysis
    EM_ET Total electric field intensity for electromagnetic analysis
    EM_EX Directional electric field intensity X for electromagnetic analysis
    EM_EY Directional electric field intensity Y for electromagnetic analysis
    EM_EZ Directional electric field intensity Z for electromagnetic analysis
    EM_DT Total electric displacement for electromagnetic analysis
    EM_DX Directional electric displacement X for electromagnetic analysis
    EM_DY Directional electric displacement Y for electromagnetic analysis
    EM_DZ Directional electric displacement Z for electromagnetic analysis
    EM_EN Energy density for electromagnetic analysis
    EM_HT Total magnetic field intensity for electromagnetic analysis
    EM_HX Directional magnetic field intensity X for electromagnetic analysis
    EM_HY Directional magnetic field intensity Y for electromagnetic analysis
    EM_HZ Directional magnetic field intensity Z for electromagnetic analysis
    EM_BT Total magnetic flux density for electromagnetic analysis
    EM_BX Directional magnetic flux density X for electromagnetic analysis
    EM_BY Directional magnetic flux density Y for electromagnetic analysis
    EM_BZ Directional magnetic flux density Z for electromagnetic analysis
    EM_AT Magnitude of a magnetic potential vector for electromagnetic analysis
    EM_A_x Magnetic potential vector component X for electromagnetic analysis
    EM_A_y Magnetic potential vector component Y for electromagnetic analysis
    EM_A_z Magnetic potential vector component Z for electromagnetic analysis
    WelSim/docs

    Using results

    This section describes the details of a result. The help for Results is classified by the physics and analysis types.

    Introduction to the results

    You can generate results to understand the behaviors of the analyzed model. The advantages of using results in WELSIM application are:

    • Illustrates result contour over the simulation domain for various solution quantities, such as stress, deformation, temperature, voltage, etc.
    • Probe results to calculate the abstract engineering quantities, such as reaction forces.
    • Displays the minimum and maximum values over time in Chart and Tabular Data windows.
    • Allows customized results using User-Defined Results.
    • Export result data to external files.

    Result application

    Applying results can be achieved by

    • Right-click on the Answer object or its children objects in the tree, select Insert Results from the pop-up context menu and then choose from the result options.
    • Click the result object from the Menu or Toolbar.

    Result definitions

    This section describes the fundamental features in result definitions.

    Result controller

    In the multi-step or transient analysis, the solution contains result data at various steps. Result By property provides a controller to select the desired step data to display. You can determine to show the result by Set Number or Time/Frequency. The default is by Set Number. Additional properties such as Set Number, Time, or Frequency shows up as you define the Result By property.

    Clear generated data

    You can clear results data from the database using the Clear Result command from the Toolbar, Menu, or the right-click context menu on a result object.

    You also can clear entire solution data from the database using the Clear Calculated Data command from the Toolbar, Menu, or the right-click context menu on an Answers object. These two commands from the context menu are shown in Figure [fig:ch3_guide_rst_clear_data].

    finite_element_analysis_welsim_rst_clear_result_menu finite_element_analysis_welsim_rst_clear_solution_menu

    Display controller

    You can select the Graphics tab on the result Properties View pane. As shown in Figure [fig:ch3_guide_rst_display_prop], the following properties are available to adjust the contour display:

    • Line Width: determines the line width of the mesh frame.
    • Show Mesh: Show (True) or hide (False - default) the mesh frames on the result contour.
    • Show Backface: Show (True - default) result contour on the back face.
    • Show Deformation: Show (True) or ignore (False - default) the structural deformation on the result contour. This option is only valid for the structural analysis.
    • Deformation Scale: Determines the scale of the deformation, the default value 1 denotes the true deformation. This option is only valid as Show Deformation is True.

    finite_element_analysis_welsim_rst_display_prop

    Structural results

    The following structural results are described in this section.

    Deformation

    Physical deformation of the modeling geometries can be calculated and plotted in the form of contour. This result is available for all structural analysis. The following gives the properties of result object:

    • Type: The available options are Deformation X, Deformation Y, Deformation Z, and Total Deformation. The default is Total Deformation, which essentially shows the magnitude of the deformation vector.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Stress

    The stress quantities provide mechanical insights to the given model and material of a part or an assembly under a specific structural loading environment. A general 3D stress state contains three normal and three shear stresses. The stress quantities in WELSIM application are the nodal values and available for all structural analysis. The equivalent stress (also called von-Mises stress) is related to the principal stresses by the equation:

    \[ \sigma_{VM}=\left[\dfrac{(\sigma_{11}-\sigma_{22})^{2}+(\sigma_{22}-\sigma_{33})^{2}+(\sigma_{33}-\sigma_{11})^{2}+6(\sigma_{12}^{2}+\sigma_{23}^{2}+\sigma_{31}^{2})}{2}\right]^{1/2} \]

    The following gives the properties of result object:

    • Type: The available options are Normal Stress X, Normal Stress Y, Normal Stress Z, Shear Stress XY, Shear Stress YZ, Shear Stress XZ, and von-Mises Stress. The default is von-Mises Stress.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Strain

    The strain quantities provide deformation insights to the given model and material of a part or an assembly under a specific structural loading environment. This result is available for all structural analysis.

    The available properties for strain result are:

    • Type: The available options are Normal Strain X, Normal Strain Y, Normal Strain Z, Shear Strain XY, Shear Strain YZ, and Shear Strain XZ. The default is Normal Strain X.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Acceleration

    The acceleration quantities demonstrate the acceleration of the given model and material of a part or an assembly under a specific structural loading environment. This result is available for transient structural analysis.

    The available properties for acceleration result are:

    • Type: The available options are Acceleration X, Acceleration Y, Acceleration Z, and Total Acceleration. The default is Total Acceleration.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Note

    Acceleration result is only available for the transient structural analysis.

    Velocity

    The velocity quantities demonstrate the velocity of the given model and material of a part or an assembly under a specific structural loading environment. This result is available for transient structural analysis.

    The available properties for velocity result are:

    • Type: The available options are Velocity X, Velocity Y, Velocity Z, and Total Velocity. The default is Total Velocity.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Note

    Velocity result is only available for the transient structural analysis.

    Rotation

    The rotation quantities demonstrate the rotation of the given model and material of a part or an assembly under a specific structural loading environment. This result is available for only shell structure.

    The available properties for rotation result are:

    • Type: The available options are Rotation XY, Rotation YZ, Rotation XZ, and Total Rotation. The default is Total Rotation.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Note

    Rotation result is only available for the shell structural analysis.

    Reaction Force Probe

    The reaction force provides an insight to abstract reaction force of the given model and material of a part or an assembly under a specific structural loading environment. This result is available for structural analysis.

    The available properties for a reaction force probe are:

    • Type: The available options are Reaction Force X, Reaction Force Y, Reaction Force Z, and Total Reaction Force. The default is Total Reaction Force.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Note

    This probe result does not show contour on the geometry. The primary output data is the Maximum Value and Minimum Value displayed in the Properties View window.

    Reaction Moment Probe

    The reaction moment provides an insight to abstract quantities of the given model and material of a part or an assembly under a specific structural loading environment. This result is available for only shell structure.

    The available properties for reaction moment probe are:

    • Type: The available options are Reaction Moment X, Reaction Moment Y, Reaction Moment Z, and Total Reaction Moment. The default is Total Reaction Moment.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Note

    Reaction moment probe result is only available for the shell structural analysis.

    Reaction moment probe result does not show contour on the geometry. The primary output data is the Maximum Value and Minimum Value displayed in the Properties View window.

    Thermal results

    The following thermal results are described in this section:

    Temperature

    The temperature, a scalar quantity, provides an insight to the temperature distribution throughout the structure. Temperature results can be displayed as a contour plot.

    The available properties for temperature are:

    • Type: The sole available option is Temperature. This field is read-only.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Electric results

    Voltage

    The voltage, a scalar quantity, provides an insight to the electric potential distribution throughout the conductor bodies.

    The available properties for voltage are:

    • Type: The sole available option is Voltage. This is a read-only field.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Electric Field

    The electric field, a vector component quantity, provides an insight to the electric field intensity distribution throughout the bodies.

    The available properties for Electric Field are:

    • Type: The available options are Electric Field X, Electric Field Y, Electric Field Z, Total Electric Field. The default Total Electric Field option displays the total magnitude of the vectors as a contour.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Current Density

    Electric Displacement

    The electric displacement, a vector component quantity, provides an insight to the electric displacement intensity distribution throughout the bodies. This quantity has the constitutive relation with Electric Field as shown in equation below:

    \[ D=\epsilon E \]

    where D is the electric displacement, E is the electric field, and \(\epsilon\) is the electric permittivity. The available properties for Electric Displacement are:

    • Type: The available options are Electric Displacement X, Electric Displacement Y, Electric Displacement Z, Total Electric Displacement. The default Total Electric Displacement option displays the total magnitude of the vectors as a contour.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Energy Density

    The energy density, a scalar quantity, provides an insight to the electromagnetic energy throughout the simulation bodies.

    The available properties for energy density are:

    • Type: The sole available option is Energy Density. This is a read-only field.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Magnetic results

    The magnetostatic analysis provides fundamental result quantities for you to investigate the field.

    Electric Potential

    Magnetic Potential

    Magnetic Potential vector components are computed throughout the simulation domain. The available properties for Magnetic Potential are:

    • Type: The available options are Magnetic Potential X, Magnetic Potential Y, Magnetic Potential Z, Total Magnetic Potential. The default Total Magnetic Potential option displays the total magnitude of the vectors as a contour.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Magnetic Flux Density

    Magnetic Flux Density vector components are computed throughout the simulation domain. The available properties for Magnetic Flux Density are:

    • Type: The available options are Magnetic Flux Density X, Magnetic Flux Density Y, Magnetic Flux Density Z, Total Magnetic Flux Density. The default Total Magnetic Flux Density option displays the total magnitude of the vectors as a contour.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    Magnetic Field

    Magnetic Field vector components are computed throughout the simulation domain. The available properties for Magnetic Field are:

    • Type: The available options are Magnetic Field X, Magnetic Field Y, Magnetic Field Z, Total Magnetic Field. The default Total Magnetic Field option displays the total magnitude of the vectors as a contour.
    • Result By: Determines the result loading type.
    • Set Number: Determines the set number to retrieve the result data.
    • Maximum Value: The maximum result value at the current step.
    • Minimum Value: The minimum result value at the current step.
    • Suppressed: Include (False - default) or exclude (True) the result object.

    User-Defined Results

    This section describes the use of the User-Defined Result feature in WELSIM application. The user-defined result provides you with more flexible result evaluation methods. In addition to the system-provided result types, the User-Defined Result allows you to plot more broad kinds of results with the given expression.

    Like other result types that display contours, chart, and data, the User-Defined results:

    • Need you to input a supported Expression to retrieve the result data.
    • Need you to specify a set, time, or frequency in the Properties View window.
    • Display Maximum and Minimum values in the Properties View window.
    • Display Maximum and Minimum data over time in Tabular Data and Chart windows.

    Applying a User-Defined Result can be done using one of the following methods:

    • Select the User-Defined Result item from the Menu of FEM.
    • Select the User-Defined Result button from the standard Toolbar.
    • Right-click the Solution or Result object, and select the User-Defined Result item.

    An example of User Defined Result properties view is shown in Figure [fig:ch3_guide_user_defined_rst_prop].

    finite_element_analysis_welsim_rst_user_defined

    User Defined Result expressions

    The property Expression accepts the capital string values, and the lower case letters are converted automatically to the capital letters. The following lists the supported Expressions used in the WELSIM application:

    Expression Result description
    UVW Total deformation for structural analysis
    U Directional deformation X for structural analysis
    V Directional deformation Y for structural analysis
    W Directional deformation Z for structural analysis
    SIGVM von-Mises stress for the structural analysis
    SIG00 Normal stress X for the structural analysis
    SIG11 Normal stress Y for the structural analysis
    SIG22 Normal stress Z for the structural analysis
    SIG01 Shear stress XY for the structural analysis
    SIG12 Shear stress YZ for the structural analysis
    SIG02 Shear stress XZ for the structural analysis
    EPS00 Normal strain X for the structural analysis
    EPS11 Normal strain Y for the structural analysis
    EPS22 Normal strain Z for the structural analysis
    EPS01 Shear strain XY for the structural analysis
    EPS12 Shear strain YZ for the structural analysis
    EPS02 Shear strain XZ for the structural analysis
    RFT Total reaction force for the structural analysis
    RFX Directional reaction force X for the structural analysis
    RFY Directional reaction force Y for the structural analysis
    RFZ Directional reaction force Z for the structural analysis
    RMT Total reaction moment for the shell structural analysis
    RMX Directional reaction moment X for the shell structural analysis
    RMY Directional reaction moment Y for the shell structural analysis
    RMZ Directional reaction moment Z for the shell structural analysis
    ENEEL Total energy for the structural analysis
    V123 Total velocity for the transient structural analysis
    V1 Directional velocity X for the transient structural analysis
    V2 Directional velocity Y for the transient structural analysis
    V3 Directional velocity Z for the transient structural analysis
    A123 Total acceleration for the transient structural analysis
    A1 Directional acceleration X for the transient structural analysis
    A2 Directional acceleration Y for the transient structural analysis
    A3 Directional acceleration Z for the transient structural analysis
    ROTT Total rotation for shell structural analysis
    ROTX Directional rotation X for shell structural analysis
    ROTY Directional rotation Y for shell structural analysis
    ROTZ Directional rotation Z for shell structural analysis
    TEMP Temperature for thermal analysis
    EM_U Voltage for electromagnetic analysis
    EM_ET Total electric field intensity for electromagnetic analysis
    EM_EX Directional electric field intensity X for electromagnetic analysis
    EM_EY Directional electric field intensity Y for electromagnetic analysis
    EM_EZ Directional electric field intensity Z for electromagnetic analysis
    EM_DT Total electric displacement for electromagnetic analysis
    EM_DX Directional electric displacement X for electromagnetic analysis
    EM_DY Directional electric displacement Y for electromagnetic analysis
    EM_DZ Directional electric displacement Z for electromagnetic analysis
    EM_EN Energy density for electromagnetic analysis
    EM_HT Total magnetic field intensity for electromagnetic analysis
    EM_HX Directional magnetic field intensity X for electromagnetic analysis
    EM_HY Directional magnetic field intensity Y for electromagnetic analysis
    EM_HZ Directional magnetic field intensity Z for electromagnetic analysis
    EM_BT Total magnetic flux density for electromagnetic analysis
    EM_BX Directional magnetic flux density X for electromagnetic analysis
    EM_BY Directional magnetic flux density Y for electromagnetic analysis
    EM_BZ Directional magnetic flux density Z for electromagnetic analysis
    EM_AT Magnitude of a magnetic potential vector for electromagnetic analysis
    EM_A_x Magnetic potential vector component X for electromagnetic analysis
    EM_A_y Magnetic potential vector component Y for electromagnetic analysis
    EM_A_z Magnetic potential vector component Z for electromagnetic analysis

    Result tools

    Result legend

    The result legend feature helps you display the result range and contour colors in a specific design. The legend component is shown in the left of the Graphics window. As shown in Figure below, the legend displays the following information:

    • Project Name
    • Result Object Name
    • Result Type
    • Unit
    • Time
    • Current Date and Time

    finite_element_analysis_welsim_rst_legend

    The Legend style can be adjusted by right-clicking on the Legend field. As shown in Figure below, the Context Menu contains items:

    • Banded: Displays the contour in banded colors. It is mutually exclusive to the Smooth option. The default is toggled Off.
    • Smooth: Displays the contour in smooth colors. It is mutually exclusive to the Banded option. The default is toggled On.
    • User-Defined Max/Min: Allows you to manually set the Minimum and Maximum values on the result legend, the contour on the bodies can be updated accordingly. Once this option is toggled, a popped-up dialog lets you input the specific minimum and maximum values. You can revert the manual minimum and maximum values by toggling off this option. The min/max input dialog is shown below.
    • Logarithmic Scale: Set legend markers in a logarithmic scale order. The default is toggled Off.
    • Scientific Notation: Use the scientific notation. The default is On.
    • Digits: Determines the number of digits after the decimal symbol, the range is between 1 and 7. The default value is 3.
    • Labels: Determines the number of legend markers, the range is between 6 and 14. The default value is 11.
    • Color Scheme: Provides you four color options: Rainbow, Reverse Rainbow, Grayscale, Reverse Grayscale. The default is Rainbow.
    • Reset All: Resets all settings to the default.

    finite_element_analysis_welsim_rst_legend_context_menu

    finite_element_analysis_welsim_rst_legend_minmax_input

    Note

    For the option of user-defined max/min settings, the input maximum value must be greater than the minimum value.

    Exporting results

    The data associated with result objects can be exported in ASCII (.txt or .dat) file format by right-clicking on the desired result object and selecting the Export Result option. Once executed, you are asked to define a filename and select the directory to save the file.

    Note

    The desired result object must have been successfully evaluated before exporting the result data.

    \ No newline at end of file +### Probe results -->

    Result tools

    Result legend

    The result legend feature helps you display the result range and contour colors in a specific design. The legend component is shown in the left of the Graphics window. As shown in Figure below, the legend displays the following information:

    • Project Name
    • Result Object Name
    • Result Type
    • Unit
    • Time
    • Current Date and Time

    finite_element_analysis_welsim_rst_legend

    The Legend style can be adjusted by right-clicking on the Legend field. As shown in Figure below, the Context Menu contains items:

    • Banded: Displays the contour in banded colors. It is mutually exclusive to the Smooth option. The default is toggled Off.
    • Smooth: Displays the contour in smooth colors. It is mutually exclusive to the Banded option. The default is toggled On.
    • User-Defined Max/Min: Allows you to manually set the Minimum and Maximum values on the result legend, the contour on the bodies can be updated accordingly. Once this option is toggled, a popped-up dialog lets you input the specific minimum and maximum values. You can revert the manual minimum and maximum values by toggling off this option. The min/max input dialog is shown below.
    • Logarithmic Scale: Set legend markers in a logarithmic scale order. The default is toggled Off.
    • Scientific Notation: Use the scientific notation. The default is On.
    • Digits: Determines the number of digits after the decimal symbol, the range is between 1 and 7. The default value is 3.
    • Labels: Determines the number of legend markers, the range is between 6 and 14. The default value is 11.
    • Color Scheme: Provides you four color options: Rainbow, Reverse Rainbow, Grayscale, Reverse Grayscale. The default is Rainbow.
    • Reset All: Resets all settings to the default.

    finite_element_analysis_welsim_rst_legend_context_menu

    finite_element_analysis_welsim_rst_legend_minmax_input

    Note

    For the option of user-defined max/min settings, the input maximum value must be greater than the minimum value.

    Exporting results

    The data associated with result objects can be exported in ASCII (.txt or .dat) file format by right-clicking on the desired result object and selecting the Export Result option. Once executed, you are asked to define a filename and select the directory to save the file.

    Note

    The desired result object must have been successfully evaluated before exporting the result data.

    \ No newline at end of file diff --git a/welsim/users/steps/index.html b/welsim/users/steps/index.html index c0604ea..4eacf3e 100755 --- a/welsim/users/steps/index.html +++ b/welsim/users/steps/index.html @@ -1,2 +1,2 @@ - Steps for using the application - WelSim Documentation

    Steps for using the application

    This section discusses the workflow in performing simulation analysis in the WELSIM application.

    Creating analysis environment

    All analyses in WELSIM are represented by one independent analysis environment. After creating a new project environment, you can choose the analysis type and define the parameters to conduct the simulation study.

    Unit system behavior

    The WELSIM provides eight types of unit systems for you to chose. You can select the preferred unit system from File > Preferences > General > Units. Once the unit system is chosen, quantity units of FEM objects are fixed. However, user still can select different unit for the quantity defined in material module. The material quantity will be converted to the system units at solve.

    Defining materials

    In simulation analysis, a geometry's attribute is influenced by the material properties that are assigned to the body. When you create a new FEM project, a material project and a structural steel material object are created automatically. This material project can include multiple material objects, which contains the material properties for the successive analysis. The system-generated structural steel can be used directly.

    You can add new materials by either one of the methods below:

    • Click the Add Material button from Toolbar.
    • Click the Add Material item from the Material Menu.
    • Right click on the Material Project tree object, and choose Add Material item from the pop-up context menu.

    Editing material properties

    To manage material properties, you can

    • double click on the material object in the tree, or
    • right click on the material object and select Edit item from the pop-up context menu as shown in Figure below.

    finite_element_analysis_welsim_mat_context_menu

    Defining material properties

    In the material definition panel, two tabs display on the left sub-window as shown in Figure below. The Library tab gives you a quick method to add a bundle of properties for the specific type of material. The Build allows you to add each preferred property one by one.

    finite_element_analysis_welsim_mat_lib

    Defining analysis type

    There are several analysis types are supported in WELSIM. You can define the analysis type while performing an analysis. For example, if the temperature is to be calculated, you would choose a thermal analysis. In the FEM project object, you can set the Physics Type and Analysis Type from the Properties View window as shown in Figure below. The currently available physics and analysis types are:

    • Structural: Static, Transient, Modal
    • Thermal: Steady-State, Transient
    • Electromagnetics: Electostatic, Magnetostatic

    finite_element_analysis_welsim_fem_project_prop

    Generating geometries

    There are two ways of generating geometries in the WELSIM application. You can either create primitive shapes using built-in tools or import an existing STEP/IGES file. Since the built-in tool only can create primitive shapes such as box and cylinder, it is recommended to create your complex geometry in an external application and import the CAD file into WELSIM.

    Create primitive shapes

    The following lists the primitive shapes that WELSIM build-in tool can create:

    • 3D box
    • 3D cylinder
    • 3D plate
    • 3D line

    Import geometry files

    For the complex geometry or practical designs, you can create your geometry in an external CAD application, and import to WELSIM application via STEP or IGES file. The properties view of the imported geometry allows you to define the geometry attributes, as shown in Figure below.

    finite_element_analysis_welsim_fem_part_prop

    Defining part behaviors

    The primitive and imported parts have slightly different behaviors, but the primary attributes are the same. This section describes the behaviors of the imported part.

    Geometry scale

    The Scale determines the size change of the imported geometry, and the current geometry size is the original size multiplied by the scale value. The default value is 1. Increasing the scale value enlarges the geometry, reducing this value causes the geometry smaller. The scale ruler on the bottom of the Graphics Window provides a reference for users to recognize the current size of the geometry.

    Spatial parameters

    For the imported geometry, the Spatial Parameters allows the user to adjust the origin of geometries. The default value is the origin of global coordinates (0, 0, 0).

    Material assignment

    Once you have defined the material objects and created the geometry, you can assign the specific material to the selected geometry object. Click Material property, and the cell displays all candidate materials in the drop-down list as shown in Figure below. Each entry includes the material object name and ID.

    finite_element_analysis_welsim_fem_mat_assign

    Structure type

    The Structure Type provides a topological reference for you to differentiate the solid, shell, and beam geometries. The default structural type is Solid.

    Source file name

    The read-only Source property shows the information of the imported geometry file name. It provides a reference for you to identify the specific imported CAD file.

    Applying mesh

    Meshing is the process that your geometry is spatially discretized into finite elements and nodes. The quality of the mesh directly influences the final solutions. You can automatically mesh the geometry domains, and generate 3D tetrahedral elements (Tet10 and Tet4), or 3D triangle elements (Tri6 and Tri3).

    If your model does not mesh, the system applies the default settings and automatically meshes the domains at solve time. However, it is recommended to mesh the domain before solving since the system provides a reference for you to examine the mesh. Mesh Settings controls are available to assist you in adjusting the mesh density and quality.

    In the multi-body analysis, you can apply local Mesh Method object and scope the target bodies to achieve a finer or coarser mesh comparing to other bodies.

    Defining connections

    In some analyses, you may need to set up the connections such as contact. The available connection features are:

    • Contact Pair: defines two parts are bonded or may contact during the motion. It is supported for both structural and thermal analyses.

    Defining study settings

    The Study and Study Settings objects are inserted automatically when you started a new FEM project in the step of Creating Analysis Environment. These two objects define the necessary conditions for the solving, such as steps, substeps, end time, convergence tolerance, etc.

    You can create multiple steps in the properties of the Study object. As shown in Figure below, the property Number of Steps determines the total steps in the analysis. The Current Step property of determines the current step that other properties are defining on.

    The spreadsheet for the Study Settings object displays the related properties for all steps.

    finite_element_analysis_welsim_study_prop

    Defining initial conditions

    Based on the chosen analysis type, you can define the initial conditions to the analysis. The following initial conditions are supported:

    • Initial Temperature: For a transient thermal analysis, you can specify an initial temperature object. The properties view of initial temperature is shown in Figure below.

    finite_element_analysis_welsim_initial_temp_prop

    Applying boundary conditions

    You can impose various boundary conditions based on the types of analysis. For instance, the structural analysis allows you to impose pressure, force, displacement, and other boundary conditions. The thermal analysis enable you to impose thermal flux and temperature boundary conditions.

    The body conditions are imposed on the volumes instead of surfaces or edges. For example, the standard earth gravity, acceleration, and rotational velocity act on the bodies.

    The boundary and body conditions act according to the steps. For the multi-step analysis, the magnitude of those conditions can vary. The Tabular Data and Chart windows show related data and curves to represent the input values along time/steps.

    For the transient analysis, the Initial Status property provides options for the user to define the boundary value at the beginning of the simulation. As shown in Figure below, you can choose the initial value to be None or Equal to Step 1.

    finite_element_analysis_welsim_prop_initial_status

    Solving

    The WELSIM application contains the integrated solvers. These solvers are essentially executable applications and can be instantiated by the front-end using inter-processing scheme. During the solving process, the front-end program generates the input scripts, mesh data file and feeds these files to the solvers. After calculation, the front-end interface can consume the generated result files and displays the resulting contour on the GUI.

    Depended on the analysis type, the following solvers are available in WELSIM:

    • WelSimFemSolver1: solves the structural and thermal problems.
    • WelSimFemSolver2: solves the electromagnetic problems.

    Solution progress

    The overall solution progress can be indicated by the Output window, where you can view the output information from the solvers. If an calculation is completed successfully, you can see the similar message below in the Output window:

    WelSimFemSolver2 Completed !!
    -

    Evaluating results

    The WELSIM application provides fully integrated result review module, and you can evaluate simulation results with no need of other software tools. Depends on the analysis type, various results are available for you to examine solutions. The Using Results section lists all available results that may be used in the post-processing.

    The following lists the methods to add result objects:

    • Right click a Answers or Result object in the tree, and choose the target result item from the context menu.
    • Click the result button from the Menu or Toolbar.

    The following steps are to evaluate results:

    • Select the target result object in the tree.
    • If the solution is calculated, you can review the result by clicking the Evaluate button from the toolbar, menu, or the right-clicking context menu.

    The following result types are available:

    • Contour results: Displays a contour plot of result over geometry surface.
    • Probe results: Displays an annotation of the target area, and shows results in the Properties view.

    See the Using Results section for more details on results.

    Saving analysis project

    You can save the solution with all settings into an external file, and open this file later or on a different computer that has WELSIM installed. The persisted data include two parts:

    • WELSIM database file (*.wsdb).
    • Associated data folder, the folder name is consistent with the database file.

    Note

    The saved database file (*.wsdb) contains the information of objects and their properties. The geometry data is saved as external STEP files. The mesh and result object settings are saved. However, the mesh and result data are not included yet. You need to perform meshing and solving to obtain those data in a resumed project.

    \ No newline at end of file + Steps for using the application - WelSim Documentation

    Steps for using the application

    This section discusses the workflow in performing simulation analysis in the WELSIM application.

    Creating analysis environment

    All analyses in WELSIM are represented by one independent analysis environment. After creating a new project environment, you can choose the analysis type and define the parameters to conduct the simulation study.

    Unit system behavior

    The WELSIM provides eight types of unit systems for you to chose. You can select the preferred unit system from File > Preferences > General > Units. Once the unit system is chosen, quantity units of FEM objects are fixed. However, user still can select different unit for the quantity defined in material module. The material quantity will be converted to the system units at solve.

    Defining materials

    In simulation analysis, a geometry's attribute is influenced by the material properties that are assigned to the body. When you create a new FEM project, a material project and a structural steel material object are created automatically. This material project can include multiple material objects, which contains the material properties for the successive analysis. The system-generated structural steel can be used directly.

    You can add new materials by either one of the methods below:

    • Click the Add Material button from Toolbar.
    • Click the Add Material item from the Material Menu.
    • Right click on the Material Project tree object, and choose Add Material item from the pop-up context menu.

    Editing material properties

    To manage material properties, you can

    • double click on the material object in the tree, or
    • right click on the material object and select Edit item from the pop-up context menu as shown in Figure below.

    finite_element_analysis_welsim_mat_context_menu

    Defining material properties

    In the material definition panel, two tabs display on the left sub-window as shown in Figure below. The Library tab gives you a quick method to add a bundle of properties for the specific type of material. The Build allows you to add each preferred property one by one.

    finite_element_analysis_welsim_mat_lib

    Defining analysis type

    There are several analysis types are supported in WELSIM. You can define the analysis type while performing an analysis. For example, if the temperature is to be calculated, you would choose a thermal analysis. In the FEM project object, you can set the Physics Type and Analysis Type from the Properties View window as shown in Figure below. The currently available physics and analysis types are:

    • Structural: Static, Transient, Modal
    • Thermal: Steady-State, Transient
    • Electromagnetics: Electostatic, Magnetostatic

    finite_element_analysis_welsim_fem_project_prop

    Generating geometries

    There are two ways of generating geometries in the WELSIM application. You can either create primitive shapes using built-in tools or import an existing STEP/IGES file. Since the built-in tool only can create primitive shapes such as box and cylinder, it is recommended to create your complex geometry in an external application and import the CAD file into WELSIM.

    Create primitive shapes

    The following lists the primitive shapes that WELSIM build-in tool can create:

    • 3D box
    • 3D cylinder
    • 3D plate
    • 3D line

    Import geometry files

    For the complex geometry or practical designs, you can create your geometry in an external CAD application, and import to WELSIM application via STEP or IGES file. The properties view of the imported geometry allows you to define the geometry attributes, as shown in Figure below.

    finite_element_analysis_welsim_fem_part_prop

    Defining part behaviors

    The primitive and imported parts have slightly different behaviors, but the primary attributes are the same. This section describes the behaviors of the imported part.

    Geometry scale

    The Scale determines the size change of the imported geometry, and the current geometry size is the original size multiplied by the scale value. The default value is 1. Increasing the scale value enlarges the geometry, reducing this value causes the geometry smaller. The scale ruler on the bottom of the Graphics Window provides a reference for users to recognize the current size of the geometry.

    Spatial parameters

    For the imported geometry, the Spatial Parameters allows the user to adjust the origin of geometries. The default value is the origin of global coordinates (0, 0, 0).

    Material assignment

    Once you have defined the material objects and created the geometry, you can assign the specific material to the selected geometry object. Click Material property, and the cell displays all candidate materials in the drop-down list as shown in Figure below. Each entry includes the material object name and ID.

    finite_element_analysis_welsim_fem_mat_assign

    Structure type

    The Structure Type provides a topological reference for you to differentiate the solid, shell, and beam geometries. The default structural type is Solid.

    Source file name

    The read-only Source property shows the information of the imported geometry file name. It provides a reference for you to identify the specific imported CAD file.

    Applying mesh

    Meshing is the process that your geometry is spatially discretized into finite elements and nodes. The quality of the mesh directly influences the final solutions. You can automatically mesh the geometry domains, and generate 3D tetrahedral elements (Tet10 and Tet4), or 3D triangle elements (Tri6 and Tri3).

    If your model does not mesh, the system applies the default settings and automatically meshes the domains at solve time. However, it is recommended to mesh the domain before solving since the system provides a reference for you to examine the mesh. Mesh Settings controls are available to assist you in adjusting the mesh density and quality.

    In the multi-body analysis, you can apply local Mesh Method object and scope the target bodies to achieve a finer or coarser mesh comparing to other bodies.

    Defining connections

    In some analyses, you may need to set up the connections such as contact. The available connection features are:

    • Contact Pair: defines two parts are bonded or may contact during the motion. It is supported for both structural and thermal analyses.

    Defining study settings

    The Study and Study Settings objects are inserted automatically when you started a new FEM project in the step of Creating Analysis Environment. These two objects define the necessary conditions for the solving, such as steps, substeps, end time, convergence tolerance, etc.

    You can create multiple steps in the properties of the Study object. As shown in Figure below, the property Number of Steps determines the total steps in the analysis. The Current Step property of determines the current step that other properties are defining on.

    The spreadsheet for the Study Settings object displays the related properties for all steps.

    finite_element_analysis_welsim_study_prop

    Defining initial conditions

    Based on the chosen analysis type, you can define the initial conditions to the analysis. The following initial conditions are supported:

    • Initial Temperature: For a transient thermal analysis, you can specify an initial temperature object. The properties view of initial temperature is shown in Figure below.

    finite_element_analysis_welsim_initial_temp_prop

    Applying boundary conditions

    You can impose various boundary conditions based on the types of analysis. For instance, the structural analysis allows you to impose pressure, force, displacement, and other boundary conditions. The thermal analysis enable you to impose thermal flux and temperature boundary conditions.

    The body conditions are imposed on the volumes instead of surfaces or edges. For example, the standard earth gravity, acceleration, and rotational velocity act on the bodies.

    The boundary and body conditions act according to the steps. For the multi-step analysis, the magnitude of those conditions can vary. The Tabular Data and Chart windows show related data and curves to represent the input values along time/steps.

    For the transient analysis, the Initial Status property provides options for the user to define the boundary value at the beginning of the simulation. As shown in Figure below, you can choose the initial value to be None or Equal to Step 1.

    finite_element_analysis_welsim_prop_initial_status

    Solving

    The WELSIM application contains the integrated solvers. These solvers are essentially executable applications and can be instantiated by the front-end using inter-processing scheme. During the solving process, the front-end program generates the input scripts, mesh data file and feeds these files to the solvers. After calculation, the front-end interface can consume the generated result files and displays the resulting contour on the GUI.

    Depended on the analysis type, the following solvers are available in WELSIM:

    • WelSimFemSolver1: solves the structural and thermal problems.
    • WelSimFemSolver2: solves the electromagnetic problems.

    Solution progress

    The overall solution progress can be indicated by the Output window, where you can view the output information from the solvers. If an calculation is completed successfully, you can see the similar message below in the Output window:

    WelSimFemSolver2 Completed !!
    +

    Evaluating results

    The WELSIM application provides fully integrated result review module, and you can evaluate simulation results with no need of other software tools. Depends on the analysis type, various results are available for you to examine solutions. The Using Results section lists all available results that may be used in the post-processing.

    The following lists the methods to add result objects:

    • Right click a Answers or Result object in the tree, and choose the target result item from the context menu.
    • Click the result button from the Menu or Toolbar.

    The following steps are to evaluate results:

    • Select the target result object in the tree.
    • If the solution is calculated, you can review the result by clicking the Evaluate button from the toolbar, menu, or the right-clicking context menu.

    The following result types are available:

    • Contour results: Displays a contour plot of result over geometry surface.
    • Probe results: Displays an annotation of the target area, and shows results in the Properties view.

    See the Using Results section for more details on results.

    Saving analysis project

    You can save the solution with all settings into an external file, and open this file later or on a different computer that has WELSIM installed. The persisted data include two parts:

    • WELSIM database file (*.wsdb).
    • Associated data folder, the folder name is consistent with the database file.

    Note

    The saved database file (*.wsdb) contains the information of objects and their properties. The geometry data is saved as external STEP files. The mesh and result object settings are saved. However, the mesh and result data are not included yet. You need to perform meshing and solving to obtain those data in a resumed project.

    \ No newline at end of file diff --git a/welsim/users/study/index.html b/welsim/users/study/index.html index 79a6b9f..230a563 100755 --- a/welsim/users/study/index.html +++ b/welsim/users/study/index.html @@ -1 +1 @@ - Configuring study settings - WelSim Documentation

    Configuring study settings

    This section describes the Study and Study Settings configuration.

    General settings

    When you start a new FEM Project, the Study and Study Settings objects are inserted in the tree automatically. With these objects selected, you can define many solving options in the Properties View window. For example, you can define the properties of Steps, Substeps, Solver, etc.

    Step controls

    Step Controls define the analysis steps for both static and transient analysis. These properties in the Study object has such characteristics:

    • Number of Steps must be positive.
    • Current Step must be less than or equal to the Number of Steps. Note that Current Step property of Study object is adjustable, and determines the Current Step properties in other objects such as Study Settings, and boundary conditions.
    • Current End Time must be greater than the Current End Time in the last step.

    Nonlinear controls

    For the nonlinear analysis, the properties of the Nonlinear Settings Controls determine the convergence of the solution. Those properties are mainly related to the Newton-Raphson algorithm.

    • Relative Tolerance: The default value is 1e-4.
    • Absolute Tolerance: The default value is 1e-5.
    • Maximum Iterations: The default value is 40.

    Solver controls

    Solver Controls determines the attributes of the linear algebra solvers. The following lists the related properties:

    • Solver Method: provides user to select a solver from the options Conjugate Gradient, BiCGStab, GMRES, GPBiCG, MUMPS, Direct, DIRECTmkl, where MUMPS, Direct, and DIRECTmkl are the direct solver, and the rest are iterative solver. The default solver is MUMPS.
    • Number of Iterations: defines the maximum number of the linear algebra solver iterations.
    • Residual Threshold: defines the residual threshold for the linear algebra solver.

    Output controls

    The Output Controls determines the output rules of solving and results. The available options are:

    • Output Time Log: outputs the log for each time step. The default is false.
    • Output Iteration Log: outputs the log each iteration step. The default is false.
    • Generate Result Files: generates ASCII format result file. The default is false.
    • Output Frequency: determines the frequency of the result data output. The default value is 1, which outputs result data every step.
    • Reorder Result Element: changes the higher order elements to the linear elements in the mesh data of the result file. The deatil is false.
    \ No newline at end of file + Configuring study settings - WelSim Documentation

    Configuring study settings

    This section describes the Study and Study Settings configuration.

    General settings

    When you start a new FEM Project, the Study and Study Settings objects are inserted in the tree automatically. With these objects selected, you can define many solving options in the Properties View window. For example, you can define the properties of Steps, Substeps, Solver, etc.

    Step controls

    Step Controls define the analysis steps for both static and transient analysis. These properties in the Study object has such characteristics:

    • Number of Steps must be positive.
    • Current Step must be less than or equal to the Number of Steps. Note that Current Step property of Study object is adjustable, and determines the Current Step properties in other objects such as Study Settings, and boundary conditions.
    • Current End Time must be greater than the Current End Time in the last step.

    Nonlinear controls

    For the nonlinear analysis, the properties of the Nonlinear Settings Controls determine the convergence of the solution. Those properties are mainly related to the Newton-Raphson algorithm.

    • Relative Tolerance: The default value is 1e-4.
    • Absolute Tolerance: The default value is 1e-5.
    • Maximum Iterations: The default value is 40.

    Solver controls

    Solver Controls determines the attributes of the linear algebra solvers. The following lists the related properties:

    • Solver Method: provides user to select a solver from the options Conjugate Gradient, BiCGStab, GMRES, GPBiCG, MUMPS, Direct, DIRECTmkl, where MUMPS, Direct, and DIRECTmkl are the direct solver, and the rest are iterative solver. The default solver is MUMPS.
    • Number of Iterations: defines the maximum number of the linear algebra solver iterations.
    • Residual Threshold: defines the residual threshold for the linear algebra solver.

    Output controls

    The Output Controls determines the output rules of solving and results. The available options are:

    • Output Time Log: outputs the log for each time step. The default is false.
    • Output Iteration Log: outputs the log each iteration step. The default is false.
    • Generate Result Files: generates ASCII format result file. The default is false.
    • Output Frequency: determines the frequency of the result data output. The default value is 1, which outputs result data every step.
    • Reorder Result Element: changes the higher order elements to the linear elements in the mesh data of the result file. The deatil is false.
    \ No newline at end of file diff --git a/welsim/vm/electromagnetic/index.html b/welsim/vm/electromagnetic/index.html index 53a85f3..28d8d3d 100755 --- a/welsim/vm/electromagnetic/index.html +++ b/welsim/vm/electromagnetic/index.html @@ -1 +1 @@ - Electromagnetic - WelSim Documentation

    Electromagnetic

    To be added...

    \ No newline at end of file + Electromagnetic - WelSim Documentation

    Electromagnetic

    To be added...

    \ No newline at end of file diff --git a/welsim/vm/introduction/index.html b/welsim/vm/introduction/index.html index 48119fd..91a7000 100755 --- a/welsim/vm/introduction/index.html +++ b/welsim/vm/introduction/index.html @@ -1 +1 @@ - Introduction - WelSim Documentation

    WELSIM Verification Manual presents a collection of test cases that demonstrate a number of the capabilities of the WELSIM analysis environment. The available tests are engineering problems that provide independent verification, usually a closed form equation. Many of them are classical engineering problems.

    Introduction

    Index of test cases

    The following lists all verification cases tested with WELSIM application. Each case entry describes the test case number, element type, analysis type, and solution options.

    • VM001: Solid Element, Static Structural, Linear.
    • VM002: Solid Element, Static Structural, Linear.
    • VM003: Solid Element, Steady-State Thermal, Linear.
    \ No newline at end of file + Introduction - WelSim Documentation

    WELSIM Verification Manual presents a collection of test cases that demonstrate a number of the capabilities of the WELSIM analysis environment. The available tests are engineering problems that provide independent verification, usually a closed form equation. Many of them are classical engineering problems.

    Introduction

    Index of test cases

    The following lists all verification cases tested with WELSIM application. Each case entry describes the test case number, element type, analysis type, and solution options.

    • VM001: Solid Element, Static Structural, Linear.
    • VM002: Solid Element, Static Structural, Linear.
    • VM003: Solid Element, Steady-State Thermal, Linear.
    \ No newline at end of file diff --git a/welsim/vm/structural/index.html b/welsim/vm/structural/index.html index 98826df..3b6ac0f 100755 --- a/welsim/vm/structural/index.html +++ b/welsim/vm/structural/index.html @@ -1 +1 @@ - Structural - WelSim Documentation

    Structural

    Statically inteterminate reaction force analysis VM001

    An assembly of three cylinder bars is supported at both end surfaces. Forces \(F_{1}\) and \(F_{2}\) is applied on the middle of the assembly as shown in Figure [fig:ch5_vm_001_schematic].

    finite_element_analysis_welsim_verification_1_schematic

    The input data about material, geometry, and loads are given in Table [tab:ch5_vm_001_parameters].

    Material Properties Geometric Properties Boundary Conditions
    Young's Modulus E=2e11 h=10 \(F_{1}\)=2000
    Mass Density \(\rho\)=7850 a=3 \(F_{2}\)=1000
    Poission's Ratio v=0.3 b=3

    The geometries and imposed boundary conditions are shown in Figure [fig:ch5_vm_001_bc].

    finite_element_analysis_welsim_verification_1_geometry

    The result comparison is given in Table [tab:ch5_vm_001_result].

    Results Theory WELSIM Error (%)
    Z Reaction Force at Top Fixed Support 1800 1810 0.556
    Z Reaction Force at Bottom Fixed Support 1200 1202 0.167

    This test case project file is located at [vm/VM_WELSIM_001.wsdb].

    Rectangular plate with circular hole subjected to tensile pressure VM002

    A rectangular plate with a circular hole is fixed along one of the end faces. A tensile pressure load is imposed on another end face as shown in Figure [fig:ch5_vm_002_schematic].

    finite_element_analysis_welsim_verification_2_schematic

    The input data about material, geometry, and loads are given in Table [tab:ch5_vm_002_parameters].

    Material Properties Geometric Properties Boundary Conditions
    Young's Modulus E=2e11 a=15 Pressure P=1e4
    Poission's Ratio v=0.3 b=7.5
    c=2.5
    d=5
    thickness=1

    The geometries and imposed boundary conditions are shown in Figure [fig:ch5_vm_002_bc].

    finite_element_analysis_welsim_verification_2_geometry

    The result comparison is given in Table [tab:ch5_vm_002_result].

    Results Theory WELSIM Error (%)
    Maximum Normal X Stress 3.125e4 3.156e4 0.992

    This test case project file is located at %Installation Directory%/vm/VM_WELSIM_002.wsdb.

    \ No newline at end of file + Structural - WelSim Documentation

    Structural

    Statically inteterminate reaction force analysis VM001

    An assembly of three cylinder bars is supported at both end surfaces. Forces \(F_{1}\) and \(F_{2}\) is applied on the middle of the assembly as shown in Figure [fig:ch5_vm_001_schematic].

    finite_element_analysis_welsim_verification_1_schematic

    The input data about material, geometry, and loads are given in Table [tab:ch5_vm_001_parameters].

    Material Properties Geometric Properties Boundary Conditions
    Young's Modulus E=2e11 h=10 \(F_{1}\)=2000
    Mass Density \(\rho\)=7850 a=3 \(F_{2}\)=1000
    Poission's Ratio v=0.3 b=3

    The geometries and imposed boundary conditions are shown in Figure [fig:ch5_vm_001_bc].

    finite_element_analysis_welsim_verification_1_geometry

    The result comparison is given in Table [tab:ch5_vm_001_result].

    Results Theory WELSIM Error (%)
    Z Reaction Force at Top Fixed Support 1800 1810 0.556
    Z Reaction Force at Bottom Fixed Support 1200 1202 0.167

    This test case project file is located at [vm/VM_WELSIM_001.wsdb].

    Rectangular plate with circular hole subjected to tensile pressure VM002

    A rectangular plate with a circular hole is fixed along one of the end faces. A tensile pressure load is imposed on another end face as shown in Figure [fig:ch5_vm_002_schematic].

    finite_element_analysis_welsim_verification_2_schematic

    The input data about material, geometry, and loads are given in Table [tab:ch5_vm_002_parameters].

    Material Properties Geometric Properties Boundary Conditions
    Young's Modulus E=2e11 a=15 Pressure P=1e4
    Poission's Ratio v=0.3 b=7.5
    c=2.5
    d=5
    thickness=1

    The geometries and imposed boundary conditions are shown in Figure [fig:ch5_vm_002_bc].

    finite_element_analysis_welsim_verification_2_geometry

    The result comparison is given in Table [tab:ch5_vm_002_result].

    Results Theory WELSIM Error (%)
    Maximum Normal X Stress 3.125e4 3.156e4 0.992

    This test case project file is located at %Installation Directory%/vm/VM_WELSIM_002.wsdb.

    \ No newline at end of file diff --git a/welsim/vm/thermal/index.html b/welsim/vm/thermal/index.html index b5d719b..ae109ac 100755 --- a/welsim/vm/thermal/index.html +++ b/welsim/vm/thermal/index.html @@ -1 +1 @@ - Thermal - WelSim Documentation

    Thermal

    Heat transfer in a composite wall VM003

    An assembly wall consists of fire brick and insulating brick. The temperature and surface convection coefficient are given for both end surfaces. The simulation tries to find the temperature distribution of the assembly. The schematic view of the model is shown in Figure [fig:ch5_vm_003_schematic].

    finite_element_analysis_welsim_verification_3_schematic

    The input data about material, geometry, and loads are given in Table [tab:ch5_vm_003_parameters].

    Material Properties Geometric Properties Boundary Conditions
    Thermal conductivity of fire brick wall: \(k_{F}\) = 1.852e-5 a=14 Convection coefficient \(h_{F}\)=2.315e-5
    Thermal conductivity of insulating wall: \(k_{A}\)=2.315e-6 b=9 Ambient temperature \(T_{F}\)=3000
    cross-section=1x1 Convection coefficient \(h_{A}\)=3.858e-6
    Ambient temperature \(T_{A}\)=80

    The geometries and imposed boundary conditions are shown in Figure [fig:ch5_vm_003_bc].

    finite_element_analysis_welsim_verification_3_geometry

    The result comparison is given in Table [tab:ch5_vm_003_result].

    Results Theory WELSIM Error (%)
    Minimum Temperature 336 336.724 0.215
    Maximum Temperature 2957 2957.216 0.007

    Info

    This test case file is located at vm/VM_WELSIM_003.wsdb.

    \ No newline at end of file + Thermal - WelSim Documentation

    Thermal

    Heat transfer in a composite wall VM003

    An assembly wall consists of fire brick and insulating brick. The temperature and surface convection coefficient are given for both end surfaces. The simulation tries to find the temperature distribution of the assembly. The schematic view of the model is shown in Figure [fig:ch5_vm_003_schematic].

    finite_element_analysis_welsim_verification_3_schematic

    The input data about material, geometry, and loads are given in Table [tab:ch5_vm_003_parameters].

    Material Properties Geometric Properties Boundary Conditions
    Thermal conductivity of fire brick wall: \(k_{F}\) = 1.852e-5 a=14 Convection coefficient \(h_{F}\)=2.315e-5
    Thermal conductivity of insulating wall: \(k_{A}\)=2.315e-6 b=9 Ambient temperature \(T_{F}\)=3000
    cross-section=1x1 Convection coefficient \(h_{A}\)=3.858e-6
    Ambient temperature \(T_{A}\)=80

    The geometries and imposed boundary conditions are shown in Figure [fig:ch5_vm_003_bc].

    finite_element_analysis_welsim_verification_3_geometry

    The result comparison is given in Table [tab:ch5_vm_003_result].

    Results Theory WELSIM Error (%)
    Minimum Temperature 336 336.724 0.215
    Maximum Temperature 2957 2957.216 0.007

    Info

    This test case file is located at vm/VM_WELSIM_003.wsdb.

    \ No newline at end of file

    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 z�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