33 #ifndef DARCY_FLOW_MH_HH 34 #define DARCY_FLOW_MH_HH 39 #include <boost/exception/info.hpp> 131 <<
"Diverged nonlinear solver. Reason: " << EI_Reason::val
134 <<
"Missing the key 'time', obligatory for the transient problems.");
227 get_solution_vector(array, size);
237 mh_dh.set_solution(time_->last_t(),
array, solution_precision());
242 void initialize()
override;
243 virtual void initialize_specific();
244 void zero_time_step()
override;
245 void update_solution()
override;
247 void get_solution_vector(
double * &
vec,
unsigned int &vec_size)
override;
248 void get_parallel_solution_vector(Vec &
vector)
override;
251 virtual void prepare_new_time_step();
252 virtual void postprocess();
253 virtual void output_data()
override;
265 virtual bool zero_time_term(
bool time_global=
false);
268 void solve_nonlinear();
269 void make_serial_scatter();
270 void modify_system();
271 virtual void setup_time_term();
291 virtual void read_initial_condition();
308 void allocate_mh_matrix();
319 void assembly_mh_matrix(MultidimAssembly& assembler);
322 virtual void assembly_source_term();
327 virtual void assembly_linear_system();
329 void set_mesh_data_for_bddc(
LinSys_BDDC * bddc_ls);
335 virtual double solution_precision()
const;
338 void print_matlab_matrix(
string matlab_file);
393 #endif //DARCY_FLOW_MH_HH
Container for various descendants of FieldCommonBase.
Field< 3, FieldValue< 3 >::Scalar > init_pressure
Class template representing a field with values dependent on: point, element, and region...
static const int registrar
Registrar of class to factory.
Field< 3, FieldValue< 3 >::Scalar > sigma
std::vector< char > bc_switch_dirichlet
Idicator of dirichlet or neumann type of switch boundary conditions.
int is_linear
Hack fo BDDC solver.
unsigned int n_schur_compls
bool solution_changed_for_scatter
std::shared_ptr< EqData > data_
void mat_count_off_proc_values(Mat m, Vec v)
Basic time management class.
unsigned int nonlinear_iteration_
BCField< 3, FieldValue< 3 >::Scalar > bc_flux
BCField< 3, FieldValue< 3 >::Scalar > bc_pressure
Field< 3, FieldValue< 3 >::Scalar > water_source_density
BCField< 3, FieldValue< 3 >::Scalar > bc_switch_pressure
Field< 3, FieldValue< 3 >::Scalar > storativity
std::shared_ptr< Balance > balance_
bool force_bc_switch
auxiliary flag for switchting Dirichlet like BC
bool use_steady_assembly_
std::shared_ptr< Balance > balance
MortarMethod
Type of experimental Mortar-like method for non-compatible 1d-2d interaction.
Field< 3, FieldValue< 3 >::TensorFixed > anisotropy
Field< 3, FieldValue< 3 >::Scalar > cross_section
BCField< 3, FieldValue< 3 >::Enum > bc_type
DarcyFlowMHOutput * output_object
Field< 3, FieldValue< 3 >::Scalar > conductivity
BCField< 3, FieldValue< 3 >::Scalar > bc_robin_sigma
std::vector< std::shared_ptr< AssemblyBase > > MultidimAssembly
MortarMethod mortar_method_
const MH_DofHandler & get_mh_dofhandler() override
Mixed-hybrid model of linear Darcy flow, possibly unsteady.