void IntegrationValues2<Scalar>:: getCubatureCV(const PHX::MDField<Scalar,Cell,NODE,Dim>& in_node_coordinates) { int num_space_dim = int_rule->topology->getDimension(); if (int_rule->isSide() && num_space_dim==1) { std::cout << "WARNING: 0-D quadrature rule infrastructure does not exist!!! Will not be able to do " << "non-natural integration rules."; return; } { size_type num_cells = in_node_coordinates.dimension(0); size_type num_nodes = in_node_coordinates.dimension(1); size_type num_dims = in_node_coordinates.dimension(2); for (size_type cell = 0; cell < num_cells; ++cell) { for (size_type node = 0; node < num_nodes; ++node) { for (size_type dim = 0; dim < num_dims; ++dim) { node_coordinates(cell,node,dim) = in_node_coordinates(cell,node,dim); dyn_node_coordinates(cell,node,dim) = Sacado::ScalarValue<Scalar>::eval(in_node_coordinates(cell,node,dim)); } } } } if (int_rule->cv_type == "side") intrepid_cubature->getCubature(dyn_phys_cub_points.get_view(),dyn_phys_cub_norms.get_view(),dyn_node_coordinates.get_view()); else intrepid_cubature->getCubature(dyn_phys_cub_points.get_view(),dyn_phys_cub_weights.get_view(),dyn_node_coordinates.get_view()); size_type num_cells = dyn_phys_cub_points.dimension(0); size_type num_ip =dyn_phys_cub_points.dimension(1); size_type num_dims = dyn_phys_cub_points.dimension(2); for (size_type cell = 0; cell < num_cells; ++cell) { for (size_type ip = 0; ip < num_ip; ++ip) { if (int_rule->cv_type != "side") weighted_measure(cell,ip) = dyn_phys_cub_weights(cell,ip); for (size_type dim = 0; dim < num_dims; ++dim) { ip_coordinates(cell,ip,dim) = dyn_phys_cub_points(cell,ip,dim); if (int_rule->cv_type == "side") weighted_normals(cell,ip,dim) = dyn_phys_cub_norms(cell,ip,dim); } } } }
void IntegrationValues2<Scalar>:: evaluateValuesCV(const PHX::MDField<Scalar,Cell,NODE,Dim> & in_node_coordinates) { Intrepid2::CellTools<Scalar> cell_tools; { size_type num_cells = in_node_coordinates.dimension(0); size_type num_nodes = in_node_coordinates.dimension(1); size_type num_dims = in_node_coordinates.dimension(2); for (size_type cell = 0; cell < num_cells; ++cell) { for (size_type node = 0; node < num_nodes; ++node) { for (size_type dim = 0; dim < num_dims; ++dim) { node_coordinates(cell,node,dim) = in_node_coordinates(cell,node,dim); dyn_node_coordinates(cell,node,dim) = Sacado::ScalarValue<Scalar>::eval(in_node_coordinates(cell,node,dim)); } } } } if (int_rule->cv_type == "volume") intrepid_cubature->getCubature(dyn_phys_cub_points,dyn_phys_cub_weights,dyn_node_coordinates); else if (int_rule->cv_type == "side") intrepid_cubature->getCubature(dyn_phys_cub_points,dyn_phys_cub_norms,dyn_node_coordinates); if (int_rule->cv_type == "volume") { size_type num_cells = dyn_phys_cub_points.dimension(0); size_type num_ip = dyn_phys_cub_points.dimension(1); size_type num_dims = dyn_phys_cub_points.dimension(2); for (size_type cell = 0; cell < num_cells; ++cell) { for (size_type ip = 0; ip < num_ip; ++ip) { weighted_measure(cell,ip) = dyn_phys_cub_weights(cell,ip); for (size_type dim = 0; dim < num_dims; ++dim) ip_coordinates(cell,ip,dim) = dyn_phys_cub_points(cell,ip,dim); } } cell_tools.mapToReferenceFrame(ref_ip_coordinates, ip_coordinates, node_coordinates, *(int_rule->topology),-1); cell_tools.setJacobian(jac, ref_ip_coordinates, node_coordinates, *(int_rule->topology)); } else if (int_rule->cv_type == "side") { size_type num_cells = dyn_phys_cub_points.dimension(0); size_type num_ip = dyn_phys_cub_points.dimension(1); size_type num_dims = dyn_phys_cub_points.dimension(2); for (size_type cell = 0; cell < num_cells; ++cell) { for (size_type ip = 0; ip < num_ip; ++ip) { for (size_type dim = 0; dim < num_dims; ++dim) { ip_coordinates(cell,ip,dim) = dyn_phys_cub_points(cell,ip,dim); weighted_normals(cell,ip,dim) = dyn_phys_cub_norms(cell,ip,dim); } } } cell_tools.mapToReferenceFrame(ref_ip_coordinates, ip_coordinates, node_coordinates, *(int_rule->topology),-1); cell_tools.setJacobian(jac, ref_ip_coordinates, node_coordinates, *(int_rule->topology)); } cell_tools.setJacobianInv(jac_inv, jac); cell_tools.setJacobianDet(jac_det, jac); }