Skip to content

Commit

Permalink
Updating:
Browse files Browse the repository at this point in the history
GUI Guides
Installation Guide
CLI Guide
+ New UML for inputs.
  • Loading branch information
kpwelsh committed Nov 16, 2023
1 parent 51600ab commit 4bfdda5
Show file tree
Hide file tree
Showing 16 changed files with 239 additions and 175 deletions.
8 changes: 8 additions & 0 deletions assets/css/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -619,10 +619,18 @@ Text Content
margin-top: 1em;
}

.text-content > h5 {
margin-top: 0.5em;
}

.text-content p + p {
margin-top: 1em;
}

.text-content img {
max-width: 100%;
}

/*
---------------------------------------------
Banner
Expand Down
Binary file added assets/images/EVPFFT-GUI-BoundaryConditions.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/images/EVPFFT-GUI-DefineMaterial.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/images/EVPFFT-GUI-Import.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/images/EVPFFT-GUI-MonkeyResults.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/images/EVPFFT-GUI-MonkeySTL.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/images/EVPFFT-GUI-MonkeyVoxel.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/images/EVPFFT-GUI-ResultsOptions.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/images/EVPFFT-GUI-RunEVPFFT.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/images/Fierro UML.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/images/Fierro UML.vsdx
Binary file not shown.
169 changes: 98 additions & 71 deletions cli-guide.html
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
<!-- main content area -->
<div class="col-sm-9 text-content">
<h1>Command Line Interface Guide</h1>
The <em>Fierro</em> command line interface (CLI) gives you direct access to the back-end functions without a GUI. This can be useful for making and running advanced configurations as well as for use on remote computing clusters.
The <em>Fierro</em> command line interface (CLI) gives you direct access to the back-end functions without a GUI. This can be useful for making and running advanced configurations as well as for use on remote computing clusters without display capabilities.

<h2>Entry Points</h2>
<p>
Expand All @@ -46,12 +46,12 @@ <h2>Entry Points</h2>
</p>
<pre><code>fierro -h</code></pre>
<p>
This will list as subcommands all of the available backend applications.
This will list as subcommands all of the available backend applications as well as some useful tools integrated into <em>Fierro</em> that can be run as standalone executables as well.
</p>

<h3>Parallel Solvers</h3>
<h3>Physics Solvers</h3>
<p>
Both the implicit static solver, and the explicit dynamics integrator take similar arguments in the form of a a Yaml configuration file.
Both the implicit static solver, and the explicit dynamics simulator take similar arguments in the form of a a Yaml configuration file.
The specific syntax for invoking them can be shown by running the following commands:
</p>
<pre><code>fierro parallel-explicit -h
Expand All @@ -67,77 +67,104 @@ <h3>Example Input</h3>
Note that most common configuration errors are caught by <em>Fierro</em> and you should pay attention to the feedback
provided if your Yaml file is not accepted.
</p>
<pre><code>
solver_type: Implicit
num_dims: 3
input_options:
mesh_file_format: ensight
mesh_file_name: TO_small_beam.geo
<pre><code>num_dims: 3
dynamic_options:
time_final: 1.0
dt_min: 1.e-8
dt_max: 1.e-2
dt_start: 1.e-5
cycle_stop: 2000000

output_options:
graphics_step_frequency: 100
mesh_generation_options:
type: Box
origin: [0, 0, 0]
length: [1.2, 1.2, 1.2]
num_elems: [32, 32, 32]

fea_modules:
- type: Elasticity
# Dirichlet conditions
boundary_conditions:
- surface: z_plane
plane_position: 0.0
condition_type: fixed_displacement
displacement_value: 0.0

# Loading/Neumann Conditions
loading_conditions:
- surface: z_plane
plane_position: 100.0
condition_type: surface_traction
component_x: 500
component_y: 0
component_z: 0
output_options:
timer_output_level: thorough
output_file_format: vtk
graphics_step: 0.25

- type: Heat_Conduction
# Dirichlet conditions
fea_module_parameters:
- type: SGH
material_id: 0
boundary_conditions:
- surface: z_plane
plane_position: 0.0
condition_type: fixed_temperature
temperature_value: 293.0

# Loading/Neumann Conditions
loading_conditions:
- surface: z_plane
plane_position: 100.0
condition_type: surface_heat_flux
#can be normal (q dot n) or coordinated (vector q) for curved surfaces
specification: normal
flux_value: -0.1

optimization_options:
optimization_process: topology_optimization
method_of_moving_asymptotes: false
density_epsilon: 0.00001
simp_penalty_power: 4
optimization_objective: multi_objective
#Weight coefficients should add up to 1
multi_objective_structure: linear
multi_objective_modules:
- type: minimize_thermal_resistance
weight_coefficient: 0.25
- type: minimize_compliance
weight_coefficient: 0.75

constraints:
- type: mass
relation: equality
value: 0.25
- type: moment_of_inertia
relation: equality
component: yy
value: 0.35
- type: moment_of_inertia
relation: equality
component: xy
value: 0.0
# Tag X plane
- surface:
type: x_plane
plane_position: 0.0
type: reflected

# Tag Y plane
- surface:
type: y_plane
plane_position: 0.0
type: reflected

# Tag Z plane
- surface:
type: z_plane
plane_position: 0.0
type: reflected

# Tag X plane
- surface:
type: x_plane
plane_position: 1.2
type: reflected

# Tag Y plane
- surface:
type: y_plane
plane_position: 1.2
type: reflected

# Tag Z plane
- surface:
type: z_plane
plane_position: 1.2
type: reflected

materials:
- id: 0
eos_model: ideal_gas
strength_model: none
elastic_modulus: 10
poisson_ratio: 0.3
q1: 1.0
q2: 0
q1ex: 1.0
q2ex: 0.0
global_vars:
- 1.666666666666667
- 1.0E-14
- 1.0

regions:
- volume:
type: global
material_id: 0
den: 1.0
sie: 1.e-10

velocity: cartesian
u: 0.0
v: 0.0
w: 0.0
# energy source initial conditions
- volume:
type: sphere
radius1: 0.0
radius2: 0.0375
material_id: 0
den: 1.0
ie: 0.25833839995946534

velocity: cartesian
u: 0.0
v: 0.0
w: 0.0
</code></pre>


Expand Down
5 changes: 3 additions & 2 deletions footer.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,10 @@ <h4>Useful Links</h4>
<div class="col-lg-4">
<div class="links">
<ul class="useful-links">
<li><a href="https://github.com/lanl/Fierro">Fierro</a></li> |
<li><a href="https://lanl.github.io/ELEMENTS/">Elements</a></li> |
<li><a href="https://lanl.github.io/MATAR/">Matar</a></li> |
<li><a href="https://trilinos.github.io/">Trilinos</a></li>
<li><a href="https://lanl.github.io/ELEMENTS/">Elements</a></li>
<li><a href="https://lanl.github.io/MATAR/">Matar</a></li>
</ul>
</div>
</div>
Expand Down
80 changes: 52 additions & 28 deletions gui-guide.html
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@
<link rel="stylesheet" type="text/css" href="assets/css/owl-carousel.css">

<link rel="stylesheet" href="assets/css/style.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/default.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script>
</head>

<body data-spy="scroll" data-target="#toc">
Expand All @@ -35,47 +38,68 @@
<div class="col-sm-9 text-content">
<h1>GUI Guide</h1>
<p>
The <em>Fierro</em> graphical interface is designed to give a simple interface for the most
common use cases. This guide describes the steps to use <em>Fierro</em> to simulate material dynamics from this GUI.
<em>Fierro</em> comes with two separate user interfaces for different workflows.
<li>The EVPFFT-GUI can be used to run the standalone EVPFFT program</li>
<li>The Fierro-GUI (Coming Soon) allows you to configure dynamic simulation or topology optimization problems.</li>
<b>Note:</b> if you are running any of the graphical user interfaces through WSL on windows, you may need to install and run an "X Server" on your Windows side to connect the WSL applications to the display. For testing, we use <a href="https://sourceforge.net/projects/vcxsrv/">VcXsrv</a>. Once the X server is running on Windows, you can connect your WSL terminal application to the display by setting the DISPLAY environment variable:
<pre><code>export DISPLAY=localhost:0.0</code></pre>
</p>
<h2>1. Generating a mesh</h2>
<h2>EVPFFT-GUI</h2>
<p>
A mesh is a (potentially non-uniform) spatial grid on which computation takes place. This is layer is connected with, but
distinct from the model geometry (which is also sometimes referred to as a "mesh"). Our GUI offers options for either creating
a generic, regular, rectilinear grid mesh if you don't have one, or for laoding a mesh (.geo file) if you do. For best results,
we recommend using an external meshing program to create a .geo mesh file for your specific geometry.
The EVPFTT-GUI is a Python based user interface that integrates with paraview to render initial conditions and results. The recommended way to
use the gui is through the anaconda package "evpfft_gui" available on our package repository. For more detailed installation instructions,
see <a href=installation.html>our installation guide</a>.
</p>
<h2>2. Selecting a Geometry</h2>
<p>
After selecting a mesh, you can load a model geometry (.stl) from your computer. The model geometry will define a volume
that can have a material assigned to it. After you select a geometry file, you will be prompted to specify a voxel resolution.
This is used for rasterizing the geometry into the underlying mesh.
Once the EVPFFT-GUI is installed, it can be launched by running the <code>evpfft-gui</code> command.
</p>
<h2>3. Assigning Material Properties</h2>
<h3>1. Importing a Part</h3>
<p>
Once you have a mesh and geometry loaded, you can then create and assign materials to regions of the mesh.
First, you create the materials that you might want to use and specify the material properties.
Then, on the next window you can assign those materials either to the background mesh or to the voxelized volume.
The first step to running EVPFFT is importing a part geometry for analysis. EVPFFT operates on a voxelized grid, however the EVPFFT-GUI requires a triangle mesh in a binary STL format and will do the necessary voxelization automatically. To import a part, click the "Import Part" button followed by the "Upload Geometry File" button and select the input STL file.
</p>
<h2>4. Specifying Boundary Conditions</h2>
<img src="/assets/images/EVPFFT-GUI-Import.png"/>
<h2>2. Voxelization</h2>
<p>
You should now see a window where your voxelized geometry is being rendered. You can now add boundary conditions
to the system and view all current boundaries in the geometry viewer.
After selecting your part, you should see the STL rendered in the right window. From here, you can voxelize it at the desired resolution. Be aware that your mesh might look like it is scaled differently along X, Y and Z after voxelization, however, this is just a visual artifact of the voxelization process.
</p>
<h2>5. Solver Settings</h2>
<p>
The last step before running <em>Fierro</em> is to check the solver settings. Here you can edit how long the solver should run
in simulated time, as well as control some of the bounds for timestepping.
</p>
<h2>6. Run &amp; View</h2>
<img src="/assets/images/EVPFFT-GUI-MonkeySTL.png"/>
<img src="/assets/images/EVPFFT-GUI-MonkeyVoxel.png"/>
<h2>3. Material Properties</h2>
<div style="display: flex;">
<p>
Once you have your geometry loaded, you can specify the relevant material properties in the "Define Material" tab. Currently we support specifying the Young's Modulus and Poisson's Ratio for the material. Currently the application supports one material applied to the whole geometry, but more advanced options will likely be available in the future.
</p>
<img src="assets/images/EVPFFT-GUI-DefineMaterial.png"/>
</div>

<h3>4. Boundary Conditions</h3>
<div style="display: flex;">
<p>
To complete your problem definition, you need to specify along which axes tension will be applied under the "Boundary Conditions" tab.
</p>
<img src="assets/images/EVPFFT-GUI-BoundaryConditions.png" />
</div>

<h3>5. Solver Settings (Optional)</h3>
<p>
Once you have your problem configured correctly, you can run <em>Fierro</em>. This will invoke the back-end programs, giving
you intermediate information about the progress.
Initially, it is recommended to ignore the solver settings. If you see that your results are not converging properly, then you may need to tweaking the options here.
</p>
<h3>6. Run and View Results</h3>
<h4>Running</h4>
<p>
Once the execution is finished, you are able to open the resulting evolution in <a href="https://www.paraview.org/">ParaView</a>
directly from the GUI.
Lastly, you can "Run EVPFFT" and view the results. While it is running, intermediate status output will be displayed in the lower panel along with the progress bar. Depending on your voxel resolution and hardware, this could take some time to finish.
</p>
<img src="assets/images/EVPFFT-GUI-RunEVPFFT.png" />
<h4>Results</h4>
<div style="display: flex;">
<p>
Once the process is complete, you can view some results the results directly in the EVPFFT-GUI, or open them in ParaView for more detailed analysis. Within this application, you can view the stress strain curves or examine a 3D render of your voxelized mesh with strain or stress color coding.
</p>
<img src="assets/images/EVPFFT-GUI-ResultsOptions.png" />
</div>
<img src="assets/images/EVPFFT-GUI-MonkeyResults.png" />
<h2>Fierro GUI</h2>
Coming soon...
</div>
</div>
</div>
Expand Down
25 changes: 21 additions & 4 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ <h3>Parallel Multiscale Multiphysics Computational Mechanics Software for Assess
<!-- *** Project Description ***-->
<div class="project-description">
<div class="container">
<div class="row">
<div class="row text-content">
<div class="col-lg-9">
<div class="left-content">
<h4>Project Description</h4>
Expand All @@ -114,14 +114,14 @@ <h4>Project Description</h4>
<p>
Fierro is built on the ELEMENTS library that supports a diverse suite of element types, including high-order elements, and quadrature rules. The mesh class within the ELEMENTS library is designed for efficient calculations on unstructured meshes and to minimize memory usage. Fierro is designed to readily accommodate a range of numerical methods including continuous finite element, finite volume, and discontinuous Galerkin methods. Fierro is designed to support explicit and implicit time integration methods as well as optimization methods.
<p>
<br/>
The linear Lagrangian finite element method for material dynamics in Fierro supports user developed material models and multiscale models for microstructure-aware simulations. These multiscale models can also be run in a stand-alone manner to establish structure-property relationships.
</p>
<p>
<br/>
Fierro uniquely offers several compact-stencil, arbitrary-order Lagrangian finite element method for more efficient simulations. These schemes use meshes that edges that can bend to accurately track large deformations in material dynamics.
</p>
<p>
<br/>
The implicit finite solver in Fierro is for simulating static or quasistatic thermal and mechanical applications. Higher-order optimization methods work in concert with the thermal-mechanical implicit solvers for multiphysics topology optimization that satisfies multiple constraints.
</p>
</div>
</div>
<div class="col-lg-3">
Expand All @@ -134,6 +134,23 @@ <h5>
<span><a href="https://github.com/lanl/Fierro">Fierro Github</a></span>
</div>
</div>


<h2>Applications</h2>
<p>The <em>Fierro</em> collection of software includes several separate tools for different physical simulations. Some of which have Graphical User Interfaces for ease of use.</p>
<h4>EVPFFT</h4>
<p>
Our Elasto-Viscoplastic FFT method predicts the micro-mechanical response and microstructure evolution of polycrystalline materials. This tool can be used
to simulate the bulk response of a polycrystalline material under desired loading conditions.
</p>
<h4>Implicit Physics Sovler</h4>
<p>
Our implicit physics solver can solve boundary value problems over a meshed geometry with provided boundary conditions (Neumann or Dirichlet).
</p>
<h4>Explicit Physics Sovler</h4>
<p>
Our explicit physics solver can simulate high resolution dynamic evolution on a mesh given a range of boundary conditions, external forces, and initial conditions.
</p>
</div>
</div>
</div>
Expand Down
Loading

0 comments on commit 4bfdda5

Please sign in to comment.