Skip to content

Commit ebc11ed

Browse files
authored
Merge pull request #72 from DataAnalyticsEngineering/FANS-v0.4.2
Release v0.4.2
2 parents a828736 + ded8873 commit ebc11ed

File tree

11 files changed

+1775
-2053
lines changed

11 files changed

+1775
-2053
lines changed

.github/workflows/build_and_test.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ jobs:
3333
uses: actions/checkout@v4
3434

3535
- name: Set up pixi
36-
uses: prefix-dev/[email protected].8
36+
uses: prefix-dev/[email protected].10
3737

3838
- name: Generate build directory
3939
run: mkdir -p ${{ env.FANS_BUILD_DIR }}

.github/workflows/build_and_test_mac.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ jobs:
3333
brew install fftw eigen
3434
3535
- name: Set up pixi
36-
uses: prefix-dev/[email protected].8
36+
uses: prefix-dev/[email protected].10
3737

3838
- name: Generate build directory
3939
run: mkdir -p ${{ env.FANS_BUILD_DIR }}

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# FANS Changelog
22

3+
## v0.4.2
4+
5+
- Reduce dependencies of dashboard for cf-package https://github.com/DataAnalyticsEngineering/FANS/pull/71
6+
- Add pixi task `h52xdmf` to generate XDMF from H5 files directly as `pixi run h52xdmf {h5filepath}`
7+
- Add logo of FANS to the README https://github.com/DataAnalyticsEngineering/FANS/pull/70
8+
39
## v0.4.1
410

511
- remove std::sqrt from constexpr - failed on Clang https://github.com/DataAnalyticsEngineering/FANS/pull/64

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ cmake_minimum_required(VERSION 3.21)
55
# ##############################################################################
66

77
project(FANS
8-
VERSION 0.4.1
8+
VERSION 0.4.2
99
LANGUAGES C CXX
1010
)
1111

FANS_Dashboard/pyproject.toml

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,15 @@ build-backend = "hatchling.build"
44

55
[project]
66
name = "fans-dashboard"
7-
version = "0.4.1"
8-
requires-python = ">=3.13"
7+
version = "0.4.2"
8+
requires-python = ">=3.9"
99
dependencies = [
10-
"numpy>=2.2.5,<3",
11-
"h5py>=3.13.0,<4",
12-
"plotly>=6.0.1,<7",
13-
"lxml>=5.4.0,<6",
14-
"nbformat>=5.10.4,<6",
15-
"matplotlib>=3.10.1,<4",
16-
"scipy>=1.15.2,<2",
17-
"meshio>=5.3.5,<6",
18-
"ipykernel>=6.29.5,<7",
19-
"nbclient>=0.10.2,<0.11",
10+
"numpy",
11+
"h5py",
12+
"plotly",
13+
"lxml",
14+
"scipy",
15+
"meshio",
2016
]
2117

2218
[tool.hatch.build.targets.wheel]

README.md

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
Fourier-Accelerated Nodal Solver (FANS) is an FFT-based homogenization solver for microscale multiphysics problems. FANS is written in C++, built using CMake, and it has MPI parallelization.
44

55
<p align="center">
6-
<img src="docs/images/FANS_example.png" alt="Example Image" width="400" height="300">
6+
<img src="docs/images/FANS_logo.png" alt="Example Image" width="300" height="300">
77
</p>
88

99
## Table of contents
@@ -17,7 +17,7 @@ Fourier-Accelerated Nodal Solver (FANS) is an FFT-based homogenization solver fo
1717

1818
FANS has the following dependencies:
1919

20-
- A C++ compiler (e.g. GCC, Clang, etc.)
20+
- A C++ compiler (e.g., GCC, Clang, etc.)
2121
- CMake (version 3.21 or higher)
2222
- Git (for cloning this repo)
2323
- MPI (mpicc and mpic++)
@@ -27,7 +27,7 @@ FANS has the following dependencies:
2727

2828
### Installing dependencies
2929

30-
- On Debian based systems, we recommend installing the dependencies using using `apt`,
30+
- On Debian-based systems, we recommend installing the dependencies using `apt`,
3131

3232
```bash
3333
apt-get install \
@@ -51,10 +51,10 @@ FANS has the following dependencies:
5151

5252
### Setting up a Python environment
5353

54-
Also, we recommend to set up a Python virtual environment for the [`FANS_Dashboard.ipynb`](FANS_Dashboard/FANS_Dashboard.ipynb) via [pixi](https://pixi.sh/) with all required Python dependencies in an isolated environment:
54+
Also, we recommend setting up a Python virtual environment for the [`FANS_Dashboard.ipynb`](FANS_Dashboard/FANS_Dashboard.ipynb) via [pixi](https://pixi.sh/) with all required Python dependencies in an isolated environment:
5555

5656
```bash
57-
# Install pixi if not done already
57+
# Install Pixi if not done already,
5858
curl -fsSL https://pixi.sh/install.sh | sh
5959

