PRISMS-PF Manual
Loading...
Searching...
No Matches
nucleation_parameters.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: © 2026 PRISMS Center at the University of Michigan
2// SPDX-License-Identifier: GNU Lesser General Public Version 2.1
3
4#pragma once
5
6#include <deal.II/base/parameter_handler.h>
7
11
13
16
18
19#include <prismspf/config.h>
20
21#include <climits>
22#include <string>
23
25
30{
34 static void
35 declare(dealii::ParameterHandler &parameter_handler,
36 unsigned int n_subsections = Numbers::default_subsections);
37
41 void
42 assign(dealii::ParameterHandler &parameter_handler,
43 unsigned int n_subsections = Numbers::default_subsections) override;
44
48 void
49 validate(const std::vector<FieldAttributes> &field_attributes,
50 const std::vector<SolveBlock> &solve_blocks) const override;
51
55 [[nodiscard]] bool
56 should_attempt_nucleation(unsigned int increment) const;
57
64 template <unsigned int dim>
65 [[nodiscard]] bool
66 check_active(const Nucleus<dim> &nucleus, const SimulationTimer &time_info) const;
67
68 // The number of steps between nucleationting relevant information to screen
69 unsigned int nucleation_period = UINT_MAX;
70
71 // Whether a postprocess field is being used for nucleation
73
74 // The radius around a nucleus to exclude other nuclei
76
77 // The radius around a nucleus to exclude other nuclei in the same field
79
80 // The radius around a nucleus to refine the mesh
81 double refinement_radius = 0.0;
82
83 // Seeding time
84 double seeding_time = 0.0;
85
86 // Seeding increments
87 unsigned int seeding_increments = 1;
88};
89
90PRISMS_PF_END_NAMESPACE
Definition simulation_timer.h:13
static constexpr unsigned int default_subsections
Max number of subsections.
Definition types.h:33
Definition conditional_ostreams.cc:20
Struct that holds nucleation parameters.
Definition nucleation_parameters.h:30
void validate(const std::vector< FieldAttributes > &field_attributes, const std::vector< SolveBlock > &solve_blocks) const override
Validate.
Definition nucleation_parameters.cc:103
unsigned int nucleation_period
Definition nucleation_parameters.h:69
static void declare(dealii::ParameterHandler &parameter_handler, unsigned int n_subsections=Numbers::default_subsections)
Declare the parameters to be read from file.
Definition nucleation_parameters.cc:11
bool should_attempt_nucleation(unsigned int increment) const
Whether a given increment should attempt nucleation.
Definition nucleation_parameters.cc:110
unsigned int seeding_increments
Definition nucleation_parameters.h:87
void assign(dealii::ParameterHandler &parameter_handler, unsigned int n_subsections=Numbers::default_subsections) override
Assign the parameters from file.
Definition nucleation_parameters.cc:79
bool check_active(const Nucleus< dim > &nucleus, const SimulationTimer &time_info) const
Check if a nucleus is still active based on its seed time and increment. A nucleus is considered acti...
Definition nucleation_parameters.cc:117
double refinement_radius
Definition nucleation_parameters.h:81
double same_field_nucleus_exclusion_distance
Definition nucleation_parameters.h:78
double nucleus_exclusion_distance
Definition nucleation_parameters.h:75
bool pp_nucleation_rate_exists
Definition nucleation_parameters.h:72
double seeding_time
Definition nucleation_parameters.h:84
This class contains mutable utilities for phase field problems.
Definition nucleus.h:23
ParameterBase()=default