SPH
QuantityIds.cpp
Go to the documentation of this file.
3 
5 
6 QuantityMetadata::QuantityMetadata(const std::string& fullName,
7  const std::wstring& label,
8  const ValueEnum type,
9  const std::string& dtName,
10  const std::string& d2tName)
11  : quantityName(fullName)
12  , label(label)
13  , expectedType(type) {
14  if (!dtName.empty()) {
15  derivativeName = dtName;
16  } else {
17  derivativeName = quantityName + " derivative";
18  }
19 
20  if (!d2tName.empty()) {
21  secondDerivativeName = d2tName;
22  } else {
23  secondDerivativeName = quantityName + " 2nd derivative";
24  }
25 }
26 
28  switch (key) {
30  return QuantityMetadata("Position", L"r", ValueEnum::VECTOR, "Velocity", "Acceleration");
31  case QuantityId::MASS:
32  return QuantityMetadata("Particle mass", L"m", ValueEnum::SCALAR);
34  return QuantityMetadata("Pressure", L"p", ValueEnum::SCALAR);
36  return QuantityMetadata("Density", L"\u03C1" /*rho*/, ValueEnum::SCALAR);
37  case QuantityId::ENERGY:
38  return QuantityMetadata("Specific energy", L"u", ValueEnum::SCALAR);
40  return QuantityMetadata("Temperature", L"T", ValueEnum::SCALAR);
42  return QuantityMetadata("Sound speed", L"c_s", ValueEnum::SCALAR);
44  return QuantityMetadata("Deviatoric stress", L"S", ValueEnum::TRACELESS_TENSOR);
46  return QuantityMetadata("Specific entropy", L"s", ValueEnum::SCALAR);
48  return QuantityMetadata("Generalized energy", L"Y", ValueEnum::SCALAR);
50  return QuantityMetadata("Generalized pressure", L"p^alpha", ValueEnum::SCALAR);
51  case QuantityId::DAMAGE:
52  return QuantityMetadata("Damage", L"D", ValueEnum::SCALAR);
54  return QuantityMetadata("Activation strain", L"\u03B5" /*epsilon*/, ValueEnum::SCALAR);
55  case QuantityId::M_ZERO:
56  return QuantityMetadata("Weibull exponent of stretched distribution", L"m_0", ValueEnum::SCALAR);
58  return QuantityMetadata("Explicit crack growth", L"???", ValueEnum::SCALAR);
60  return QuantityMetadata("Number of flaws", L"N_flaws", ValueEnum::INDEX);
62  return QuantityMetadata("Yielding reduce", L"Red", ValueEnum::SCALAR);
64  return QuantityMetadata("Distention", L"\u03B1" /*alpha*/, ValueEnum::SCALAR);
66  return QuantityMetadata("Velocity gradient", L"\u2207v" /*nabla v*/, ValueEnum::SYMMETRIC_TENSOR);
68  return QuantityMetadata("Velocity divergence", L"\u2207\u22C5v" /*nabla cdot v*/, ValueEnum::SCALAR);
70  return QuantityMetadata("Velocity rotation", L"\u2207\u2A2Fv" /*nabla cross v*/, ValueEnum::VECTOR);
72  return QuantityMetadata("Correction tensor", L"C", ValueEnum::SYMMETRIC_TENSOR);
74  return QuantityMetadata("Velocity laplacian", L"\u0394v" /*Delta v*/, ValueEnum::VECTOR);
76  return QuantityMetadata("Gradient of velocity divergence",
77  L"\u2207(\u2207\u22C5v)" /*nabla(nabla cdot v)*/,
80  return QuantityMetadata("Friction", L"f", ValueEnum::VECTOR);
82  return QuantityMetadata("Vibrational velocity", L"v_vib", ValueEnum::SCALAR);
84  return QuantityMetadata("Bulk density", L"\u03C1_b", ValueEnum::SCALAR);
86  return QuantityMetadata("Energy laplacian", L"\u0394u" /*Delta u*/, ValueEnum::SCALAR);
88  return QuantityMetadata("AV alpha", L"\u03B1_AV" /*alpha_AV*/, ValueEnum::SCALAR);
90  return QuantityMetadata("Artificial stress", L"R", ValueEnum::SYMMETRIC_TENSOR);
92  return QuantityMetadata("Balsara switch", L"f", ValueEnum::SCALAR);
94  return QuantityMetadata("Interparticle spacing kernel", L"w(\u0394 p)", ValueEnum::SCALAR);
96  return QuantityMetadata("Displacement", L"u", ValueEnum::VECTOR);
97  case QuantityId::FLAG:
98  return QuantityMetadata("Flag", L"flag", ValueEnum::INDEX);
100  return QuantityMetadata("Material ID", L"matID", ValueEnum::INDEX);
102  return QuantityMetadata("Original index", L"flag_0", ValueEnum::INDEX);
104  return QuantityMetadata("XSPH correction", L"xsph", ValueEnum::VECTOR);
105  case QuantityId::GRAD_H:
106  return QuantityMetadata("Grad-h terms", L"\u03A9" /*Omega*/, ValueEnum::SCALAR);
108  return QuantityMetadata("Aggregate ID", L"i", ValueEnum::INDEX);
110  return QuantityMetadata("Angular frequency", L"\u03C9" /*omega*/, ValueEnum::VECTOR);
112  return QuantityMetadata("Angular momentum", L"L", ValueEnum::VECTOR);
114  return QuantityMetadata("Neigh. cnt", L"N_neigh", ValueEnum::INDEX);
116  return QuantityMetadata("Surf. normal", L"n", ValueEnum::VECTOR);
118  return QuantityMetadata("Moment of intertia", L"I", ValueEnum::SCALAR);
120  return QuantityMetadata("Phase angle", L"\u03C6" /*phi*/, ValueEnum::VECTOR);
122  return QuantityMetadata("Smoothing length", L"h", ValueEnum::SCALAR);
124  return QuantityMetadata("Density gradient", L"\u2207\u03C1", ValueEnum::VECTOR);
125  case QuantityId::UVW:
126  return QuantityMetadata("Mapping coordinates", L"uvw", ValueEnum::VECTOR);
127  default:
129  }
130 }
131 
#define NOT_IMPLEMENTED
Helper macro marking missing implementation.
Definition: Assert.h:100
NAMESPACE_SPH_BEGIN
Definition: BarnesHut.cpp:13
Helper object for converting enums to string, listing all available values of enum,...
#define NAMESPACE_SPH_END
Definition: Object.h:12
ValueEnum
@ SYMMETRIC_TENSOR
@ TRACELESS_TENSOR
QuantityMetadata getMetadata(const QuantityId key)
Returns the quantity information using quantity ID.
Definition: QuantityIds.cpp:27
Quantity identifiers.
QuantityId
Unique IDs of basic quantities of SPH particles.
Definition: QuantityIds.h:19
@ BULK_DENSITY
Bulk density, may be lower than the material density.
@ AV_ALPHA
Coefficient alpha of the artificial viscosity. Coefficient beta is always 2*alpha.
@ M_ZERO
Coefficient M_0 of the stretched Weibull distribution.
@ FLAG
ID of original body, used to implement discontinuities between bodies in SPH.
@ VELOCITY_DIVERGENCE
Velocity divergence.
@ STRAIN_RATE_CORRECTION_TENSOR
Correction tensor used to improve conservation of total angular momentum.
@ DISPLACEMENT
Displacement vector, a solution of the stress analysis.
@ EXPLICIT_GROWTH
Explicit growth of fractures.
@ DEVIATORIC_STRESS
Deviatoric stress tensor, always a traceless tensor.
@ INTERPARTICLE_SPACING_KERNEL
Auxiliary quantity needed for evaluating artificial stress.
@ PRESSURE
Pressure, affected by yielding and fragmentation model, always a scalar quantity.
@ AV_BALSARA
Balsara factor.
@ MOMENT_OF_INERTIA
Moment of inertia of particles, analogy of particle masses for rotation.
@ VELOCITY_GRADIENT
Velocity gradient.
@ DAMAGE
Damage.
@ ENERGY_LAPLACIAN
Laplacian of internal energy, used in heat diffusion equation.
@ N_FLAWS
Number of explicit flaws per particle.
@ POSITION
Positions (velocities, accelerations) of particles, always a vector quantity,.
@ ENERGY
Specific internal energy, always a scalar quantity.
@ VELOCITY_LAPLACIAN
@ AGGREGATE_ID
Index of the aggregate containing this particle.
@ VELOCITY_ROTATION
Velocity rotation.
@ GENERALIZED_PRESSURE
@ DENSITY
Density, always a scalar quantity.
@ TEMPERATURE
Temperature, always a scalar quantity.
@ DELTASPH_DENSITY_GRADIENT
@ SURFACE_NORMAL
Vector approximating surface normal.
@ MASS
Paricles masses, always a scalar quantity.
@ NEIGHBOUR_CNT
Number of neighbouring particles (in radius h * kernel.radius)
@ SPECIFIC_ENTROPY
Specific entropy, always a scalar quantity.
@ SOUND_SPEED
Sound speed, always a scalar quantity.
@ DISTENTION
Ratio of the solid and bulk density (parameter alpha in P-alpha and eps-alpha models).
@ GENERALIZED_ENERGY
The "Y" quantity defined by , used to compute equation of motion and energy in DISPH.
@ AV_STRESS
Artificial stress by Monaghan .
@ STRESS_REDUCING
Total stress reduction factor due to damage and yielding. Is always scalar.
@ VIBRATIONAL_VELOCITY
Vibrational particle velocity, used by the block model of acoustic fluidization.
@ MATERIAL_ID
Index of material of the particle. Can be generally different than the flag value.
@ EPS_MIN
Activation strait rate.
@ UVW
Texture mapping coordinates,.
@ VELOCITY_GRADIENT_OF_DIVERGENCE
Auxiliary information about quantity that aren't stored directly in Quantity.
Definition: QuantityIds.h:239
std::string derivativeName
Name of the 1st derivative.
Definition: QuantityIds.h:248
std::string quantityName
Full name of the quantity (i.e. 'Density', 'Deviatoric stress', ...)
Definition: QuantityIds.h:242
std::string secondDerivativeName
Name of the second derivative.
Definition: QuantityIds.h:253
QuantityMetadata(const std::string &fullName, const std::wstring &label, const ValueEnum type, const std::string &derivativeName="", const std::string &secondDerivativeName="")
Definition: QuantityIds.cpp:6