From 90f7c581c5336dee2cbe37c85de68a48bcb4ce06 Mon Sep 17 00:00:00 2001 From: Jukka Aho Date: Sat, 25 Jun 2016 04:12:53 +0300 Subject: [PATCH] refactor contact and tests --- src/JuliaFEM.jl | 49 +++- src/contact.jl | 292 ++++++++++++------- src/elasticity.jl | 4 +- src/elements.jl | 2 +- src/integrate.jl | 6 + src/mortar.jl | 13 +- src/postprocess_xdmf.jl | 7 +- src/preprocess.jl | 31 ++ src/preprocess_aster_reader.jl | 65 +++-- src/problems.jl | 15 +- src/solver_utils.jl | 6 +- src/solvers.jl | 20 +- test/runtests.jl | 18 +- test/test_contact_2d_small_sliding.jl | 147 ++++++++++ test/test_mortar_2d_contact.jl | 328 +++++----------------- test/test_mortar_2d_mesh_tie.jl | 164 ++++++++++- test/test_nodal_constraints.jl | 82 ++++++ test/test_preprocess_aster_reader.jl | 41 ++- test/test_von_mises_material.jl | 4 + test/testdata/2d_cylinder_roller_full.med | Bin 0 -> 82169 bytes test/testdata/block_2d.med | Bin 0 -> 18949 bytes test/testdata/block_2d.png | Bin 0 -> 85464 bytes test/testdata/block_2d_1elem_quad4.med | Bin 0 -> 15171 bytes test/testdata/block_2d_1elem_quad4.png | Bin 0 -> 74855 bytes test/testdata/block_2d_curved.med | Bin 0 -> 18950 bytes test/testdata/block_2d_curved_dense.med | Bin 0 -> 47698 bytes test/testdata/block_3d.med | Bin 0 -> 29681 bytes test/testdata/hertz_2d_full.med | Bin 0 -> 33476 bytes 28 files changed, 874 insertions(+), 420 deletions(-) create mode 100644 test/test_contact_2d_small_sliding.jl create mode 100644 test/test_nodal_constraints.jl create mode 100644 test/testdata/2d_cylinder_roller_full.med create mode 100644 test/testdata/block_2d.med create mode 100644 test/testdata/block_2d.png create mode 100644 test/testdata/block_2d_1elem_quad4.med create mode 100644 test/testdata/block_2d_1elem_quad4.png create mode 100644 test/testdata/block_2d_curved.med create mode 100644 test/testdata/block_2d_curved_dense.med create mode 100644 test/testdata/block_3d.med create mode 100644 test/testdata/hertz_2d_full.med diff --git a/src/JuliaFEM.jl b/src/JuliaFEM.jl index d489f8b..0697ce0 100644 --- a/src/JuliaFEM.jl +++ b/src/JuliaFEM.jl @@ -25,7 +25,27 @@ export AbstractPoint, Point, IntegrationPoint, IP, Node include("elements.jl") # common element routines export Node, AbstractElement, Element, update!, get_connectivity, get_basis, get_dbasis include("lagrange_macro.jl") # Continuous Galerkin (Lagrange) elements generated using macro -export Seg2, Seg3, Tri3, Tri6, Quad4, Hex8, Tet4, Tet10 + +type Poi1 <: AbstractElement +end + +function size(element::Element{Poi1}) + return (0, 1) +end + +function length(element::Element{Poi1}) + return 1 +end + +function get_basis(element::Element{Poi1}, ip, time) + return [1] +end + +function call(element::Element{Poi1}, ip, time, ::Type{Val{:detJ}}) + return 1.0 +end + +export Poi1, Seg2, Seg3, Tri3, Tri6, Quad4, Hex8, Tet4, Tet10 include("nurbs.jl") export NSeg, NSurf, NSolid, is_nurbs @@ -80,10 +100,11 @@ export calculate_normals, calculate_normals!, project_from_slave_to_master, project_from_master_to_slave, - Mortar + Mortar, get_slave_elements -### Contact mechanics ### -#include("contact.jl") +### Mortar methods, contact mechanics extension ### +include("contact.jl") +export Contact # rest of things include("utils.jl") @@ -96,16 +117,31 @@ end module Preprocess include("preprocess.jl") -export create_elements +export create_elements, Mesh, + add_node!, add_nodes!, + add_element!, add_elements!, + add_element_to_element_set!, + add_node_to_node_set!, + find_nearest_nodes include("preprocess_abaqus_reader.jl") include("preprocess_abaqus_reader_old.jl") include("preprocess_aster_reader.jl") export aster_create_elements, parse_aster_med_file, is_aster_mail_keyword, parse_aster_header, aster_parse_nodes, aster_renumber_nodes!, aster_renumber_elements!, aster_combine_meshes, aster_read_mesh, - filter_by_element_set, filter_by_element_id + filter_by_element_set, filter_by_element_id, MEDFile end +function get_mesh(mesh_name::ASCIIString, args...; kwargs...) + return get_mesh(Val{Symbol(mesh_name)}, args...; kwargs...) +end + +function get_model(model_name::ASCIIString, args...; kwargs...) + return get_model(Val{Symbol(model_name)}, args...; kwargs...) +end + +export get_mesh, get_model + module Postprocess include("postprocess_utils.jl") export calc_nodal_values!, get_nodal_vector @@ -120,6 +156,7 @@ if VERSION >= v"0.5-" else using BaseTestNext end + export @test, @testset, @test_throws #include("test.jl") end diff --git a/src/contact.jl b/src/contact.jl index fa3d06f..7a23288 100644 --- a/src/contact.jl +++ b/src/contact.jl @@ -1,130 +1,208 @@ # This file is a part of JuliaFEM. # License is MIT: see https://github.com/JuliaFEM/JuliaFEM.jl/blob/master/LICENSE.md -""" -Currently two strategies exists: - -a) Remove inactive inequality constraints in element level. This is done in - assemble! if normal_condition is set to :Contact. For some reason this - leads to convergence issues. -b) Remove inactive inequality constraints in assembly level. This is done in - posthook algorithm if inequality_constraints is set to true. This gives - more robust behavior. - - Either use inequality_constraints=True OR :Contact + :Slip, but do not mix. - - minimum_distance can be used to roughly skip integration of mortar - projections for elements that are "far enough" from each other. Increases - performance. - -""" -type Mortar <: BoundaryProblem - formulation :: Symbol # :total, :incremental, :autodiff - dual_basis :: Bool - inequality_constraints :: Bool # Launch PDASS to solve inequality constraints - normal_condition :: Symbol # Tie or Contact - tangential_condition :: Symbol # Stick or Slip - maximum_distance :: Float64 # don't check for a contact if elements are far enough - store_debug_info :: Bool # for making debugging easier - always_inactive :: Vector{Int64} - always_in_contact :: Vector{Int64} # nodes in this list always in contact - always_in_stick :: Vector{Int64} # nodes in this list always in stick - always_in_slip :: Vector{Int64} # nodes in this list always in slip - contact :: Bool - friction :: Bool - gap_sign :: Int # gap sign convention +type Contact <: BoundaryProblem + dimension :: Int rotate_normals :: Bool + finite_sliding :: Bool + friction :: Bool + dual_basis :: Bool + use_forwarddiff :: Bool + minimum_active_set_size :: Int end -function Mortar() - Mortar(:total, true, false, :Tie, :Stick, Inf, false, [], [], [], [], false, false, -1, false) +function Contact() + return Contact(-1, false, false, false, true, false, 0) end -function get_unknown_field_name(::Type{Mortar}) +function get_unknown_field_name(problem::Problem{Contact}) return "reaction force" end -function get_formulation_type(problem::Problem{Mortar}) - return problem.properties.formulation +function get_formulation_type(problem::Problem{Contact}) + return :incremental end -macro debug(msg) - haskey(ENV, "DEBUG") || return - return msg +typealias ContactElements2D Union{Seg2} + +function assemble!(problem::Problem{Contact}, time::Real) + if problem.properties.dimension == -1 + problem.properties.dimension = dim = size(first(problem.elements), 1) + info("assuming dimension of mesh tie surface is $dim") + info("if this is wrong set is manually using problem.properties.dimension") + end + dimension = Val{problem.properties.dimension} + finite_sliding = Val{problem.properties.finite_sliding} + friction = Val{problem.properties.friction} + dual_basis = Val{problem.properties.dual_basis} + use_forwarddiff = Val{problem.properties.use_forwarddiff} + assemble!(problem, time, dimension, finite_sliding, friction, dual_basis, use_forwarddiff) end -function assemble!(problem::Problem{Mortar}, time::Real) - elements = get_elements(problem) - if length(elements) == 0 - info("$(typeof(problem)) : forget to add elements?") - return +""" Frictionless 2d small sliding contact with dual basis without forwarddiff. """ +function assemble!(problem::Problem{Contact}, time::Real, + ::Type{Val{1}}, ::Type{Val{false}}, ::Type{Val{false}}, + ::Type{Val{true}}, ::Type{Val{false}}; debug=false) + + props = problem.properties + field_dim = get_unknown_field_dimension(problem) + field_name = get_parent_field_name(problem) + slave_elements = get_slave_elements(problem) + + # 1. calculate nodal normals and tangents for slave element nodes j ∈ S + normals, tangents = calculate_normals(slave_elements, time, Val{1}; rotate_normals=props.rotate_normals) + update!(slave_elements, "normal", normals) + update!(slave_elements, "tangent", tangents) + + # 2. loop all slave elements + for slave_element in slave_elements + + X1 = slave_element["geometry"](time) + u1 = slave_element["displacement"](time) + la1 = slave_element["reaction force"](time) + x1 = X1 + u1 + n1 = slave_element["normal"](time) + t1 = slave_element["tangent"](time) + Q1_ = [n1[1] t1[1]] + Q2_ = [n1[2] t1[2]] + Z = zeros(2, 2) + Q2 = [Q1_ Z; Z Q2_] + + # 3. loop all master elements + for master_element in slave_element["master elements"](time) + + X2 = master_element["geometry"](time) + u2 = master_element["displacement"](time) + x2 = X2 + u2 + + # 3.1 calculate segmentation + xi1a = project_from_master_to_slave(slave_element, X2[1], time) + xi1b = project_from_master_to_slave(slave_element, X2[end], time) + xi1 = clamp([xi1a; xi1b], -1.0, 1.0) + l = 1/2*abs(xi1[2]-xi1[1]) + isapprox(l, 0.0) && continue # no contribution in this master element + + # 3.2. bi-orthogonal basis + nsl = length(slave_element) + nm = length(master_element) + De = zeros(nsl, nsl) + Me = zeros(nsl, nsl) + for ip in get_integration_points(slave_element, 3) + detJ = slave_element(ip, time, Val{:detJ}) + w = ip.weight*detJ*l + xi = ip.coords[1] + xi_s = dot([1/2*(1-xi); 1/2*(1+xi)], xi1) + N1 = vec(get_basis(slave_element, xi_s, time)) + De += w*diagm(N1) + Me += w*N1*N1' + end + Ae = De*inv(Me) + + # 3.3. loop integration points of one integration segment and calculate + # local mortar matrices + fill!(De, 0.0) + fill!(Me, 0.0) + ge = zeros(field_dim*nsl) + lae = zeros(field_dim*nsl) + for ip in get_integration_points(slave_element, 3) + detJ = slave_element(ip, time, Val{:detJ}) + w = ip.weight*detJ*l + xi = ip.coords[1] + xi_s = dot([1/2*(1-xi); 1/2*(1+xi)], xi1) + N1 = vec(get_basis(slave_element, xi_s, time)) + Phi = Ae*N1 + # project gauss point from slave element to master element in direction n_s + X_s = N1*X1 # coordinate in gauss point + n_s = N1*n1 # normal direction in gauss point + xi_m = project_from_slave_to_master(master_element, X_s, n_s, time) + N2 = vec(get_basis(master_element, xi_m, time)) + X_m = N2*X2 + De += w*Phi*N1' + Me += w*Phi*N2' + x_s = X_s + N1*u1 + x_m = X_m + N2*u2 + la_s = Phi*la1 + ge += w*vec((x_m-x_s)*Phi') + lae += w*vec(la_s*Phi') + end + + # add contribution to contact virtual work + sdofs = get_gdofs(problem, slave_element) + mdofs = get_gdofs(problem, master_element) + nsldofs = length(sdofs) + nmdofs = length(mdofs) + D2 = zeros(nsldofs, nsldofs) + M2 = zeros(nmdofs, nmdofs) + for i=1:field_dim + D2[i:field_dim:end, i:field_dim:end] += De + M2[i:field_dim:end, i:field_dim:end] += Me + end + add!(problem.assembly.C1, sdofs, sdofs, D2) + add!(problem.assembly.C1, sdofs, mdofs, -M2) + + add!(problem.assembly.C2, sdofs, sdofs, Q2'*D2) + add!(problem.assembly.C2, sdofs, mdofs, -Q2'*M2) + add!(problem.assembly.g, sdofs, Q2'*ge) + add!(problem.assembly.c, sdofs, Q2'*lae) + + end # master elements done + + end # slave elements done, contact virtual work ready + + S = sort(collect(keys(normals))) # slave element nodes + C1 = sparse(problem.assembly.C1) + ndofs = size(C1, 1) + debug && info("ndofs = $ndofs") + C2 = sparse(problem.assembly.C2) + D = spzeros(ndofs, ndofs) + g = sparse(problem.assembly.g) + g = full(g) + c = sparse(problem.assembly.c) + c = full(c) + debug && info("Contact slave nodes: $S") + + # constitutive modelling in tangent direction, frictionless contact + for j in S + dofs = [2*(j-1)+1, 2*(j-1)+2] + C2[dofs[2],:] = 0.0 + g[dofs[2]] = 0.0 + D[dofs[2], dofs] = tangents[j] end - # returns 3 if eldim 2 (tri3, quad4, ...) for 3d problems etc. - eldim = size(elements[1], 1)+1 - assemble!(problem, time, Val{eldim}) -end + debug && info("Constitutive modelling ready") -include("mortar_2d.jl") -include("mortar_2d_autodiff.jl") -include("mortar_3d.jl") -include("mortar_3d_autodiff.jl") - -""" Remove inactive inequality constraints by using primal-dual active set strategy. """ -function boundary_assembly_posthook!(solver::Solver, problem::Problem{Mortar}, C1, C2, D, g) - problem.properties.inequality_constraints || return - info("PDASS: Starting primal-dual active set strategy to determine active constraints") - S = Set{Int64}() - for element in get_elements(problem) - haskey(element, "master elements") || continue - push!(S, get_connectivity(element)...) - end - S = sort(collect(S)) - dim = get_unknown_field_dimension(problem) - ndofs = solver.ndofs - nnodes = round(Int, ndofs/dim) - - c = reshape(full(problem.assembly.c, ndofs, 1), dim, nnodes) - A = find(c[1,:] .> 0) - A = intersect(A, S) - I = setdiff(S, A) - - info("PDASS: contact nodes: $(sort(collect(S)))") - info("PDASS: active nodes: $(sort(collect(A)))") - info("PDASS: inactive nodes: $(sort(collect(I)))") - - # remove any inactive nodes - for j in I - dofs = [dim*(j-1)+i for i=1:dim] - C1[dofs,:] = 0 - C2[dofs,:] = 0 - D[dofs,:] = 0 - g[dofs,:] = 0 - end - - # handle tangential condition for active nodes - if problem.properties.tangential_condition == :Slip - for j in A - dofs = [dim*(j-1)+i for i=1:dim] - tangential_dofs = dofs[2:end] - D[tangential_dofs,dofs] = C2[tangential_dofs,dofs] - C2[tangential_dofs,:] = 0 - g[tangential_dofs,:] = 0 + # active / inactive node detection + A = Set() + I = Set() + la = problem.assembly.la + for j in S + dofs = [2*(j-1)+1, 2*(j-1)+2] + + Cn = -g[dofs[1]] + if length(la) != 0 + Cn += dot(normals[j], la[dofs]) + debug && info("slave $j: $(normals[j]) | $(la[dofs]) | $(c[dofs]) | $(g[dofs]) | $Cn") + else + debug && info("slave $j: $(normals[j]) | | $(c[dofs]) | $(g[dofs]) | $Cn") + end + if Cn < 0 + push!(I, j) + debug && info("slave $j INACTIVE") + C1[dofs,:] = 0.0 + C2[dofs,:] = 0.0 + D[dofs,:] = 0.0 + g[dofs,:] = 0.0 + else + push!(A, j) end end + debug && info("active nodes: $A, inactive nodes: $I") + + problem.assembly.C1 = C1 + problem.assembly.C2 = C2 + problem.assembly.D = D + problem.assembly.g = g return + end -function assemble_prehook!(problem::Problem{Mortar}, time::Real) - info("mortar assemble prehook at time $time") - slaves = Set{Element}() - for element in get_elements(problem) - haskey(element, "master elements") || continue - push!(slaves, element) - end - info("$(length(slaves)) slave elements") - length(slaves) != 0 || error("no slave elements found for problem (forget to add masters?).") - info("mortar: update normal-tangential system.") - calculate_normal_tangential_coordinates!(collect(slaves), time) - info("mortar assemble prehook done.") -end diff --git a/src/elasticity.jl b/src/elasticity.jl index ec8df38..9fbd435 100644 --- a/src/elasticity.jl +++ b/src/elasticity.jl @@ -157,11 +157,11 @@ function assemble{El<:Union{Tri3,Tri6,Quad4}}(problem::Problem{Elasticity}, elem return Km, Kg, f end -function assemble{El<:Union{Seg2,Seg3}}(problem::Problem{Elasticity}, element::Element{El}, time::Real, ::Type{Val{:plane}}) +function assemble{El<:Union{Poi1,Seg2,Seg3}}(problem::Problem{Elasticity}, element::Element{El}, time::Real, ::Type{Val{:plane}}) props = problem.properties dim = get_unknown_field_dimension(problem) - nnodes = size(element, 2) + nnodes = length(element) Km = zeros(dim*nnodes, dim*nnodes) Kg = zeros(dim*nnodes, dim*nnodes) f = zeros(dim*nnodes) diff --git a/src/elements.jl b/src/elements.jl index 734b832..49a04d8 100644 --- a/src/elements.jl +++ b/src/elements.jl @@ -67,7 +67,7 @@ function call(element::Element, field_name::ASCIIString, time) return element[field_name](time) end -function call(element::Element, field_name::ASCIIString, ip, time) +function call(element::Element, field_name::ASCIIString, ip, time::Real) field = element(field_name, time) isa(field, DCTI) && return field.data basis = element(ip, time) diff --git a/src/integrate.jl b/src/integrate.jl index e012a65..2aa8277 100644 --- a/src/integrate.jl +++ b/src/integrate.jl @@ -58,6 +58,12 @@ end ### "cartesian" elements, integration rules comes from tensor product +### 0d elements + +function get_integration_points(element::Poi1) + [ (1.0, [] ) ] +end + ### 1d elements typealias CartesianLineElement Union{Seg2, Seg3, NSeg} diff --git a/src/mortar.jl b/src/mortar.jl index ddf97de..67b9cc8 100644 --- a/src/mortar.jl +++ b/src/mortar.jl @@ -6,13 +6,14 @@ type Mortar <: BoundaryProblem rotate_normals :: Bool adjust :: Bool tolerance :: Float64 + dual_basis :: Bool end function Mortar() - return Mortar(-1, false, false, 0.0) + return Mortar(-1, false, false, 0.0, false) end -function get_unknown_field_name(::Type{Mortar}) +function get_unknown_field_name(problem::Problem{Mortar}) return "reaction force" end @@ -38,7 +39,7 @@ function cross2(a, b) cross([a; 0], [b; 0])[3] end -function get_slave_elements(problem::Problem{Mortar}) +function get_slave_elements(problem::Problem) filter(el -> haskey(el, "master elements"), get_elements(problem)) end @@ -109,8 +110,10 @@ function calculate_normals!(elements, time, ::Type{Val{1}}; rotate_normals=false end function assemble!(problem::Problem{Mortar}, time::Real) - if problem.dimension == -1 - error("set interface dimension: problem.properties.dimension = 1 or 2") + if problem.properties.dimension == -1 + problem.properties.dimension = dim = size(first(problem.elements), 1) + info("assuming dimension of mesh tie surface is $dim") + info("if this is wrong set is manually using problem.properties.dimension") end assemble!(problem, time, Val{problem.properties.dimension}) end diff --git a/src/postprocess_xdmf.jl b/src/postprocess_xdmf.jl index a87a7eb..54f7159 100644 --- a/src/postprocess_xdmf.jl +++ b/src/postprocess_xdmf.jl @@ -134,7 +134,12 @@ function xdmf_save_field!(xdmf, elements, time, field_name; field_type="Scalar") g = element[field_name](time) conn = get_connectivity(element) for (i, c) in enumerate(conn) - f[c] = g[i] + gi = g[i] + if (field_type == "Vector") && (length(gi) < 3) + # paraview goes crazy if 2d model with 2d displacement vector + gi = [gi; 0.0] + end + f[c] = gi end end diff --git a/src/preprocess.jl b/src/preprocess.jl index 7d76948..aa40855 100644 --- a/src/preprocess.jl +++ b/src/preprocess.jl @@ -21,11 +21,30 @@ function add_node!(mesh::Mesh, nid::Int, ncoords::Vector{Float64}) mesh.nodes[nid] = ncoords end +function add_nodes!(mesh::Mesh, nodes::Dict{Int64, Vector{Float64}}) + for (nid, ncoords) in nodes + add_node!(mesh, nid, ncoords) + end +end + +function add_node_to_node_set!(mesh::Mesh, set_name::ASCIIString, nids...) + if !haskey(mesh.node_sets, set_name) + mesh.node_sets[set_name] = Set{Int64}() + end + push!(mesh.node_sets[set_name], nids...) +end + function add_element!(mesh::Mesh, elid::Int, eltype::Symbol, connectivity::Vector{Int64}) mesh.elements[elid] = connectivity mesh.element_types[elid] = eltype end +function add_elements!(mesh::Mesh, elements::Dict{Int64, Tuple{Symbol, Vector{Int64}}}) + for (elid, (eltype, elcon)) in elements + add_element!(mesh, elid, eltype, elcon) + end +end + function add_element_to_element_set!(mesh::Mesh, set_name::ASCIIString, elids...) if !haskey(mesh.element_sets, set_name) mesh.element_sets[set_name] = Set{Int64}() @@ -73,3 +92,15 @@ function create_elements(mesh::Mesh, element_set::ASCIIString) return create_elements(filter_by_element_set(mesh, element_set)) end +""" find npts nearest nodes form mesh and return id numbers as list. """ +function find_nearest_nodes(mesh::Mesh, coords::Vector, npts=1) + dist = Dict{Int64, Float64}() + for (nid, c) in mesh.nodes + dist[nid] = norm(coords-c) + end + s = sort(collect(dist), by=x->x[2]) + nd = s[1:npts] # [(id1, dist1), (id2, dist2), ..., (id_npts, dist_npts)] + node_ids = [n[1] for n in nd] + return node_ids +end + diff --git a/src/preprocess_aster_reader.jl b/src/preprocess_aster_reader.jl index 31cce45..4555607 100644 --- a/src/preprocess_aster_reader.jl +++ b/src/preprocess_aster_reader.jl @@ -262,23 +262,38 @@ function get_mesh_names(med::MEDFile) return collect(keys(med.data["FAS"])) end -function get_nodes(med::MEDFile, mesh_name) +function get_nodes(med::MEDFile, nsets, mesh_name) increments = keys(med.data["ENS_MAA"][mesh_name]) @assert length(increments) == 1 increment = first(increments) nodes = med.data["ENS_MAA"][mesh_name][increment]["NOE"] node_ids = nodes["NUM"] + nset_ids = nodes["FAM"] nnodes = length(node_ids) node_coords = nodes["COO"] dim = round(Int, length(node_coords)/nnodes) node_coords = reshape(node_coords, nnodes, dim)' - d = Dict{Int64}{Vector{Float64}}() + d = Dict{Int64}{Tuple{Symbol, Vector{Float64}}}() for i=1:nnodes - d[node_ids[i]] = node_coords[:, i] + nset = Symbol(nsets[nset_ids[i]]) + d[node_ids[i]] = (nset, node_coords[:, i]) end return d end +function get_node_sets(med::MEDFile, mesh_name) + ns = Dict{Int64, Symbol}(0 => :NALL) + haskey(med.data["FAS"][mesh_name], "NOEUD") || return ns + nsets = med.data["FAS"][mesh_name]["NOEUD"] + for nset in keys(nsets) + k = split(nset, "_") + nset_id = parse(Int, k[2]) + nset_name = ascii(pointer(convert(Vector{UInt8}, nsets[nset]["GRO"]["NOM"][1]))) + ns[nset_id] = Symbol(nset_name) + end + return ns +end + function get_element_sets(med::MEDFile, mesh_name) es = Dict{Int64, Symbol}() if !haskey(med.data["FAS"][mesh_name], "ELEME") @@ -304,7 +319,8 @@ global const med_elmap = Dict{Symbol, Vector{Int}}( :QU4 => [1, 2, 3, 4], :HE8 => [4, 8, 7, 3, 1, 5, 6, 2], # ..? :TE4 => [3, 2, 1, 4], - :T10 => [3, 2, 1, 4, 6, 5, 7, 10, 9, 8] + :T10 => [3, 2, 1, 4, 6, 5, 7, 10, 9, 8], + :PO1 => [1] # :T10 => [3, 4, 1, 2, 10, 8, 7, 6, 9, 5] # :T10 => [5, 9, 6, 7, 8, 10, 2, 1, 4, 3] ) @@ -354,7 +370,7 @@ Returns Dict containing fields "nodes" and "connectivity". """ -function parse_aster_med_file(fn::ASCIIString, mesh_name=nothing) +function parse_aster_med_file(fn::ASCIIString, mesh_name=nothing; debug=false) med = MEDFile(fn) if isa(mesh_name, Void) mesh_names = get_mesh_names(med::MEDFile) @@ -362,10 +378,15 @@ function parse_aster_med_file(fn::ASCIIString, mesh_name=nothing) length(mesh_names) == 1 || error("several meshes found from med, pick one: $all_meshes") mesh_name = mesh_names[1] end + nsets = get_node_sets(med, mesh_name) elsets = get_element_sets(med, mesh_name) - elset_names = join(values(elsets), ", ") - info("Found $(length(elsets)) element sets: $elset_names") - nodes = get_nodes(med, mesh_name) + if debug + elset_names = join(values(elsets), ", ") + info("Code Aster .med reader: found $(length(elsets)) element sets: $elset_names") + nset_names = join(values(nsets), ", ") + info("Code ASter .med reader: found $(length(nsets)) node sets: $nset_names") + end + nodes = get_nodes(med, nsets, mesh_name) conn = get_connectivity(med, elsets, mesh_name) result = Dict{ASCIIString, Any}() result["nodes"] = nodes @@ -373,25 +394,33 @@ function parse_aster_med_file(fn::ASCIIString, mesh_name=nothing) return result end +global const mapping = Dict( + :PO1 => :Poi1, + :SE2 => :Seg2, + :SE3 => :Seg3, + :TR3 => :Tri3, + :TR6 => :Tri6, + :QU4 => :Quad4, + :QU8 => :Quad8, + :QU9 => :Quad9, + :HE8 => :Hex8, + :H20 => :Hex20, + :TE4 => :Tet4, + :T10 => :Tet10) + function aster_read_mesh(fn::ASCIIString, mesh_name=nothing) result = parse_aster_med_file(fn, mesh_name) mesh = Mesh() - for (nid, ncoords) in result["nodes"] + for (nid, (nset, ncoords)) in result["nodes"] add_node!(mesh, nid, ncoords) + add_node_to_node_set!(mesh, string(nset), nid) end - mapping = Dict( - :PO1 => :Poi1, - :SE2 => :Seg2, - :TR3 => :Tri3, - :TR6 => :Tri6, - :QU4 => :Quad4, - :HE8 => :Hex8, - :TE4 => :Tet4, - :T10 => :Tet10) for (elid, (eltype, elset, elcon)) in result["connectivity"] + haskey(mapping, eltype) || error("Code Aster .med reader: element type $eltype not found from mapping") add_element!(mesh, elid, mapping[eltype], elcon) add_element_to_element_set!(mesh, string(elset), elid) end return mesh end +# TODO: refactor and remove obsolete stuff. diff --git a/src/problems.jl b/src/problems.jl index 8b9239b..465ed43 100644 --- a/src/problems.jl +++ b/src/problems.jl @@ -247,21 +247,14 @@ function update_elements!{P<:BoundaryProblem}(problem::Problem{P}, u, la) end end -#= -function add_postprocessor!(problem::Union{FieldProblem, BoundaryProblem}, postprocessor_name::Symbol, args...; kwargs...) - push!(problem.postprocessors, (postprocessor_name, args, kwargs)) -end - -function add_preprocessor!(problem::Union{FieldProblem, BoundaryProblem}, preprocessor_name::Symbol, args...; kwargs...) - push!(problem.preprocessors, (preprocessor_name, args, kwargs)) -end - -=# - function get_elements(problem) return problem.elements end +function update!(problem::Problem, field_name::ASCIIString, field) + update!(problem.elements, field_name, field) +end + """ Return the dimension of the unknown field of this problem. """ function get_unknown_field_dimension(problem::Problem) return problem.dimension diff --git a/src/solver_utils.jl b/src/solver_utils.jl index 4987fa8..48c4197 100644 --- a/src/solver_utils.jl +++ b/src/solver_utils.jl @@ -335,9 +335,11 @@ function handle_overconstraint_error!(problem, nodes, all_dofs, C1_, C1, C2_, C2 continue end - show_info && info("unable to resolve overconstrained situation, not continuing") + info("unable to resolve overconstrained situation, not continuing") + show_rows_in_constraint_matrix(dofs, C2, D; show_status=false) + show_rows_in_constraint_matrix(dofs, C2_, D_; show_status=false) + show_related_equations(dofs, C2, C2_, D, D_) throw("failed to resolve overconstraint situation") - show_info && info() end end diff --git a/src/solvers.jl b/src/solvers.jl index 6bac12a..4b90d6d 100644 --- a/src/solvers.jl +++ b/src/solvers.jl @@ -53,10 +53,23 @@ function Solver(name::ASCIIString="default solver", return solver end +function get_problems(solver::Solver) + return solver.problems +end + function push!(solver::Solver, problem) push!(solver.problems, problem) end +function getindex(solver::Solver, problem_name::ASCIIString) + for problem in get_problems(solver) + if problem.name == problem_name + return problem + end + end + throw(KeyError(problem_name)) +end + # one-liner helpers to identify problem types function is_field_problem(problem) @@ -231,8 +244,11 @@ function create_projection(C::SparseMatrixCSC, g; S=nothing, tol=1.0e-12) end # FIXME: this creates dense matrices # efficiency / memory usage is a question - P = sparse(C[S,:] \ full(C[S,:])) - h = sparse(C[S,:] \ full(g[S])) + M = get_nonzero_columns(C) + F = qrfact(C[S,:]) + P = spzeros(n,m) + P[:,M] = sparse(F \ full(C[S,M])) + h = sparse(F \ full(g[S])) resize!(P, n, m) resize!(h, n, 1) P = speye(n) - P diff --git a/test/runtests.jl b/test/runtests.jl index 1516239..9f34548 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -1,19 +1,23 @@ # This file is a part of JuliaFEM. # License is MIT: see https://github.com/JuliaFEM/JuliaFEM.jl/blob/master/LICENSE.md -using JuliaFEM using JuliaFEM.Test function run_tests(; quiet=false) - test_files = readdir(Pkg.dir("JuliaFEM")*"/test") - test_files = filter(f -> (startswith(f, "test_") & endswith(f, ".jl")), test_files) - for test_file in test_files - if !quiet - info("Running tests from file $test_file") + maybe_test_files = readdir(Pkg.dir("JuliaFEM")*"/test") + is_test_file(fn) = startswith(fn, "test_") & endswith(fn, ".jl") + test_files = filter(is_test_file, maybe_test_files) + #test_files = ["test_nodal_constraints.jl"] + + body = quote + @testset "JuliaFEM" begin + for fn in $test_files + @testset "$fn" begin include(fn) end + end end - include(test_file) end + eval(body) end diff --git a/test/test_contact_2d_small_sliding.jl b/test/test_contact_2d_small_sliding.jl new file mode 100644 index 0000000..a78b8b4 --- /dev/null +++ b/test/test_contact_2d_small_sliding.jl @@ -0,0 +1,147 @@ +# This file is a part of JuliaFEM. +# License is MIT: see https://github.com/JuliaFEM/JuliaFEM.jl/blob/master/LICENSE.md + +using JuliaFEM +using JuliaFEM.Preprocess +using JuliaFEM.Postprocess +using JuliaFEM.Test +import JuliaFEM: get_mesh, get_model + +function get_mesh(::Type{Val{Symbol("curved 2d mesh model")}}) + meshfile = Pkg.dir("JuliaFEM") * "/test/testdata/block_2d_curved.med" + mesh = aster_read_mesh(meshfile) +end + +function get_model(::Type{Val{Symbol("curved 2d contact small sliding")}}) + + mesh = get_mesh("curved 2d mesh model") + + upper = Problem(Elasticity, "upper", 2) + upper.properties.formulation = :plane_stress + upper.elements = create_elements(mesh, "UPPER") + update!(upper.elements, "youngs modulus", 96.0) + update!(upper.elements, "poissons ratio", 1/3) + + lower = Problem(Elasticity, "lower", 2) + lower.properties.formulation = :plane_stress + lower.elements = create_elements(mesh, "LOWER") + update!(lower.elements, "youngs modulus", 96.0) + update!(lower.elements, "poissons ratio", 1/3) + + bc_upper = Problem(Dirichlet, "upper boundary", 2, "displacement") + bc_upper.elements = create_elements(mesh, "UPPER_TOP") + update!(bc_upper.elements, "displacement 1", 0.0) + update!(bc_upper.elements, "displacement 2", -0.15) + + bc_lower = Problem(Dirichlet, "lower boundary", 2, "displacement") + bc_lower.elements = create_elements(mesh, "LOWER_BOTTOM") + update!(bc_lower.elements, "displacement 1", 0.0) + update!(bc_lower.elements, "displacement 2", 0.0) + + interface = Problem(Contact, "contact between upper and lower block", 2, "displacement") + interface.properties.dimension = 1 + interface.properties.rotate_normals = true + interface_slave_elements = create_elements(mesh, "LOWER_TOP") + interface_master_elements = create_elements(mesh, "UPPER_BOTTOM") + update!(interface_slave_elements, "master elements", interface_master_elements) + interface.elements = [interface_master_elements; interface_slave_elements] + + solver = Solver(Nonlinear) + push!(solver, upper, lower, bc_upper, bc_lower, interface) + return solver + +end + +@testset "test all nodes in contact" begin + # FIXME: needs verification of some other fem software + solver = get_model("curved 2d contact small sliding") + call(solver) + upper, lower, bc_upper, bc_lower, interface = solver.problems + @test isapprox(norm(interface.assembly.u), 0.49563347601324315) +end + + +function get_mesh(::Type{Val{Symbol("hertz contact, full 2d model")}}) + meshfile = Pkg.dir("JuliaFEM") * "/test/testdata/hertz_2d_full.med" + mesh = aster_read_mesh(meshfile) +end + +function get_model(::Type{Val{Symbol("hertz contact, full 2d model")}}) + # from fenet d3613 advanced finite element contact benchmarks + # a = 6.21 mm, pmax = 3585 MPa + # this is a very dense mesh and for that reason pmax is not very + # (only 6 elements in -20 .. 20 mm contact zone, 3 elements in contact + # instead integrate pressure in normal and tangential direction + mesh = get_mesh("hertz contact, full 2d model") + + upper = Problem(Elasticity, "CYLINDER", 2) + upper.properties.formulation = :plane_strain + upper.elements = create_elements(mesh, "CYLINDER") + update!(upper.elements, "youngs modulus", 70.0e3) + update!(upper.elements, "poissons ratio", 0.3) + + lower = Problem(Elasticity, "BLOCK", 2) + lower.properties.formulation = :plane_strain + lower.elements = create_elements(mesh, "BLOCK") + update!(lower.elements, "youngs modulus", 210.0e3) + update!(lower.elements, "poissons ratio", 0.3) + + # support block to ground + bc_fixed = Problem(Dirichlet, "fixed", 2, "displacement") + bc_fixed.elements = create_elements(mesh, "FIXED") + update!(bc_fixed.elements, "displacement 2", 0.0) + + # symmetry line + bc_sym_23 = Problem(Dirichlet, "symmetry line 23", 2, "displacement") + bc_sym_23.elements = create_elements(mesh, "SYM23") + update!(bc_sym_23.elements, "displacement 1", 0.0) + + nid = find_nearest_nodes(mesh, [0.0, 100.0]) + #load = Problem(Dirichlet, "load", 2, "displacement") + load = Problem(Elasticity, "point load", 2) + load.properties.formulation = :plane_strain + load.elements = [Element(Poi1, nid)] + #update!(load.elements, "displacement 2", -10.0) + update!(load.elements, "displacement traction force 2", -35.0e3) + + contact = Problem(Contact, "contact between block and cylinder", 2, "displacement") + contact.properties.rotate_normals = true + contact_slave_elements = create_elements(mesh, "CYLINDER_TO_BLOCK") + contact_master_elements = create_elements(mesh, "BLOCK_TO_CYLINDER") + update!(contact_slave_elements, "master elements", contact_master_elements) + contact.elements = [contact_master_elements; contact_slave_elements] + + solver = Solver(Nonlinear) + push!(solver, upper, lower, bc_fixed, bc_sym_23, load, contact) + return solver + +end + +@testset "test frictionless hertz contact, 2d plane strain" begin + solver = get_model("hertz contact, full 2d model") + call(solver) + upper, lower, bc_fixed, bc_sym_23, load, contact = solver.problems + slaves = get_slave_elements(contact) + node_ids, la = get_nodal_vector(slaves, "reaction force", 0.0) + node_ids, n = get_nodal_vector(slaves, "normal", 0.0) + pres = [dot(ni, lai) for (ni, lai) in zip(n, la)] + @test isapprox(maximum(pres), 4060.010799583303) + # integrate pressure in normal and tangential direction + Rn = 0.0 + Rt = 0.0 + Q = [0.0 -1.0; 1.0 0.0] + time = 0.0 + for sel in slaves + for ip in get_integration_points(sel) + w = ip.weight*sel(ip, time, Val{:detJ}) + n = sel("normal", ip, time) + t = Q'*n + la = sel("reaction force", ip, time) + Rn += w*dot(n, la) + Rt += w*dot(t, la) + end + end + @test isapprox(Rn, 35.0e3; rtol=0.0015) + @test isapprox(Rt, 0.0; atol=10.0) +end + diff --git a/test/test_mortar_2d_contact.jl b/test/test_mortar_2d_contact.jl index e056cfb..4cf86f3 100644 --- a/test/test_mortar_2d_contact.jl +++ b/test/test_mortar_2d_contact.jl @@ -1,263 +1,85 @@ # This file is a part of JuliaFEM. # License is MIT: see https://github.com/JuliaFEM/JuliaFEM.jl/blob/master/LICENSE.md +using JuliaFEM +using JuliaFEM.Preprocess using JuliaFEM.Test -using JuliaFEM.Core: Node, Seg2, Tri3, update!, calculate_normal_tangential_coordinates!, - PlaneStressLinearElasticityProblem, DirichletProblem, MortarProblem, - get_elements, DirectSolver, calculate_nodal_vector, FieldAssembly, - FieldProblem, set_linear_system_solver!, set_nonlinear_max_iterations!, - get_elements, Element, BoundaryAssembly, BoundaryProblem, - get_integration_points, get_jacobian, get_connectivity, StandardBasis, - add_postprocessor!, add_preprocessor!, SparseMatrixCOO, add!, - add_linear_system_solver_preprocessor!, - add_linear_system_solver_postprocessor! - -import JuliaFEM.Core: assemble_preprocess!, assemble_postprocess!, - linear_system_solver_preprocess!, linear_system_solver_postprocess! - -macro debug(msg) - haskey(ENV, "DEBUG") || return - return msg +function JuliaFEM.get_mesh(::Type{Val{Symbol("two elements 1.0x0.5 with 0.1 gap in y direction")}}) + mesh = Mesh() + add_node!(mesh, 1, [0.0, 0.0]) + add_node!(mesh, 2, [1.0, 0.0]) + add_node!(mesh, 3, [1.0, 0.5]) + add_node!(mesh, 4, [0.0, 0.5]) + add_node!(mesh, 5, [0.0, 0.6]) + add_node!(mesh, 6, [1.0, 0.6]) + add_node!(mesh, 7, [1.0, 1.1]) + add_node!(mesh, 8, [0.0, 1.1]) + add_element!(mesh, 1, :Quad4, [1, 2, 3, 4]) + add_element!(mesh, 2, :Quad4, [5, 6, 7, 8]) + add_element!(mesh, 3, :Seg2, [1, 2]) + add_element!(mesh, 4, :Seg2, [7, 8]) + add_element!(mesh, 5, :Seg2, [4, 3]) + add_element!(mesh, 6, :Seg2, [6, 5]) + add_element_to_element_set!(mesh, "LOWER", 1) + add_element_to_element_set!(mesh, "UPPER", 2) + add_element_to_element_set!(mesh, "LOWER_BOTTOM", 3) + add_element_to_element_set!(mesh, "UPPER_TOP", 4) + add_element_to_element_set!(mesh, "LOWER_TOP", 5) + add_element_to_element_set!(mesh, "UPPER_BOTTOM", 6) + return mesh end -function calculate_normal_tangential_coordinates(elements::Vector{Element}, time::Real) - P = SparseMatrixCOO() - field_dim = 2 - for element in elements - haskey(element, "normal-tangential coordinates") || continue - for ip in get_integration_points(element, Val{2}) - J = get_jacobian(element, ip, time) - w = ip.weight*norm(J) - nt = transpose(element("normal-tangential coordinates", ip, time)) - normal = nt[1,:] - tangent = nt[2,:] - for nid in get_connectivity(element) - ndofs = [2*(nid-1)+1, 2*(nid-1)+2] - add!(P, [2*(nid-1)+1], ndofs, normal) - add!(P, [2*(nid-1)+2], ndofs, tangent) - end - end - end - P = sparse(P) - for i=1:size(P,1) - n = norm(P[i,:]) - if n > 0.0 - P[i,:] = P[i,:] / n - end - end - return SparseMatrixCOO(P) +function JuliaFEM.get_model(::Type{Val{Symbol("two element contact")}}) + + mesh = get_mesh("two elements 1.0x0.5 with 0.1 gap in y direction") + + upper = Problem(Elasticity, "UPPER", 2) + upper.properties.formulation = :plane_stress + upper.elements = create_elements(mesh, "UPPER") + update!(upper.elements, "youngs modulus", 288.0) + update!(upper.elements, "poissons ratio", 1/3) + + lower = Problem(Elasticity, "LOWER", 2) + lower.properties.formulation = :plane_stress + lower.elements = create_elements(mesh, "LOWER") + update!(lower.elements, "youngs modulus", 288.0) + update!(lower.elements, "poissons ratio", 1/3) + + bc_upper = Problem(Dirichlet, "UPPER_TOP", 2, "displacement") + bc_upper.elements = create_elements(mesh, "UPPER_TOP") + #update!(bc_upper.elements, "displacement 1", -17/90) + #update!(bc_upper.elements, "displacement 1", -17/90) + update!(bc_upper.elements, "displacement 1", -0.2) + update!(bc_upper.elements, "displacement 2", -0.2) + + bc_lower = Problem(Dirichlet, "LOWER_BOTTOM", 2, "displacement") + bc_lower.elements = create_elements(mesh, "LOWER_BOTTOM") + update!(bc_lower.elements, "displacement 1", 0.0) + update!(bc_lower.elements, "displacement 2", 0.0) + + interface = Problem(Contact, "LOWER_TO_UPPER", 2, "displacement") + interface.properties.dimension = 1 + interface_slave_elements = create_elements(mesh, "LOWER_TOP") + interface_master_elements = create_elements(mesh, "UPPER_BOTTOM") + update!(interface_slave_elements, "master elements", interface_master_elements) + interface.elements = [interface_master_elements; interface_slave_elements] + + solver = Solver(Nonlinear) + push!(solver, upper, lower, bc_upper, bc_lower, interface) + return solver + end -function assemble_postprocess!(assembly, problem, time::Real, ::Type{Val{:remove_constraint_from_dofs}}, dofs) - # giving additional arguments and keywords is possible too - C1 = sparse(assembly.C1) - C2 = sparse(assembly.C2) - info("removing constraints from dofs: $dofs") - for d in dofs - C1[d,:] = 0 - C2[d,:] = 0 - end - assembly.C1 = C1 - assembly.C2 = C2 +@testset "test simple two element contact" begin + solver = get_model("two element contact") + call(solver) + contact = solver["LOWER_TO_UPPER"] + master = first(contact.elements) + slave = last(contact.elements) + u = master("displacement", [0.0], 0.0) + la = slave("reaction force", [0.0], 0.0) + info("u = $u, la = $la") + @test isapprox(u, [-0.2, -0.15]) + @test isapprox(la, [0.0, 30.375]) end - -function assemble_postprocess!(assembly, problem, time::Real, ::Type{Val{:remove_tangential_constraints}}) - # example how to use postprocessor to manipulate constraint matrix before summing assemblies together - info("postprocess mortar assembly: remove contraints in tangent direction on boundary.") - dim = 12 - C1 = sparse(assembly.C1, dim, dim) - C2 = sparse(assembly.C2, dim, dim) - P = calculate_normal_tangential_coordinates(get_elements(problem), time) - P = sparse(P, dim, dim) - info("projection matrix for normals: ") - dump(round(full(P), 3)) - C1 = P*C1 - C2 = P*C2 - for i=2:2:dim - C1[i,:] = 0 - C2[i,:] = 0 - end - assembly.C1 = C1 - assembly.C2 = C2 - info("postprocess mortar assembly: done.") -end - -function assemble_postprocess!(assembly, problem, time::Real, ::Type{Val{:primal_dual_active_set_strategy}}) - info("PDASS: determining active contact set") - dim = 12 - C1 = sparse(assembly.C1, dim, dim) - C2 = sparse(assembly.C2, dim, dim) - - info("PDASS: constraint matrix C1") -# dump(round(full(C1[1:2:end,1:2:end]), 3)) - dump(round(full(C1), 3)) - info("PDASS: constraint matrix C2") -# dump(round(full(C2[1:2:end,1:2:end]), 3)) - dump(round(full(C2), 3)) - - elements = get_elements(problem) - P = calculate_normal_tangential_coordinates(get_elements(problem), time) - P = sparse(P, dim, dim) - - la = calculate_nodal_vector("reaction force", 2, elements, time) - X = calculate_nodal_vector("geometry", 2, elements, time) - u = calculate_nodal_vector("displacement", 2, elements, time) - resize!(la, 12) - resize!(X, 12) - resize!(u, 12) - x = X+u - info("x") - dump(reshape(round(x, 2), 2, 6)) - P = sparse(eye(dim)) - C1 = P*C1 - C2 = P*C2 - gn = P*C1*X #*4/6 ..? - un = P*C1*u - la = P*la - info("weighted gap in nt =") - dump(reshape(round(gn, 2), 2, 6)) - info("weighted u in nt =") - dump(reshape(round(un, 2), 2, 6)) - info("weighted joo in nt =") - dump(reshape(round(gn+un, 2), 2, 6)) - info("lambda in nt =") - dump(reshape(round(la, 2), 2, 6)) - # complementarity function - cn = 1.0 -# C = la - clamp(la - cn*(gn+un), 0, Inf) -# C = la + clamp(la - cn*(gn+un), 0, Inf) - C = la + cn*(un - gn) - info("complementarity function =") - dump(reshape(round(C, 2), 2, 6)) - - g = zeros(length(gn)) - - for i=1:2:dim - if i == 1 - #if C[i] > 0 - if i == 7 - info("skipping root dof 7") - continue - end - info("dof $i in active set") -# g[i] = -gn[i] - else - info("dof $i not in active set") -# C1[i,:] = 0 -# C2[i,:] = 0 - end - end - - g[1] = 2.0 - g[3] = 2.0 -#= - for i=2:2:dim - C1[i,:] = 0 - C2[i,:] = 0 - end -=# - d = [7, 8] - C2[d, :] = 0 - - assembly.g = sparse(g) - assembly.C1 = C1 - assembly.C2 = C2 - info("PDASS ready.") -end - -function linear_system_solver_preprocess!(solver, iter, time, K, f, C1, C2, D, g, sol, la, ::Type{Val{:before_solution}}) - # example how to use preprocessor to dump matrices before solution - @debug begin - info("stiffness matrix") - dump(round(full(K), 3)) - info("constraint matrix C1") - dump(round(full(C1), 3)) - info("constraint matrix C2") - dump(round(full(C2), 3)) - info("force vector") - dump(round(full(f)', 3)) - info("constraint vector") - dump(round(full(g)', 3)) - end -end - -function linear_system_solver_postprocess!(solver, iter, time, K, f, C1, C2, D, g, x, la, ::Type{Val{:after_solution}}) - @debug begin - info("solution vector") - dump(round(full(x)', 3)) - info("reaction force vector") - dump(round(full(la)', 3)) - end -end - -@testset "2d frictionless contact" begin - gap = [1.0, 0.0] - nodes = Node[ - [6.0, 6.0], - [6.0, 12.0]+gap, - [0.0, 0.0], - [6.0, 0.0], - [6.0, 0.0]+gap, - [18.0, 0.0]+gap] - fel1 = Tri3([1, 3, 4]) - fel2 = Tri3([2, 5, 6]) - force = Seg2([3, 1]) - bnd1 = Seg2([3, 4]) - bnd2 = Seg2([5, 6]) - sel = Seg2([1, 4]) - mel = Seg2([2, 5]) - update!([fel1, fel2, force, sel, mel], "geometry", nodes) - update!([bnd1, bnd2], "geometry", nodes) - - prob = FieldProblem(PlaneStressLinearElasticityProblem, "bodies", 2) - push!(prob, fel1, fel2) - push!(prob, force) - update!([fel1, fel2], "youngs modulus", 90.0) - update!([fel1, fel2], "poissons ratio", 0.25) - update!([force], "displacement traction force 1", 2*6/sqrt(2)) - - bc = BoundaryProblem(DirichletProblem, "support", "displacement", 2) - push!(bc, bnd1, bnd2) - update!(get_elements(bc), "displacement", 0.0 => Vector{Float64}[[0.0, 0.0], [0.0, 0.0]]) - - cont = BoundaryProblem(MortarProblem, "contact", "displacement", 2) - push!(cont, sel, mel) - calculate_normal_tangential_coordinates!(sel, 0.0) - nt = sel("normal-tangential coordinates", [0.0], 0.0) - info("normal direction = $(nt)") - sel["master elements"] = [mel] - # remove coefficients from node 4 (dofs 7-8) because this conflicts with dirichlet bc. - # add_postprocessor!(cont, :remove_constraint_from_dofs, [7, 8]) - # remove tangential direction constraints - # add_postprocessor!(cont, :remove_tangential_constraints) - # apply PDASS - add_postprocessor!(cont, :primal_dual_active_set_strategy) - - @debug begin - info("fel1.fields = $(fel1.fields)") - end - - solver = DirectSolver() - push!(solver, prob) - push!(solver, bc) - push!(solver, cont) - solver.solve_residual = false - set_linear_system_solver!(solver, :UMFPACK) - set_nonlinear_max_iterations!(solver, 5) - add_linear_system_solver_preprocessor!(solver, :before_solution) - add_linear_system_solver_postprocessor!(solver, :after_solution) - add_linear_system_solver_preprocessor!(solver, :dump_matrices) - time = 0.0 - call(solver, time) - - @debug begin - u = calculate_nodal_vector("displacement", 2, get_elements(prob), time) - info("solution vector") - dump(reshape(round(u, 8), 2, 6)) -# la = calculate_nodal_vector("reaction force", 2, get_elements(prob), time) -# info("reaction force") -# dump(reshape(round(la, 8), 2, 6)) - end -end - diff --git a/test/test_mortar_2d_mesh_tie.jl b/test/test_mortar_2d_mesh_tie.jl index e40c786..3c67c27 100644 --- a/test/test_mortar_2d_mesh_tie.jl +++ b/test/test_mortar_2d_mesh_tie.jl @@ -99,7 +99,8 @@ end #= - +# TODO: if one forget plane_stress solver gives singular exception and it's + hard to trace to the source of problem @testset "expect clear error when trying to solve 2d model in 3d setting" begin p1, p2, p3, p4 = get_test_model() # p1.properties.formulation = :plane_stress @@ -115,5 +116,164 @@ end info("u = $u") @test isapprox(u, [0.0, 0.05]) end - =# + +function JuliaFEM.get_mesh(::Type{Val{Symbol("1x1 block splitted to upper and lower")}}) + meshfile = Pkg.dir("JuliaFEM") * "/test/testdata/block_2d.med" + mesh = aster_read_mesh(meshfile) +end + +function JuliaFEM.get_model(::Type{Val{Symbol("splitted block, plane stress elasticity and mesh tie")}}) + mesh = get_mesh("1x1 block splitted to upper and lower") + + upper = Problem(Elasticity, "upper", 2) + upper.properties.formulation = :plane_stress + upper.elements = create_elements(mesh, "UPPER") + update!(upper.elements, "youngs modulus", 100.0) + update!(upper.elements, "poissons ratio", 1/3) + + lower = Problem(Elasticity, "lower", 2) + lower.properties.formulation = :plane_stress + lower.elements = create_elements(mesh, "LOWER") + update!(lower.elements, "youngs modulus", 100.0) + update!(lower.elements, "poissons ratio", 1/3) + + bc_upper = Problem(Dirichlet, "upper boundary", 2, "displacement") + bc_upper.elements = create_elements(mesh, "UPPER_TOP") +# update!(bc_upper.elements, "displacement 1", 0.1) + update!(bc_upper.elements, "displacement 2", -0.1) + + bc_lower = Problem(Dirichlet, "lower boundary", 2, "displacement") + bc_lower.elements = create_elements(mesh, "LOWER_BOTTOM") +# update!(bc_lower.elements, "displacement 1", 0.0) + update!(bc_lower.elements, "displacement 2", 0.0) + + bc_corner = Problem(Dirichlet, "fix model from lower left corner to prevent singularity", 2, "displacement") + node_ids = find_nearest_nodes(mesh, [0.0, 0.0]) + bc_corner.elements = [Element(Poi1, node_ids)] + update!(bc_corner.elements, "geometry", mesh.nodes) + update!(bc_corner.elements, "displacement 1", 0.0) + + interface = Problem(Mortar, "interface between upper and lower block", 2, "displacement") + interface_slave_elements = create_elements(mesh, "LOWER_TOP") + interface_master_elements = create_elements(mesh, "UPPER_BOTTOM") + update!(interface_slave_elements, "master elements", interface_master_elements) + interface.elements = [interface_master_elements; interface_slave_elements] + + solver = Solver(Nonlinear) + push!(solver, upper, lower, bc_upper, bc_lower, interface, bc_corner) + + return solver + +end + +@testset "test mesh tie with splitted block and plane stress elasticity" begin + solver = get_model("splitted block, plane stress elasticity and mesh tie") + upper, lower, bc_upper, bc_lower, interface = solver.problems + call(solver) + @test solver.properties.iteration == 2 + slave_elements = get_slave_elements(interface) + node_ids, la = get_nodal_vector(slave_elements, "reaction force", 0.0) + for lai in la + @test isapprox(lai, [0.0, 10.0]) + end +end + +function JuliaFEM.get_mesh(::Type{Val{Symbol("curved 2d block splitted to upper and lower")}}) + meshfile = Pkg.dir("JuliaFEM") * "/test/testdata/block_2d_curved.med" + mesh = aster_read_mesh(meshfile) +end + +function JuliaFEM.get_model(::Type{Val{Symbol("mesh tie with curved 2d block")}}; + dy=0.0, adjust=false, tolerance=0.0, rotate_normals=false, swap=false, + dual_basis=false) + + mesh = get_mesh("curved 2d block splitted to upper and lower") + + upper = Problem(Elasticity, "upper", 2) + upper.properties.formulation = :plane_stress + upper.elements = create_elements(mesh, "UPPER") + update!(upper.elements, "youngs modulus", 96.0) + update!(upper.elements, "poissons ratio", 1/3) + + lower = Problem(Elasticity, "lower", 2) + lower.properties.formulation = :plane_stress + lower.elements = create_elements(mesh, "LOWER") + update!(lower.elements, "youngs modulus", 96.0) + update!(lower.elements, "poissons ratio", 1/3) + + bc_upper = Problem(Dirichlet, "upper boundary", 2, "displacement") + bc_upper.elements = create_elements(mesh, "UPPER_TOP") + update!(bc_upper.elements, "displacement 1", 0.0) + update!(bc_upper.elements, "displacement 2", dy) + + bc_lower = Problem(Dirichlet, "lower boundary", 2, "displacement") + bc_lower.elements = create_elements(mesh, "LOWER_BOTTOM") + update!(bc_lower.elements, "displacement 1", 0.0) + update!(bc_lower.elements, "displacement 2", 0.0) + + interface = Problem(Mortar, "interface between upper and lower block", 2, "displacement") + interface_slave_elements = create_elements(mesh, "LOWER_TOP") + interface_master_elements = create_elements(mesh, "UPPER_BOTTOM") + if swap + interface_slave_elements, interface_master_elements = interface_master_elements, interface_slave_elements + end + update!(interface_slave_elements, "master elements", interface_master_elements) + interface.elements = [interface_master_elements; interface_slave_elements] + interface.properties.adjust = adjust + interface.properties.tolerance = tolerance + interface.properties.rotate_normals = rotate_normals + interface.properties.dual_basis = dual_basis + + solver = Solver(Nonlinear) + push!(solver, upper, lower, bc_upper, bc_lower, interface) + + return solver + +end + +@testset "curved surface with adjust=true, standard lagrange, slave=lower surface, dy=0.0" begin + # TODO: analytical solution now known, verify using other fem software + solver = get_model("mesh tie with curved 2d block"; + adjust=true, tolerance=10, dy=0.0, rotate_normals=true, + dual_basis=false) + call(solver) + interface = solver["interface between upper and lower block"] + @test solver.properties.iteration == 2 + @test isapprox(norm(interface.assembly.u), 0.11339715157447851) +end + +@testset "curved surface with adjust=true, dual lagrange, slave=lower surface, dy=0.0" begin + # TODO: analytical solution now known, verify using other fem software + solver = get_model("mesh tie with curved 2d block"; + adjust=true, tolerance=10, dy=0.0, rotate_normals=true, + dual_basis=true) + call(solver) + interface = solver["interface between upper and lower block"] + @test solver.properties.iteration == 2 + # differs -- why? + @test isapprox(norm(interface.assembly.u), 0.11660422877751599) +end + +@testset "curved surface with adjust=true, standard lagrange, slave=lower surface, dy=-0.1" begin + # TODO: analytical solution now known, verify using other fem software + solver = get_model("mesh tie with curved 2d block"; + adjust=true, tolerance=10, dy=-0.1, rotate_normals=true, + dual_basis=false) + call(solver) + interface = solver["interface between upper and lower block"] + @test solver.properties.iteration == 2 + @test isapprox(norm(interface.assembly.u), 0.34230262165505887) +end + +@testset "curved surface, adjust=true, dual basis, slave=lower surface, dy=-0.1" begin + # TODO: analytical solution now known, verify using other fem software + solver = get_model("mesh tie with curved 2d block"; + adjust=true, tolerance=10, dy=-0.1, rotate_normals=true, + dual_basis=true) + call(solver) + interface = solver["interface between upper and lower block"] + @test solver.properties.iteration == 2 + @test isapprox(norm(interface.assembly.u), 0.34318800698017704) +end + diff --git a/test/test_nodal_constraints.jl b/test/test_nodal_constraints.jl new file mode 100644 index 0000000..f9c502c --- /dev/null +++ b/test/test_nodal_constraints.jl @@ -0,0 +1,82 @@ + +# This file is a part of JuliaFEM. +# License is MIT: see https://github.com/JuliaFEM/JuliaFEM.jl/blob/master/LICENSE.md + +using JuliaFEM +using JuliaFEM.Test + +function JuliaFEM.get_model(::Type{Val{Symbol("1x1 plane stress quad4 block")}}) + + X = Dict{Int, Vector{Float64}}( + 1 => [0.0, 0.0], + 2 => [1.0, 0.0], + 3 => [1.0, 1.0], + 4 => [0.0, 1.0]) + + body = Problem(Elasticity, "body", 2) + body.properties.formulation = :plane_stress + body.elements = [Element(Quad4, [1, 2, 3, 4])] + update!(body.elements, "geometry", X) + update!(body.elements, "youngs modulus", 288.0) + update!(body.elements, "poissons ratio", 1/3) + + # boundary conditions + bc_13 = Problem(Dirichlet, "symmetry 13", 2, "displacement") + bc_13.properties.dual_basis = true + bc_13.elements = [Element(Seg2, [1, 2])] + update!(bc_13.elements, "geometry", X) + update!(bc_13.elements, "displacement 2", 0.0) + + bc_23 = Problem(Dirichlet, "symmetry 23", 2, "displacement") + bc_23.properties.dual_basis = true + bc_23.elements = [Element(Seg2, [4, 1])] + update!(bc_23.elements, "geometry", X) + update!(bc_23, "displacement 1", 0.0) + + solver = Solver(Nonlinear, "1x1 plane stress quad4 block") + push!(solver, body, bc_13, bc_23) + + return solver +end + +@testset "test dirichlet spc in point" begin + X = Dict{Int, Vector{Float64}}( + 1 => [0.0, 0.0], + 2 => [1.0, 0.0], + 3 => [1.0, 1.0], + 4 => [0.0, 1.0]) + solver = get_model("1x1 plane stress quad4 block") + update!(solver["symmetry 13"], "displacement 1", 0.0) + update!(solver["symmetry 23"], "displacement 2", 0.0) + nodal_bc = Problem(Dirichlet, "dx=0.5", 2, "displacement") + nodal_bc.elements = [Element(Poi1, [3])] + update!(nodal_bc, "geometry", X) + update!(nodal_bc, "displacement 1", 0.5) + update!(nodal_bc, "displacement 2", 0.0) + push!(solver, nodal_bc) + call(solver) + pel = nodal_bc.elements[1] + la = pel("reaction force", [0.0], 0.0) + info("reaction force: $la") + info(solver["body"].assembly.u) + @test isapprox(pel("displacement", [], 0.0), [0.5, 0.0]) +end + +@testset "test nodal point force" begin + X = Dict{Int, Vector{Float64}}( + 1 => [0.0, 0.0], + 2 => [1.0, 0.0], + 3 => [1.0, 1.0], + 4 => [0.0, 1.0]) + solver = get_model("1x1 plane stress quad4 block") + update!(solver["symmetry 13"], "displacement 1", 0.0) + update!(solver["symmetry 23"], "displacement 2", 0.0) + point_load = Element(Poi1, [3]) + update!(point_load, "geometry", X) + update!(point_load, "displacement traction force 1", 72.0) + update!(point_load, "displacement traction force 2", 27.0) + push!(solver["body"], point_load) + call(solver) + @test isapprox(point_load("displacement", [], 0.0), [0.5, 0.0]) +end + diff --git a/test/test_preprocess_aster_reader.jl b/test/test_preprocess_aster_reader.jl index a7f2dab..dba65e8 100644 --- a/test/test_preprocess_aster_reader.jl +++ b/test/test_preprocess_aster_reader.jl @@ -106,11 +106,46 @@ end @test mesh["connectivity"][2] == (:SE2, :GRP1, [3, 4]) end -@testset "test reading aster .med file" begin - fn = Pkg.dir("JuliaFEM")*"/geometry/2d_block/BLOCK_1elem.med" +function JuliaFEM.get_mesh(::Type{Val{Symbol("block_2d_1elem_quad4")}}) + fn = Pkg.dir("JuliaFEM") * "/test/testdata/block_2d_1elem_quad4.med" mesh = aster_read_mesh(fn) - @test haskey(mesh.element_sets, "BLOCK") + return mesh +end + +@testset "test reading aster .med file" begin + mesh = get_mesh("block_2d_1elem_quad4") + info("nodes") + for (k, v) in mesh.nodes + info("$k => $v") + end + info("node sets") + for (k, v) in mesh.node_sets + info("$k => $v") + end + info("elements") + for (k, v) in mesh.elements + info("$k => $v, type = $(mesh.element_types[k])") + end + info("element sets") + for (k, v) in mesh.element_sets + info("$k => $v") + end + @test length(mesh.element_sets) == 5 + @test length(mesh.node_sets) == 4 @test length(mesh.elements) == 5 + @test length(mesh.nodes) == 4 + for elset in ["BLOCK", "TOP", "BOTTOM", "LEFT", "RIGHT"] + @test haskey(mesh.element_sets, elset) + @test length(mesh.element_sets[elset]) == 1 + end + for nset in ["TOP_LEFT", "TOP_RIGHT", "BOTTOM_LEFT", "BOTTOM_RIGHT"] + @test haskey(mesh.node_sets, nset) + @test length(mesh.node_sets[nset]) == 1 + end +end + +@testset "test filter by element set" begin + mesh = get_mesh("block_2d_1elem_quad4") mesh2 = filter_by_element_set(mesh, "BLOCK") @test haskey(mesh2.element_sets, "BLOCK") @test length(mesh2.elements) == 1 diff --git a/test/test_von_mises_material.jl b/test/test_von_mises_material.jl index c696883..7b2cabd 100644 --- a/test/test_von_mises_material.jl +++ b/test/test_von_mises_material.jl @@ -121,6 +121,7 @@ function test_von_mises_3D_basic() info("Calculation finished") #PyPlot.plot(ee, ss) + #= plot3D(eig_vals[:, 1], eig_vals[:, 2], eig_vals[:, 3], color="red") PyPlot.title("Stress path and von Mises yield surface") PyPlot.xlabel("Eig Stress 1") @@ -128,6 +129,7 @@ function test_von_mises_3D_basic() PyPlot.zlabel("Eig Stress 3") PyPlot.grid() PyPlot.show() + =# end function test_von_mises_planestress_basic() @@ -228,10 +230,12 @@ function test_von_mises_planestress_basic() push!(x_vals, s11) push!(y_vals, s22) end + #= PyPlot.plot(x_vals, y_vals) PyPlot.plot(ee, ss) PyPlot.grid() PyPlot.show() + =# end # test_von_mises_3D_basic() diff --git a/test/testdata/2d_cylinder_roller_full.med b/test/testdata/2d_cylinder_roller_full.med new file mode 100644 index 0000000000000000000000000000000000000000..c9325107dee4cce2fe0af1481a838c2a827e68a2 GIT binary patch literal 82169 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 Ls0#cAEAW2+!=FQu literal 0 HcmV?d00001 diff --git a/test/testdata/block_2d.med b/test/testdata/block_2d.med new file mode 100644 index 0000000000000000000000000000000000000000..55e8b7a7287238055ab3c65ebfa5276f488d735a GIT binary patch literal 18949 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 literal 0 HcmV?d00001 diff --git a/test/testdata/block_2d_1elem_quad4.png b/test/testdata/block_2d_1elem_quad4.png new file mode 100644 index 0000000000000000000000000000000000000000..520c753982b0201e47d2d1ff3e479b3c9f6546dd GIT binary patch literal 74855 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

