include/meltpooldg/core/material.templates.hpp Source File

Developer Documentation: include/meltpooldg/core/material.templates.hpp Source File
Developer Documentation
material.templates.hpp
Go to the documentation of this file.
1#pragma once
2
4//
5#include <deal.II/base/exceptions.h>
6
10
11#include <cmath>
12#include <limits>
13
14
15namespace MeltPoolDG
16{
17 /*----------------- Inline and template methods -----------------*/
18
19
20 namespace MaterialUpdateFlags
21 {
24 {
25 return static_cast<MaterialUpdateFlags>(static_cast<unsigned int>(f1) |
26 static_cast<unsigned int>(f2));
27 }
28
29
30
31 inline MaterialUpdateFlags &
33 {
34 f1 = f1 | f2;
35 return f1;
36 }
37
38
39
42 {
43 return static_cast<MaterialUpdateFlags>(static_cast<unsigned int>(f1) &
44 static_cast<unsigned int>(f2));
45 }
46
47
48
49 inline MaterialUpdateFlags &
51 {
52 f1 = f1 & f2;
53 return f1;
54 }
55
56 } // namespace MaterialUpdateFlags
57
58
59
60 template <typename number>
61 template <typename value_type>
62 inline MaterialParameterValues<value_type, number>
64 {
65 Assert(
66 material_type == MaterialTypes::gas or material_type == MaterialTypes::liquid,
67 dealii::ExcMessage(
68 "This compute_parameters() implementation should not be called for the current material type! Abort..."));
69
70 return compute_parameters_internal(value_type(0.0), value_type(0.0), flags);
71 }
72
73
74
75 template <typename number>
76 template <typename value_type>
80 {
81 Assert(
82 material_type != MaterialTypes::gas_liquid_solid and
84 dealii::ExcMessage(
85 "This compute_parameters() implementation should not be called for the current material type! Abort..."));
86
87 return compute_parameters_internal(v, value_type(0.0), flags);
88 }
89
90
91
92 template <typename number>
93 template <typename value_type>
95 Material<number>::compute_parameters(const value_type &level_set_heaviside,
96 const value_type &temperature,
98 {
99 return compute_parameters_internal(level_set_heaviside, temperature, flags);
100 }
101
102
103
104 template <typename number>
105 template <typename value_type, int dim>
108 const FECellIntegrator<dim, 1, number> &level_set_heaviside_val,
109 const FECellIntegrator<dim, 1, number> &temperature_val,
111 const unsigned int q_index) const
112 {
113 switch (material_type)
114 {
117 return compute_parameters_internal(level_set_heaviside_val.get_value(q_index),
118 temperature_val.get_value(q_index),
119 flags);
122 return compute_parameters_internal(level_set_heaviside_val.get_value(q_index),
123 value_type(0.0),
124 flags);
126 return compute_parameters_internal(temperature_val.get_value(q_index),
127 value_type(0.0),
128 flags);
131 return compute_parameters_internal(value_type(0.0), value_type(0.0), flags);
132 default:
133 Assert(false, dealii::ExcNotImplemented());
135 }
136 }
137
138
139
140 template <typename number>
141 template <typename value_type, int dim>
144 const FECellIntegrator<dim, 1, number> &level_set_heaviside_val,
145 const std::vector<FECellIntegrator<dim, 1, number>> &temperature_val,
147 const unsigned int q_index) const
148 {
149 Assert(temperature_val.size() <= 2, dealii::ExcInternalError());
150
151 const auto get_temperature_value = [&]() {
152 if (temperature_val.size() == 1) // default case
153 return temperature_val[0].get_value(q_index);
154 else if (temperature_val.size() == 2) // two phase cut intersected cell case
155 // For two phase intersected cut cells, temperature_val[0] contains the temperature values
156 // of the liquid domain and temperature_val[1] the temperature values of the gas domain that
157 // each may be ghost values. We use the level set as heaviside as in indicator to select the
158 // non-ghosted values each.
159 return dealii::compare_and_apply_mask<dealii::SIMDComparison::greater_than_or_equal>(
160 level_set_heaviside_val.get_value(q_index),
161 0.5,
162 temperature_val[0].get_value(q_index),
163 temperature_val[1].get_value(q_index));
164 else // temperature_val.empty()
165 // An empty temperature_val vector indicates that the cut case is one phase and the
166 // current cell is fully in the gas domain - which doesn't have any temperature
167 // information. We use the value that is just above the liquidus temperature so that
168 // solid faction is reliably zero in that domain.
169 return value_type(
170 std::nextafter(data.liquidus_temperature, std::numeric_limits<number>::infinity()));
171 };
172
173 switch (material_type)
174 {
177 return compute_parameters_internal(level_set_heaviside_val.get_value(q_index),
178 get_temperature_value(),
179 flags);
182 return compute_parameters_internal(level_set_heaviside_val.get_value(q_index),
183 value_type(0.0),
184 flags);
186 return compute_parameters_internal(get_temperature_value(), value_type(0.0), flags);
189 return compute_parameters_internal(value_type(0.0), value_type(0.0), flags);
190 default:
191 Assert(false, dealii::ExcNotImplemented());
193 }
194 }
195
196
197
198 template <typename number>
199 inline bool
201 {
202 switch (field_type)
203 {
204 case FieldType::none:
205 return material_type == MaterialTypes::gas or material_type == MaterialTypes::liquid;
206 case FieldType::temperature:
207 return material_type == MaterialTypes::liquid_solid or
208 material_type == MaterialTypes::gas_liquid_solid or
210 case FieldType::level_set:
211 return material_type == MaterialTypes::gas_liquid or
213 material_type == MaterialTypes::gas_liquid_solid or
215 default:
216 AssertThrow(false, dealii::ExcNotImplemented());
217 return false;
218 }
219 }
220
221
222
223 template <typename number>
224 template <typename value_type>
227 const value_type &v1,
228 const value_type &v2,
230 {
232 switch (material_type)
233 {
234 case MaterialTypes::gas: {
235 return gas;
236 }
238 return liquid;
239 }
244
245 const auto &level_set_heaviside = v1;
246
249 compute_two_phase_fluid_property<value_type>(level_set_heaviside,
252
255 compute_two_phase_fluid_property<value_type>(level_set_heaviside,
259 {
261 t.density =
262 compute_two_phase_fluid_density_consistent_with_evaporation<value_type>(
263 level_set_heaviside, g.density, l.density);
264 else
265 t.density = compute_two_phase_fluid_property<value_type>(level_set_heaviside,
266 g.density,
267 l.density);
268 }
271 compute_two_phase_fluid_property<value_type>(level_set_heaviside,
275 {
276 AssertThrow(
277 apparent_capacity == nullptr,
278 dealii::ExcMessage(
279 "The apparent capacity type "
280 " \"apparent_capacity\" is currently not implemented for the volume specific "
281 " heat capacity! Abort..."));
283 compute_two_phase_fluid_property<value_type>(level_set_heaviside,
286 }
287 // note: For the gas-liquid phase case, the derivatives with respect to temperature
288 // are zero.
290 {
291 t.gas_fraction = value_type(1.) - level_set_heaviside;
292 t.liquid_fraction = level_set_heaviside;
293 }
294 break;
295 }
299
300 const auto &temperature = v1;
301 const auto temperature_dependent_solid_fraction =
302 compute_temperature_dependent_solid_fraction(temperature);
303
305 t.thermal_conductivity = compute_solid_liquid_phases_property<value_type>(
306 temperature_dependent_solid_fraction,
311 compute_solid_liquid_phases_specific_heat_capacity<value_type>(
312 temperature_dependent_solid_fraction,
316 t.density = compute_solid_liquid_phases_property<value_type>(
317 temperature_dependent_solid_fraction, l.density, s.density);
319 t.dynamic_viscosity = compute_solid_liquid_phases_property<value_type>(
320 temperature_dependent_solid_fraction, l.dynamic_viscosity, s.dynamic_viscosity);
322 {
323 AssertThrow(
324 apparent_capacity == nullptr,
325 dealii::ExcMessage(
326 "The apparent capacity type "
327 " \"apparent_capacity\" is currently not implemented for the volume specific "
328 " heat capacity! Abort..."));
329 t.volume_specific_heat_capacity = compute_solid_liquid_phases_property<value_type>(
330 temperature_dependent_solid_fraction,
333 }
336 compute_temperature_derivative_of_solid_liquid_phases_property<value_type>(
337 temperature_dependent_solid_fraction,
342 compute_temperature_derivative_of_solid_liquid_specific_heat_capacity<value_type>(
343 temperature_dependent_solid_fraction,
347 t.d_density_d_T =
348 compute_temperature_derivative_of_solid_liquid_phases_property<value_type>(
349 temperature_dependent_solid_fraction, l.density, s.density);
351 {
352 AssertThrow(
353 apparent_capacity == nullptr,
354 dealii::ExcMessage(
355 "The apparent capacity type "
356 " \"apparent_capacity\" is currently not implemented for the volume specific "
357 " heat capacity! Abort..."));
359 compute_temperature_derivative_of_solid_liquid_phases_property<value_type>(
360 temperature_dependent_solid_fraction,
363 }
365 {
366 const auto hs =
367 LevelSet::Tools::interpolate_cubic(temperature_dependent_solid_fraction,
368 value_type(0),
369 value_type(1));
370 t.liquid_fraction = value_type(1.) - hs;
371 t.solid_fraction = hs;
372 // @note gas_fraction = 0
373 }
374 break;
375 }
381
382 const auto &level_set_heaviside = v1;
383 const auto &temperature = v2;
384 const auto temperature_dependent_solid_fraction =
385 compute_temperature_dependent_solid_fraction(temperature);
386
388 t.thermal_conductivity = compute_solid_liquid_gas_phases_property<value_type>(
389 level_set_heaviside,
390 temperature_dependent_solid_fraction,
396 compute_solid_liquid_gas_phases_specific_heat_capacity<value_type>(
397 level_set_heaviside,
398 temperature_dependent_solid_fraction,
403 {
405 t.density =
406 compute_solid_liquid_gas_phases_density_consistent_with_evaporation<value_type>(
407 level_set_heaviside,
408 temperature_dependent_solid_fraction,
409 g.density,
410 l.density,
411 s.density);
412 else
413 t.density = compute_solid_liquid_gas_phases_property<value_type>(
414 level_set_heaviside,
415 temperature_dependent_solid_fraction,
416 g.density,
417 l.density,
418 s.density);
419 }
421 t.dynamic_viscosity = compute_solid_liquid_gas_phases_property<value_type>(
422 level_set_heaviside,
423 temperature_dependent_solid_fraction,
428 {
429 AssertThrow(
430 apparent_capacity == nullptr,
431 dealii::ExcMessage(
432 "The apparent capacity type "
433 " \"apparent_capacity\" is currently not implemented for the volume specific "
434 " heat capacity! Abort..."));
436 compute_solid_liquid_gas_phases_property<value_type>(
437 level_set_heaviside,
438 temperature_dependent_solid_fraction,
442 }
445 compute_temperature_derivative_of_solid_liquid_gas_property<value_type>(
446 level_set_heaviside,
447 temperature_dependent_solid_fraction,
452 compute_temperature_derivative_of_solid_liquid_gas_specific_heat_capacity<
453 value_type>(level_set_heaviside,
454 temperature_dependent_solid_fraction,
458 {
460 t.d_density_d_T =
461 compute_temperature_derivative_of_solid_liquid_gas_density_consistent_with_evaporation<
462 value_type>(level_set_heaviside,
463 temperature_dependent_solid_fraction,
464 g.density,
465 l.density,
466 s.density);
467 else
468 t.d_density_d_T =
469 compute_temperature_derivative_of_solid_liquid_gas_property<value_type>(
470 level_set_heaviside,
471 temperature_dependent_solid_fraction,
472 l.density,
473 s.density);
474 }
476 {
477 AssertThrow(
478 apparent_capacity == nullptr,
479 dealii::ExcMessage(
480 "The apparent capacity type "
481 " \"apparent_capacity\" is currently not implemented for the volume specific "
482 " heat capacity! Abort..."));
484 compute_temperature_derivative_of_solid_liquid_gas_property<value_type>(
485 level_set_heaviside,
486 temperature_dependent_solid_fraction,
489 }
491 {
492 t.gas_fraction = value_type(1.) - level_set_heaviside;
493 const auto liquid_solid_heaviside =
494 LevelSet::Tools::interpolate_cubic(temperature_dependent_solid_fraction,
495 value_type(0),
496 value_type(1));
497 t.liquid_fraction = (1. - liquid_solid_heaviside) * level_set_heaviside;
498 t.solid_fraction = liquid_solid_heaviside * level_set_heaviside;
499 }
500 break;
501 }
502 default: {
503 Assert(false, dealii::ExcNotImplemented());
504 }
505 }
506
507 return t;
508 }
509
510
511
512 template <typename number>
513 template <typename value_type>
514 inline value_type
515 Material<number>::compute_two_phase_fluid_property(const value_type &level_set_heaviside,
516 const value_type &gas_value,
517 const value_type &liquid_solid_value) const
518 {
519 const value_type weight = data.two_phase_fluid_properties_transition_type !=
520 TwoPhaseFluidPropertiesTransitionType::sharp ?
521 level_set_heaviside :
522 CharacteristicFunctions::heaviside(level_set_heaviside, 0.5);
523 return LevelSet::Tools::interpolate(weight, gas_value, liquid_solid_value);
524 }
525
526
527
528 template <typename number>
529 template <typename value_type>
530 inline value_type
532 const value_type &level_set_heaviside,
533 const value_type &gas_density,
534 const value_type &liquid_solid_density) const
535 {
536 return LevelSet::Tools::interpolate_reciprocal(level_set_heaviside,
537 gas_density,
538 liquid_solid_density);
539 }
540
541
542
543 template <typename number>
544 template <typename value_type>
545 inline value_type
547 const value_type &temperature_dependent_solid_fraction,
548 const value_type &liquid_value,
549 const value_type &solid_value) const
550 {
551 if (temperature_dependent_solid_fraction == value_type(0.0))
552 return liquid_value;
553 if (temperature_dependent_solid_fraction == value_type(1.0))
554 return solid_value;
555 return LevelSet::Tools::interpolate_cubic(temperature_dependent_solid_fraction,
556 liquid_value,
557 solid_value);
558 }
559
560
561
562 template <typename number>
563 template <typename value_type>
564 inline value_type
566 const value_type &temperature_dependent_solid_fraction,
567 const value_type &liquid_value,
568 const value_type &solid_value) const
569 {
570 auto value = compute_solid_liquid_phases_property(temperature_dependent_solid_fraction,
571 liquid_value,
572 solid_value);
573
574 if (apparent_capacity)
575 value += apparent_capacity->evaluate(temperature_dependent_solid_fraction);
576
577 return value;
578 }
579
580
581
582 template <typename number>
583 template <typename value_type>
584 inline value_type
586 const value_type &temperature_dependent_solid_fraction,
587 const value_type &liquid_value,
588 const value_type &solid_value) const
589 {
590 if (temperature_dependent_solid_fraction == value_type(0.0) or
591 temperature_dependent_solid_fraction == value_type(1.0))
592 return value_type(0.0);
593 return -1.0 * inv_mushy_interval *
594 LevelSet::Tools::interpolate_cubic_derivative(temperature_dependent_solid_fraction,
595 liquid_value,
596 solid_value);
597 }
598
599
600
601 template <typename number>
602 template <typename value_type>
603 inline value_type
605 const value_type &temperature_dependent_solid_fraction,
606 const value_type &liquid_value,
607 const value_type &solid_value) const
608 {
609 auto value = compute_temperature_derivative_of_solid_liquid_phases_property(
610 temperature_dependent_solid_fraction, liquid_value, solid_value);
611
612 if (apparent_capacity)
613 value +=
614 apparent_capacity->compute_temperature_derivative(temperature_dependent_solid_fraction);
615
616 return value;
617 }
618
619
620
621 template <typename number>
622 template <typename value_type>
623 inline value_type
625 const value_type &level_set_heaviside,
626 const value_type &temperature_dependent_solid_fraction,
627 const value_type &gas_value,
628 const value_type &liquid_value,
629 const value_type &solid_value) const
630 {
631 const auto liquid_solid_value =
632 compute_solid_liquid_phases_property(temperature_dependent_solid_fraction,
633 liquid_value,
634 solid_value);
635 return compute_two_phase_fluid_property(level_set_heaviside, gas_value, liquid_solid_value);
636 }
637
638
639
640 template <typename number>
641 template <typename value_type>
642 inline value_type
644 const value_type &level_set_heaviside,
645 const value_type &temperature_dependent_solid_fraction,
646 const value_type &gas_value,
647 const value_type &liquid_value,
648 const value_type &solid_value) const
649 {
650 const auto liquid_solid_value =
651 compute_solid_liquid_phases_specific_heat_capacity(temperature_dependent_solid_fraction,
652 liquid_value,
653 solid_value);
654
655 return compute_two_phase_fluid_property(level_set_heaviside, gas_value, liquid_solid_value);
656 }
657
658
659
660 template <typename number>
661 template <typename value_type>
662 inline value_type
664 const value_type &level_set_heaviside,
665 const value_type &temperature_dependent_solid_fraction,
666 const value_type &gas_value,
667 const value_type &liquid_value,
668 const value_type &solid_value) const
669 {
670 const auto liquid_solid_value =
671 compute_solid_liquid_phases_property(temperature_dependent_solid_fraction,
672 liquid_value,
673 solid_value);
674 return compute_two_phase_fluid_density_consistent_with_evaporation(level_set_heaviside,
675 gas_value,
676 liquid_solid_value);
677 }
678
679
680
681 template <typename number>
682 template <typename value_type>
683 inline value_type
685 const value_type &level_set_heaviside,
686 const value_type &temperature_dependent_solid_fraction,
687 const value_type &liquid_value,
688 const value_type &solid_value) const
689 {
690 const auto temp = compute_temperature_derivative_of_solid_liquid_phases_property(
691 temperature_dependent_solid_fraction, liquid_value, solid_value);
692 const auto weight = data.two_phase_fluid_properties_transition_type !=
693 TwoPhaseFluidPropertiesTransitionType::sharp ?
694 level_set_heaviside :
695 CharacteristicFunctions::heaviside(level_set_heaviside, 0.5);
696 return temp * weight;
697 }
698
699
700
701 template <typename number>
702 template <typename value_type>
703 inline value_type
705 const value_type &level_set_heaviside,
706 const value_type &temperature_dependent_solid_fraction,
707 const value_type &liquid_value,
708 const value_type &solid_value) const
709 {
710 const auto temp = compute_temperature_derivative_of_solid_liquid_specific_heat_capacity(
711 temperature_dependent_solid_fraction, liquid_value, solid_value);
712 const auto weight = data.two_phase_fluid_properties_transition_type !=
713 TwoPhaseFluidPropertiesTransitionType::sharp ?
714 level_set_heaviside :
715 CharacteristicFunctions::heaviside(level_set_heaviside, 0.5);
716 return temp * weight;
717 }
718
719
720
721 template <typename number>
722 template <typename value_type>
723 inline value_type
726 const value_type &level_set_heaviside,
727 const value_type &temperature_dependent_solid_fraction,
728 const value_type &gas_value,
729 const value_type &liquid_value,
730 const value_type &solid_value) const
731 {
732 const auto liquid_solid_value =
733 compute_solid_liquid_phases_property(temperature_dependent_solid_fraction,
734 liquid_value,
735 solid_value);
736 const auto liquid_solid_derivative =
737 compute_temperature_derivative_of_solid_liquid_phases_property(
738 temperature_dependent_solid_fraction, liquid_value, solid_value);
739 const auto temp =
740 liquid_solid_value * (1. + level_set_heaviside * (gas_value / liquid_solid_value - 1.));
741 return level_set_heaviside * gas_value * gas_value * liquid_solid_derivative / (temp * temp);
742 }
743
744
745
746 template <typename number>
747 inline number
749 {
750 if (data.solid_liquid_properties_transition_type ==
751 SolidLiquidPropertiesTransitionType::mushy_zone)
753 (data.liquidus_temperature - temperature) * inv_mushy_interval, 0.0, 1.0);
754 else if (data.solid_liquid_properties_transition_type ==
755 SolidLiquidPropertiesTransitionType::sharp)
756 return temperature < data.solidus_temperature ? 1.0 : 0.0;
757 Assert(false, dealii::ExcNotImplemented());
758 return 0.0;
759 }
760
761
762
763 template <typename number>
764 inline dealii::VectorizedArray<number>
766 const dealii::VectorizedArray<number> &temperature) const
767 {
768 if (data.solid_liquid_properties_transition_type ==
769 SolidLiquidPropertiesTransitionType::mushy_zone)
771 (data.liquidus_temperature - temperature) * inv_mushy_interval, 0.0, 1.0);
772 else if (data.solid_liquid_properties_transition_type ==
773 SolidLiquidPropertiesTransitionType::sharp)
774 return dealii::compare_and_apply_mask<dealii::SIMDComparison::less_than>(
775 temperature, data.solidus_temperature, 1.0, 0.0);
776 Assert(false, dealii::ExcNotImplemented());
777 return dealii::VectorizedArray<number>(0.0);
778 }
779
780
781
782 template <typename number>
784 operator const MaterialParameterValues<number, number> &() const
785 {
786 return scalar_parameters;
787 }
788
789
790
791 template <typename number>
793 operator const MaterialParameterValues<dealii::VectorizedArray<number>, number> &() const
794 {
795 return vectorized_parameters;
796 }
797
798} // namespace MeltPoolDG
value_type compute_solid_liquid_gas_phases_property(const value_type &level_set_heaviside, const value_type &temperature_dependent_solid_fraction, const value_type &gas_value, const value_type &liquid_value, const value_type &solid_value) const
Definition material.templates.hpp:624
value_type compute_solid_liquid_gas_phases_density_consistent_with_evaporation(const value_type &level_set_heaviside, const value_type &temperature_dependent_solid_fraction, const value_type &gas_value, const value_type &liquid_value, const value_type &solid_value) const
Definition material.templates.hpp:663
value_type compute_solid_liquid_gas_phases_specific_heat_capacity(const value_type &level_set_heaviside, const value_type &temperature_dependent_solid_fraction, const value_type &gas_value, const value_type &liquid_value, const value_type &solid_value) const
Definition material.templates.hpp:643
value_type compute_temperature_derivative_of_solid_liquid_gas_specific_heat_capacity(const value_type &level_set_heaviside, const value_type &temperature_dependent_solid_fraction, const value_type &liquid_value, const value_type &solid_value) const
Definition material.templates.hpp:704
value_type compute_solid_liquid_phases_specific_heat_capacity(const value_type &temperature_dependent_solid_fraction, const value_type &liquid_value, const value_type &solid_value) const
Definition material.templates.hpp:565
value_type compute_temperature_derivative_of_solid_liquid_phases_property(const value_type &temperature_dependent_solid_fraction, const value_type &liquid_value, const value_type &solid_value) const
Definition material.templates.hpp:585
number compute_temperature_dependent_solid_fraction(const number temperature) const
Definition material.templates.hpp:748
value_type compute_temperature_derivative_of_solid_liquid_gas_property(const value_type &level_set_heaviside, const value_type &temperature_dependent_solid_fraction, const value_type &liquid_value, const value_type &solid_value) const
Definition material.templates.hpp:684
value_type compute_solid_liquid_phases_property(const value_type &temperature_dependent_solid_fraction, const value_type &liquid_value, const value_type &solid_value) const
Definition material.templates.hpp:546
MaterialParameterValues< value_type, number > compute_parameters_internal(const value_type &v1, const value_type &v2, const MaterialUpdateFlags::MaterialUpdateFlags &flags) const
Definition material.templates.hpp:226
value_type compute_two_phase_fluid_density_consistent_with_evaporation(const value_type &level_set_heaviside, const value_type &gas_density, const value_type &liquid_solid_density) const
Definition material.templates.hpp:531
value_type compute_two_phase_fluid_property(const value_type &level_set_heaviside, const value_type &gas_value, const value_type &liquid_solid_value) const
Definition material.templates.hpp:515
value_type compute_temperature_derivative_of_solid_liquid_gas_density_consistent_with_evaporation(const value_type &level_set_heaviside, const value_type &temperature_dependent_solid_fraction, const value_type &gas_value, const value_type &liquid_value, const value_type &solid_value) const
Definition material.templates.hpp:725
MaterialParameterValues< value_type, number > compute_parameters(const MaterialUpdateFlags::MaterialUpdateFlags &flags) const
Definition material.templates.hpp:63
value_type compute_temperature_derivative_of_solid_liquid_specific_heat_capacity(const value_type &temperature_dependent_solid_fraction, const value_type &liquid_value, const value_type &solid_value) const
Definition material.templates.hpp:604
FieldType
Definition material.hpp:99
bool has_dependency(const FieldType &field_type) const
Definition material.templates.hpp:200
number heaviside(const number in, const number limit=0.0)
Definition characteristic_functions.hpp:37
value_type1 interpolate_reciprocal(const value_type1 &ls, const value_type2 &val1, const value_type3 &val2)
Definition level_set_tools.hpp:56
value_type1 interpolate_cubic_derivative(const value_type1 &ls, const value_type2 &val1, const value_type3 &val2)
Definition level_set_tools.hpp:84
value_type1 interpolate(const value_type1 &ls, const value_type2 &val1, const value_type3 &val2)
Definition level_set_tools.hpp:40
value_type1 interpolate_cubic(const value_type1 &ls, const value_type2 &val1, const value_type3 &val2)
Definition level_set_tools.hpp:72
MaterialUpdateFlags operator|(const MaterialUpdateFlags f1, const MaterialUpdateFlags f2)
Definition material.templates.hpp:23
MaterialUpdateFlags
Definition material.hpp:65
@ dynamic_viscosity
Definition material.hpp:70
@ phase_fractions
Definition material.hpp:76
@ d_specific_heat_capacity_d_T
Definition material.hpp:73
@ density
Definition material.hpp:69
@ d_volume_specific_heat_capacity_d_T
Definition material.hpp:75
@ volume_specific_heat_capacity
Definition material.hpp:71
@ thermal_conductivity
Definition material.hpp:67
@ d_thermal_conductivity_d_T
Definition material.hpp:72
@ specific_heat_capacity
Definition material.hpp:68
@ d_density_d_T
Definition material.hpp:74
MaterialUpdateFlags operator&(const MaterialUpdateFlags f1, const MaterialUpdateFlags f2)
Definition material.templates.hpp:41
MaterialUpdateFlags & operator&=(MaterialUpdateFlags &f1, const MaterialUpdateFlags f2)
Definition material.templates.hpp:50
MaterialUpdateFlags & operator|=(MaterialUpdateFlags &f1, const MaterialUpdateFlags f2)
Definition material.templates.hpp:32
dealii::VectorizedArray< number > limit_to_bounds(const dealii::VectorizedArray< number > &in, const number lower_limit, const number upper_limit)
Definition utility_functions.hpp:62
Interface for a general preconditioner.
Definition boundary_condition_functions.hpp:17
dealii::FEEvaluation< dim, -1, 0, n_components, number, VectorizedArrayType > FECellIntegrator
Definition fe_integrator.hpp:14
Definition material.hpp:15
value_type volume_specific_heat_capacity
Definition material.hpp:36
value_type d_specific_heat_capacity_d_T
Definition material.hpp:38
value_type liquid_fraction
Definition material.hpp:42
value_type density
Definition material.hpp:34
value_type d_volume_specific_heat_capacity_d_T
Definition material.hpp:40
value_type solid_fraction
Definition material.hpp:43
value_type specific_heat_capacity
Definition material.hpp:33
value_type dynamic_viscosity
Definition material.hpp:35
value_type thermal_conductivity
Definition material.hpp:32
value_type d_thermal_conductivity_d_T
Definition material.hpp:37
value_type d_density_d_T
Definition material.hpp:39
value_type gas_fraction
Definition material.hpp:41