milupHPC documentation
  • include
  • materials
material.cuh
Go to the documentation of this file.
1
16#ifndef MILUPHPC_MATERIAL_CUH
17#define MILUPHPC_MATERIAL_CUH
18
19#include "../cuda_utils/cuda_utilities.cuh"
20#include "../parameter.h"
21
22#include <iostream>
23#include <stdio.h>
24#include <cuda.h>
25#include <boost/mpi.hpp>
26
30struct ArtificialViscosity {
31
32 // enable communication via MPI (send instance of struct directly)
33 friend class boost::serialization::access;
41 template<class Archive>
42 void serialize(Archive &ar, const unsigned int version) {
43 ar & alpha;
44 ar & beta;
45 }
46
48 real alpha;
50 real beta;
51
52 CUDA_CALLABLE_MEMBER ArtificialViscosity();
53 CUDA_CALLABLE_MEMBER ArtificialViscosity(real alpha, real beta);
54};
55
59struct EqOfSt {
60
61 friend class boost::serialization::access;
69 template<class Archive>
70 void serialize(Archive &ar, const unsigned int version) {
71 ar & type;
72 ar & polytropic_K;
73 ar & polytropic_gamma;
74 }
75
76 int type;
77 real polytropic_K;
78 real polytropic_gamma;
79
80 CUDA_CALLABLE_MEMBER EqOfSt();
81 CUDA_CALLABLE_MEMBER EqOfSt(int type, real polytropic_K, real polytropic_gamma);
82
83};
84
88class Material {
89
90public:
91
92 // enable communication via MPI (send instance of class directly)
93 friend class boost::serialization::access;
101 template<class Archive>
102 void serialize(Archive &ar, const unsigned int version) {
103 ar & ID;
104 ar & interactions;
105 ar & sml;
106 ar & artificialViscosity;
107 ar & eos;
108 }
109
110 integer ID;
111 integer interactions;
112 real sml;
113
114 ArtificialViscosity artificialViscosity;
115 EqOfSt eos;
116
117 CUDA_CALLABLE_MEMBER Material();
118 CUDA_CALLABLE_MEMBER ~Material();
119
120 CUDA_CALLABLE_MEMBER void info();
121
122 /*real density_floor;
123
124 struct eos {
125 integer type;
126 real shear_modulus;
127 real bulk_modulus;
128 real yield_stress;
129
130 real cs_limit;
131
132 // ideal gas
133 real polytropic_gamma;
134 real ideal_gas_rho_0;
135 real ideal_gas_p_0;
136 real ideal_gas_conv_e_to_T;
137
138 // Tillotson
139 real till_rho_0;
140 real till_A;
141 real till_B;
142 real till_E_0;
143 real till_E_iv;
144 real _E_cv;
145 real till_a;
146 real till_b;
147 real till_alpha;
148 real till_beta;
149 real rho_limit;
150
151 // ANEOS
152 char *table_path;
153 integer n_rho;
154 integer n_e;
155 real aneos_rho_0;
156 real aneos_bulk_cs;
157 real aneos_e_norm;
158
159 // plasticity
160 real cohesion;
161 real friction_angle;
162 real cohesion_damaged;
163 real friction_angle_damaged;
164 real melt_energy;
165
166
167 // fragmentation
168 real weibull_k;
169 real weibull_m;
170
171 };
172
173 struct porosity {
174 real porjutzi_p_elastic;
175 real porjutzi_p_transition;
176 real porjutzi_p_compacted;
177 real porjutzi_alpha_0;
178 real porjutzi_alpha_e;
179 real porjutzi_alpha_t;
180 real porjutzi_n1;
181 real porjutzi_n2;
182 real cs_porous;
183 integer crushcurve_style;
184 };
185
186 struct plasticity {
187 real yield_stress;
188 real cohesion;
189 real friction_angle;
190 real friction_angle_damaged;
191 // ...
192 };*/
193};
194
196namespace MaterialNS {
197
199 namespace Kernel {
200
208 __global__ void info(Material *material);
209
211 namespace Launch {
212
216 void info(Material *material);
217 }
218 }
219}
220
221#endif //MILUPHPC_MATERIAL_CUH
Material
Material parameters.
Definition: material.cuh:88
Material::ID
integer ID
Definition: material.cuh:110
Material::serialize
void serialize(Archive &ar, const unsigned int version)
Serialization function for boost::mpi functionality.
Definition: material.cuh:102
Material::Material
CUDA_CALLABLE_MEMBER Material()
Definition: material.cu:4
Material::interactions
integer interactions
Definition: material.cuh:111
Material::eos
EqOfSt eos
Definition: material.cuh:115
Material::sml
real sml
Definition: material.cuh:112
Material::access
friend class boost::serialization::access
Definition: material.cuh:93
Material::artificialViscosity
ArtificialViscosity artificialViscosity
Definition: material.cuh:114
Material::info
CUDA_CALLABLE_MEMBER void info()
Definition: material.cu:12
Material::~Material
CUDA_CALLABLE_MEMBER ~Material()
Definition: material.cu:8
CUDA_CALLABLE_MEMBER
#define CUDA_CALLABLE_MEMBER
Definition: cuda_utilities.cuh:30
Kernel
Definition: device_rhs.cuh:7
MaterialNS::Kernel::Launch::info
void info(Material *material)
Wrapper for MaterialNS::Kernel::info().
Definition: material.cu:28
MaterialNS::Kernel::info
__global__ void info(Material *material)
Debug kernel giving information about material(s).
Definition: material.cu:24
MaterialNS
Material related functions and kernels.
Definition: material.cuh:196
real
double real
Definition: parameter.h:15
integer
int integer
Definition: parameter.h:17
ArtificialViscosity
Artificial viscosity parameters.
Definition: material.cuh:30
ArtificialViscosity::serialize
void serialize(Archive &ar, const unsigned int version)
Serialization function for boost::mpi functionality.
Definition: material.cuh:42
ArtificialViscosity::alpha
real alpha
Artificial viscosity .
Definition: material.cuh:48
ArtificialViscosity::beta
real beta
Artificial viscosity .
Definition: material.cuh:50
ArtificialViscosity::access
friend class boost::serialization::access
Definition: material.cuh:33
ArtificialViscosity::ArtificialViscosity
CUDA_CALLABLE_MEMBER ArtificialViscosity()
Definition: material.cu:36
EqOfSt
Equation of states.
Definition: material.cuh:59
EqOfSt::serialize
void serialize(Archive &ar, const unsigned int version)
Serialization function for boost::mpi functionality.
Definition: material.cuh:70
EqOfSt::polytropic_K
real polytropic_K
Definition: material.cuh:77
EqOfSt::polytropic_gamma
real polytropic_gamma
Definition: material.cuh:78
EqOfSt::EqOfSt
CUDA_CALLABLE_MEMBER EqOfSt()
Definition: material.cu:43
EqOfSt::type
int type
Definition: material.cuh:76
EqOfSt::access
friend class boost::serialization::access
Definition: material.cuh:61

milupHPC - include/materials/material.cuh Source File
Generated on Wed Aug 31 2022 12:16:52 by Doxygen 1.9.3