`X|Fod8 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 DJaZI6 literal 0 HcmV?d00001 diff --git a/test/testdata/block_2d_curved_dense.med b/test/testdata/block_2d_curved_dense.med new file mode 100644 index 0000000000000000000000000000000000000000..8a560bfc1b69af01c21760fa228dbcf4ae9f1cef GIT binary patch literal 47698 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 literal 0 HcmV?d00001 diff --git a/test/testdata/block_3d.med b/test/testdata/block_3d.med new file mode 100644 index 0000000000000000000000000000000000000000..63c00700868bd91f3418d40d1f621ef131012275 GIT binary patch literal 29681 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

0JLmI3-yy)59@+C}A{JkZxU=$%hTFgm|h z1XLyekCaqFq)UcsK)-cU1L(IX=n|qf)B*bLH+{F4J|v~DR@MhC&;}jQg$AGp`p^*Q zllR780ES=$O`s_>13Jv1F+`?d2IgP^mS6?e&>U>Q7VMw}*aJPdVBiRJesBglI@0lv zj&yV+rE{eRc!C$uk;w;qfkw9!sK=?hs7tA310e`n0v%aGpcRBd7_^3Ph=4ZG7TQ51 zv8E!38&yRoPo1&4$i{`xCocvGF*YHa1E}*4ak9; za0_zbHr#=`a1ZXo19%9J;4wUbr|=B&;5od2m+%T+!y9-D@8ECv2j0U6pf^ALbqi%E z1*M@3s6bgz1^UB0MThAKc8=J@yVSW*V*vY-m(pggF7I#hr^pb}Ju zDo_TYUf}kY?LkP5jPzZx?XajAb z9YjKV=m1gB5uzaiIzeaX0$m{nx1NsG21#po?iH9oR9Iuq}_E zD?YoG`On|diF;?;QCre=d<-4nFd553;ldSl$94!S7OMuItyJ_K8!jBGZjTrL#Gv|An?`lIT(Ay9Wf^&-&376s9CYEl+vs z_s`!g@L$^kbfhbI4NRvfx(=qJnJScnqV7ZJS{R4(LiZwHy9TD~Ub+URYhk(<`PMb? zQY>Ev%V7nqgjKK_*1%d=2kT)2WWYw)1e;+CY=v#G9Wo&cIP8F(unTs>9@q=}U_Tsy zgFvU8!*B$$;V2w~<8T5_!YMcnXW%THgY$3!F2W_a3|HVPT!ZUy19IRd+=7DbU$7tO zo`m{>`hg<#1*H}JK~W8;Z`8q9c&)fUp;#HHkE%dbpnf$J(zHHZT2PKgmeQ$J)lVaZ!5fZL8SUNhSEZswxO~*f-X?o zGz2kNf!rc zumWpn4!%I!(`!F)2ilJh(0(L9?L+fvIhETPT7VR2KIKVhUlu_7r!v#>KnQ}C1!A!9 zIs}o@6k7=~R7g_{1B$JMbU0!gXe-2aLOK$W((QrL9fWk0knV^`>1gN$y@BR+f-VpP z-60nG04?t;r27f!{)m(w2!kLFhQcsNgyBHTMhNL7Aw3dt6i^&3q*H|S7(_~s1xlv^ zZ8u&>CktsR7wv=Ef!dPVjM{4kP#aOZEP-y24xOPZP@OpRfWKtu(7aVZW!MkYU&~=7P}!*-w2aC|^`Uaoyvc9_ zsJyFzmT!dhK>2MD(iuW}GvXGYxK&7RN2KLP-~eO-&C7zj!fR?%Dn~X@yVCwA0ku&Y zoDg15Lp%l4W;21>i~3{}JOnD+Y@j+$1zLyNmc|gxI}K0Z8C-+2@D6BPP#LIAR=^dw z4oBf8TnIHKWUo}@CMGqMYtry%R-v+$OYQRQ^)~&hDh7}15{t?gJVGZxd+eT z0nq%bK+hKG86)LI>)jIKHpCY|&m(CcFM-v_G(zrSYkATWZ+q?pL zc1dNVXPU1OPXg_io^#UtJ3#xP=bBVbdM--OKB+Hm1GN*i1MP$Ipthp6rgdmJJv*i6 zq4XS;>Q4DmS>FRaAEnpyoRyYQr01oyOc{{Oj|~w^Ln&wkDo_Rtp)44IDwKmJP#&6s z8dQL0P!awB6Q~5HP#LN~RiHf0!4j$gZC71*T?4TuSV1kYhT6~^G@vfnLOr1U*g+l8 z1RJOiT3`>_-~hVN031ONC?6*f1J#r2YaqO4h-N_B=zu;@+t7N(K-(~&b*L?<4XB>( zK=q{gKHvtlKTn|YQu(QTR2~LYKFYT-P&-rmQhpY~Yid(h@B$YI0BSF47itsQpD$3k zDSs-bA5d8+KYHB)BtYv@9<)BS7nO<1=pm%3{^h zFhxjDLkxpZm@cGeB1S+sw1L^s7XE^EFb5)GF0_Yv&;jN{6fA&_f?kLVp)+)aZqNgI zLT^|EeP9{%h2_u>R=@xl3_~Cu65vl52&-T?tcMY>0g_=PY=lv;2}Z+aNP#Ud2DU;H zWI!rxhw+dJgJ2xY0%|*ID{32Rqt?&~s1DtM>eB^cU@6dcu|Re04;-=}4u--o*Z~J& zKTH5cpB1cQ!Tr)ccfoF;eH{SWALT`PQr=S`8)g9YaXKsk>f1d)^Y;Sv>tdk(q`o{0 zbKo3MU!Di*%L_n#c@d~DF9Fq$`jPtUGEh0z0o8XUQ2$Y%O@_m84b}jMwU7f;4_bZ{ zs10rcwa+TJ3e=bPfco-2Q2$ZiJp}5zM?ih{0I2O~zuVynP~TBr&tNCqfIv6|xj^rS zV?gf(YNMAh1*nZqz;rkTM_?n+zV8CH*J_~le*-6B8{7eE6I!28ThO|+9`*5axB|<8 z+G_<+KT(^|`g!maZow@0TS!wGs6VI=sQu}DLhVn-{(lgu9ghR$e+}q0ol9sR)DG8y z#=;ArHl=o;wxshUp=GoVopRrMgiWsLT~GpZcBZKy69uQC+E=uYtw}twZ~vcA)w1f!g~6 zP}yi-v@W&DV?;Vn(r1g*o>UfEkJ^pK3(Y4qUmqGmBSB+C1A!r;k)R2pLQ|wkGl4Op zI#4tLQ-K+xf;rL_1yn%VQecIsV2w0sF0er)wqPe{fv7;s>;(>p3JhuD2u=cLL70iG4kzFwPpCmO?`S6&I!&Vk_&>1h~$#s zG9saTt`u+;>1#lBp}Nwt>u>{d1UC_HL9XC7qQV`d$z8Z7xQ|F42p%Fn5NGrTSn$R|H3!t{5a=rsr~KUZ_84Jw=`Kzh{Hj6lr`= zTho519Mraob0|exhx$CfPx1LU{U<%Y{cZ!r7@$91_}lL`_&o-GkAdG~;L9xPlwF zg9mtm7kGmY_<{ta;0OK?05S-KAZQ7}5CW|r6vCi2ghK?hfws^NBB4EWfGFq)(a;Gx zLl@`@G0+XVLl20Bp3n<=Lm%i1{h&V#fPpXw216VSfuRr&!yo|?;ZGP2BOnPzLNbhk z(U1aTU@VM-R2UBvU?NO{$&dz9U@A<5=`aIk!Yr5#f59A>3-e$;EP#cu2o^&+EP-6O z4R_!!+=Kh@03O04cnnYADLjKbcn&Y%CA@;y@CM$(JNO&^f%otM=vtVr>lD|(MP2{W zHKpR3m#$gqx|6P3>H3kbC+WITaUEC<>FQ7eYCz#bfcfg?D9Gq`{lT)_?8 z!2>+O3%tPxd_e+I@B@Dc02u^A5VV9~2!U1*3SrP1!XX0MKwD@Bk8E!38&yRoPo1&4$i{`xCocvGF*YHa1E}*4ak9;a0_zbHr#=`a1ZXo z19%9J;4wUbr|=B&;5od2m+%T+!y9-D@8ECv2j0U65GmvR56VyqN<$e?fwG_qg1{tpLPd6WPE literal 0 HcmV?d00001