-
Notifications
You must be signed in to change notification settings - Fork 93
Open
Description
The ElementTriN1()*ElementTriP1() works fine for me as long as the lengthscale of the system is ~1, if I change it to the order of ~ 1e-6 the results become unprecise. This seems especially for solutions which have non-zero values in both subspaces.
I've had a look on the assembly:
from skfem import *
@BilinearForm
def test_form(u_n, u_p, v_n, v_p, w):
print(u_n.max(), u_p.max())
return u_p * v_p
mesh = MeshTri().refined(2)
basis = Basis(mesh, ElementTriN1()*ElementTriP1())
test_form.assemble(basis)
print('-' * 80)
mesh = MeshTri().refined(2).scaled((1e-6,1e-6))
basis = Basis(mesh, ElementTriN1()*ElementTriP1())
test_form.assemble(basis)
The first assembly has values like
0.0 0.816847572980459
3.6336951459609206 0.0
while the second one is like
0.0 0.816847572980459
3633695.1459609214 0.0
Could this be the problem, that there are orders of magnitude between the values and eigs cannot solve the system precisely?
Metadata
Metadata
Assignees
Labels
No labels