diff --git a/generate_all_hyteg_forms.py b/generate_all_hyteg_forms.py index 16b7bfdf39cb4183afa406ed4eed573360300064..32943ca3f21919b48da67e6b409231d728debc57 100644 --- a/generate_all_hyteg_forms.py +++ b/generate_all_hyteg_forms.py @@ -114,6 +114,9 @@ class FormInfo: test_degree: int trial_family: str = "Lagrange" test_family: str = "Lagrange" + supported_geometry_options: List[str] = field( + default_factory=lambda: ["triangle", "tetrahedron"] + ) quad_schemes: Dict[int, Union[int, str]] = field( default_factory=lambda: {2: 2, 3: 2} ) @@ -138,24 +141,24 @@ class FormInfo: descr_string = "n1e1" elif self.trial_family == "P2 enhanced with Bubble": if self.test_family == "P2 enhanced with Bubble": - descr_string = "p2_plus_bubble" + descr_string = "p2_plus_bubble" elif self.test_family == "DG": - descr_string = f"p2_plus_bubble_to_dg{self.test_degree}" + descr_string = f"p2_plus_bubble_to_dg{self.test_degree}" elif self.trial_family == "Lagrange" and self.test_family == "Lagrange": if self.trial_degree == self.test_degree: - descr_string = f"p{self.trial_degree}" + descr_string = f"p{self.trial_degree}" else: - descr_string = f"p{self.trial_degree}_to_p{self.test_degree}" + descr_string = f"p{self.trial_degree}_to_p{self.test_degree}" elif self.trial_family == "DG": if self.test_family == "DG": if self.trial_degree == self.test_degree: - descr_string = f"dg{self.trial_degree}" + descr_string = f"dg{self.trial_degree}" else: - descr_string = f"dg{self.trial_degree}_to_dg{self.test_degree}" + descr_string = f"dg{self.trial_degree}_to_dg{self.test_degree}" elif self.test_family == "Lagrange": - descr_string = f"dg{self.trial_degree}_to_p{self.test_degree}" + descr_string = f"dg{self.trial_degree}_to_p{self.test_degree}" elif self.test_family == "P2 enhanced with Bubble": - descr_string = f"dg{self.trial_degree}_to_p2_plus_bubble" + descr_string = f"dg{self.trial_degree}_to_p2_plus_bubble" else: raise HOGException( f"Do not know how to name combination of DGFunctionSpace with {self.test_family}." @@ -312,6 +315,7 @@ form_infos = [ test_degree=1, trial_family="N1E1", test_family="N1E1", + supported_geometry_options=["tetrahedron"], quad_schemes={3: 2}, integrate_rows=[], ), @@ -321,6 +325,7 @@ form_infos = [ test_degree=1, trial_family="N1E1", test_family="N1E1", + supported_geometry_options=["tetrahedron"], quad_schemes={3: "exact"}, integrate_rows=[], ), @@ -330,6 +335,7 @@ form_infos = [ test_degree=1, trial_family="N1E1", test_family="N1E1", + supported_geometry_options=["tetrahedron"], quad_schemes={3: 2}, blending=ExternalMap(), integrate_rows=[], @@ -340,6 +346,7 @@ form_infos = [ test_degree=2, trial_family="P2 enhanced with Bubble", test_family="P2 enhanced with Bubble", + supported_geometry_options=["triangle"], quad_schemes={2: "exact"}, integrate_rows=[], ), @@ -349,6 +356,7 @@ form_infos = [ test_degree=1, trial_family="N1E1", test_family="N1E1", + supported_geometry_options=["tetrahedron"], quad_schemes={3: 0}, integrate_rows=[], ), @@ -358,6 +366,7 @@ form_infos = [ test_degree=1, trial_family="N1E1", test_family="N1E1", + supported_geometry_options=["tetrahedron"], quad_schemes={3: 2}, blending=ExternalMap(), integrate_rows=[], @@ -473,6 +482,7 @@ form_infos = [ test_degree=1, trial_family="N1E1", test_family="N1E1", + supported_geometry_options=["tetrahedron"], quad_schemes={3: 6}, description="Implements a linear form of type: (k(x), psi) where psi a test function and k = k(x) a vectorial, external function.", integrate_rows=[], @@ -483,6 +493,7 @@ form_infos = [ test_degree=1, trial_family="N1E1", test_family="N1E1", + supported_geometry_options=["tetrahedron"], quad_schemes={3: 6}, blending=ExternalMap(), description="Implements a linear form of type: (k(x), psi) where psi a test function and k = k(x) a vectorial, external function.", @@ -506,20 +517,29 @@ form_infos = [ "laplace_beltrami", trial_degree=1, test_degree=1, + supported_geometry_options=["embedded_triangle"], quad_schemes={3: 1}, ), FormInfo( "laplace_beltrami", trial_degree=1, test_degree=1, + supported_geometry_options=["embedded_triangle"], quad_schemes={3: 3}, blending=ExternalMap(), ), - FormInfo("manifold_mass", trial_degree=1, test_degree=1, quad_schemes={2: 1}), FormInfo( "manifold_mass", trial_degree=1, test_degree=1, + supported_geometry_options=["embedded_triangle"], + quad_schemes={2: 1}, + ), + FormInfo( + "manifold_mass", + trial_degree=1, + test_degree=1, + supported_geometry_options=["embedded_triangle"], quad_schemes={2: 3}, blending=ExternalMap(), ), @@ -668,6 +688,7 @@ for trial_deg, test_deg, transpose in [ test_degree=test_deg, trial_family="P2 enhanced with Bubble", test_family="DG", + supported_geometry_options=["triangle"], quad_schemes={ 2: 3 + test_deg - 1, 3: 4 + test_deg - 1, @@ -686,6 +707,7 @@ for trial_deg, test_deg, transpose in [ test_degree=test_deg, trial_family="DG", test_family="P2 enhanced with Bubble", + supported_geometry_options=["triangle"], quad_schemes={ 2: trial_deg + 3 - 1, 3: trial_deg + 4 - 1, @@ -703,6 +725,7 @@ for blending in [IdentityMap(), ExternalMap()]: "manifold_vector_mass", trial_degree=2, test_degree=2, + supported_geometry_options=["embedded_triangle"], quad_schemes={2: 3}, row_dim=3, col_dim=3, @@ -716,6 +739,7 @@ for blending in [IdentityMap(), ExternalMap()]: "manifold_normal_penalty", trial_degree=2, test_degree=2, + supported_geometry_options=["embedded_triangle"], quad_schemes={2: 3}, row_dim=3, col_dim=3, @@ -729,6 +753,7 @@ for blending in [IdentityMap(), ExternalMap()]: "manifold_epsilon", trial_degree=2, test_degree=2, + supported_geometry_options=["embedded_triangle"], quad_schemes={2: 3}, row_dim=3, col_dim=3, @@ -742,6 +767,7 @@ for blending in [IdentityMap(), ExternalMap()]: "manifold_epsilon", trial_degree=2, test_degree=2, + supported_geometry_options=["embedded_triangle"], quad_schemes={2: 6}, row_dim=3, col_dim=3, @@ -755,6 +781,7 @@ for blending in [IdentityMap(), ExternalMap()]: "vector_laplace_beltrami", trial_degree=2, test_degree=2, + supported_geometry_options=["embedded_triangle"], quad_schemes={2: 3}, row_dim=3, col_dim=3, @@ -771,6 +798,7 @@ for trial_deg, test_deg, transpose in [(1, 2, True), (2, 1, False)]: "manifold_div", trial_degree=trial_deg, test_degree=test_deg, + supported_geometry_options=["embedded_triangle"], quad_schemes={2: 3}, row_dim=1, col_dim=3, @@ -784,6 +812,7 @@ for trial_deg, test_deg, transpose in [(1, 2, True), (2, 1, False)]: "manifold_divt", trial_degree=trial_deg, test_degree=test_deg, + supported_geometry_options=["embedded_triangle"], quad_schemes={2: 3}, row_dim=3, col_dim=1, @@ -805,6 +834,7 @@ for trial_deg, test_deg, transpose in [ "manifold_vector_div", trial_degree=trial_deg, test_degree=test_deg, + supported_geometry_options=["embedded_triangle"], quad_schemes={2: 3}, row_dim=1, col_dim=3, @@ -818,6 +848,7 @@ for trial_deg, test_deg, transpose in [ "manifold_vector_divt", trial_degree=trial_deg, test_degree=test_deg, + supported_geometry_options=["embedded_triangle"], quad_schemes={2: 3}, row_dim=3, col_dim=1, @@ -1050,7 +1081,12 @@ def parse_arguments(): type=str, help="build form(s) only for triangle (2D), tetrahedron (3D) elements or embedded triangles (manifolds); if not speficied we do triangle and tetrahedron", nargs="?", - choices=["triangle", "tetrahedron", "triangle+tetrahedron", "embedded_triangle"], + choices=[ + "triangle", + "tetrahedron", + "triangle+tetrahedron", + "embedded_triangle", + ], default="triangle+tetrahedron", ) parser.add_argument(