Skip to content

Commit d2270c6

Browse files
authored
Merge pull request #65 from BAMresearch/44-fix-extendablefem-results
Fix linear elasticity bug in extendablefem tool
2 parents bed9693 + 2ff31aa commit d2270c6

1 file changed

Lines changed: 12 additions & 18 deletions

File tree

benchmarks/linear-elastic-plate-with-hole/extendablefem/run_extendablefem_simulation.jl

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -40,25 +40,20 @@ function parse_config(configfile::String)
4040
return PlateConfig(id,F,E,ν,radius,length,element_order)
4141
end
4242

43+
const II = [1 0;0 1]
4344

44-
function plane_stress_elasticity_tensor(E::Float64, ν::Float64)
45-
G = (1 / (1 + ν)) * E * 0.5
46-
λ =/ (1 - 2ν)) * 2 * G
47-
return @SArray [
48-
+ 2G) λ 0
49-
λ (λ + 2G) 0
50-
0 0 G
51-
]
52-
end
53-
45+
function sigma!(result,∇u,qpinfo)
46+
E = qpinfo.params[1]
47+
ν = qpinfo.params[2]
48+
∇u[2] = (∇u[2]+∇u[3])*0.5
49+
∇u[3] = ∇u[2]
5450

55-
function make_kernel(𝐂)
56-
function LE_kernel_sym!(σ,εv,qpinfo)
57-
mul!(σ,𝐂,εv)
58-
end
59-
return LE_kernel_sym!
51+
ε = tensor_view(∇u,1,TDMatrix(2))
52+
σ = tensor_view(result,1,TDMatrix(2))
53+
σ.= ((1.0-ν).*ε + ν*tr(ε).*II)*E/(1-ν^2)
6054
end
6155

56+
6257
function u_ex_kernel!(result,qpinfo)
6358
x = qpinfo.x[1]
6459
y = qpinfo.x[2]
@@ -103,9 +98,8 @@ function solve_plate_with_hole(config::PlateConfig,grid::ExtendableGrid,outputzi
10398
PD = ProblemDescription("Linear elastic 2D Plate with hole, configuration "*config.id)
10499
u = Unknown("u"; name= "displacement")
105100
assign_unknown!(PD, u)
106-
𝐂 = plane_stress_elasticity_tensor(config.E,config.ν)
107-
LE_kernel_sym! = make_kernel(𝐂)
108-
assign_operator!(PD, BilinearOperator(LE_kernel_sym!, [εV(u,1.0)]))
101+
102+
assign_operator!(PD, BilinearOperator(sigma!, [grad(u)];params=[config.E,config.ν]))
109103
assign_operator!(PD, InterpolateBoundaryData(u, u_ex_kernel!; regions = [3,4], params = [config.radius,config.F,config.E,config.ν]))
110104
assign_operator!(PD, HomogeneousBoundaryData(u; regions = [1], mask = [1,0]))
111105
assign_operator!(PD, HomogeneousBoundaryData(u; regions = [2], mask = [0,1]))

0 commit comments

Comments
 (0)