@@ -40,25 +40,20 @@ function parse_config(configfile::String)
4040 return PlateConfig (id,F,E,ν,radius,length,element_order)
4141end
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- (λ + 2 G) λ 0
49- λ (λ + 2 G) 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 )
6054end
6155
56+
6257function 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