ConvectionDiffusionFVCR<TDomain>:: ConvectionDiffusionFVCR(const char* functions, const char* subsets) : ConvectionDiffusionBase<TDomain>(functions,subsets), m_spConvShape(new ConvectionShapesNoUpwind<dim>), m_bNonRegularGrid(false) { register_all_funcs(m_bNonRegularGrid); }
void ConvectionDiffusionFVCR<TDomain>:: prepare_setting(const std::vector<LFEID>& vLfeID, bool bNonRegularGrid) { // check number if(vLfeID.size() != 1) UG_THROW("ConvectionDiffusion: Wrong number of functions given. " "Need exactly "<<1); if(vLfeID[0].order() != 1 || vLfeID[0].type() != LFEID::CROUZEIX_RAVIART) UG_THROW("ConvectionDiffusion FVCR Scheme only implemented for 1st order."); // remember m_bNonRegularGrid = bNonRegularGrid; // update assemble functions register_all_funcs(m_bNonRegularGrid); }
void NeumannBoundaryFE<TDomain>:: prepare_setting(const std::vector<LFEID>& vLfeID, bool bNonRegularGrid) { // check number if(vLfeID.size() != 1) UG_THROW("NeumannBoundaryFE: needs exactly 1 function."); // check that not ADAPTIVE if(vLfeID[0].order() < 1) UG_THROW("NeumannBoundaryFE: Adaptive order not implemented."); // set order m_lfeID = vLfeID[0]; m_order = vLfeID[0].order(); m_quadOrder = 2*m_order+1; register_all_funcs(m_order); }
void ConvectionDiffusionFE<TDomain>:: prepare_setting(const std::vector<LFEID>& vLfeID, bool bNonRegularGrid) { // check number of fcts if(vLfeID.size() != 1) UG_THROW("ConvectionDiffusion: Wrong number of functions given. " "Need exactly "<<1); // check that not ADAPTIVE if(vLfeID[0].order() < 1) UG_THROW("ConvectionDiffusion: Adaptive order not implemented."); // set order m_lfeID = vLfeID[0]; if(!m_bQuadOrderUserDef) m_quadOrder = 2*m_lfeID.order()+1; register_all_funcs(m_lfeID, m_quadOrder); }