diff --git a/hog/forms.py b/hog/forms.py index fc9563c6386444f823141f8b221bae1237d41a9b..f3219739fc9d2ee816b25169a2a49f3bd9c74796 100644 --- a/hog/forms.py +++ b/hog/forms.py @@ -341,6 +341,8 @@ where ε(w) := (1/2) (∇w + (∇w)ᵀ) """ + + if not variable_viscosity: raise HOGException("Constant viscosity currently not supported.") diff --git a/hog/integrand.py b/hog/integrand.py index 7bc26c75f045929029a6840732e884cd6b1890e2..516d83b9aec42c9a2662949e512dcc5d41a69ccb 100644 --- a/hog/integrand.py +++ b/hog/integrand.py @@ -503,7 +503,7 @@ def process_integrand( if rotation_wrapper: if not trial.is_vectorial: - raise HOGException("Nope") + raise HOGException("Rotation wrapper can only work with vectorial spaces") from hog.recipes.integrands.volume.rotation import rotation_matrix @@ -540,6 +540,22 @@ def process_integrand( volume_geometry, ) + docstring += f""" + +And the assembled FE matrix (K) is wrapped with a Rotation matrix (R) locally as below, + + RKRᵀ uᵣ = Rf + +where + R : Rotation matrix calculated with the normal vector (n̂) at the DoF + uᵣ: FE function but the components rotated at the boundaries according to the normal FE function passed + + n̂ : normals (vectorial space: {normal_fspace}) + * The passed normal vector must be normalized + * The radial component of the rotated vector will be pointing in the given normal direction + * If the normals are zero at a DoF, the rotation matrix is identity matrix + """ + return Form( mat, tabulation,