Create finite element to calculate matrix and vectors.
1026 domain_lhs_fe = boost::shared_ptr<ForcesAndSourcesCore>(
1027 new VolumeElementForcesAndSourcesCore(
mField));
1028 boundary_lhs_fe = boost::shared_ptr<ForcesAndSourcesCore>(
1030 domain_rhs_fe = boost::shared_ptr<ForcesAndSourcesCore>(
1031 new VolumeElementForcesAndSourcesCore(
mField));
1032 boundary_rhs_fe = boost::shared_ptr<ForcesAndSourcesCore>(
1036 domain_lhs_fe->getRuleHook = vol_rule;
1037 domain_rhs_fe->getRuleHook = vol_rule;
1038 boundary_lhs_fe->getRuleHook = face_rule;
1039 boundary_rhs_fe->getRuleHook = face_rule;
1044 boost::shared_ptr<VectorDouble> values_at_integration_ptr =
1045 boost::make_shared<VectorDouble>();
1047 boost::shared_ptr<MatrixDouble> grad_at_integration_ptr =
1048 boost::make_shared<MatrixDouble>();
1050 boost::shared_ptr<VectorDouble> multiplier_at_integration_ptr =
1051 boost::make_shared<VectorDouble>();
1055 domain_lhs_fe->getOpPtrVector().push_back(
1056 new OpCalculateScalarFieldValues(
"U", values_at_integration_ptr));
1058 domain_lhs_fe->getOpPtrVector().push_back(
1059 new OpCalculateScalarFieldGradient<3>(
"U", grad_at_integration_ptr));
1061 domain_lhs_fe->getOpPtrVector().push_back(
new OpKt(
1062 a, diff_a, values_at_integration_ptr, grad_at_integration_ptr));
1065 domain_rhs_fe->getOpPtrVector().push_back(
1066 new OpCalculateScalarFieldValues(
"U", values_at_integration_ptr));
1068 domain_rhs_fe->getOpPtrVector().push_back(
1069 new OpCalculateScalarFieldGradient<3>(
"U", grad_at_integration_ptr));
1071 domain_rhs_fe->getOpPtrVector().push_back(
new OpResF_Domain(
1072 f_source,
a, values_at_integration_ptr, grad_at_integration_ptr));
1075 boundary_lhs_fe->getOpPtrVector().push_back(
new OpC(trans));
1078 boundary_rhs_fe->getOpPtrVector().push_back(
1079 new OpCalculateScalarFieldValues(
"U", values_at_integration_ptr));
1081 boundary_rhs_fe->getOpPtrVector().push_back(
1082 new OpCalculateScalarFieldValues(
"L", multiplier_at_integration_ptr));
1084 boundary_rhs_fe->getOpPtrVector().push_back(
1085 new OpRes_g(f_u, values_at_integration_ptr));
1086 boundary_rhs_fe->getOpPtrVector().push_back(
1087 new OpResF_Boundary(multiplier_at_integration_ptr));