Skip to content

Commit ec8a501

Browse files
committed
Merge branch 'add-marine' of https://github.com/tmigot/PDEOptimizationProblems into add-marine
2 parents 6f6ebab + 795a1d0 commit ec8a501

2 files changed

Lines changed: 44 additions & 4 deletions

File tree

src/marine.jl

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,28 @@ export marine
22

33
# Marine Population Dynamics COPS Problem v.0.3.1
44
# https://www.mcs.anl.gov/~more//cops/cops3.pdf
5+
<<<<<<< HEAD
56
function marine(args...; n = 400, T = 10.0, kwargs...)
67
model = CartesianDiscreteModel((0, T), n)
78

89
valuetype = Float64
910
reffe = ReferenceFE(lagrangian, valuetype, 1)
1011
Vfree = TestFESpace(model, reffe; conformity = :H1)
12+
=======
13+
# n=400, 800, 1600
14+
function marine(args...; n = 400, kwargs...)
15+
T = 10.0
16+
model = CartesianDiscreteModel((0, T), n)
17+
18+
labels = get_face_labeling(model)
19+
add_tag_from_tags!(labels, "diri0", [1]) #initial time condition
20+
21+
valuetype = Float64
22+
reffe = ReferenceFE(lagrangian, valuetype, 1)
23+
Vfree = TestFESpace(model, reffe; conformity = :H1)
24+
VI = TestFESpace(model, reffe; conformity = :H1, labels = labels, dirichlet_tags = ["diri0"])
25+
UI = TrialFESpace(VI, 0.0)
26+
>>>>>>> 795a1d06d1b16edeafe3d23aef2a206e8ce94b7a
1127
Ufree = TrialFESpace(Vfree)
1228
Xpde = MultiFieldFESpace([Vfree, Vfree, Vfree, Vfree, Vfree, Vfree, Vfree, Vfree])
1329
Ypde = MultiFieldFESpace([Ufree, Ufree, Ufree, Ufree, Ufree, Ufree, Ufree, Ufree])
@@ -21,6 +37,7 @@ function marine(args...; n = 400, T = 10.0, kwargs...)
2137
conv(u, ∇u) = (∇u one(∇u)) u
2238
c(u, v) = conv (v, (u))
2339
function res(y, u, p)
40+
<<<<<<< HEAD
2441
# y1, y2, y3, y4, y5, y6, y7, y8 = y
2542
# m1, m2, m3, m4, m5, m6, m7, m8, g1, g2, g3, g4, g5, g6, g7 = u
2643
# p1, p2, p3, p4, p5, p6, p7, p8 = v
@@ -29,6 +46,29 @@ function marine(args...; n = 400, T = 10.0, kwargs...)
2946
c(y[j], p[j]) - u[8 + j -1] * y[j - 1] + (u[j] + u[8 + j]) * y[j]
3047
)dΩ for j=2:7) +
3148
( c(y[8], p[8]) - u[15] * y[7] + u[8] * y[8] )dΩ
49+
=======
50+
y1, y2, y3, y4, y5, y6, y7, y8 = y
51+
m1, m2, m3, m4, m5, m6, m7, m8, g1, g2, g3, g4, g5, g6, g7 = u
52+
p1, p2, p3, p4, p5, p6, p7, p8 = p
53+
return ( c(y1, p1) + p1 * (m1 + g1) * y1 +
54+
c(y2, p2) - p2 * g1 * y1 + p2 * (m2 + g2) * y2 +
55+
c(y3, p3) - p3 * g2 * y2 + p3 * (m3 + g3) * y3 +
56+
c(y4, p4) - p4 * g3 * y3 + p4 * (m4 + g4) * y4 +
57+
c(y5, p5) - p5 * g4 * y4 + p5 * (m5 + g5) * y5 +
58+
c(y6, p6) - p6 * g5 * y5 + p6 * (m6 + g6) * y6 +
59+
c(y7, p7) - p7 * g6 * y6 + p7 * (m7 + g7) * y7 +
60+
c(y8, p8) - p8 * g7 * y7 + p8 * m8 * y8 )dΩ
61+
#=
62+
return ∫( c(y[1], p[1]) + (u[1] + u[8 + 1]) * y[1] +
63+
c(y[2], p[2]) - u[8 + 2 -1] * y[2 - 1] + (u[2] + u[8 + 2]) * y[2] +
64+
c(y[3], p[3]) - u[8 + 3 -1] * y[3 - 1] + (u[3] + u[8 + 3]) * y[3] +
65+
c(y[4], p[4]) - u[8 + 4 -1] * y[4 - 1] + (u[4] + u[8 + 4]) * y[4] +
66+
c(y[5], p[5]) - u[8 + 5 -1] * y[5 - 1] + (u[5] + u[8 + 5]) * y[5] +
67+
c(y[6], p[6]) - u[8 + 6 -1] * y[6 - 1] + (u[6] + u[8 + 6]) * y[6] +
68+
c(y[7], p[7]) - u[8 + 7 -1] * y[7 - 1] + (u[7] + u[8 + 7]) * y[7] +
69+
c(y[8], p[8]) - u[15] * y[7] + u[8] * y[8] )dΩ
70+
=#
71+
>>>>>>> 795a1d06d1b16edeafe3d23aef2a206e8ce94b7a
3272
end
3373

3474
trian = Triangulation(model)
@@ -83,16 +123,16 @@ function marine(args...; n = 400, T = 10.0, kwargs...)
83123
1.0 12.0 198.0 707.0 2562.0 3163.0 3232.0 5566.0
84124
]
85125

86-
objterm = PDEOptimizationProblems.InterpolatedEnergyFETerm(8, 21, zmes, 1, τ, dΩ)
126+
objterm = PDEOptimizationProblems.InterpolatedEnergyFETerm(8, 21, zmes, 1, τ, dΩ, 1 / n)
87127
f = (y, u) -> PDEOptimizationProblems.interpolated_measurement(objterm, y)
88128

89129
ndofs = Gridap.FESpaces.num_free_dofs(Ypde) + Gridap.FESpaces.num_free_dofs(Ycon)
90130
xin = zeros(ndofs)
91131
return GridapPDENLPModel(xin, f, trian, Ypde, Ycon, Xpde, Xcon, op, name = "Marine Population Dynamics n=$n")
92132
end
93133

94-
apinene_meta = Dict(
95-
:name => "apinene",
134+
marine_meta = Dict(
135+
:name => "marine",
96136
:domaindim => UInt8(1),
97137
:pbtype => :yu,
98138
:nθ => 0,

test/runtests.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ using PDEOptimizationProblems
44
include("utils.jl")
55

66
# Test that every problem can be instantiated.
7-
for prob in setdiff(names(PDEOptimizationProblems), [:PDEOptimizationProblems])
7+
for prob in [:marine] #setdiff(names(PDEOptimizationProblems), [:PDEOptimizationProblems])
88
@time begin
99
print(prob)
1010
prob_fn = PDEOptimizationProblems.eval(prob)

0 commit comments

Comments
 (0)