8 #ifndef SRC_FLOW_ASSEMBLY_LMH_HH_ 9 #define SRC_FLOW_ASSEMBLY_LMH_HH_ 81 double water_content = 0;
88 water_content = evaluated.val();
89 capacity = x_phead.d(0);
92 ad_->water_content_previous_it[ele.
side_local_idx(i)] = water_content + storativity * phead;
102 double conductivity, head;
109 double phead =
ad_->phead_edge_[local_edge];
110 conductivity +=
soil_model->conductivity(phead);
111 head +=
ad_->phead_edge_[local_edge];
144 if (
ad_->system_.dirichlet_edge[i] == 0) {
146 double capacity = this->
ad_->capacity[local_side];
147 double water_content_diff = -
ad_->water_content_previous_it[local_side] +
ad_->water_content_previous_time[local_side];
148 double mass_diagonal = diagonal_coef * capacity;
161 double mass_rhs = mass_diagonal *
ad_->phead_edge_[local_edge] / this->
ad_->time_step_
162 + diagonal_coef * water_content_diff / this->
ad_->time_step_;
171 diagonal_coef*
ad_->water_content_previous_it[local_side]);
const arma::vec3 centre() const
void update_water_content(LocalElementAccessorBase< 3 > ele)
AssemblyLMH(AssemblyDataPtr data)
ElementAccessor< 3 > element_accessor()
uint edge_local_idx(uint i)
#define FOR_ELEMENT_SIDES(i, j)
void reset_soil_model(LocalElementAccessorBase< 3 > ele)
uint side_local_idx(uint i)
std::shared_ptr< SoilModelBase > soil_model
void mat_set_value(int row, int col, double val)
std::shared_ptr< arma::mat > local_matrix
Mixed-hybrid model of linear Darcy flow, possibly unsteady.
std::shared_ptr< RichardsLMH::EqData > AssemblyDataPtr
std::shared_ptr< Balance > balance
unsigned int bulk_idx() const
Returns index of the region in the bulk set.
void assembly_source_term(LocalElementAccessorBase< 3 > ele)
void assembly_local_matrix(LocalElementAccessorBase< 3 > ele) override
arma::mat::fixed< dim+1, dim+1 > assembly_local_geometry_matrix(ElementFullIter ele)
ElementFullIter full_iter()
void rhs_set_value(int row, double val)