44TransportMaterialStatus :: TransportMaterialStatus(
GaussPoint *g) :
48void TransportMaterialStatus :: printOutputAt(FILE *File,
TimeStep *tStep)
const
50 MaterialStatus :: printOutputAt(File, tStep);
52 fprintf(File,
" state %.4e",
field);
54 fprintf(File,
" flow");
55 for (
auto &flow :
flux ) {
56 fprintf( File,
" %.4e", flow );
64TransportMaterialStatus :: updateYourself(
TimeStep *tStep)
66 MaterialStatus :: updateYourself(tStep);
74TransportMaterialStatus :: initTempStatus()
76 MaterialStatus :: initTempStatus();
86 MaterialStatus :: saveContext(stream, mode);
97 if ( ( iores =
flux.storeYourself(stream) ) !=
CIO_OK ) {
106 MaterialStatus :: restoreContext(stream, mode);
115 if ( ( iores =
flux.restoreYourself(stream) ) !=
CIO_OK ) {
122HeMoTransportMaterialStatus :: HeMoTransportMaterialStatus(
GaussPoint *g) :
128HeMoTransportMaterialStatus :: printOutputAt(FILE *File,
TimeStep *tStep)
const
130 MaterialStatus :: printOutputAt(File, tStep);
134 fprintf(File,
" t_flux");
135 for (
auto &flow :
t_flux ) {
136 fprintf( File,
" %.4e", flow );
139 fprintf(File,
" humidity %.4e",
humidity);
141 fprintf(File,
" h_flux");
142 for (
auto &flow :
h_flux ) {
143 fprintf( File,
" %.4e", flow );
151HeMoTransportMaterialStatus :: updateYourself(
TimeStep *tStep)
153 MaterialStatus :: updateYourself(tStep);
166HeMoTransportMaterialStatus :: initTempStatus()
168 MaterialStatus :: initTempStatus();
183 MaterialStatus :: saveContext(stream, mode);
194 if ( ( iores =
t_flux.storeYourself(stream) ) !=
CIO_OK ) {
206 if ( ( iores =
h_flux.storeYourself(stream) ) !=
CIO_OK ) {
215 MaterialStatus :: restoreContext(stream, mode);
224 if ( ( iores =
t_flux.restoreYourself(stream) ) !=
CIO_OK ) {
234 if ( ( iores =
h_flux.restoreYourself(stream) ) !=
CIO_OK ) {
247 ms->setTempField(stateVec[0]);
249 }
else if ( stateVec.
giveSize() == 2 ) {
252 ms->setTempTemperature(stateVec[0]);
253 ms->setTempHumidity(stateVec[1]);
265 }
else if ( grad.
giveSize() == 2 ) {
272 double t = field.
at(1);
273 double h = field.
at(2);
277 for (
int i = 0; i < size; ++i) {
280 for (
int i = 0; i < size; ++i) {
281 grad_w[i] = grad[i+size];
287 for (
int i = 0; i < size; ++i) {
288 answer[i] = grads.first[i];
291 for (
int i = 0; i < size; ++i) {
292 answer[i+size] = grads.second[i];
301 if ( mmode == _3dHeat || mmode == _3dMTLattice ) {
303 }
else if ( mmode == _2dHeat || mmode == _2dMTLattice ) {
305 }
else if ( mmode == _1dHeat ) {
307 }
else if ( mmode == _3dHeMo ) {
309 }
else if ( mmode == _2dHeMo ) {
311 }
else if ( mmode == _1dHeMo ) {
327 auto ans = this->
computeFlux3D({grad[0], grad[1], 0.}, field, gp, tStep);
328 return {ans[0], ans[1]};
335 auto ans = this->
computeFlux3D({grad[0], 0., 0.}, field, gp, tStep);
343 OOFEM_ERROR(
"Method is only validfor heat+moisture coupled materials.");
349 auto grads =
computeHeMoFlux3D({grad_t[0], grad_t[1], 0.}, {grad_w[0], grad_w[1], 0.}, t, h, gp, tStep);
350 return {{grads.first[0], grads.first[1]}, {grads.second[0], grads.second[1]}};
357 auto grads =
computeHeMoFlux3D({grad_t[0], 0., 0.}, {grad_w[0], 0., 0.}, t, h, gp, tStep);
358 return {{grads.first[0]}, {grads.second[0]}};
387 if ( type == IST_Temperature || type == IST_MassConcentration_1 || type == IST_Humidity ) {
390 }
else if ( type == IST_TemperatureFlow ) {
394 }
else if ( type == IST_Velocity ) {
398 }
else if ( type == IST_PressureGradient ) {
402 }
else if ( type == IST_Density ) {
405 }
else if ( type == IST_HeatCapacity ) {
408 }
else if ( type == IST_ThermalConductivityIsotropic ) {
411 }
else if ( type == IST_Maturity ) {
414 }
else if ( type == IST_InternalSource ) {
424 return Material :: giveIPValue(answer, gp, type, tStep);
virtual int read(int *data, std::size_t count)=0
Reads count integer values into array pointed by data.
Index giveSize() const
Returns the size of receiver.
void resizeWithValues(Index s, std::size_t allocChunk=0)
void zero()
Zeroes all coefficients of receiver.
MaterialMode giveMaterialMode()
Returns corresponding material mode of receiver.
Element * giveElement()
Returns corresponding element to receiver.
FloatArrayF< 3 > h_gradient
Humidity gradient.
FloatArrayF< 3 > t_gradient
Temperature gradient.
FloatArrayF< 3 > t_flux
Heat flux.
FloatArrayF< 3 > temp_t_flux
Temp heat flux.
FloatArrayF< 3 > temp_h_flux
Temp humidity flux.
double temperature
Temperature.
FloatArrayF< 3 > temp_h_gradient
Temp humidity gradient.
FloatArrayF< 3 > h_flux
Humidity flux.
double temp_humidity
Temp humidity.
FloatArrayF< 3 > temp_t_gradient
Temp temperature gradient.
double temp_temperature
Temp temperature.
MaterialStatus(GaussPoint *g)
virtual MaterialStatus * giveStatus(GaussPoint *gp) const
virtual double give(int aProperty, GaussPoint *gp) const
virtual void computeFlow(FloatArray &answer, GaussPoint *gp, TimeStep *tStep)
double giveField() const
Return last field.
FloatArrayF< 3 > temp_gradient
Temp. Gradient.
double field
General field (temperature, concentration, etc.).
const FloatArrayF< 3 > & giveGradient() const
Return last gradient.
const FloatArrayF< 3 > & giveFlux() const
Returns last flux.
FloatArrayF< 3 > temp_flux
Vector containing the last computed flux.
FloatArrayF< 3 > gradient
General gradient.
FloatArrayF< 3 > flux
General flux (energy flux, mass flow, etc.).
double temp_field
Temp. Primary field.
double giveMaturity() const
Returns maturity.
virtual FloatArrayF< 3 > computeFlux3D(const FloatArrayF< 3 > &grad, double field, GaussPoint *gp, TimeStep *tStep) const
FloatMatrixF< 2, 2 > computeTangent2D(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const
virtual std::pair< FloatArrayF< 3 >, FloatArrayF< 3 > > computeHeMoFlux3D(const FloatArrayF< 3 > &grad_t, const FloatArrayF< 3 > &grad_w, double t, double h, GaussPoint *gp, TimeStep *tStep) const
virtual void computeInternalSourceVector(FloatArray &val, GaussPoint *gp, TimeStep *tStep, ValueModeType mode) const
virtual FloatMatrixF< 3, 3 > computeTangent3D(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const =0
FloatMatrixF< 1, 1 > computeTangent1D(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const
FloatArrayF< 1 > computeFlux1D(const FloatArrayF< 1 > &grad, double field, GaussPoint *gp, TimeStep *tStep) const
virtual bool hasInternalSource() const
FloatArrayF< 2 > computeFlux2D(const FloatArrayF< 2 > &grad, double field, GaussPoint *gp, TimeStep *tStep) const
@ CIO_IOERR
General IO error.