|
ASPECT
|

Classes | |
| struct | str_data_OES |
Static Public Member Functions | |
| static void | declare_parameters (ParameterHandler &prm) |
Static Public Member Functions inherited from aspect::Plugins::InterfaceBase | |
| static void | declare_parameters (ParameterHandler &prm) |
Static Public Member Functions inherited from aspect::SimulatorAccess< dim > | |
| static void | get_composition_values_at_q_point (const std::vector< std::vector< double >> &composition_values, const unsigned int q, std::vector< double > &composition_values_at_q_point) |
Private Member Functions | |
| void | read_data_OES () |
| double | compute_OES (double t) const |
| internal::SolveTimeStepResult | solve_time_step () const |
| double | compute_dT (const double r) const |
| double | compute_Tc (const double r) const |
| double | compute_Ts (const double r) const |
| double | compute_solidus (const double X, const double pressure) const |
| double | compute_initial_Ri (const double T) const |
| double | compute_X (const double r) const |
| double | compute_mass (const double r) const |
| double | fun_Sn (const double B, const double R, const unsigned int n) const |
| double | compute_rho (const double r) const |
| double | compute_T (const double Tc, const double r) const |
| double | compute_pressure (const double r) const |
| double | compute_gravity_potential (const double r) const |
| std::pair< double, double > | compute_specific_heating (const double Tc) const |
| std::pair< double, double > | compute_radio_heating (const double Tc) const |
| std::pair< double, double > | compute_gravity_heating (const double Tc, const double r, const double X) const |
| std::pair< double, double > | compute_adiabatic_heating (const double Tc) const |
| std::pair< double, double > | compute_latent_heating (const double Tc, const double r) const |
| double | compute_heat_solution (const double Tc, const double r, const double X) const |
| double | compute_radioheating_rate () const |
| void | update_core_data () |
Private Attributes | |
| internal::CoreData | core_data |
| double | inner_temperature |
| double | outer_temperature |
| types::boundary_id | inner_boundary_id |
| types::boundary_id | outer_boundary_id |
| double | init_dT_dt |
| double | init_dR_dt |
| double | init_dX_dt |
| bool | is_first_call |
| double | Rc |
| double | X_init |
| double | Delta |
| double | P_CMB |
| double | Tm0 |
| double | Tm1 |
| double | Tm2 |
| double | Theta |
| bool | composition_dependency |
| bool | use_bw11 |
| double | K0 |
| double | Alpha |
| double | Rho_0 |
| double | Rho_cen |
| double | Lh |
| double | Rh |
| double | Beta_c |
| double | k_c |
| double | Cp |
| unsigned int | n_radioheating_elements |
| std::vector< double > | heating_rate |
| std::vector< double > | half_life |
| std::vector< double > | initial_concentration |
| double | L |
| double | D |
| double | Mc |
| unsigned int | max_steps |
| double | dTa |
| std::string | name_OES |
| std::vector< struct str_data_OES > | data_OES |
A class that implements a temperature boundary condition for a spherical shell geometry in which the temperature at the outer surfaces are constant and the core-mantle boundaries (CMB) temperature is calculated by core energy balance. The formulation of the core energy balance is from [2] .
Definition at line 106 of file dynamic_core.h.
| aspect::BoundaryTemperature::DynamicCore< dim >::DynamicCore | ( | ) |
Constructor
|
overridevirtual |
This function update the core-mantle boundary (CMB) temperature by the core energy balance solver using the core-mantle boundary heat flux.
Reimplemented from aspect::Plugins::InterfaceBase.
| const internal::CoreData& aspect::BoundaryTemperature::DynamicCore< dim >::get_core_data | ( | ) | const |
Pass core data to other modules
| bool aspect::BoundaryTemperature::DynamicCore< dim >::is_OES_used | ( | ) | const |
Check if other energy source in the core is in use. The 'other energy source' is used for external core energy source. For example if someone want to test the early lunar core powered by precession (Dwyer, C. A., et al. (2011). "A long-lived lunar dynamo driven by continuous mechanical stirring." Nature 479(7372): 212-214.)
|
overridevirtual |
Return the temperature that is to hold at a particular location on the boundary of the domain. This function returns the temperatures at the inner and outer boundaries.
| boundary_indicator | The boundary indicator of the part of the boundary of the domain on which the point is located at which we are requesting the temperature. |
| location | The location of the point at which we ask for the temperature. |
Implements aspect::BoundaryTemperature::Interface< dim >.
|
overridevirtual |
Return the minimal temperature on that part of the boundary on which Dirichlet conditions are posed.
This value is used in computing dimensionless numbers such as the Nusselt number indicating heat flux.
Implements aspect::BoundaryTemperature::Interface< dim >.
|
overridevirtual |
Return the maximal temperature on that part of the boundary on which Dirichlet conditions are posed.
This value is used in computing dimensionless numbers such as the Nusselt number indicating heat flux.
Implements aspect::BoundaryTemperature::Interface< dim >.
|
static |
Declare the parameters this class takes through input files. This class declares the inner and outer boundary temperatures.
|
overridevirtual |
Read the parameters this class declares from the parameter file.
Reimplemented from aspect::Plugins::InterfaceBase.
|
private |
|
private |
|
private |
Solve core energy balance for each time step. When solving the change in core-mantle boundary temperature T, inner core radius R, and light element (e.g. S, O, Si) composition X, the following relations have to be respected:
The light component composition X depends on inner core radius (See function compute_X() ), and core solidus may dependent on X as well. This becomes a small nonlinear problem. Directly iterate through the above three equations doesn't converge well. Alternatively we solve the inner core radius using the bisection method.
At the conditions of the Earth's core, an inner core is forming at the center of the Earth and surrounded by a liquid outer core. However, the core solidus is influenced by light components (e.g. S) and its slope is very close to an adiabat. So there is an alternative scenario that the crystallization happens first at the core mantle boundary instead of at the center, which is called a 'snowing core' (Stewart, A. J., et al. (2007). "Mars: a new core-crystallization regime." Science 316(5829): 1323-1325.). This also provides a valid solution for the solver. The current code treats the normal core scenario and throws for the unsupported snowing core case.
|
private |
Compute the difference between solidus and adiabatic temperature at inner core boundary for a given inner core radius r.
|
private |
Use energy balance to calculate core mantle boundary temperature with a given inner core radius r.
|
private |
Get the solidus temperature at inner core boundary with a given inner core radius r.
|
private |
Compute the core solidus at a given light element concentration X (in wt.%) and pressure pressure.
|
private |
Get initial inner core radius with given initial core mantle temperature T.
|
private |
Get the light element concentration (in wt.%) in the outer core from given inner core radius r.
|
private |
Compute the core mass inside a certain radius r.
|
private |
Calculate Sn(B,R), referring to [2] .
|
private |
Calculate density at given radius r.
|
private |
Calculate the core temperature at given radius r and temperature at CMB Tc.
|
private |
Calculate pressure at given radius r
|
private |
Calculate the gravitational potential at given radius r
|
private |
Calculate energy (Qs) and entropy (Es) change rate factor (regarding the core cooling rated Tc/dt) for a given core-mantle boundary (CMB) temperature Tc
|
private |
Calculate energy (Qr) and entropy (Er) change rate factor (regarding the radioactive heating rate H) for a given CMB temperature Tc
|
private |
Calculate energy (Qg) and entropy (Eg) change rate factor (regarding the inner core growth rate dR/dt) for a given Tc (CMB temperature), r (inner core radius), and X (light element concentration)
|
private |
Calculate energy (Qk) and entropy (Ek) change rate factor (regarding the core cooling rate Tc/dt) for a given Tc (CMB temperature)
|
private |
Calculate energy (Ql) and entropy (El) change rate factor (regarding the inner core growth rate dR/dt) for a given Tc (CMB temperature) and r (inner core radius)
|
private |
Calculate entropy of heat of solution Eh for a given Tc (CMB temperature), r (inner core radius), and X (light element concentration)
|
private |
return radiogenic heating rate at the current time
|
private |
Update the data of the core dynamic simulation, the data will be used in the next timestep and for postprocessing.
|
private |
Data for core energy balance it get updated each time step.
Definition at line 190 of file dynamic_core.h.
|
private |
Temperature at the inner boundary.
Definition at line 195 of file dynamic_core.h.
|
private |
Temperatures at the outer boundaries.
Definition at line 200 of file dynamic_core.h.
|
private |
Boundary indicators of the spherical shell.
Definition at line 205 of file dynamic_core.h.
|
private |
Definition at line 206 of file dynamic_core.h.
|
private |
Initial CMB temperature changing rate
Definition at line 211 of file dynamic_core.h.
|
private |
Initial inner core radius changing rate
Definition at line 216 of file dynamic_core.h.
|
private |
Initial light composition changing rate
Definition at line 221 of file dynamic_core.h.
|
private |
Flag for determining the initial call for update().
Definition at line 226 of file dynamic_core.h.
|
private |
Core radius
Definition at line 231 of file dynamic_core.h.
|
private |
Initial light composition concentration
Definition at line 236 of file dynamic_core.h.
|
private |
Partition coefficient of the light element
Definition at line 241 of file dynamic_core.h.
|
private |
Pressure at the core mantle boundary
Definition at line 246 of file dynamic_core.h.
|
private |
Parameters for core solidus following: if not dependent on composition Tm(p)= Tm0*(1-Theta)*(1+Tm1*p+Tm2*p^2) if depend on composition X Tm(p)= Tm0*(1-Theta*X)*(1+Tm1*p+Tm2*p^2)
Definition at line 255 of file dynamic_core.h.
|
private |
Definition at line 256 of file dynamic_core.h.
|
private |
Definition at line 257 of file dynamic_core.h.
|
private |
Definition at line 258 of file dynamic_core.h.
|
private |
Definition at line 259 of file dynamic_core.h.
|
private |
If using the Fe-FeS system solidus from Buono & Walker (2011) instead.
Definition at line 264 of file dynamic_core.h.
|
private |
Compressibility at zero pressure
Definition at line 270 of file dynamic_core.h.
|
private |
Thermal expansivity
Definition at line 275 of file dynamic_core.h.
|
private |
Density at zero pressure
Definition at line 280 of file dynamic_core.h.
|
private |
Density at the center of the planet
Definition at line 285 of file dynamic_core.h.
|
private |
Latent heat of fusion
Definition at line 290 of file dynamic_core.h.
|
private |
Heat of reaction
Definition at line 295 of file dynamic_core.h.
|
private |
Compositional expansion coefficient
Definition at line 300 of file dynamic_core.h.
|
private |
Heat conductivity of the core
Definition at line 305 of file dynamic_core.h.
|
private |
Heat capacity
Definition at line 310 of file dynamic_core.h.
|
private |
Number of radioheating element in core
Definition at line 315 of file dynamic_core.h.
|
private |
Heating rates of different elements
Definition at line 320 of file dynamic_core.h.
|
private |
Half life of different elements
Definition at line 325 of file dynamic_core.h.
|
private |
Initial concentration of different elements
Definition at line 330 of file dynamic_core.h.
|
private |
Two length scales in [2] .
Definition at line 335 of file dynamic_core.h.
|
private |
Definition at line 336 of file dynamic_core.h.
|
private |
Mass of the core
Definition at line 341 of file dynamic_core.h.
|
private |
Max iterations for the core energy balance solver.
Definition at line 346 of file dynamic_core.h.
|
private |
Temperature correction value for adiabatic
Definition at line 351 of file dynamic_core.h.
|
private |
Other energy source into the core, e.g. the mechanical stirring of the moon.
Definition at line 356 of file dynamic_core.h.
|
private |
Definition at line 362 of file dynamic_core.h.