1 #ifndef __WEAK_DISCONTINUOUSGALERKIN_H__ 2 #define __WEAK_DISCONTINUOUSGALERKIN_H__ 4 #include "dg_base_state.hpp" 5 #include "solution/local_solution.hpp" 12 #if PHILIP_DIM==1 // dealii::parallel::distributed::Triangulation<dim> does not work for 1D 13 template <
int dim,
int nspecies,
int nstate,
typename real,
typename MeshType = dealii::Triangulation<dim>>
15 template <
int dim,
int nspecies,
int nstate,
typename real,
typename MeshType = dealii::parallel::distributed::Triangulation<dim>>
26 const unsigned int degree,
27 const unsigned int max_degree_input,
28 const unsigned int grid_degree_input,
29 const std::shared_ptr<Triangulation> triangulation_input);
42 template <
typename real2>
44 typename dealii::DoFHandler<dim>::active_cell_iterator cell,
45 const dealii::types::global_dof_index current_cell_index,
48 const std::vector<real> &local_dual,
49 const dealii::Quadrature<dim> &quadrature,
51 std::vector<real2> &rhs, real2 &dual_dot_residual,
52 const bool compute_metric_derivatives,
53 const dealii::FEValues<dim,dim> &fe_values_vol);
58 template <
typename real2>
60 typename dealii::DoFHandler<dim>::active_cell_iterator cell,
61 const dealii::types::global_dof_index current_cell_index,
64 const std::vector< real > &local_dual,
65 const unsigned int face_number,
66 const unsigned int boundary_id,
70 const dealii::FEFaceValuesBase<dim,dim> &fe_values_boundary,
72 const dealii::Quadrature<dim-1> &quadrature,
73 std::vector<real2> &rhs,
74 real2 &dual_dot_residual,
75 const bool compute_metric_derivatives);
80 template <
typename real2>
82 typename dealii::DoFHandler<dim>::active_cell_iterator cell,
83 typename dealii::DoFHandler<dim>::active_cell_iterator neighbor_cell,
84 const dealii::types::global_dof_index current_cell_index,
85 const dealii::types::global_dof_index neighbor_cell_index,
90 const std::vector< double > &dual_int,
91 const std::vector< double > &dual_ext,
92 const std::pair<unsigned int, int> face_subface_int,
93 const std::pair<unsigned int, int> face_subface_ext,
94 const typename dealii::QProjector<dim>::DataSetDescriptor face_data_set_int,
95 const typename dealii::QProjector<dim>::DataSetDescriptor face_data_set_ext,
99 const dealii::FEFaceValuesBase<dim,dim> &fe_values_int,
100 const dealii::FEFaceValuesBase<dim,dim> &fe_values_ext,
102 const dealii::Quadrature<dim-1> &face_quadrature,
103 std::vector<real2> &rhs_int,
104 std::vector<real2> &rhs_ext,
105 real2 &dual_dot_residual,
106 const bool compute_dRdW,
const bool compute_dRdX,
const bool compute_d2R);
109 template <
typename adtype>
111 typename dealii::DoFHandler<dim>::active_cell_iterator cell,
112 const dealii::types::global_dof_index current_cell_index,
113 const std::vector<adtype> &soln_coeffs,
114 const dealii::Tensor<1,dim,std::vector<adtype>> &,
115 const std::vector<adtype> &metric_coeffs,
116 const std::vector<real> &local_dual,
117 const std::vector<dealii::types::global_dof_index> &soln_dofs_indices,
118 const std::vector<dealii::types::global_dof_index> &metric_dofs_indices,
119 const unsigned int poly_degree,
120 const unsigned int grid_degree,
129 std::array<std::vector<adtype>,dim> &,
130 dealii::hp::FEValues<dim,dim> &fe_values_collection_volume,
131 dealii::hp::FEValues<dim,dim> &fe_values_collection_volume_lagrange,
132 const dealii::FESystem<dim,dim> &fe_soln,
133 std::vector<adtype> &rhs,
134 dealii::Tensor<1,dim,std::vector<adtype>> &,
136 adtype &dual_dot_residual);
140 typename dealii::DoFHandler<dim>::active_cell_iterator cell,
141 const dealii::types::global_dof_index current_cell_index,
142 const std::vector<double> &soln_coeffs,
143 const dealii::Tensor<1,dim,std::vector<double>> &aux_soln_coeffs,
144 const std::vector<double> &metric_coeffs,
145 const std::vector<real> &local_dual,
146 const std::vector<dealii::types::global_dof_index> &soln_dofs_indices,
147 const std::vector<dealii::types::global_dof_index> &metric_dofs_indices,
148 const unsigned int poly_degree,
149 const unsigned int grid_degree,
157 std::array<std::vector<double>,dim> &mapping_support_points,
158 dealii::hp::FEValues<dim,dim> &fe_values_collection_volume,
159 dealii::hp::FEValues<dim,dim> &fe_values_collection_volume_lagrange,
160 const dealii::FESystem<dim,dim> &fe_soln,
161 std::vector<double> &rhs,
162 dealii::Tensor<1,dim,std::vector<double>> &local_auxiliary_RHS,
163 const bool compute_auxiliary_right_hand_side,
164 double &dual_dot_residual)
override 166 assemble_volume_term_and_build_operators_ad_templated<double>(
180 flux_basis_stiffness,
181 soln_basis_projection_oper_int,
182 soln_basis_projection_oper_ext,
185 mapping_support_points,
186 fe_values_collection_volume,
187 fe_values_collection_volume_lagrange,
191 compute_auxiliary_right_hand_side,
197 typename dealii::DoFHandler<dim>::active_cell_iterator cell,
198 const dealii::types::global_dof_index current_cell_index,
199 const std::vector<codi_JacobianComputationType> &soln_coeffs,
200 const dealii::Tensor<1,dim,std::vector<codi_JacobianComputationType>> &aux_soln_coeffs,
201 const std::vector<codi_JacobianComputationType> &metric_coeffs,
202 const std::vector<real> &local_dual,
203 const std::vector<dealii::types::global_dof_index> &soln_dofs_indices,
204 const std::vector<dealii::types::global_dof_index> &metric_dofs_indices,
205 const unsigned int poly_degree,
206 const unsigned int grid_degree,
214 std::array<std::vector<codi_JacobianComputationType>,dim> &mapping_support_points,
215 dealii::hp::FEValues<dim,dim> &fe_values_collection_volume,
216 dealii::hp::FEValues<dim,dim> &fe_values_collection_volume_lagrange,
217 const dealii::FESystem<dim,dim> &fe_soln,
218 std::vector<codi_JacobianComputationType> &rhs,
219 dealii::Tensor<1,dim,std::vector<codi_JacobianComputationType>> &local_auxiliary_RHS,
220 const bool compute_auxiliary_right_hand_side,
223 assemble_volume_term_and_build_operators_ad_templated<codi_JacobianComputationType>(
237 flux_basis_stiffness,
238 soln_basis_projection_oper_int,
239 soln_basis_projection_oper_ext,
242 mapping_support_points,
243 fe_values_collection_volume,
244 fe_values_collection_volume_lagrange,
248 compute_auxiliary_right_hand_side,
254 typename dealii::DoFHandler<dim>::active_cell_iterator cell,
255 const dealii::types::global_dof_index current_cell_index,
256 const std::vector<codi_HessianComputationType> &soln_coeffs,
257 const dealii::Tensor<1,dim,std::vector<codi_HessianComputationType>> &aux_soln_coeffs,
258 const std::vector<codi_HessianComputationType> &metric_coeffs,
259 const std::vector<real> &local_dual,
260 const std::vector<dealii::types::global_dof_index> &soln_dofs_indices,
261 const std::vector<dealii::types::global_dof_index> &metric_dofs_indices,
262 const unsigned int poly_degree,
263 const unsigned int grid_degree,
271 std::array<std::vector<codi_HessianComputationType>,dim> &mapping_support_points,
272 dealii::hp::FEValues<dim,dim> &fe_values_collection_volume,
273 dealii::hp::FEValues<dim,dim> &fe_values_collection_volume_lagrange,
274 const dealii::FESystem<dim,dim> &fe_soln,
275 std::vector<codi_HessianComputationType> &rhs,
276 dealii::Tensor<1,dim,std::vector<codi_HessianComputationType>> &local_auxiliary_RHS,
277 const bool compute_auxiliary_right_hand_side,
280 assemble_volume_term_and_build_operators_ad_templated<codi_HessianComputationType>(
294 flux_basis_stiffness,
295 soln_basis_projection_oper_int,
296 soln_basis_projection_oper_ext,
299 mapping_support_points,
300 fe_values_collection_volume,
301 fe_values_collection_volume_lagrange,
305 compute_auxiliary_right_hand_side,
310 template <
typename adtype>
312 typename dealii::DoFHandler<dim>::active_cell_iterator cell,
313 const dealii::types::global_dof_index current_cell_index,
314 const std::vector<adtype> &soln_coeffs,
315 const dealii::Tensor<1,dim,std::vector<adtype>> &,
316 const std::vector<adtype> &metric_coeffs,
317 const std::vector<real> &local_dual,
318 const unsigned int face_number,
319 const unsigned int boundary_id,
330 std::array<std::vector<adtype>,dim> &,
331 dealii::hp::FEFaceValues<dim,dim> &fe_values_collection_face_int,
332 const dealii::FESystem<dim,dim> &fe_soln,
334 std::vector<adtype> &rhs,
335 dealii::Tensor<1,dim,std::vector<adtype>> &,
337 adtype &dual_dot_residual);
341 typename dealii::DoFHandler<dim>::active_cell_iterator cell,
342 const dealii::types::global_dof_index current_cell_index,
343 const std::vector<double> &soln_coeffs,
344 const dealii::Tensor<1,dim,std::vector<double>> &aux_soln_coeffs,
345 const std::vector<double> &metric_coeffs,
346 const std::vector<real> &local_dual,
347 const unsigned int face_number,
348 const unsigned int boundary_id,
349 const unsigned int poly_degree,
350 const unsigned int grid_degree,
356 std::array<std::vector<double>,dim> &mapping_support_points,
357 dealii::hp::FEFaceValues<dim,dim> &fe_values_collection_face_int,
358 const dealii::FESystem<dim,dim> &fe_soln,
360 std::vector<double> &rhs,
361 dealii::Tensor<1,dim,std::vector<double>> &local_auxiliary_RHS,
362 const bool compute_auxiliary_right_hand_side,
363 double &dual_dot_residual)
override 365 assemble_boundary_term_and_build_operators_ad_templated<double>(
381 soln_basis_projection_oper_int,
384 mapping_support_points,
385 fe_values_collection_face_int,
390 compute_auxiliary_right_hand_side,
396 typename dealii::DoFHandler<dim>::active_cell_iterator cell,
397 const dealii::types::global_dof_index current_cell_index,
398 const std::vector<codi_JacobianComputationType> &soln_coeffs,
399 const dealii::Tensor<1,dim,std::vector<codi_JacobianComputationType>> &aux_soln_coeffs,
400 const std::vector<codi_JacobianComputationType> &metric_coeffs,
401 const std::vector<real> &local_dual,
402 const unsigned int face_number,
403 const unsigned int boundary_id,
404 const unsigned int poly_degree,
405 const unsigned int grid_degree,
411 std::array<std::vector<codi_JacobianComputationType>,dim> &mapping_support_points,
412 dealii::hp::FEFaceValues<dim,dim> &fe_values_collection_face_int,
413 const dealii::FESystem<dim,dim> &fe_soln,
415 std::vector<codi_JacobianComputationType> &rhs,
416 dealii::Tensor<1,dim,std::vector<codi_JacobianComputationType>> &local_auxiliary_RHS,
417 const bool compute_auxiliary_right_hand_side,
420 assemble_boundary_term_and_build_operators_ad_templated<codi_JacobianComputationType>(
436 soln_basis_projection_oper_int,
439 mapping_support_points,
440 fe_values_collection_face_int,
445 compute_auxiliary_right_hand_side,
451 typename dealii::DoFHandler<dim>::active_cell_iterator cell,
452 const dealii::types::global_dof_index current_cell_index,
453 const std::vector<codi_HessianComputationType> &soln_coeffs,
454 const dealii::Tensor<1,dim,std::vector<codi_HessianComputationType>> &aux_soln_coeffs,
455 const std::vector<codi_HessianComputationType> &metric_coeffs,
456 const std::vector<real> &local_dual,
457 const unsigned int face_number,
458 const unsigned int boundary_id,
459 const unsigned int poly_degree,
460 const unsigned int grid_degree,
466 std::array<std::vector<codi_HessianComputationType>,dim> &mapping_support_points,
467 dealii::hp::FEFaceValues<dim,dim> &fe_values_collection_face_int,
468 const dealii::FESystem<dim,dim> &fe_soln,
470 std::vector<codi_HessianComputationType> &rhs,
471 dealii::Tensor<1,dim,std::vector<codi_HessianComputationType>> &local_auxiliary_RHS,
472 const bool compute_auxiliary_right_hand_side,
475 assemble_boundary_term_and_build_operators_ad_templated<codi_HessianComputationType>(
491 soln_basis_projection_oper_int,
494 mapping_support_points,
495 fe_values_collection_face_int,
500 compute_auxiliary_right_hand_side,
505 template <
typename adtype>
507 typename dealii::DoFHandler<dim>::active_cell_iterator cell,
508 typename dealii::DoFHandler<dim>::active_cell_iterator neighbor_cell,
509 const dealii::types::global_dof_index current_cell_index,
510 const dealii::types::global_dof_index neighbor_cell_index,
511 const unsigned int iface,
512 const unsigned int neighbor_iface,
513 const std::vector<adtype> &soln_coeff_int,
514 const std::vector<adtype> &soln_coeff_ext,
515 const dealii::Tensor<1,dim,std::vector<adtype>> &,
516 const dealii::Tensor<1,dim,std::vector<adtype>> &,
517 const std::vector<adtype> &metric_coeff_int,
518 const std::vector<adtype> &metric_coeff_ext,
519 const std::vector< double > &dual_int,
520 const std::vector< double > &dual_ext,
535 std::array<std::vector<adtype>,dim> &,
539 dealii::hp::FEFaceValues<dim,dim> &fe_values_collection_face_int,
540 dealii::hp::FEFaceValues<dim,dim> &fe_values_collection_face_ext,
541 dealii::hp::FESubfaceValues<dim,dim> &fe_values_collection_subface,
542 const dealii::FESystem<dim,dim> &fe_int,
543 const dealii::FESystem<dim,dim> &fe_ext,
545 std::vector<adtype> &rhs_int,
546 std::vector<adtype> &rhs_ext,
547 dealii::Tensor<1,dim,std::vector<adtype>> &,
548 dealii::Tensor<1,dim,std::vector<adtype>> &,
550 adtype &dual_dot_residual,
551 const bool compute_dRdW,
const bool compute_dRdX,
const bool compute_d2R,
552 const bool is_a_subface,
553 const unsigned int neighbor_i_subface);
557 typename dealii::DoFHandler<dim>::active_cell_iterator cell,
558 typename dealii::DoFHandler<dim>::active_cell_iterator neighbor_cell,
559 const dealii::types::global_dof_index current_cell_index,
560 const dealii::types::global_dof_index neighbor_cell_index,
561 const unsigned int iface,
562 const unsigned int neighbor_iface,
563 const std::vector<double> &soln_coeff_int,
564 const std::vector<double> &soln_coeff_ext,
565 const dealii::Tensor<1,dim,std::vector<double>> &aux_soln_coeff_int,
566 const dealii::Tensor<1,dim,std::vector<double>> &aux_soln_coeff_ext,
567 const std::vector<double> &metric_coeff_int,
568 const std::vector<double> &metric_coeff_ext,
569 const std::vector< double > &dual_int,
570 const std::vector< double > &dual_ext,
571 const unsigned int poly_degree_int,
572 const unsigned int poly_degree_ext,
573 const unsigned int grid_degree_int,
574 const unsigned int grid_degree_ext,
585 std::array<std::vector<double>,dim> &mapping_support_points,
586 dealii::hp::FEFaceValues<dim,dim> &fe_values_collection_face_int,
587 dealii::hp::FEFaceValues<dim,dim> &fe_values_collection_face_ext,
588 dealii::hp::FESubfaceValues<dim,dim> &fe_values_collection_subface,
589 const dealii::FESystem<dim,dim> &fe_int,
590 const dealii::FESystem<dim,dim> &fe_ext,
592 std::vector<double> &rhs_int,
593 std::vector<double> &rhs_ext,
594 dealii::Tensor<1,dim,std::vector<double>> &aux_rhs_int,
595 dealii::Tensor<1,dim,std::vector<double>> &aux_rhs_ext,
596 const bool compute_auxiliary_right_hand_side,
597 double &dual_dot_residual,
598 const bool compute_dRdW,
const bool compute_dRdX,
const bool compute_d2R,
599 const bool is_a_subface,
600 const unsigned int neighbor_i_subface)
override 602 assemble_face_term_and_build_operators_ad_templated<double>(
625 flux_basis_stiffness,
626 soln_basis_projection_oper_int,
627 soln_basis_projection_oper_ext,
631 mapping_support_points,
635 fe_values_collection_face_int,
636 fe_values_collection_face_ext,
637 fe_values_collection_subface,
645 compute_auxiliary_right_hand_side,
647 compute_dRdW, compute_dRdX, compute_d2R,
654 typename dealii::DoFHandler<dim>::active_cell_iterator cell,
655 typename dealii::DoFHandler<dim>::active_cell_iterator neighbor_cell,
656 const dealii::types::global_dof_index current_cell_index,
657 const dealii::types::global_dof_index neighbor_cell_index,
658 const unsigned int iface,
659 const unsigned int neighbor_iface,
660 const std::vector<codi_JacobianComputationType> &soln_coeff_int,
661 const std::vector<codi_JacobianComputationType> &soln_coeff_ext,
662 const dealii::Tensor<1,dim,std::vector<codi_JacobianComputationType>> &aux_soln_coeff_int,
663 const dealii::Tensor<1,dim,std::vector<codi_JacobianComputationType>> &aux_soln_coeff_ext,
664 const std::vector<codi_JacobianComputationType> &metric_coeff_int,
665 const std::vector<codi_JacobianComputationType> &metric_coeff_ext,
666 const std::vector< double > &dual_int,
667 const std::vector< double > &dual_ext,
668 const unsigned int poly_degree_int,
669 const unsigned int poly_degree_ext,
670 const unsigned int grid_degree_int,
671 const unsigned int grid_degree_ext,
682 std::array<std::vector<codi_JacobianComputationType>,dim> &mapping_support_points,
683 dealii::hp::FEFaceValues<dim,dim> &fe_values_collection_face_int,
684 dealii::hp::FEFaceValues<dim,dim> &fe_values_collection_face_ext,
685 dealii::hp::FESubfaceValues<dim,dim> &fe_values_collection_subface,
686 const dealii::FESystem<dim,dim> &fe_int,
687 const dealii::FESystem<dim,dim> &fe_ext,
689 std::vector<codi_JacobianComputationType> &rhs_int,
690 std::vector<codi_JacobianComputationType> &rhs_ext,
691 dealii::Tensor<1,dim,std::vector<codi_JacobianComputationType>> &aux_rhs_int,
692 dealii::Tensor<1,dim,std::vector<codi_JacobianComputationType>> &aux_rhs_ext,
693 const bool compute_auxiliary_right_hand_side,
695 const bool compute_dRdW,
const bool compute_dRdX,
const bool compute_d2R,
696 const bool is_a_subface,
697 const unsigned int neighbor_i_subface)
override 699 assemble_face_term_and_build_operators_ad_templated<codi_JacobianComputationType>(
722 flux_basis_stiffness,
723 soln_basis_projection_oper_int,
724 soln_basis_projection_oper_ext,
728 mapping_support_points,
732 fe_values_collection_face_int,
733 fe_values_collection_face_ext,
734 fe_values_collection_subface,
742 compute_auxiliary_right_hand_side,
744 compute_dRdW, compute_dRdX, compute_d2R,
751 typename dealii::DoFHandler<dim>::active_cell_iterator cell,
752 typename dealii::DoFHandler<dim>::active_cell_iterator neighbor_cell,
753 const dealii::types::global_dof_index current_cell_index,
754 const dealii::types::global_dof_index neighbor_cell_index,
755 const unsigned int iface,
756 const unsigned int neighbor_iface,
757 const std::vector<codi_HessianComputationType> &soln_coeff_int,
758 const std::vector<codi_HessianComputationType> &soln_coeff_ext,
759 const dealii::Tensor<1,dim,std::vector<codi_HessianComputationType>> &aux_soln_coeff_int,
760 const dealii::Tensor<1,dim,std::vector<codi_HessianComputationType>> &aux_soln_coeff_ext,
761 const std::vector<codi_HessianComputationType> &metric_coeff_int,
762 const std::vector<codi_HessianComputationType> &metric_coeff_ext,
763 const std::vector< double > &dual_int,
764 const std::vector< double > &dual_ext,
765 const unsigned int poly_degree_int,
766 const unsigned int poly_degree_ext,
767 const unsigned int grid_degree_int,
768 const unsigned int grid_degree_ext,
779 std::array<std::vector<codi_HessianComputationType>,dim> &mapping_support_points,
780 dealii::hp::FEFaceValues<dim,dim> &fe_values_collection_face_int,
781 dealii::hp::FEFaceValues<dim,dim> &fe_values_collection_face_ext,
782 dealii::hp::FESubfaceValues<dim,dim> &fe_values_collection_subface,
783 const dealii::FESystem<dim,dim> &fe_int,
784 const dealii::FESystem<dim,dim> &fe_ext,
786 std::vector<codi_HessianComputationType> &rhs_int,
787 std::vector<codi_HessianComputationType> &rhs_ext,
788 dealii::Tensor<1,dim,std::vector<codi_HessianComputationType>> &aux_rhs_int,
789 dealii::Tensor<1,dim,std::vector<codi_HessianComputationType>> &aux_rhs_ext,
790 const bool compute_auxiliary_right_hand_side,
792 const bool compute_dRdW,
const bool compute_dRdX,
const bool compute_d2R,
793 const bool is_a_subface,
794 const unsigned int neighbor_i_subface)
override 796 assemble_face_term_and_build_operators_ad_templated<codi_HessianComputationType>(
819 flux_basis_stiffness,
820 soln_basis_projection_oper_int,
821 soln_basis_projection_oper_ext,
825 mapping_support_points,
829 fe_values_collection_face_int,
830 fe_values_collection_face_ext,
831 fe_values_collection_subface,
839 compute_auxiliary_right_hand_side,
841 compute_dRdW, compute_dRdX, compute_d2R,
849 typename dealii::DoFHandler<dim>::active_cell_iterator cell,
850 const dealii::types::global_dof_index current_cell_index,
851 const dealii::FEValues<dim,dim> &fe_values_volume,
852 const std::vector<dealii::types::global_dof_index> ¤t_dofs_indices,
853 const std::vector<dealii::types::global_dof_index> &metric_dof_indices,
854 const unsigned int poly_degree,
855 const unsigned int grid_degree,
856 dealii::Vector<real> ¤t_cell_rhs,
857 const dealii::FEValues<dim,dim> &fe_values_lagrange);
864 template <
typename adtype>
868 const std::vector<adtype> &,
871 std::array<std::vector<adtype>,dim> &)
877 const unsigned int poly_degree,
878 const unsigned int grid_degree,
879 const std::vector<double> &metric_coeffs,
882 std::array<std::vector<double>,dim> &mapping_support_points)
884 build_volume_metric_operators<double>(poly_degree, grid_degree, metric_coeffs, metric_oper, mapping_basis, mapping_support_points);
888 const unsigned int poly_degree,
889 const unsigned int grid_degree,
890 const std::vector<codi_JacobianComputationType> &metric_coeffs,
893 std::array<std::vector<codi_JacobianComputationType>,dim> &mapping_support_points)
895 build_volume_metric_operators<codi_JacobianComputationType>(poly_degree, grid_degree, metric_coeffs, metric_oper, mapping_basis, mapping_support_points);
899 const unsigned int poly_degree,
900 const unsigned int grid_degree,
901 const std::vector<codi_HessianComputationType> &metric_coeffs,
904 std::array<std::vector<codi_HessianComputationType>,dim> &mapping_support_points)
906 build_volume_metric_operators<codi_HessianComputationType>(poly_degree, grid_degree, metric_coeffs, metric_oper, mapping_basis, mapping_support_points);
codi::RealReverseIndexVec< dimReverseAD > codi_JacobianComputationType
Reverse mode type for Jacobian computation using TapeHelper.
void assemble_face_term_and_build_operators_ad(typename dealii::DoFHandler< dim >::active_cell_iterator cell, typename dealii::DoFHandler< dim >::active_cell_iterator neighbor_cell, const dealii::types::global_dof_index current_cell_index, const dealii::types::global_dof_index neighbor_cell_index, const unsigned int iface, const unsigned int neighbor_iface, const std::vector< codi_HessianComputationType > &soln_coeff_int, const std::vector< codi_HessianComputationType > &soln_coeff_ext, const dealii::Tensor< 1, dim, std::vector< codi_HessianComputationType >> &aux_soln_coeff_int, const dealii::Tensor< 1, dim, std::vector< codi_HessianComputationType >> &aux_soln_coeff_ext, const std::vector< codi_HessianComputationType > &metric_coeff_int, const std::vector< codi_HessianComputationType > &metric_coeff_ext, const std::vector< double > &dual_int, const std::vector< double > &dual_ext, const unsigned int poly_degree_int, const unsigned int poly_degree_ext, const unsigned int grid_degree_int, const unsigned int grid_degree_ext, OPERATOR::basis_functions< dim, 2 *dim > &soln_basis_int, OPERATOR::basis_functions< dim, 2 *dim > &soln_basis_ext, OPERATOR::basis_functions< dim, 2 *dim > &flux_basis_int, OPERATOR::basis_functions< dim, 2 *dim > &flux_basis_ext, OPERATOR::local_basis_stiffness< dim, 2 *dim > &flux_basis_stiffness, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_int, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_ext, OPERATOR::metric_operators< codi_HessianComputationType, dim, 2 *dim > &metric_oper_int, OPERATOR::metric_operators< codi_HessianComputationType, dim, 2 *dim > &metric_oper_ext, OPERATOR::mapping_shape_functions< dim, 2 *dim > &mapping_basis, std::array< std::vector< codi_HessianComputationType >, dim > &mapping_support_points, dealii::hp::FEFaceValues< dim, dim > &fe_values_collection_face_int, dealii::hp::FEFaceValues< dim, dim > &fe_values_collection_face_ext, dealii::hp::FESubfaceValues< dim, dim > &fe_values_collection_subface, const dealii::FESystem< dim, dim > &fe_int, const dealii::FESystem< dim, dim > &fe_ext, const real penalty, std::vector< codi_HessianComputationType > &rhs_int, std::vector< codi_HessianComputationType > &rhs_ext, dealii::Tensor< 1, dim, std::vector< codi_HessianComputationType >> &aux_rhs_int, dealii::Tensor< 1, dim, std::vector< codi_HessianComputationType >> &aux_rhs_ext, const bool compute_auxiliary_right_hand_side, codi_HessianComputationType &dual_dot_residual, const bool compute_dRdW, const bool compute_dRdX, const bool compute_d2R, const bool is_a_subface, const unsigned int neighbor_i_subface) override
Calls the function to assemble face residual. For codi_HessianComputationType.
void assemble_volume_term_explicit(typename dealii::DoFHandler< dim >::active_cell_iterator cell, const dealii::types::global_dof_index current_cell_index, const dealii::FEValues< dim, dim > &fe_values_volume, const std::vector< dealii::types::global_dof_index > ¤t_dofs_indices, const std::vector< dealii::types::global_dof_index > &metric_dof_indices, const unsigned int poly_degree, const unsigned int grid_degree, dealii::Vector< real > ¤t_cell_rhs, const dealii::FEValues< dim, dim > &fe_values_lagrange)
Evaluate the integral over the cell volume.
void assemble_face_term_and_build_operators_ad(typename dealii::DoFHandler< dim >::active_cell_iterator cell, typename dealii::DoFHandler< dim >::active_cell_iterator neighbor_cell, const dealii::types::global_dof_index current_cell_index, const dealii::types::global_dof_index neighbor_cell_index, const unsigned int iface, const unsigned int neighbor_iface, const std::vector< codi_JacobianComputationType > &soln_coeff_int, const std::vector< codi_JacobianComputationType > &soln_coeff_ext, const dealii::Tensor< 1, dim, std::vector< codi_JacobianComputationType >> &aux_soln_coeff_int, const dealii::Tensor< 1, dim, std::vector< codi_JacobianComputationType >> &aux_soln_coeff_ext, const std::vector< codi_JacobianComputationType > &metric_coeff_int, const std::vector< codi_JacobianComputationType > &metric_coeff_ext, const std::vector< double > &dual_int, const std::vector< double > &dual_ext, const unsigned int poly_degree_int, const unsigned int poly_degree_ext, const unsigned int grid_degree_int, const unsigned int grid_degree_ext, OPERATOR::basis_functions< dim, 2 *dim > &soln_basis_int, OPERATOR::basis_functions< dim, 2 *dim > &soln_basis_ext, OPERATOR::basis_functions< dim, 2 *dim > &flux_basis_int, OPERATOR::basis_functions< dim, 2 *dim > &flux_basis_ext, OPERATOR::local_basis_stiffness< dim, 2 *dim > &flux_basis_stiffness, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_int, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_ext, OPERATOR::metric_operators< codi_JacobianComputationType, dim, 2 *dim > &metric_oper_int, OPERATOR::metric_operators< codi_JacobianComputationType, dim, 2 *dim > &metric_oper_ext, OPERATOR::mapping_shape_functions< dim, 2 *dim > &mapping_basis, std::array< std::vector< codi_JacobianComputationType >, dim > &mapping_support_points, dealii::hp::FEFaceValues< dim, dim > &fe_values_collection_face_int, dealii::hp::FEFaceValues< dim, dim > &fe_values_collection_face_ext, dealii::hp::FESubfaceValues< dim, dim > &fe_values_collection_subface, const dealii::FESystem< dim, dim > &fe_int, const dealii::FESystem< dim, dim > &fe_ext, const real penalty, std::vector< codi_JacobianComputationType > &rhs_int, std::vector< codi_JacobianComputationType > &rhs_ext, dealii::Tensor< 1, dim, std::vector< codi_JacobianComputationType >> &aux_rhs_int, dealii::Tensor< 1, dim, std::vector< codi_JacobianComputationType >> &aux_rhs_ext, const bool compute_auxiliary_right_hand_side, codi_JacobianComputationType &dual_dot_residual, const bool compute_dRdW, const bool compute_dRdX, const bool compute_d2R, const bool is_a_subface, const unsigned int neighbor_i_subface) override
Calls the function to assemble face residual. For codi_JacobianComputationType.
Base class from which Advection, Diffusion, ConvectionDiffusion, and Euler is derived.
Class to store local solution coefficients and provide evaluation functions.
void build_volume_metric_operators(const unsigned int poly_degree, const unsigned int grid_degree, const std::vector< codi_HessianComputationType > &metric_coeffs, OPERATOR::metric_operators< codi_HessianComputationType, dim, 2 *dim > &metric_oper, OPERATOR::mapping_shape_functions< dim, 2 *dim > &mapping_basis, std::array< std::vector< codi_HessianComputationType >, dim > &mapping_support_points)
Builds volume metric operators (metric cofactor and determinant of metric Jacobian). Does nothing for weak DG. For codi_HessianComputationType.
Base class of numerical flux associated with dissipation.
Files for the baseline physics.
DGWeak class templated on the number of state variables.
void assemble_boundary_term_and_build_operators_ad(typename dealii::DoFHandler< dim >::active_cell_iterator cell, const dealii::types::global_dof_index current_cell_index, const std::vector< codi_HessianComputationType > &soln_coeffs, const dealii::Tensor< 1, dim, std::vector< codi_HessianComputationType >> &aux_soln_coeffs, const std::vector< codi_HessianComputationType > &metric_coeffs, const std::vector< real > &local_dual, const unsigned int face_number, const unsigned int boundary_id, const unsigned int poly_degree, const unsigned int grid_degree, OPERATOR::basis_functions< dim, 2 *dim > &soln_basis, OPERATOR::basis_functions< dim, 2 *dim > &flux_basis, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_int, OPERATOR::metric_operators< codi_HessianComputationType, dim, 2 *dim > &metric_oper, OPERATOR::mapping_shape_functions< dim, 2 *dim > &mapping_basis, std::array< std::vector< codi_HessianComputationType >, dim > &mapping_support_points, dealii::hp::FEFaceValues< dim, dim > &fe_values_collection_face_int, const dealii::FESystem< dim, dim > &fe_soln, const real penalty, std::vector< codi_HessianComputationType > &rhs, dealii::Tensor< 1, dim, std::vector< codi_HessianComputationType >> &local_auxiliary_RHS, const bool compute_auxiliary_right_hand_side, codi_HessianComputationType &dual_dot_residual) override
Calls the function to assemble boundary residual. For codi_HessianComputationType.
DGWeak(const Parameters::AllParameters *const parameters_input, const unsigned int degree, const unsigned int max_degree_input, const unsigned int grid_degree_input, const std::shared_ptr< Triangulation > triangulation_input)
Constructor.
void assemble_volume_term_and_build_operators_ad(typename dealii::DoFHandler< dim >::active_cell_iterator cell, const dealii::types::global_dof_index current_cell_index, const std::vector< codi_JacobianComputationType > &soln_coeffs, const dealii::Tensor< 1, dim, std::vector< codi_JacobianComputationType >> &aux_soln_coeffs, const std::vector< codi_JacobianComputationType > &metric_coeffs, const std::vector< real > &local_dual, const std::vector< dealii::types::global_dof_index > &soln_dofs_indices, const std::vector< dealii::types::global_dof_index > &metric_dofs_indices, const unsigned int poly_degree, const unsigned int grid_degree, OPERATOR::basis_functions< dim, 2 *dim > &soln_basis, OPERATOR::basis_functions< dim, 2 *dim > &flux_basis, OPERATOR::local_basis_stiffness< dim, 2 *dim > &flux_basis_stiffness, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_int, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_ext, OPERATOR::metric_operators< codi_JacobianComputationType, dim, 2 *dim > &metric_oper, OPERATOR::mapping_shape_functions< dim, 2 *dim > &mapping_basis, std::array< std::vector< codi_JacobianComputationType >, dim > &mapping_support_points, dealii::hp::FEValues< dim, dim > &fe_values_collection_volume, dealii::hp::FEValues< dim, dim > &fe_values_collection_volume_lagrange, const dealii::FESystem< dim, dim > &fe_soln, std::vector< codi_JacobianComputationType > &rhs, dealii::Tensor< 1, dim, std::vector< codi_JacobianComputationType >> &local_auxiliary_RHS, const bool compute_auxiliary_right_hand_side, codi_JacobianComputationType &dual_dot_residual) override
Calls the function to assemble volume residual. For codi_JacobianComputationType. ...
Main parameter class that contains the various other sub-parameter classes.
void assemble_boundary_term_and_build_operators_ad(typename dealii::DoFHandler< dim >::active_cell_iterator cell, const dealii::types::global_dof_index current_cell_index, const std::vector< codi_JacobianComputationType > &soln_coeffs, const dealii::Tensor< 1, dim, std::vector< codi_JacobianComputationType >> &aux_soln_coeffs, const std::vector< codi_JacobianComputationType > &metric_coeffs, const std::vector< real > &local_dual, const unsigned int face_number, const unsigned int boundary_id, const unsigned int poly_degree, const unsigned int grid_degree, OPERATOR::basis_functions< dim, 2 *dim > &soln_basis, OPERATOR::basis_functions< dim, 2 *dim > &flux_basis, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_int, OPERATOR::metric_operators< codi_JacobianComputationType, dim, 2 *dim > &metric_oper, OPERATOR::mapping_shape_functions< dim, 2 *dim > &mapping_basis, std::array< std::vector< codi_JacobianComputationType >, dim > &mapping_support_points, dealii::hp::FEFaceValues< dim, dim > &fe_values_collection_face_int, const dealii::FESystem< dim, dim > &fe_soln, const real penalty, std::vector< codi_JacobianComputationType > &rhs, dealii::Tensor< 1, dim, std::vector< codi_JacobianComputationType >> &local_auxiliary_RHS, const bool compute_auxiliary_right_hand_side, codi_JacobianComputationType &dual_dot_residual) override
Calls the function to assemble boundary residual. For codi_JacobianComputationType.
void assemble_auxiliary_residual(const bool, const bool, const bool)
Assembles the auxiliary equations' residuals and solves for the auxiliary variables.
Base metric operators class that stores functions used in both the volume and on surface.
void assemble_boundary_term_and_build_operators_ad_templated(typename dealii::DoFHandler< dim >::active_cell_iterator cell, const dealii::types::global_dof_index current_cell_index, const std::vector< adtype > &soln_coeffs, const dealii::Tensor< 1, dim, std::vector< adtype >> &, const std::vector< adtype > &metric_coeffs, const std::vector< real > &local_dual, const unsigned int face_number, const unsigned int boundary_id, const Physics::PhysicsBase< dim, nspecies, nstate, adtype > &physics, const NumericalFlux::NumericalFluxConvective< dim, nspecies, nstate, adtype > &conv_num_flux, const NumericalFlux::NumericalFluxDissipative< dim, nspecies, nstate, adtype > &diss_num_flux, const unsigned int, const unsigned int, OPERATOR::basis_functions< dim, 2 *dim > &, OPERATOR::basis_functions< dim, 2 *dim > &, OPERATOR::vol_projection_operator< dim, 2 *dim > &, OPERATOR::metric_operators< adtype, dim, 2 *dim > &, OPERATOR::mapping_shape_functions< dim, 2 *dim > &, std::array< std::vector< adtype >, dim > &, dealii::hp::FEFaceValues< dim, dim > &fe_values_collection_face_int, const dealii::FESystem< dim, dim > &fe_soln, const real penalty, std::vector< adtype > &rhs, dealii::Tensor< 1, dim, std::vector< adtype >> &, const bool, adtype &dual_dot_residual)
Calls the function to assemble boundary residual.
The mapping shape functions evaluated at the desired nodes (facet set included in volume grid nodes f...
Base class of numerical flux associated with convection.
void build_volume_metric_operators(const unsigned int poly_degree, const unsigned int grid_degree, const std::vector< codi_JacobianComputationType > &metric_coeffs, OPERATOR::metric_operators< codi_JacobianComputationType, dim, 2 *dim > &metric_oper, OPERATOR::mapping_shape_functions< dim, 2 *dim > &mapping_basis, std::array< std::vector< codi_JacobianComputationType >, dim > &mapping_support_points)
Builds volume metric operators (metric cofactor and determinant of metric Jacobian). Does nothing for weak DG. For codi_JacobianComputationType.
void assemble_volume_term_and_build_operators_ad(typename dealii::DoFHandler< dim >::active_cell_iterator cell, const dealii::types::global_dof_index current_cell_index, const std::vector< double > &soln_coeffs, const dealii::Tensor< 1, dim, std::vector< double >> &aux_soln_coeffs, const std::vector< double > &metric_coeffs, const std::vector< real > &local_dual, const std::vector< dealii::types::global_dof_index > &soln_dofs_indices, const std::vector< dealii::types::global_dof_index > &metric_dofs_indices, const unsigned int poly_degree, const unsigned int grid_degree, OPERATOR::basis_functions< dim, 2 *dim > &soln_basis, OPERATOR::basis_functions< dim, 2 *dim > &flux_basis, OPERATOR::local_basis_stiffness< dim, 2 *dim > &flux_basis_stiffness, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_int, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_ext, OPERATOR::metric_operators< double, dim, 2 *dim > &metric_oper, OPERATOR::mapping_shape_functions< dim, 2 *dim > &mapping_basis, std::array< std::vector< double >, dim > &mapping_support_points, dealii::hp::FEValues< dim, dim > &fe_values_collection_volume, dealii::hp::FEValues< dim, dim > &fe_values_collection_volume_lagrange, const dealii::FESystem< dim, dim > &fe_soln, std::vector< double > &rhs, dealii::Tensor< 1, dim, std::vector< double >> &local_auxiliary_RHS, const bool compute_auxiliary_right_hand_side, double &dual_dot_residual) override
Calls the function to assemble volume residual. For double type.
void assemble_volume_term_and_build_operators_ad_templated(typename dealii::DoFHandler< dim >::active_cell_iterator cell, const dealii::types::global_dof_index current_cell_index, const std::vector< adtype > &soln_coeffs, const dealii::Tensor< 1, dim, std::vector< adtype >> &, const std::vector< adtype > &metric_coeffs, const std::vector< real > &local_dual, const std::vector< dealii::types::global_dof_index > &soln_dofs_indices, const std::vector< dealii::types::global_dof_index > &metric_dofs_indices, const unsigned int poly_degree, const unsigned int grid_degree, const Physics::PhysicsBase< dim, nspecies, nstate, adtype > &physics, OPERATOR::basis_functions< dim, 2 *dim > &, OPERATOR::basis_functions< dim, 2 *dim > &, OPERATOR::local_basis_stiffness< dim, 2 *dim > &, OPERATOR::vol_projection_operator< dim, 2 *dim > &, OPERATOR::vol_projection_operator< dim, 2 *dim > &, OPERATOR::metric_operators< adtype, dim, 2 *dim > &, OPERATOR::mapping_shape_functions< dim, 2 *dim > &, std::array< std::vector< adtype >, dim > &, dealii::hp::FEValues< dim, dim > &fe_values_collection_volume, dealii::hp::FEValues< dim, dim > &fe_values_collection_volume_lagrange, const dealii::FESystem< dim, dim > &fe_soln, std::vector< adtype > &rhs, dealii::Tensor< 1, dim, std::vector< adtype >> &, const bool, adtype &dual_dot_residual)
Calls the function to assemble volume residual.
void assemble_face_term_and_build_operators_ad(typename dealii::DoFHandler< dim >::active_cell_iterator cell, typename dealii::DoFHandler< dim >::active_cell_iterator neighbor_cell, const dealii::types::global_dof_index current_cell_index, const dealii::types::global_dof_index neighbor_cell_index, const unsigned int iface, const unsigned int neighbor_iface, const std::vector< double > &soln_coeff_int, const std::vector< double > &soln_coeff_ext, const dealii::Tensor< 1, dim, std::vector< double >> &aux_soln_coeff_int, const dealii::Tensor< 1, dim, std::vector< double >> &aux_soln_coeff_ext, const std::vector< double > &metric_coeff_int, const std::vector< double > &metric_coeff_ext, const std::vector< double > &dual_int, const std::vector< double > &dual_ext, const unsigned int poly_degree_int, const unsigned int poly_degree_ext, const unsigned int grid_degree_int, const unsigned int grid_degree_ext, OPERATOR::basis_functions< dim, 2 *dim > &soln_basis_int, OPERATOR::basis_functions< dim, 2 *dim > &soln_basis_ext, OPERATOR::basis_functions< dim, 2 *dim > &flux_basis_int, OPERATOR::basis_functions< dim, 2 *dim > &flux_basis_ext, OPERATOR::local_basis_stiffness< dim, 2 *dim > &flux_basis_stiffness, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_int, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_ext, OPERATOR::metric_operators< double, dim, 2 *dim > &metric_oper_int, OPERATOR::metric_operators< double, dim, 2 *dim > &metric_oper_ext, OPERATOR::mapping_shape_functions< dim, 2 *dim > &mapping_basis, std::array< std::vector< double >, dim > &mapping_support_points, dealii::hp::FEFaceValues< dim, dim > &fe_values_collection_face_int, dealii::hp::FEFaceValues< dim, dim > &fe_values_collection_face_ext, dealii::hp::FESubfaceValues< dim, dim > &fe_values_collection_subface, const dealii::FESystem< dim, dim > &fe_int, const dealii::FESystem< dim, dim > &fe_ext, const real penalty, std::vector< double > &rhs_int, std::vector< double > &rhs_ext, dealii::Tensor< 1, dim, std::vector< double >> &aux_rhs_int, dealii::Tensor< 1, dim, std::vector< double >> &aux_rhs_ext, const bool compute_auxiliary_right_hand_side, double &dual_dot_residual, const bool compute_dRdW, const bool compute_dRdX, const bool compute_d2R, const bool is_a_subface, const unsigned int neighbor_i_subface) override
Calls the function to assemble face residual. For double type.
void assemble_boundary_term(typename dealii::DoFHandler< dim >::active_cell_iterator cell, const dealii::types::global_dof_index current_cell_index, const LocalSolution< real2, dim, nspecies, nstate > &local_solution, const LocalSolution< real2, dim, nspecies, dim > &local_metric, const std::vector< real > &local_dual, const unsigned int face_number, const unsigned int boundary_id, const Physics::PhysicsBase< dim, nspecies, nstate, real2 > &physics, const NumericalFlux::NumericalFluxConvective< dim, nspecies, nstate, real2 > &conv_num_flux, const NumericalFlux::NumericalFluxDissipative< dim, nspecies, nstate, real2 > &diss_num_flux, const dealii::FEFaceValuesBase< dim, dim > &fe_values_boundary, const real penalty, const dealii::Quadrature< dim-1 > &quadrature, std::vector< real2 > &rhs, real2 &dual_dot_residual, const bool compute_metric_derivatives)
Main function responsible for evaluating the boundary integral and the specified derivatives.
typename DGBase< dim, nspecies, real, MeshType >::Triangulation Triangulation
Alias to base class Triangulation.
void build_volume_metric_operators(const unsigned int, const unsigned int, const std::vector< adtype > &, OPERATOR::metric_operators< adtype, dim, 2 *dim > &, OPERATOR::mapping_shape_functions< dim, 2 *dim > &, std::array< std::vector< adtype >, dim > &)
< Parallel std::cout that only outputs on mpi_rank==0
Abstract class templated on the number of state variables.
codi::RealReversePrimalIndexGen< codi::RealForwardVec< dimForwardAD >, codi::Direction< codi::RealForwardVec< dimForwardAD >, dimReverseAD > > codi_HessianComputationType
Nested reverse-forward mode type for Jacobian and Hessian computation using TapeHelper.
void assemble_volume_term(typename dealii::DoFHandler< dim >::active_cell_iterator cell, const dealii::types::global_dof_index current_cell_index, const LocalSolution< real2, dim, nspecies, nstate > &local_solution, const LocalSolution< real2, dim, nspecies, dim > &local_metric, const std::vector< real > &local_dual, const dealii::Quadrature< dim > &quadrature, const Physics::PhysicsBase< dim, nspecies, nstate, real2 > &physics, std::vector< real2 > &rhs, real2 &dual_dot_residual, const bool compute_metric_derivatives, const dealii::FEValues< dim, dim > &fe_values_vol)
Main function responsible for evaluating the integral over the cell volume and the specified derivati...
void allocate_dual_vector(const bool compute_d2R)
Allocate the dual vector for optimization.
void assemble_face_term_and_build_operators_ad_templated(typename dealii::DoFHandler< dim >::active_cell_iterator cell, typename dealii::DoFHandler< dim >::active_cell_iterator neighbor_cell, const dealii::types::global_dof_index current_cell_index, const dealii::types::global_dof_index neighbor_cell_index, const unsigned int iface, const unsigned int neighbor_iface, const std::vector< adtype > &soln_coeff_int, const std::vector< adtype > &soln_coeff_ext, const dealii::Tensor< 1, dim, std::vector< adtype >> &, const dealii::Tensor< 1, dim, std::vector< adtype >> &, const std::vector< adtype > &metric_coeff_int, const std::vector< adtype > &metric_coeff_ext, const std::vector< double > &dual_int, const std::vector< double > &dual_ext, const unsigned int, const unsigned int, const unsigned int, const unsigned int, OPERATOR::basis_functions< dim, 2 *dim > &, OPERATOR::basis_functions< dim, 2 *dim > &, OPERATOR::basis_functions< dim, 2 *dim > &, OPERATOR::basis_functions< dim, 2 *dim > &, OPERATOR::local_basis_stiffness< dim, 2 *dim > &, OPERATOR::vol_projection_operator< dim, 2 *dim > &, OPERATOR::vol_projection_operator< dim, 2 *dim > &, OPERATOR::metric_operators< adtype, dim, 2 *dim > &, OPERATOR::metric_operators< adtype, dim, 2 *dim > &, OPERATOR::mapping_shape_functions< dim, 2 *dim > &, std::array< std::vector< adtype >, dim > &, const Physics::PhysicsBase< dim, nspecies, nstate, adtype > &physics, const NumericalFlux::NumericalFluxConvective< dim, nspecies, nstate, adtype > &conv_num_flux, const NumericalFlux::NumericalFluxDissipative< dim, nspecies, nstate, adtype > &diss_num_flux, dealii::hp::FEFaceValues< dim, dim > &fe_values_collection_face_int, dealii::hp::FEFaceValues< dim, dim > &fe_values_collection_face_ext, dealii::hp::FESubfaceValues< dim, dim > &fe_values_collection_subface, const dealii::FESystem< dim, dim > &fe_int, const dealii::FESystem< dim, dim > &fe_ext, const real penalty, std::vector< adtype > &rhs_int, std::vector< adtype > &rhs_ext, dealii::Tensor< 1, dim, std::vector< adtype >> &, dealii::Tensor< 1, dim, std::vector< adtype >> &, const bool, adtype &dual_dot_residual, const bool compute_dRdW, const bool compute_dRdX, const bool compute_d2R, const bool is_a_subface, const unsigned int neighbor_i_subface)
Calls the function to assemble face residual.
void build_volume_metric_operators(const unsigned int poly_degree, const unsigned int grid_degree, const std::vector< double > &metric_coeffs, OPERATOR::metric_operators< double, dim, 2 *dim > &metric_oper, OPERATOR::mapping_shape_functions< dim, 2 *dim > &mapping_basis, std::array< std::vector< double >, dim > &mapping_support_points)
Builds volume metric operators (metric cofactor and determinant of metric Jacobian). Does nothing for weak DG. For double type.
void assemble_face_term(typename dealii::DoFHandler< dim >::active_cell_iterator cell, typename dealii::DoFHandler< dim >::active_cell_iterator neighbor_cell, const dealii::types::global_dof_index current_cell_index, const dealii::types::global_dof_index neighbor_cell_index, const LocalSolution< real2, dim, nspecies, nstate > &soln_int, const LocalSolution< real2, dim, nspecies, nstate > &soln_ext, const LocalSolution< real2, dim, nspecies, dim > &metric_int, const LocalSolution< real2, dim, nspecies, dim > &metric_ext, const std::vector< double > &dual_int, const std::vector< double > &dual_ext, const std::pair< unsigned int, int > face_subface_int, const std::pair< unsigned int, int > face_subface_ext, const typename dealii::QProjector< dim >::DataSetDescriptor face_data_set_int, const typename dealii::QProjector< dim >::DataSetDescriptor face_data_set_ext, const Physics::PhysicsBase< dim, nspecies, nstate, real2 > &physics, const NumericalFlux::NumericalFluxConvective< dim, nspecies, nstate, real2 > &conv_num_flux, const NumericalFlux::NumericalFluxDissipative< dim, nspecies, nstate, real2 > &diss_num_flux, const dealii::FEFaceValuesBase< dim, dim > &fe_values_int, const dealii::FEFaceValuesBase< dim, dim > &fe_values_ext, const real penalty, const dealii::Quadrature< dim-1 > &face_quadrature, std::vector< real2 > &rhs_int, std::vector< real2 > &rhs_ext, real2 &dual_dot_residual, const bool compute_dRdW, const bool compute_dRdX, const bool compute_d2R)
Main function responsible for evaluating the internal face integral and the specified derivatives...
void assemble_volume_term_and_build_operators_ad(typename dealii::DoFHandler< dim >::active_cell_iterator cell, const dealii::types::global_dof_index current_cell_index, const std::vector< codi_HessianComputationType > &soln_coeffs, const dealii::Tensor< 1, dim, std::vector< codi_HessianComputationType >> &aux_soln_coeffs, const std::vector< codi_HessianComputationType > &metric_coeffs, const std::vector< real > &local_dual, const std::vector< dealii::types::global_dof_index > &soln_dofs_indices, const std::vector< dealii::types::global_dof_index > &metric_dofs_indices, const unsigned int poly_degree, const unsigned int grid_degree, OPERATOR::basis_functions< dim, 2 *dim > &soln_basis, OPERATOR::basis_functions< dim, 2 *dim > &flux_basis, OPERATOR::local_basis_stiffness< dim, 2 *dim > &flux_basis_stiffness, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_int, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_ext, OPERATOR::metric_operators< codi_HessianComputationType, dim, 2 *dim > &metric_oper, OPERATOR::mapping_shape_functions< dim, 2 *dim > &mapping_basis, std::array< std::vector< codi_HessianComputationType >, dim > &mapping_support_points, dealii::hp::FEValues< dim, dim > &fe_values_collection_volume, dealii::hp::FEValues< dim, dim > &fe_values_collection_volume_lagrange, const dealii::FESystem< dim, dim > &fe_soln, std::vector< codi_HessianComputationType > &rhs, dealii::Tensor< 1, dim, std::vector< codi_HessianComputationType >> &local_auxiliary_RHS, const bool compute_auxiliary_right_hand_side, codi_HessianComputationType &dual_dot_residual) override
Calls the function to assemble volume residual. For codi_HessianComputationType.
DGBase is independent of the number of state variables.
Projection operator corresponding to basis functions onto M-norm (L2).
Local stiffness matrix without jacobian dependence.
void assemble_boundary_term_and_build_operators_ad(typename dealii::DoFHandler< dim >::active_cell_iterator cell, const dealii::types::global_dof_index current_cell_index, const std::vector< double > &soln_coeffs, const dealii::Tensor< 1, dim, std::vector< double >> &aux_soln_coeffs, const std::vector< double > &metric_coeffs, const std::vector< real > &local_dual, const unsigned int face_number, const unsigned int boundary_id, const unsigned int poly_degree, const unsigned int grid_degree, OPERATOR::basis_functions< dim, 2 *dim > &soln_basis, OPERATOR::basis_functions< dim, 2 *dim > &flux_basis, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_int, OPERATOR::metric_operators< double, dim, 2 *dim > &metric_oper, OPERATOR::mapping_shape_functions< dim, 2 *dim > &mapping_basis, std::array< std::vector< double >, dim > &mapping_support_points, dealii::hp::FEFaceValues< dim, dim > &fe_values_collection_face_int, const dealii::FESystem< dim, dim > &fe_soln, const real penalty, std::vector< double > &rhs, dealii::Tensor< 1, dim, std::vector< double >> &local_auxiliary_RHS, const bool compute_auxiliary_right_hand_side, double &dual_dot_residual) override
Calls the function to assemble boundary residual. For double type.