@@ -3,12 +3,12 @@ using IgAShell
3
3
4
4
# Dimension
5
5
DIM = 2
6
- NELX = 110
6
+ NELX = 115
7
7
NELY = 1
8
8
9
9
ORDERS = (2 ,2 )
10
10
11
- L = 110 .0
11
+ L = 115 .0
12
12
h = 8.0
13
13
b = 20.0
14
14
au = 56.0
@@ -25,12 +25,19 @@ data = ProblemData(
25
25
)
26
26
27
27
# interfacematerial = IGAShell.MatCohesive{dim}(λ_0,λ_f,τ,K)
28
- interfacematerial = MatCZBilinear (
28
+ #= interfacematerial = MatCZBilinear(
29
29
K = 1.0e4,
30
30
Gᴵ = (1050/1000, 1050/1000, 211.0/1000 ),
31
31
τᴹᵃˣ = 0.5.*(90.0, 90.0, 60.0),
32
32
η = 1.6
33
- )
33
+ ) =#
34
+
35
+ interfacematerial = Five. MatVanDenBosch {2} (
36
+ σₘₐₓ = 60 * 0.5 ,
37
+ τₘₐₓ = 90 * 0.5 ,
38
+ Φₙ = 211.0 / 1000 ,
39
+ Φₜ = 1050.0 / 1000
40
+ )
34
41
35
42
material (_α) =
36
43
MatTransvLinearElastic (
@@ -68,9 +75,10 @@ addvertexset!(data.grid, "zfixed", (x)-> x[1] ≈ 9.5)
68
75
# @show length(getvertexset(grid, "zfixed"))
69
76
70
77
cellstates = [IgAShell. LAYERED for i in 1 : NELX]
71
- cellstates[precracked_u] .= IgAShell. STRONG_DISCONTINIUOS_AT_INTERFACE (3 )
72
- cellstates[precracked_l] .= IgAShell. STRONG_DISCONTINIUOS_AT_INTERFACE ((1 ,3 ))
78
+ # cellstates[precracked_u] .= IgAShell.STRONG_DISCONTINIUOS_AT_INTERFACE(3)
79
+ # cellstates[precracked_l] .= IgAShell.STRONG_DISCONTINIUOS_AT_INTERFACE((1,3))
73
80
cellstates = [IgAShell. STRONG_DISCONTINIUOS_AT_INTERFACE ((1 ,3 )) for i in 1 : NELX]
81
+ cellstates[1 : 10 ] .= IgAShell. LAYERED
74
82
75
83
interface_damage = zeros (ninterfaces, NELX)
76
84
interface_damage[1 , precracked_l] .= 1.0
@@ -106,16 +114,26 @@ push!(data.parts, igashell)
106
114
107
115
#
108
116
data. output[] = Output (
109
- interval = 5 .0 ,
117
+ interval = 0 .0 ,
110
118
runname = " mels_2d" ,
111
119
savepath = " ./"
112
120
)
113
121
114
122
#
115
123
etf = IGAShellWeakBC (
116
124
set = getvertexset (data. grid, " left" ),
117
- func = (x,t) -> zeros (DIM),
118
- comps = 1 : DIM,
125
+ func = (x,t) -> [0.0 ],
126
+ comps = [2 ],
127
+ igashell = igashell,
128
+ penalty = 1e7
129
+ )
130
+ push! (data. constraints, etf)
131
+
132
+ edgeset_top_right = VertexInterfaceIndex (getvertexset (data. grid, " right" ), 2 )
133
+ etf = IGAShellWeakBC (
134
+ set = edgeset_top_right,
135
+ func = (x,t) -> [0.0 ],
136
+ comps = [1 ],
119
137
igashell = igashell,
120
138
penalty = 1e7
121
139
)
@@ -128,16 +146,16 @@ z_fixed_edgeset = VertexInterfaceIndex(zfixedcell..., 1)
128
146
etf = IGAShellWeakBC (
129
147
set = [z_fixed_edgeset],
130
148
func = (x,t) -> [0.0 ],
131
- comps = [DIM ],
149
+ comps = [2 ],
132
150
igashell = igashell,
133
151
penalty = 1e7
134
152
)
135
153
push! (data. constraints, etf)
136
154
137
155
# Force
138
- edgeset = VertexInterfaceIndex ( getvertexset (data . grid, " right " ), 2 )
156
+
139
157
etf = IGAShellExternalForce (
140
- set = edgeset ,
158
+ set = edgeset_top_right ,
141
159
func = (x,t) -> [0.0 , - 1.0 / b],
142
160
igashell = igashell
143
161
)
@@ -149,7 +167,7 @@ output = OutputData(
149
167
comps = [DIM]
150
168
),
151
169
interval = 0.0 ,
152
- set = edgeset
170
+ set = edgeset_top_right
153
171
)
154
172
data. outputdata[" reactionforce" ] = output
155
173
@@ -161,8 +179,9 @@ Five.push_vtkoutput!(data.output[], vtkoutput)
161
179
162
180
#
163
181
vtkoutput = VTKNodeOutput (
164
- type = MaterialStateOutput (
165
- field = :interface_damage
182
+ type = IGAShellMaterialStateOutput (
183
+ field = :interface_damage ,
184
+ dir = 2
166
185
),
167
186
)
168
187
Five. push_vtkoutput! (data. output[], vtkoutput)
@@ -202,7 +221,7 @@ state, globaldata = build_problem(data) do dh, parts, dbc
202
221
JuAFEM. copy!! (dbc. free_dofs, alldofs)
203
222
end
204
223
205
- solver = LocalDissipationSolver (
224
+ solver = DissipationSolver (
206
225
Δλ0 = 10.0 ,
207
226
Δλ_max = 10.0 ,
208
227
Δλ_min = 1e-2 ,
@@ -218,13 +237,20 @@ solver = LocalDissipationSolver(
218
237
λ_max = 700.0 ,
219
238
λ_min = - 50.0 ,
220
239
tol = 1e-4 ,
221
- max_residual = 1e5
240
+ max_residual = 1e6
222
241
)
223
242
224
243
225
244
226
245
227
246
output = solvethis (solver, state, globaldata)
228
247
248
+ exp_u = [0.0 , 7.876 , 7.876 , 13.929 , 13.929 ]
249
+ exp_f = [0.0 , 601.935 , 373.548 , 671.613 , 250 ]
250
+
229
251
d = [output. outputdata[" reactionforce" ]. data[i]. displacements for i in 1 : length (output. outputdata[" reactionforce" ]. data)]
230
252
f = [output. outputdata[" reactionforce" ]. data[i]. forces for i in 1 : length (output. outputdata[" reactionforce" ]. data)]
253
+
254
+ fig = plot (reuse = false )
255
+ plot! (fig, exp_u, exp_f, label = " Experiment" )
256
+ plot! (fig, abs .(d), abs .(f), label = " Non-addaptive" )
0 commit comments