From d960ec5824f004fd606b7b7ff94bbf155277fe27 Mon Sep 17 00:00:00 2001 From: Jukka Aho Date: Thu, 10 Dec 2015 23:00:05 +0200 Subject: [PATCH] 3d mortar assembly tests + fixes detecting unique with tol. --- notebooks/2015-12-10-3d-mortar-assembly.ipynb | 32 ++++-- src/dirichlet.jl | 2 +- src/integrate.jl | 15 +-- src/mortar.jl | 104 +++++++++++++++++- src/{vonMises.jl => vonmises.jl} | 0 test/test_directsolver.jl | 4 +- test/test_dirichlet.jl | 13 ++- test/test_heat.jl | 2 + test/test_mortar.jl | 39 ++++++- 9 files changed, 184 insertions(+), 27 deletions(-) rename src/{vonMises.jl => vonmises.jl} (100%) diff --git a/notebooks/2015-12-10-3d-mortar-assembly.ipynb b/notebooks/2015-12-10-3d-mortar-assembly.ipynb index c41949c..75a7972 100644 --- a/notebooks/2015-12-10-3d-mortar-assembly.ipynb +++ b/notebooks/2015-12-10-3d-mortar-assembly.ipynb @@ -128,11 +128,18 @@ "collapsed": false }, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO: npts = 6\n" + ] + }, { "data": { - "image/png": "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", + "image/png": "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6uyjMhISBnPmTLxlAorrJkV4PW66CbZu1Tbz9fPTnisuhldfhdBQbRqGTNMsV03+0j3H3q9FKopCv379SExMZPbs2dx0003Vfq3p06fz+eefWzBd5e3cuZP69etzxx13MG/ePNzd3XnxxRfZtm0beXl5/PLLLza5UbAlf37atHkdb+9+AJSVnSIurjclJTKv1hZIEV4vJydt496UFJg6VTt9CpCRAUOHwh13aBP1hS5qy7VIT09PJk+eXO05iKqq8u6777Jnzx4LJ6uc0NBQ5s+fz+7duzlx4gQbNmxg2rRpdOnSBVdXV10yVYYlf34UxUBY2Arq1LkBgOLiA8TF9aGszHo3RImrkyK0lHr1YPZsiIuDHj0uPP/rrxAVBY89BidP6pfPQcm1SM3+/fvJy8uz2NZLqqqSnJzMokWLGDlyJI8//niFn+/u7s7EiRMxGo1VurFF79Palv75MRi8MBrX4+amLdhx+vSfJCePRFVloQ49SRFaWkgIfP01bNgAbdtqz5nN8O672nSLDz6g3G2thcVZ+wYQPWVmZpZ7d2lsbCxAtdcYNZlM/P3338ybN4/777+fJk2aEBYWxiOPPEJCQgKNGzeudu7y2MJp7cr+/CwFPqvka7q5NcNo3IjBUAeA7Owv2LfvecsEFtViO7uF1iaKAr17a1Mu5s3Trhnm52sjwgkTtDJ85x3o1k3vpA7BHssvel00Ww9upWtA10rlLysr484776Rx48YsWLAAo9F4yfGdO3fSpEkTmjZtWq08H374IY8++ihubm506tSJ8ePH061bN7p06UK9GlqD11ZOa1fm339V/w3UqdOe8PDPiIvrA5g5eHAWHh5BNG06ploZxfWREWFNcnODZ57Rrh8OH37h+V274F//gmHDtGuJQlykOiMhg8HA3LlzyczMJCoqiilTpvDyyy+jKAqKovCf//yHzMxMFEVh9uzZV3z9teYp9u/fny1btpCXl8evv/7Kq6++yj333FNjJQi1/7R248a9CAycf/5xaup4cnJ+1jGR45LdJ6xpyxZtd4uzp6kA8PSE6dPh//4PbPCuOUtYs8aPlSszGTHCj759j+odx+ZVZTeJy5WUlDB//nyef/55SitY8ei5557DaDTy22+/8dtvvzFo0CBeeOGF685uaVUdGevist0nqMScyIulpT3O4cPvAODs3ICoqO14eYVa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", "text/plain": [ - "PyPlot.Figure(PyObject )" + "PyPlot.Figure(PyObject )" ] }, "metadata": {}, @@ -141,7 +148,7 @@ { "data": { "text/plain": [ - "(-1.6,2.1)" + "(-2.1,2.1,-1.6,2.1)" ] }, "execution_count": 4, @@ -156,6 +163,7 @@ "plot(M[1, [1, 2, 3, 1]]', M[2, [1, 2, 3, 1]]', \"-ro\", lw=2.0)\n", "#plot(P[1, [1, 2, 3, 4, 5, 6, 1]]', P[2, [1, 2, 3, 4, 5, 6, 1]]', \"-k\", lw=2.5)\n", "npts = size(P, 2)\n", + "info(\"npts = $npts\")\n", "# loop over cells\n", "ips = JuliaFEM.Core.get_integration_points(JuliaFEM.Core.Tri3, Val{5})\n", "#info(\"ips = $ips\")\n", @@ -170,10 +178,10 @@ " #info(\"geom = $geom\")\n", " for ip in ips\n", " dN = JuliaFEM.Core.get_dbasis(JuliaFEM.Core.Tri3, ip.xi)\n", - " J = sum([kron(dN[:,i], geom[i]') for i=1:length(geom)])\n", + " J = sum([kron(dN[:,j], geom[j]') for j=1:length(geom)])\n", " w = ip.weight*det(J)\n", " x = vec(JuliaFEM.Core.get_basis(JuliaFEM.Core.Tri3, ip.xi)*geom)\n", - " plot(x[1], x[2], \".k\")\n", + " plot(x[1], x[2], \".g\")\n", " theta1 = JuliaFEM.Core.project_point_from_plane_to_surface(x, x0, Q, sel, time)\n", " N1 = sel(theta1[2:3], time)\n", " theta2 = JuliaFEM.Core.project_point_from_plane_to_surface(x, x0, Q, mel, time)\n", @@ -185,7 +193,7 @@ "plot(C[1], C[2], \"ko\")\n", "xlim(-2.1, 2.1)\n", "ylim(-1.6, 2.1)\n", - "#axis(\"off\")" + "axis(\"off\")" ] }, { @@ -200,13 +208,13 @@ "output_type": "stream", "text": [ "INFO: SS = \n", - "[1.024777091906741 0.5824974279835513 0.4791452331961691\n", - " 0.5824974279835513 0.8193479938271759 0.47546939300412483\n", - " 0.4791452331961691 0.47546939300412483 0.4983174725651672]\n", + "[0.5123885459533705 0.29124871399177565 0.23957261659808454\n", + " 0.29124871399177565 0.40967399691358797 0.23773469650206241\n", + " 0.23957261659808454 0.23773469650206241 0.2491587362825836]\n", "INFO: SM = \n", - "[0.8084490740740896 0.7707818930041307 0.5071887860082416\n", - " 0.43219521604939215 0.7584104938271751 0.686709104938285\n", - " 0.4931520061728493 0.3671039094650286 0.5926761831275834]\n" + "[0.4042245370370448 0.38539094650206535 0.2535943930041208\n", + " 0.21609760802469608 0.37920524691358753 0.3433545524691425\n", + " 0.24657600308642466 0.1835519547325143 0.2963380915637917]\n" ] } ], diff --git a/src/dirichlet.jl b/src/dirichlet.jl index e7749a7..b7c473b 100644 --- a/src/dirichlet.jl +++ b/src/dirichlet.jl @@ -14,7 +14,7 @@ function assemble!(assembly::Assembly, problem::BoundaryProblem{DirichletProblem field_name = problem.parent_field_name gdofs = get_gdofs(element, field_dim) - for ip in get_integration_points(element) + for ip in get_integration_points(element, Val{2}) w = ip.weight * det(element, ip, time) N = element(ip, time) A = w*N'*N diff --git a/src/integrate.jl b/src/integrate.jl index 8f65d8a..3098855 100644 --- a/src/integrate.jl +++ b/src/integrate.jl @@ -78,14 +78,15 @@ end function get_integration_points(::TriangularElements, ::Type{Val{5}}) # http://math2.uncc.edu/~shaodeng/TEACHING/math5172/Lectures/Lect_15.PDF + # FIXME: something wrong here with weights ..? [ - IntegrationPoint([0.33333333333333, 0.33333333333333], 0.22500000000000), - IntegrationPoint([0.47014206410511, 0.47014206410511], 0.13239415278851), - IntegrationPoint([0.47014206410511, 0.05971587178977], 0.13239415278851), - IntegrationPoint([0.05971587178977, 0.47014206410511], 0.13239415278851), - IntegrationPoint([0.10128650732346, 0.10128650732346], 0.12593918054483), - IntegrationPoint([0.10128650732346, 0.79742698535309], 0.12593918054483), - IntegrationPoint([0.79742698535309, 0.10128650732346], 0.12593918054483) + IntegrationPoint([0.33333333333333, 0.33333333333333], 0.5*0.22500000000000), + IntegrationPoint([0.47014206410511, 0.47014206410511], 0.5*0.13239415278851), + IntegrationPoint([0.47014206410511, 0.05971587178977], 0.5*0.13239415278851), + IntegrationPoint([0.05971587178977, 0.47014206410511], 0.5*0.13239415278851), + IntegrationPoint([0.10128650732346, 0.10128650732346], 0.5*0.12593918054483), + IntegrationPoint([0.10128650732346, 0.79742698535309], 0.5*0.12593918054483), + IntegrationPoint([0.79742698535309, 0.10128650732346], 0.5*0.12593918054483) ] end diff --git a/src/mortar.jl b/src/mortar.jl index 6411c79..1713d88 100644 --- a/src/mortar.jl +++ b/src/mortar.jl @@ -364,6 +364,30 @@ function get_points_inside_triangle(Y::Matrix, X::Matrix) end +""" Return unique objects with some given tolerance. This is used in next function + because traditional unique() command returns row vectors as non-unique if they + differs only a "little". +""" +function uniquetol(P, dim::Int; args...) + @assert dim == 2 + items = Vector{Float64}[P[:,i] for i=1:size(P,dim)] + new_items = Vector{Float64}[] + for item in items + has_found = false + for new_item in new_items + if isapprox(item, new_item; args...) + has_found = true + break + end + end + if !has_found + push!(new_items, item) + end + end + return reshape([new_items...;], length(new_items[]), length(new_items)) +end + + """ Make polygon clipping of shapes S and M. @@ -400,13 +424,13 @@ function clip_polygon(S::Matrix, M::Matrix) P2 = get_points_inside_triangle(M, S) P3 = get_points_inside_triangle(S, M) P = hcat(P1, P2, P3) + P = uniquetol(P, 2) meanval = mean(P, 2) tmp = P .- meanval angles = atan2(tmp[2,:], tmp[1,:]) angles = reshape(angles, length(angles)) order = sortperm(angles) - P = copy(unique(P[:, order], 2)) - return P, neighbours + return P[:, order], neighbours end @@ -569,7 +593,9 @@ end # Mortar assembly -function assemble!(assembly::Assembly, problem::BoundaryProblem{MortarProblem}, slave_element::Element, time::Number) +typealias MortarElements2D Union{Seg2, Seg3} + +function assemble!{E<:MortarElements2D}(assembly::Assembly, problem::BoundaryProblem{MortarProblem}, slave_element::Element{E}, time::Real) # get dimension and name of PARENT field field_dim = problem.parent_field_dim @@ -612,3 +638,75 @@ function assemble!(assembly::Assembly, problem::BoundaryProblem{MortarProblem}, end end end + + +typealias MortarElements3D Union{Tri3} + +function assemble!{E<:MortarElements3D}(assembly::Assembly, problem::BoundaryProblem{MortarProblem}, slave_element::Element{E}, time::Real) + field_dim = problem.parent_field_dim + field_name = problem.parent_field_name + slave_dofs = get_gdofs(slave_element, field_dim) +# info("Slave dofs: $slave_dofs") +# info("Field dim: $field_dim") + + # create auxiliary plane and project slave nodes to it + # x0 = origo, Q = local basis + x0, Q = create_auxiliary_plane(slave_element, time) + S = Vector{Float64}[] + for p in slave_element("geometry", time) + push!(S, project_point_to_auxiliary_plane(p, x0, Q)) + end + S = reshape([S...;], 2, 3) + + integration_points = get_integration_points(E, Val{5}) + + for master_element in slave_element["master elements"] + master_dofs = get_gdofs(master_element, field_dim) + # project master nodes to auxiliary plane and create polygon clipping + M = Vector{Float64}[] + for p in master_element("geometry", time) + push!(M, project_point_to_auxiliary_plane(p, x0, Q)) + end + M = reshape([M...;], 2, 3) + P, neighbours = clip_polygon(S, M) + C = calculate_polygon_centerpoint(P) + + npts = size(P, 2) # number of vertices in polygon +# S = zeros(3, 3) +# M = zeros(3, 3) + for i=1:npts # loop vertices and create temporary integrate cells + xvec = [C[1], P[1, i], P[1, mod(i, npts)+1]] + yvec = [C[2], P[2, i], P[2, mod(i, npts)+1]] + X = hcat(xvec, yvec)' + geom = Field(Vector{Float64}[X[:,j] for j=1:size(X,2)]) + for ip in integration_points + # calculate determiant of jacobian + dN = get_dbasis(E, ip.xi) + J = sum([kron(dN[:,j], geom[j]') for j=1:length(geom)]) + w = ip.weight*det(J) + # gauss point in auxiliary plane + N = get_basis(E, ip.xi) + x = vec(N*geom) + # find projection of gauss point to master and slave elements + theta1 = project_point_from_plane_to_surface(x, x0, Q, slave_element, time) + theta2 = project_point_from_plane_to_surface(x, x0, Q, master_element, time) + # evaluate shape functions values in gauss point and add contribution to matrices + N1 = slave_element(theta1[2:3], time) + N2 = master_element(theta2[2:3], time) + S = w*N1'*N1 + M = w*N1'*N2 + for k=1:field_dim + sd = slave_dofs[k:field_dim:end] + md = master_dofs[k:field_dim:end] + add!(assembly.stiffness_matrix, sd, sd, S) + add!(assembly.stiffness_matrix, sd, md, -M) +# info("sd = $sd") +# info("md = $md") + end + end + end +# info("S = \n$S") +# info("M = \n$M") + end +end + diff --git a/src/vonMises.jl b/src/vonmises.jl similarity index 100% rename from src/vonMises.jl rename to src/vonmises.jl diff --git a/test/test_directsolver.jl b/test/test_directsolver.jl index 51797b9..7a236c0 100644 --- a/test/test_directsolver.jl +++ b/test/test_directsolver.jl @@ -51,6 +51,8 @@ function test_solver_multiple_dirichlet_bc() push!(problem3, dy) solver = DirectSolver() + solver.dump_matrices = true + solver.name = "test_solver_multiple_dirichlet_bc" push!(solver, problem) push!(solver, problem2) push!(solver, problem3) @@ -63,7 +65,7 @@ function test_solver_multiple_dirichlet_bc() @test isapprox(disp, [3.17431158889468E-02, -1.38591518927826E-01]) end -#test_solver_multiple_dirichlet_bc() +test_solver_multiple_dirichlet_bc() function test_direct_cholesky_with_non_homogeneous_dirichlet_conditions() diff --git a/test/test_dirichlet.jl b/test/test_dirichlet.jl index b5a881a..18ff04a 100644 --- a/test/test_dirichlet.jl +++ b/test/test_dirichlet.jl @@ -4,7 +4,7 @@ module TestDirichletBoundaryCondition using JuliaFEM.Test -using JuliaFEM.Core: Seg2, DirichletProblem, Assembly, assemble +using JuliaFEM.Core: Tri3, Seg2, DirichletProblem, Assembly, assemble function test_dirichlet_problem_1_dim() element = Seg2([1, 2]) @@ -53,4 +53,15 @@ function test_dirichlet_problem_2_dim_single_dof_fixed() @test isapprox(b, [0.0, 0.0, 0.0, 0.0]) end +function test_dirichlet_surface_tri3() + elem = Tri3([1, 2, 3]) + elem["geometry"] = Vector{Float64}[[0.0, 0.0], [1.0, 0.0], [0.0, 1.0]] + elem["temperature"] = 0.0 + prob = DirichletProblem("temperature", 1) + push!(prob, elem) + ass = assemble(prob, 0.0) + k = full(ass.stiffness_matrix) + @test isapprox(k, 1/24*[2 1 1; 1 2 1; 1 1 2]) +end + end diff --git a/test/test_heat.jl b/test/test_heat.jl index 57171f4..2f43968 100644 --- a/test/test_heat.jl +++ b/test/test_heat.jl @@ -36,6 +36,8 @@ function test_one_element() # always start test function with name test_ A = full(assembly.stiffness_matrix) b = full(assembly.force_vector) + info("stiffness matrix = \n$(round(A, 3))") + @test isapprox(A, [ 4.0 -1.0 -2.0 -1.0 -1.0 4.0 -1.0 -2.0 diff --git a/test/test_mortar.jl b/test/test_mortar.jl index 3e69004..8a2eb40 100644 --- a/test/test_mortar.jl +++ b/test/test_mortar.jl @@ -15,7 +15,8 @@ using JuliaFEM.Core: project_from_slave_to_master, project_from_master_to_slave using JuliaFEM.Core: create_auxiliary_plane, project_point_to_auxiliary_plane, get_edge_intersections, get_points_inside_triangle, clip_polygon, calculate_polygon_centerpoint, - project_point_from_plane_to_surface + project_point_from_plane_to_surface, assemble + function get_test_2d_model() # this is hand calculated and given as an example in my thesis @@ -68,6 +69,7 @@ function test_calc_flat_2d_projection_slave_to_master() @test X2 == [3/4, 1.0] end + function test_calc_flat_2d_projection_master_to_slave() slaves, masters = get_test_2d_model() slave1, slave2 = slaves @@ -80,6 +82,7 @@ function test_calc_flat_2d_projection_master_to_slave() end #test_calc_flat_2d_projection_master_to_slave() + function test_calc_flat_2d_projection_rotated() master1 = Seg2([3, 4]) master1["geometry"] = Vector{Float64}[[0.0, 1.0], [0.0, 0.0]] @@ -102,6 +105,7 @@ function test_calc_flat_2d_projection_rotated() end + function test_create_flat_2d_assembly() slaves, masters = get_test_2d_model() slave1, slave2 = slaves @@ -149,6 +153,7 @@ function test_create_flat_2d_assembly() end #test_create_flat_2d_assembly() + function test_2d_mortar_multiple_bodies_multiple_dirichlet_bc() N = Vector[ [0.0, 0.0], [1.0, 0.0], @@ -351,6 +356,7 @@ function test_2d_mortar_three_bodies_shared_nodes() end #test_2d_mortar_three_bodies_shared_nodes() + function test_auxiliary_plane_transforms() nodes = Vector{Float64}[ [0.0, 0.0, 0.0], @@ -380,7 +386,7 @@ function test_auxiliary_plane_transforms() info("projected point = $X") @test isapprox(X, Float64[1.0/3.0+0.1, 1.0/3.0+0.1, 0.0]) end -test_auxiliary_plane_transforms() +#test_auxiliary_plane_transforms() function test_get_edge_intersections() @@ -460,4 +466,33 @@ end #test_calculate_polygon_centerpoint() +function test_assemble_3d_problem() + nodes = Vector{Float64}[ + [0.0, 0.0, 0.0], + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0], + [0.0, 0.0, 0.1], + [1.0, 0.0, 0.1], + [0.0, 1.0, 0.1]] + mel = Tri3([4, 5, 6]) + mel["geometry"] = Vector{Float64}[nodes[4], nodes[5], nodes[6]] + sel = Tri3([1, 2, 3]) + sel["geometry"] = Vector{Float64}[nodes[1], nodes[2], nodes[3]] + R = [0.0 1.0 0.0 + 0.0 0.0 1.0 + 1.0 0.0 0.0] + sel["nodal ntsys"] = Matrix{Float64}[R, R, R] + sel["master elements"] = Element[mel] + prob = MortarProblem("temperature", 1) + push!(prob, sel) + stiffness_matrix = full(assemble(prob, 0.0).stiffness_matrix) + info("stiffness matrix for this problem:\n$stiffness_matrix") + M = D = 1/24*[2 1 1; 1 2 1; 1 1 2] + B = [D -M] # slave dofs are first in this. + info("expected matrix for this problem:\n$B") + @test isapprox(stiffness_matrix, B) +end +#test_assemble_3d_problem() + + end