Hi Robert,
I am currently facing a new difficulty using Sfepy for solving nonlinear PDEs. I have coded my own
Newton’s iterative method that simply consists in linearizing the PDE F(u)=0 around the previous
iteration u_k. I have two questions:
1) At each iteration, I create a `Problem` instance for the linearized PDE and solve it the usual
way in Sfepy. However, only the “linearized-nonlinear” terms need to be recomputed from one iteration
to another. For the sake of computational efficiency, …
[View More]I wish not to reconstruct all matrices / rhs vectors
but only the ones that need to be updated. How would you achieve that? In other words, how can you
store some assembled terms while re-assembling some others?
2) For some reason, I need to evaluate another function, say G (a residual), at each iteration in
the weak form. Again, some terms in G are constant while others are iteration-dependent (through
their material). How would you efficiently evaluate G(u_k) at each iteration? Currently, the only way
I found is to do
dummy_ts = TimeStepper(0, 100) # ficticious time-stepper
eqs = Equations([my_equation]) # equation associated with function G
eqs.init_state()
ebcs = Conditions(my_ebcs)
epbcs = Conditions(my_epbcs)
eqs.time_update(dummy_ts, ebcs=ebcs, epbcs=epbcs)
res_vec = eqs.eval_residuals(sol) # sol is the solution at current iteration
which I guess this is not Sfepy’s philosophy…
I hope my questions are clear enough. Thank you very much in advance for your help.
Best regards,
Hugo L.
[View Less]
Hello!
It's a great tool you built there! I'd like to use it for some kind of
topology optimisation.
Is there an "idiomatic" way to set the material parameters of individual
nodes?
Thank you very much!
JonnyB