Skip to content

Commit

Permalink
Merge pull request #700 from thelfer/679-mfront-create-an-mfront-inte…
Browse files Browse the repository at this point in the history
…rface-for-behaviours-and-models

679 mfront create an mfront interface for behaviours and models
  • Loading branch information
thelfer authored Jan 30, 2025
2 parents 91f3d2a + bfee55b commit 8ee2505
Show file tree
Hide file tree
Showing 180 changed files with 6,001 additions and 2,691 deletions.
3 changes: 3 additions & 0 deletions cmake/modules/tfel.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -321,6 +321,7 @@ $<TARGET_FILE_DIR:TFELConfig>;\
$<TARGET_FILE_DIR:TFELUnicodeSupport>;\
%PATH%"
COMMAND "${mfront_executable}"
ARGS "--search-path=${PROJECT_SOURCE_DIR}/mfront/tests/${dir}"
ARGS "--search-path=${PROJECT_SOURCE_DIR}/mfront/tests/models"
ARGS "--search-path=${PROJECT_SOURCE_DIR}/mfront/tests/behaviours"
ARGS "--search-path=${PROJECT_SOURCE_DIR}/mfront/tests/properties"
Expand All @@ -332,6 +333,7 @@ $<TARGET_FILE_DIR:TFELUnicodeSupport>;\
add_custom_command(
OUTPUT ${output_files}
COMMAND "${mfront_executable}"
ARGS "--search-path=${PROJECT_SOURCE_DIR}/mfront/tests/${dir}"
ARGS "--search-path=${PROJECT_SOURCE_DIR}/mfront/tests/models"
ARGS "--search-path=${PROJECT_SOURCE_DIR}/mfront/tests/behaviours"
ARGS "--search-path=${PROJECT_SOURCE_DIR}/mfront/tests/properties"
Expand All @@ -343,6 +345,7 @@ $<TARGET_FILE_DIR:TFELUnicodeSupport>;\
if(CMAKE_VERSION AND (${CMAKE_VERSION} GREATER "2.8.2"))
add_test(NAME mfront-${file}-${interface}
COMMAND ${mfront_executable}
--search-path=${PROJECT_SOURCE_DIR}/mfront/tests/${dir}
--search-path=${PROJECT_SOURCE_DIR}/mfront/tests/models
--search-path=${PROJECT_SOURCE_DIR}/mfront/tests/behaviours
--search-path=${PROJECT_SOURCE_DIR}/mfront/tests/properties
Expand Down
379 changes: 379 additions & 0 deletions docs/mfront/BehaviourVariable.md

Large diffs are not rendered by default.

20 changes: 20 additions & 0 deletions docs/mfront/BehaviourVariableFactory.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
The `@BehaviourVariableFactory` keyword allows to define an object able
to create a behaviour variable.

## Example of usage

~~~~{cxx}
@BehaviourVariableFactory f1 {
file: "BehaviourVariablePlasticity.mfront",
variables_suffix: "1",
external_names_prefix: "FirstPhase",
store_gradients: true,
store_thermodynamic_forces: true,
shared_external_state_variables: {".+"}
};
@Integrator{
auto b1 = f1.make();
...
}
~~~~
2 changes: 2 additions & 0 deletions docs/mfront/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@ install_mfront_desc(AuxiliaryStateVar)
install_mfront_desc(AuxiliaryStateVariable)
install_mfront_desc(AxialGrowth)
install_mfront_desc(Behaviour)
install_mfront_desc(BehaviourVariable)
install_mfront_desc(BehaviourVariableFactory)
install_mfront_desc(Bounds)
install_mfront_desc(Brick)
install_mfront_desc(Coef)
Expand Down
17 changes: 11 additions & 6 deletions docs/mfront/Model.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,19 @@
The `@Model` keyword is used to call an external model from a
behaviour. This model is called before any code block defining the
behaviour.
The `@Model` keyword is used to call an external point-wise model from a
behaviour. Those models can be implemented using the following DSLs:
`Model`, `DefaultModel`, `RungeKuttaModel` and `ImplicitModel`.

This model is called before any code block defining the behaviour.

This model is meant to make evolve one or more state variables of the
material.

From the behaviour point of view, those state variables are declared
as additional auxiliary state variables, but their values and their
From the behaviour point of view, those state variables are declared as
additional auxiliary state variables, but their values and their
increments over the time step are known. *Those variables are meant to
be used like external state variables*.
be used like external state variables*. However, those variables are
updated after computing the final thermodynamic forces and updating the
(standard) state variables of the behaviour **before** any code defined
by the user through the `@UpdateAuxiliaryStateVariables`.

## Note

Expand Down
20 changes: 12 additions & 8 deletions docs/mfront/UpdateAuxiliaryStateVariables.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
The `UpdateAuxiliaryStateVariables` introduces a code block meant to
The `@UpdateAuxiliaryStateVariables` introduces a code block meant to
update the auxiliary state variables after integration.

In implicit domain specific languages, the code declared by
`UpdateAuxiliaryStateVariables` is called once the integration
variables (including state variables) and stresses (see the
`@ComputeFinalStress` keyword) have been updated. The external state
variables are not updated.
In the `Default` and `Implicit` domain specific languages, the code
declared by `UpdateAuxiliaryStateVariables` is called once the
integration variables (including state variables) and stresses (see the
`@ComputeFinalStress` keyword) have been updated. If external point-wise
models were declared (see the `@Model` keyword), the associated
auxiliary states are also updated. The external state variables are not
updated.

In Runge-Kutta domain specific languages, the code declared by
`UpdateAuxiliaryStateVariables` is called after each successful time
Expand All @@ -14,8 +16,10 @@ substeppings: in this case, the code declared by
`UpdateAuxiliaryStateVariables` may be called several time during the
behaviour integration. An additional variable called `dt_`, which is
lower than the total time step increment `dt` if substeppings is
performed, gives the current time increment. The external state
variables are set to their values at the current date.
performed, gives the current time increment. If external point-wise
models were declared (see the `@Model` keyword), the associated
auxiliary states are set to their values at the current date. The
external state variables are set to their values at the current date.

## Example (Implicit dsl)

Expand Down
3 changes: 3 additions & 0 deletions docs/web/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ add_custom_target(website)
add_dependencies(doc website)

pandoc_html(index "-c css/slideshow.css")
pandoc_html(behaviour-variable)
pandoc_html(initializers)
pandoc_html(post-processings)
pandoc_html(associated-projects "--toc")
Expand Down Expand Up @@ -126,6 +127,7 @@ pandoc_html(release-notes-3.0.11 "--toc" "--toc-depth=2")
pandoc_html(release-notes-3.0.12 "--toc" "--toc-depth=2")
pandoc_html(release-notes-3.0.13 "--toc" "--toc-depth=2")
pandoc_html(release-notes-3.0.14 "--toc" "--toc-depth=2")
pandoc_html(release-notes-3.0.15 "--toc" "--toc-depth=2")
pandoc_html(release-notes-3.1 "--toc" "--toc-depth=2" "--number-sections" "-c css/slideshow.css")
pandoc_html(release-notes-3.1.1 "--toc" "--toc-depth=2")
pandoc_html(release-notes-3.1.2 "--toc" "--toc-depth=2")
Expand Down Expand Up @@ -177,6 +179,7 @@ pandoc_html(release-notes-4.1 "--toc" "--toc-depth=2" "--number-sections")
pandoc_html(release-notes-4.1.1 "--toc" "--toc-depth=2" "--number-sections")
pandoc_html(release-notes-4.1.2 "--toc" "--toc-depth=2" "--number-sections")
pandoc_html(release-notes-4.1.3 "--toc" "--toc-depth=2" "--number-sections")
pandoc_html(release-notes-4.1.4 "--toc" "--toc-depth=2" "--number-sections")
pandoc_html(release-notes-4.2 "--toc" "--toc-depth=2" "--number-sections")
pandoc_html(release-notes-4.2.1 "--toc" "--toc-depth=2" "--number-sections")
pandoc_html(release-notes-4.2.2 "--toc" "--toc-depth=2" "--number-sections")
Expand Down
Loading

0 comments on commit 8ee2505

Please sign in to comment.