22
22
23
23
class QuadratureFunction :
24
24
"""An abstract class for functions defined at quadrature points"""
25
-
26
25
def __init__ (self , name , shape , hypothesis ):
27
26
self .shape = shape
28
27
self .name = name
@@ -31,8 +30,10 @@ def __init__(self, name, shape, hypothesis):
31
30
def initialize_function (self , mesh , quadrature_degree ):
32
31
self .quadrature_degree = quadrature_degree
33
32
self .mesh = mesh
34
- self .dx = Measure ("dx" , metadata = {"quadrature_degree" : quadrature_degree })
35
- We = get_quadrature_element (mesh .ufl_cell (), quadrature_degree , self .shape )
33
+ self .dx = Measure ("dx" ,
34
+ metadata = {"quadrature_degree" : quadrature_degree })
35
+ We = get_quadrature_element (mesh .ufl_cell (), quadrature_degree ,
36
+ self .shape )
36
37
self .function_space = FunctionSpace (mesh , We )
37
38
self .function = Function (self .function_space , name = self .name )
38
39
@@ -65,13 +66,12 @@ def project_on(self, space, degree, as_tensor=False, **kwargs):
65
66
V = VectorFunctionSpace (self .mesh , space , degree , dim = self .shape )
66
67
v = Function (V , name = self .name )
67
68
v .assign (
68
- project (
69
- fun ,
70
- V ,
71
- form_compiler_parameters = {"quadrature_degree" : self .quadrature_degree },
72
- ** kwargs
73
- )
74
- )
69
+ project (fun ,
70
+ V ,
71
+ form_compiler_parameters = {
72
+ "quadrature_degree" : self .quadrature_degree
73
+ },
74
+ ** kwargs ))
75
75
return v
76
76
77
77
@@ -89,7 +89,6 @@ class Gradient(QuadratureFunction):
89
89
This class is intended for internal use only. Gradient objects must be
90
90
declared by the user using the registration concept.
91
91
"""
92
-
93
92
def __init__ (self , variable , expression , name , hypothesis , symmetric = None ):
94
93
self .variable = variable
95
94
if symmetric is None :
@@ -101,17 +100,17 @@ def __init__(self, variable, expression, name, hypothesis, symmetric=None):
101
100
else :
102
101
converter = nonsymmetric_tensor_to_vector
103
102
if hypothesis in [
104
- mgis_bv .Hypothesis .PlaneStrain ,
105
- mgis_bv .Hypothesis .Axisymmetrical ,
103
+ mgis_bv .Hypothesis .PlaneStrain ,
104
+ mgis_bv .Hypothesis .Axisymmetrical ,
106
105
]:
107
106
if ufl .shape (expression ) == (2 , 2 ):
108
107
T22 = 0
109
108
expression_2d = expression
110
109
elif ufl .shape (expression ) == (3 , 3 ):
111
110
T22 = expression [2 , 2 ]
112
111
expression_2d = ufl .as_tensor (
113
- [[expression [i , j ] for j in range (2 )] for i in range ( 2 )]
114
- )
112
+ [[expression [i , j ] for j in range (2 )]
113
+ for i in range ( 2 )] )
115
114
self .expression = converter (expression_2d , T22 )
116
115
else :
117
116
self .expression = converter (expression )
@@ -144,12 +143,10 @@ def __call__(self, v):
144
143
def variation (self , v ):
145
144
""" Directional derivative in direction v """
146
145
# return ufl.algorithms.expand_derivatives(ufl.derivative(self.expression, self.variable, v))
147
- deriv = sum (
148
- [
149
- ufl .derivative (self .expression , var , v_ )
150
- for (var , v_ ) in zip (split (self .variable ), split (v ))
151
- ]
152
- )
146
+ deriv = sum ([
147
+ ufl .derivative (self .expression , var , v_ )
148
+ for (var , v_ ) in zip (split (self .variable ), split (v ))
149
+ ])
153
150
return ufl .algorithms .expand_derivatives (deriv )
154
151
155
152
def initialize_function (self , mesh , quadrature_degree ):
@@ -172,7 +169,6 @@ def _evaluate_at_quadrature_points(self, x):
172
169
173
170
class Var (Gradient ):
174
171
""" A simple variable """
175
-
176
172
def __init__ (self , variable , expression , name , hypothesis ):
177
173
Gradient .__init__ (self , variable , expression , name , hypothesis )
178
174
@@ -182,7 +178,6 @@ def _evaluate_at_quadrature_points(self, x):
182
178
183
179
class QuadratureFunctionTangentBlocks (QuadratureFunction ):
184
180
"""An abstract class for Flux and InternalStateVariables"""
185
-
186
181
def initialize_tangent_blocks (self , variables ):
187
182
self .variables = variables
188
183
values = [
@@ -196,8 +191,7 @@ def initialize_tangent_blocks(self, variables):
196
191
),
197
192
),
198
193
name = "d{}_d{}" .format (self .name , v .name ),
199
- )
200
- for v in self .variables
194
+ ) for v in self .variables
201
195
]
202
196
keys = [v .name for v in self .variables ]
203
197
self .tangent_blocks = dict (zip (keys , values ))
0 commit comments