6060
# Create and activate the environment
@@ -79,7 +79,7 @@ Spack is a package manager designed for high-performance computing environments.
7979
spack install fftw +mpi
8080
```
8181

82-
Additionally, optimized FFTW implementations can be used depending on your system's architecture, for example `amdfftw` (For AMD systems) or `cray-fftw` (For Cray systems) or `fujitsu-fftw` (For Fujitsu systems).
82+
Additionally, optimized FFTW implementations can be used depending on your system's architecture, for example `amdfftw` (For AMD systems) or `cray-fftw` (For Cray systems), or `fujitsu-fftw` (For Fujitsu systems).
8383
8484
3. **Load Dependencies** Once dependencies are installed, load them before building:
8585
@@ -142,7 +142,7 @@ Install FANS (system-wide) using the following options:
142142
[![Anaconda-Server Badge](https://anaconda.org/conda-forge/fans/badges/platforms.svg)](https://anaconda.org/conda-forge/fans)
143143
[![Anaconda-Server Badge](https://anaconda.org/conda-forge/fans/badges/downloads.svg)](https://anaconda.org/conda-forge/fans)
144144
145-
FANS is also available as a conda-package on [conda-forge/fans](https://anaconda.org/conda-forge/fans). No dependencies have to be manually installed for it to work.
145+
FANS is also available as a conda package on [conda-forge/fans](https://anaconda.org/conda-forge/fans). No dependencies have to be manually installed for it to work.
146146
It can be installed via
147147
148148
```bash
@@ -153,7 +153,7 @@ exposing the executable `FANS`.
153153
154154
## Input File Format
155155
156-
FANS requires a JSON input file specifying the problem parameters. Example input files can be found in the [`test/input_files`](test/input_files) directory. It is recommended to use these files as a reference to create your own input file.
156+
FANS requires a JSON input file specifying the problem parameters. Example input files can be found in the [`test/input_files`](test/input_files) directory. It is recommended to use these files as a reference to create your input file.
157157
158158
### Microstructure Definition
159159
@@ -167,7 +167,7 @@ FANS requires a JSON input file specifying the problem parameters. Example input
167167
168168
- `filepath`: This specifies the path to the HDF5 file that contains the microstructure data.
169169
- `datasetname`: This is the path within the HDF5 file to the specific dataset that represents the microstructure.
170-
- `L`: Microstructure length defines the physical dimensions of the microstructure in the x, y, and z directions.
170+
- `L`: Microstructure length defines the physical dimensions of the microstructure in the $x$, $y$, and $z$ directions.
171171
172172
### Problem Type and Material Model
173173
@@ -189,7 +189,7 @@ FANS requires a JSON input file specifying the problem parameters. Example input
189189
- `LinearElasticIsotropic` for linear isotropic elastic material model
190190
- `LinearElasticTriclinic` for linear triclinic elastic material model
191191
- `PseudoPlasticLinearHardening` / `PseudoPlasticNonLinearHardening` for plasticity mimicking model with linear/nonlinear hardening
192-
- `J2ViscoPlastic_LinearIsotropicHardening` / `J2ViscoPlastic_NonLinearIsotropicHardening` for rate independent / dependent J2 plasticity model with kinematic and linear/nonlinear isotropic hardening.
192+
- `J2ViscoPlastic_LinearIsotropicHardening` / `J2ViscoPlastic_NonLinearIsotropicHardening` for rate-independent / dependent J2 plasticity model with kinematic and linear/nonlinear isotropic hardening.
193193
194194
- `material_properties`: This provides the necessary material parameters for the chosen material model. For thermal problems, you might specify `conductivity`, while mechanical problems might require `bulk_modulus`, `shear_modulus`, and more properties for advanced material models. These properties can be defined as arrays to represent multiple phases within the microstructure.
195195
@@ -206,7 +206,7 @@ FANS requires a JSON input file specifying the problem parameters. Example input
206206
```
207207
208208
- `method`: This indicates the numerical method to be used for solving the system of equations. `cg` stands for the Conjugate Gradient method, and `fp` stands for the Fixed Point method.
209-
- `error_parameters`: This section defines the error parameters for the solver. Error control is applied on the finite element nodal residual of the problem.
209+
- `error_parameters`: This section defines the error parameters for the solver. Error control is applied to the finite element nodal residual of the problem.
210210
- `measure`: Specifies the norm used to measure the error. Options include `Linfinity`, `L1`, or `L2`.
211211
- `type`: Defines the type of error measurement. Options are `absolute` or `relative`.
212212
- `tolerance`: Sets the tolerance level for the solver, defining the convergence criterion based on the chosen error measure. The solver iterates until the solution meets this tolerance.
@@ -235,7 +235,7 @@ FANS requires a JSON input file specifying the problem parameters. Example input
235235
- For `thermal` problems, the array typically has 3 components, representing the temperature gradients in the $x$, $y$, and $z$ directions.
236236
- For `mechanical` problems, the array must have 6 components, corresponding to the components of the strain tensor in Mandel notation (e.g., $[\varepsilon_{11}, \varepsilon_{22}, \varepsilon_{33}, \sqrt{2}\varepsilon_{12}, \sqrt{2}\varepsilon_{13}, \sqrt{2}\varepsilon_{23}]$).
237237
238-
In the case of path/time-dependent loading as shown, for example as in plasticity problems, the `macroscale_loading` array can include multiple steps with corresponding loading conditions.
238+
In the case of path/time-dependent loading, as shown, for example, in plasticity problems, the `macroscale_loading` array can include multiple steps with corresponding loading conditions.
239239
240240
FANS also supports mixed boundary conditions, where some components can be strain-controlled while others are stress-controlled:
241241
@@ -257,26 +257,26 @@ FANS also supports mixed boundary conditions, where some components can be strai
257257
"microstructure", "displacement", "displacement_fluctuation", "stress", "strain"]
258258
```
259259
260-
- `results`: This array lists the quantities that should be stored into the results HDF5 file during the simulation. Each string in the array corresponds to a specific result:
260+
- `results`: This array lists the quantities that should be stored in the results HDF5 file during the simulation. Each string in the array corresponds to a specific result:
261261
262262
- `stress_average` and `strain_average`: Volume averaged- homogenized stress and strain over the entire microstructure.
263-
- `absolute_error`: The L-infinity error of finite element nodal residual at each iteration.
263+
- `absolute_error`: The L-infinity error of the finite element nodal residual at each iteration.
264264
- `phase_stress_average` and `phase_strain_average`: Volume averaged- homogenized stress and strain for each phase within the microstructure.
265265
- `microstructure`: The original microstructure data.
266266
- `displacement`: The displacement field (for mechanical problems) and temperature field (for thermal problems) at each voxel in the microstructure.
267267
- `displacement_fluctuation`: The periodic displacement fluctuation field (for mechanical problems) and periodic temperature fluctuation field (for thermal problems at each voxel in the microstructure).
268268
- `stress` and `strain`: The stress and strain fields at each voxel in the microstructure.
269269
270-
- Additional material model specific results can be included depending on the problem type and material model.
270+
- Additional material model-specific results can be included depending on the problem type and material model.
271271
272272
## Acknowledgements
273273
274-
Funded by Deutsche Forschungsgemeinschaft (DFG, German Research Foundation) under Germany’s Excellence Strategy - EXC 2075 – 390740016. Contributions by Felix Fritzen are funded by Deutsche Forschungsgemeinschaft (DFG, German Research Foundation) within the Heisenberg program - DFG-FR2702/8 - 406068690; DFG-FR2702/10 - 517847245 and through NFDI-MatWerk - NFDI 38/1 - 460247524. We acknowledge the support by the Stuttgart Center for Simulation Science ([SimTech](https://www.simtech.uni-stuttgart.de/)).
274+
Funded by Deutsche Forschungsgemeinschaft (DFG, German Research Foundation) under Germany’s Excellence Strategy - EXC 2075 – 390740016. Contributions by Felix Fritzen are funded by Deutsche Forschungsgemeinschaft (DFG, German Research Foundation) within the Heisenberg program - DFG-FR2702/8 - 406068690; DFG-FR2702/10 - 517847245 and through NFDI-MatWerk - NFDI 38/1 - 460247524. We acknowledge the support of the Stuttgart Center for Simulation Science ([SimTech](https://www.simtech.uni-stuttgart.de/)).
275275
276276
## Contributors
277277
278278
- [Sanath Keshav](https://github.com/sanathkeshav)
279-
- [Florian Rieg](about:blank)
279+
- [Florian Rieg](https://github.com/scylent)
280280
- [Ishaan Desai](https://github.com/IshaanDesai)
281281
- [Moritz Sigg](https://github.com/siggmo)
282282
- [Claudius Haag](https://github.com/claudiushaag)

docs/images/FANS_example.png

-626 KB
Binary file not shown.

docs/images/FANS_logo.png

1.02 MB
Loading

0 commit comments

Comments
 (0)