prisms-center/phaseField: v3.0.0-rc1
Creators
- 1. Oak Ridge National Laboratory (@ORNL)
- 2. University of Wisconsin
- 3. University of Michigan
- 4. NIST (@usnistgov)
Description
What's Changed
A lot has changed since the last release. In 3.0.0, we've decided to rewrite the whole library to accommodate certain features and reduce technical debt, increasing the longevity of our project. Due to this task being rather large, we've decided to release what we have for users. Certain features such as grain remapping and nucleation haven't been implemented. Additionally, the user-interface and documentation haven't been finalized or updated, so new users may struggle.
Don't worry though! We are still working on porting the other capabilities (and more!) from v2.4. These will come out in more pre-release candidates in the coming weeks. Also, during this time feel free to make issues on features or design choices you might find helpful as a user!
New Features
- Solution solve blocks. Fields can now be solved in any order with the
set_solve_block(unsigned int field_index, unsigned int solve_block)inCustomAttributeLoader. This is demonstrated intests/automatic_tests/solution_blocksandtests/automatic_tests/cavity_flow. - Access to the old time states of fields. You can now access previous field values for implicit or higher order time schemes. This is demonstrated in
tests/automatic_tests/allen_cahn_implicitamong many other ones. - Geometric multigrid preconditioning. You can now select GMG as a preconditioner for linear solves. Depending on the PDE, this significantly speeds up the solver. This is demonstrated in
applications/precipitate_evolution. VariableContainerhas been significantly optimized. Across the board, simulations should become faster now.- Access to different triangulation in the parameters file. You can now switch between different triangulations in the parameter file, rather the override a function. For now, rectangular and spherical meshes are the only ones supported, but more are planned to be added in another release candidate.
ADDITIONAL_OPTIMIZATIONScmake flag. For fields with the same constraints and finite element system, thedealii::AffineConstraintsanddealii::DoFHandlersare the same. With this flag, these additional objects are not initialized during our init and reinit steps. For adaptive mesh refinement (AMR), this leads to large performance increases and lower overhead.- The entire library has been rebuilt with compartmentalization in mind. This should make it easier to interface with other projects or access simulation data during runtime.
- deal.II 9.7.0 is now supported and the minimum deal.II version has been upped to 9.6.0.
constVhas been removed as deal.II supports all operator conversions from adoubleorfloattype to adealii::VectorizedArray.- Vector fields are now allowed for postprocessed fields.
- Several implicit Cahn-Hilliard applications are now in
tests/automatic_tests - A fracture application is now in
tests/automatics_tests - A incompressible Navier-Stokes cavity flow application is now in
tests/automatic_tests - Caliper is supported as an optional dependency for better profiling.
- Simulations now support float precision.
- Simulations now support 1D
- The main library now compiles with reduced template instantiations (only up to second order elements). Please use the cmake flag
ADDITIONAL_DEGREESto configure with up to 6th order elements. - Adaptive meshing support vector fields. Note that the criterion are the same as scalar fields. We take the magnitude of the vector field for value-based criteria.
- Postprocessed fields are now longer built on top of the main fields. Thus, it is no longer necessary to have at least one explicit field to have postprocessing.
- A
summary.logfile is now generated by every simulation run. This contains more information about the simulation parameters and internal classifications that PRISMS-PF does. This is extremely helpful for debugging. - Implicit time-dependent fields have been added. Please see the feature notes about our implicit applications.
- Constant fields have been added. These are evaluated during the initial condition and never updated after. For time-invariant field use these to get the best performance.
- A single point on the mesh can now be pinned for fields to arbitrary values. Note that this may lead to undefined behavior if you don't place the point on a node (e.g., the middle of the mesh and changing the refinement) or in the case of AMR (i.e., you're point might get coarsening away).
VariableContainerhas more getters. You can now call to get the divergence, curl, symmetric gradient, and laplacian of the field. Note that some of these don't apply for scalar fields or 1D simulations. Run your application in debug mode to check. Most of these are demonstrated intests/automatic_tests/cavity_flow
Files
prisms-center/phaseField-v3.0.0-rc1.zip
Files
(1.0 MB)
| Name | Size | Download all |
|---|---|---|
|
md5:655b190340ba81662db8f020abf6a6ff
|
1.0 MB | Preview Download |
Additional details
Related works
- Is supplement to
- Software: https://github.com/prisms-center/phaseField/tree/v3.0.0-rc1 (URL)
Software
- Repository URL
- https://github.com/prisms-center/phaseField