-
Notifications
You must be signed in to change notification settings - Fork 32
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merge_beast #122
base: master
Are you sure you want to change the base?
Merge_beast #122
Conversation
test compare by taking limit (use two triangles)
a more general trace describtion is needed
implemented operators and trace, more general description needed
types of bases changed
test defaultquadstrad
included test HHHoperators in BEAST
non used functions commented
multi-trace approach
overwritten meshpoint to add normals
@@ -3,6 +3,7 @@ mutable struct BDM3DBasis{T,M,P} <: Space{T} | |||
fns::Vector{Vector{Shape{T}}} | |||
pos::Vector{P} | |||
end | |||
redefine_geometrie(basis::BDM3DBasis{T,M,P},geo::F) where {T,M,P,F}= BDM3DBasis{T,F,P}(geo,basis.fns,basis.pos) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are you using this function?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, to add the trace mesh to already defined bases, because the infinitisimal translation of the test function is done in the assembly
@@ -150,7 +150,7 @@ function restrict(f::LagrangeRefSpace{T,1}, dom1, dom2) where T | |||
|
|||
# for each point of the new domain | |||
for i in 1:D | |||
v = dom2.vertices[i] | |||
v = verticeslist(dom2)[i] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lets rename to vertices. Users might make assumptions on the return data structure if we add list.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
verticeslist returns a list of vertices, the function vertices in compsciencemshes exists but it does an extra hcat to create a matrix, is this more expensive?
@@ -56,14 +55,36 @@ function restrict(ϕ::NDRefSpace{T}, dom1, dom2) where T | |||
|
|||
u = carttobary(dom1, c) | |||
x = neighborhood(dom1, u) | |||
|
|||
σ = sign(dot(normalize(tangents(dom2,1)×tangents(dom2,2)),normal(dom2))) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should probably add a function orientation
for charts that returns +/-1 so that this potentially expensive and definitely ugly line can go.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
totaly agree
end | ||
end | ||
|
||
return Q | ||
end | ||
|
||
const _vert_perms_nd = [ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
did you synchronise with upstram and make your fork use the more general way of dealing with vertex permutations?
TraceSimplex(simplex,direction::SVector) | ||
simplex plus infinitesimal direction d, for each point p on the simplex, the trace is taken in the p-d direction | ||
""" | ||
struct TraceSimplex{T,U} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
maybe ShiftedSimplex or TranslatedSimplex?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In essence they are shifted over an infinitisimal distance, maybe add this property in the name? for example InfTransSimplex ?
@@ -35,7 +35,7 @@ end | |||
|
|||
function assemble!(biop::DyadicOp, tfs::Space, bfs::Space, store, | |||
threading::Type{BEAST.Threading{:multi}}; | |||
quadstrat=defaultquadstrat(biop, tfs, bfs)) | |||
kwargs...) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why is this better?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If we want further in the assemble! tree to add an argument, even for assembling one specific operator, we dont have to change all assemble functions. I think in a tree it is a good practise to always pas the kwargs argument, enabling us to add extra arguments for specific functions. in the leaves a kwargs argument is needed to catch unused argements intended for other leaves
@@ -91,8 +91,8 @@ function LinearAlgebra.mul!(y::AbstractVecOrMat, solver::GMRESSolver, x::Abstrac | |||
return y | |||
end | |||
|
|||
LinearAlgebra.adjoint(A::GMRESSolver) = GMRESSolver(adjoint(A.linear_operator), A.maxiter, A.restart, A.abstol, A.reltol, A.verbose) | |||
LinearAlgebra.transpose(A::GMRESSolver) = GMRESSolver(transpose(A.linear_operator), A.maxiter, A.restart, A.abstol, A.reltol, A.verbose) | |||
LinearAlgebra.adjoint(A::GMRESSolver) = GMRESSolver(adjoint(A.linear_operator); A.left_preconditioner, A.maxiter, A.restart, A.abstol, A.reltol, A.verbose) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why is this needed?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I just added some arguments because the function errored, I assume the function GMRESSolver was changed in the past
out.coeff *= a | ||
return out | ||
end | ||
function *(a::Union{Matrix,SMatrix},b::BilForm) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Too confusing I think. Users may expect pointwise multiplication.
end | ||
|
||
|
||
struct ZeroBilForm end |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think even the zero bilinear form needs to specify its domain Hilbert spaces
-Traces are taken automatically with a geometric argument.
-Geometric support for traces added
-made sauterschwab momintegrals independent of normal by using permute_vertices
-added linear combination of functionals
-test included for composed operator.
-corrected tests that use nxrt