@@ -47,41 +47,26 @@ function setup_fe_spaces(model)
47
47
end
48
48
49
49
function run (comm,model,U,V,strategy)
50
+ trian= Triangulation (strategy,model)
51
+ dΩ= Measure (trian,degree)
50
52
51
- function setup_dΩ (part,(model,gids),strategy)
52
- trian = Triangulation (strategy,model)
53
- Measure (trian,degree)
54
- end
55
- ddΩ = DistributedData (setup_dΩ,model,strategy)
53
+ btrian= BoundaryTriangulation (strategy,model)
54
+ dΓ = Measure (btrian,degree)
56
55
57
- function setup_dΓ (part,(model,gids),strategy)
58
- trian = BoundaryTriangulation (strategy,model)
59
- Measure (trian,degree)
60
- end
61
- ddΓ = DistributedData (setup_dΓ,model,strategy)
62
-
63
- function setup_dΛ (part,(model,gids),strategy)
64
- trian = SkeletonTriangulation (strategy,model)
65
- Measure (trian,degree)
66
- end
67
- ddΛ = DistributedData (setup_dΛ,model,strategy)
56
+ strian= SkeletonTriangulation (strategy,model)
57
+ dΛ = Measure (strian,degree)
68
58
59
+ n_Γ = get_normal_vector (btrian)
60
+ n_Λ = get_normal_vector (strian)
69
61
70
62
function a (u,v)
71
- DistributedData (u,v,ddΩ,ddΓ,ddΛ) do part, ul, vl, dΩ, dΓ, dΛ
72
- n_Γ = get_normal_vector (dΓ. quad. trian)
73
- n_Λ = get_normal_vector (dΛ. quad. trian)
74
- ∫ ( ∇ (vl)⋅ ∇ (ul) )* dΩ +
75
- ∫ ( (γ/ h)* vl* ul - vl* (n_Γ⋅ ∇ (ul)) - (n_Γ⋅ ∇ (vl))* ul )* dΓ +
76
- ∫ ( (γ/ h)* jump (vl* n_Λ)⋅ jump (ul* n_Λ) - jump (vl* n_Λ)⋅ mean (∇ (ul)) - mean (∇ (vl))⋅ jump (ul* n_Λ) )* dΛ
77
- end
63
+ ∫ ( ∇ (v)⋅ ∇ (u) )* dΩ +
64
+ ∫ ( (γ/ h)* v* u - v* (n_Γ⋅ ∇ (u)) - (n_Γ⋅ ∇ (v))* u )* dΓ +
65
+ ∫ ( (γ/ h)* jump (v* n_Λ)⋅ jump (u* n_Λ) - jump (v* n_Λ)⋅ mean (∇ (u)) - mean (∇ (v))⋅ jump (u* n_Λ) )* dΛ
78
66
end
79
67
function l (v)
80
- DistributedData (v,ddΩ,ddΓ) do part, vl, dΩ, dΓ
81
- n_Γ = get_normal_vector (dΓ. quad. trian)
82
- ∫ ( vl* f )* dΩ +
83
- ∫ ( (γ/ h)* vl* ud - (n_Γ⋅ ∇ (vl))* ud )* dΓ
84
- end
68
+ ∫ ( v* f )* dΩ +
69
+ ∫ ( (γ/ h)* v* ud - (n_Γ⋅ ∇ (v))* ud )* dΓ
85
70
end
86
71
87
72
# Assembly
@@ -91,21 +76,13 @@ function run(comm,model,U,V,strategy)
91
76
# FE solution
92
77
uh = solve (op)
93
78
94
- # Error norms and print solution
95
- sums = DistributedData (model, uh) do part, (model, gids), uh
96
- trian = Triangulation (model)
97
- owned_trian = remove_ghost_cells (trian, part, gids)
98
- dΩ = Measure (owned_trian, degree)
99
- e = u - uh
100
- l2 (u) = ∫ ( u⊙ u )* dΩ
101
- h1 (u) = ∫ ( u⊙ u + ∇ (u)⊙ ∇ (u) )* dΩ
102
- e_l2 = sum (l2 (e))
103
- e_h1 = sum (h1 (e))
104
- e_l2, e_h1
105
- end
106
- e_l2_h1 = gather (sums)
107
- e_l2 = sum (map (i -> i[1 ], e_l2_h1))
108
- e_h1 = sum (map (i -> i[2 ], e_l2_h1))
79
+ trian = Triangulation (OwnedCells,model)
80
+ dΩ = Measure (trian,degree)
81
+ e = u - uh
82
+ l2 (u) = ∫ ( u⊙ u )* dΩ
83
+ h1 (u) = ∫ ( u⊙ u + ∇ (u)⊙ ∇ (u) )* dΩ
84
+ e_l2 = sum (l2 (e))
85
+ e_h1 = sum (h1 (e))
109
86
tol = 1.0e-9
110
87
println (" $(e_l2) < $(tol) " )
111
88
println (" $(e_h1) < $(tol) " )
0 commit comments