@@ -1230,31 +1230,25 @@ function getdXdxgradient(basis::TensorBasis, mesh::Mesh)
12301230
12311231 # coordinate transformation
12321232 gradient = basis. gradient
1233- dxdX = (basis. gradient1d* basis. nodes1d)[1 ]
12341233
12351234 # adjust for mesh
12361235 if dimension == 1
12371236 # 1D
1238- return gradient / (dxdX * mesh. dx)
1237+ return gradient / mesh. dx
12391238 elseif dimension == 2
12401239 # 2D
1241- scalex = 1 / (dxdX * mesh. dx)
1242- scaley = 1 / (dxdX * mesh. dy)
12431240 numberquadraturepoints = basis. numberquadraturepoints
12441241 return [
1245- gradient[1 : numberquadraturepoints, :] * scalex
1246- gradient[numberquadraturepoints+ 1 : end , :] * scaley
1242+ gradient[1 : numberquadraturepoints, :] / mesh . dx
1243+ gradient[numberquadraturepoints+ 1 : end , :] / mesh . dy
12471244 ]
12481245 elseif dimension == 3
12491246 # 3D
1250- scalex = 1 / (dxdX * mesh. dx)
1251- scaley = 1 / (dxdX * mesh. dy)
1252- scalez = 1 / (dxdX * mesh. dz)
12531247 numberquadraturepoints = basis. numberquadraturepoints
12541248 return [
1255- gradient[1 : numberquadraturepoints, :] * scalex
1256- gradient[numberquadraturepoints+ 1 : 2 * numberquadraturepoints, :] * scaley
1257- gradient[2 * numberquadraturepoints+ 1 : end , :] * scalez
1249+ gradient[1 : numberquadraturepoints, :] / mesh . dx
1250+ gradient[numberquadraturepoints+ 1 : 2 * numberquadraturepoints, :] / mesh . dy
1251+ gradient[2 * numberquadraturepoints+ 1 : end , :] / mesh . dz
12581252 ]
12591253 end
12601254end
@@ -1288,7 +1282,7 @@ basis = TensorH1LagrangeBasis(4, 3, 1, 1);
12881282weights = LFAToolkit.getdxdXquadratureweights(basis, mesh);
12891283
12901284# verify
1291- @assert basis.quadratureweights / 2 ≈ weights
1285+ @assert basis.quadratureweights * mesh.volume / basis.volume ≈ weights
12921286
12931287# output
12941288
@@ -1303,17 +1297,8 @@ function getdxdXquadratureweights(basis::TensorBasis, mesh::Mesh)
13031297 error (" mesh dimension must match basis dimension" ) # COV_EXCL_LINE
13041298 end
13051299
1306- # coordinate transformation
1307- dxdX = (basis. gradient1d* basis. nodes1d)[1 ]
1308-
13091300 # adjust for mesh
1310- if dimension == 1
1311- return dxdX * basis. quadratureweights / mesh. dx
1312- elseif dimension == 2
1313- return dxdX^ 2 * basis. quadratureweights / (mesh. dx * mesh. dy)
1314- elseif dimension == 3
1315- return dxdX^ 3 * basis. quadratureweights / (mesh. dx * mesh. dy * mesh. dz)
1316- end
1301+ return basis. quadratureweights * mesh. volume / basis. volume
13171302end
13181303
13191304function getdxdXquadratureweights (basis:: NonTensorBasis , mesh:: Mesh )
0 commit comments