Skip to content

Commit 7ab649e

Browse files
committed
fix exemple and implementation of DI extension
1 parent 5a1d133 commit 7ab649e

File tree

6 files changed

+75
-66
lines changed

6 files changed

+75
-66
lines changed

Project.toml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ version = "0.1.4"
66
[deps]
77
ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210"
88
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
9-
QuadGK = "1fd47b50-473d-5c70-9696-f719f8f3bcdc"
109
StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"
1110
Trixi = "a7f1ee26-1774-49b1-8366-f1abc58fbfcb"
1211
WriteVTK = "64499a7a-5c06-52f2-abe2-ccb03c286192"
@@ -21,7 +20,6 @@ BloodFlowTrixiDataInterpolationsExt = "DataInterpolations"
2120
DataInterpolations = "8.0"
2221
ForwardDiff = "0.10, 1"
2322
LinearAlgebra = "1.10, 1.11"
24-
QuadGK = "2.10, 2.11"
2523
StaticArrays = "1.9"
2624
Trixi = "0.10, 0.11"
2725
WriteVTK = "1.21"

exemples/Model2D/diexemple.jl

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,22 @@ using DataInterpolations
44
using BloodFlowTrixi
55
using StaticArrays, LinearAlgebra
66
using QuadGK
7+
using LinearAlgebra
78

89
eq = BloodFlowEquations2D(; h = 0.1)
10+
xyz_data = [SA[cos(0.2*si),sin(0.2*si),si] for si in range(0,40,100)]
11+
12+
curve = interpolate_curve(xyz_data)
13+
L = curve.t[end-1]
14+
println("curve length : $L")
15+
BloodFlowTrixi.curvature(s) = norm(DataInterpolations.derivative(curve,s,2))
916

1017
mesh = P4estMesh(
1118
(1,2),
1219
polydeg = 1,
1320
periodicity = (true,false),
1421
coordinates_min = (0.0,0.0),
15-
coordinates_max = (2*pi,40.0),
22+
coordinates_max = (2*pi,L),
1623
initial_refinement_level = 4
1724
)
1825

@@ -47,8 +54,8 @@ cb = CallbackSet(
4754
dt_adapt,analyse
4855
)
4956

50-
sol = solve(ode, SSPRK33(),dt = dt_adapt(ode),callback= cb)
57+
sol = solve(ode, SSPRK33(),dt = dt_adapt(ode),callback= cb,saveat = 0.03,save_everystep = false)
5158

5259
# artery center-line
53-
xyz_data = [[cos(0.2*si),sin(0.2*si),si] for si in range(0,40,100)]
60+
5461
res = get3DData(eq,xyz_data,semi,sol,1)

ext/BloodFlowTrixiDataInterpolationsExt.jl

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,15 @@ module BloodFlowTrixiDataInterpolationsExt
77
using ..DataInterpolations
88
end
99
using StaticArrays, LinearAlgebra
10-
using ForwardDiff, QuadGK
11-
function BloodFlowTrixi.get3DData(eq::BloodFlowEquations2D,curve_data::AbstractArray,semi,sol,time_index ::Int = 1;vtk ::Bool=false,out ::T="./datas") where {T<:AbstractString}
10+
using ForwardDiff
11+
function BloodFlowTrixi.interpolate_curve(curve_data::AbstractArray)
1212
N = length(curve_data)
1313
quadinterp = QuadraticSpline(curve_data,range(0,1,N))
14-
L = quadgk(s->norm(ForwardDiff.derivative(quadinterp,s)),0,1)[1]
15-
s_data = range(0,L,N)
16-
newinterp = CubicSpline(curve_data,s_data)
17-
curve = SmoothArcLengthInterpolation(newinterp;m=length(s_data),in_place=false)
14+
curve = SmoothArcLengthInterpolation(quadinterp;m=N,in_place=false)
15+
return curve
16+
end
17+
function BloodFlowTrixi.get3DData(eq::BloodFlowEquations2D,curve_data::AbstractArray,semi,sol,time_index ::Int = 1;vtk ::Bool=false,out ::T="./datas") where {T<:AbstractString}
18+
curve = interpolate_curve(curve_data)
1819
tanj(s) = ForwardDiff.derivative(curve,s)
1920
function nor(s)
2021
res= ForwardDiff.derivative(tanj,s)
@@ -23,11 +24,11 @@ module BloodFlowTrixiDataInterpolationsExt
2324
a,b,c = tanj(s)
2425
# return a any normal vector
2526
if a != 0
26-
return [-b,a,0]/sqrt(a^2+b^2)
27+
return SA[-b,a,0]/sqrt(a^2+b^2)
2728
elseif b != 0
28-
return [-b,a,0]/sqrt(a^2+b^2)
29+
return SA[-b,a,0]/sqrt(a^2+b^2)
2930
else
30-
return [-sign(c),0,0]
31+
return SA[-sign(c),0,0]
3132
end
3233
end
3334
return res/n
@@ -36,5 +37,5 @@ module BloodFlowTrixiDataInterpolationsExt
3637
er(theta,s) = cos(theta).*nor(s) .+ sin(theta).*∧(tanj(s),nor(s))
3738
return BloodFlowTrixi.get3DData(eq,s->curve(s),er,semi,sol,time_index;vtk=vtk,out=out)
3839
end
39-
export get3DData
40+
export get3DData,interpolate_curve
4041
end

src/2DModel/viz.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,4 +148,8 @@ function get3DData(eq::BloodFlowEquations2D,semi,sol,time_index ::Int = 1;vtk ::
148148
(v,w) = SA[v[2]*w[3]-v[3]*w[2],v[3]*w[1]-v[1]*w[3],v[1]*w[2]-v[2]*w[1]]
149149
er(theta,s) = cos(theta).*nor(s) .+ sin(theta).*∧(tanj(s),nor(s))
150150
return get3DData(eq,curve,er,semi,sol,time_index;vtk=vtk,out=out)
151+
end
152+
153+
function interpolate_curve(xyz_data)
154+
@error "add DataInterpolations.jl to use this function"
151155
end

src/BloodFlowTrixi.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ Docs under https://yolhan83.github.io/BloodFlowTrixi.jl
1212
$(isnothing(get(ENV, "CI", nothing)) ? ("\n" * "Package local path: " * pathof(BloodFlowTrixi)) : "")
1313
"""
1414
module BloodFlowTrixi
15-
using Trixi,WriteVTK,StaticArrays,QuadGK
15+
using Trixi,WriteVTK,StaticArrays
1616
# Write your package code here.
1717
abstract type AbstractBloodFlowEquations{NDIMS, NVARS} <:Trixi.AbstractEquations{NDIMS, NVARS} end
1818
include("1DModel/1dmodel.jl")
1919
include("2DModel/2dmodel.jl")
2020

21-
export BloodFlowEquations1D,BloodFlowEquations1DOrd2, BloodFlowEquations2D,flux_nonconservative,source_term_simple,source_term_simple_ord2,boundary_condition_pressure_in,initial_condition_simple,friction,pressure,radius,boundary_condition_outflow,boundary_condition_slip_wall,get3DData
21+
export BloodFlowEquations1D,BloodFlowEquations1DOrd2, BloodFlowEquations2D,flux_nonconservative,source_term_simple,source_term_simple_ord2,boundary_condition_pressure_in,initial_condition_simple,friction,pressure,radius,boundary_condition_outflow,boundary_condition_slip_wall,get3DData,interpolate_curve
2222
end

0 commit comments

Comments
 (0)