Open christopherfear opened 9 months ago
@christopherfear When you are creating your initial condition initial
, you are using
MultiFieldFESpace([V0_Disp; V0_PF])
which is your test FESpace
, i.e it has zero dirichlet boundary conditions. I would probably try to change that to your trial FESpace
, i.e
initial = Gridap.MultiField.MultiFieldFEFunction([get_free_dof_values(uh_in); get_free_dof_values(sh_in)], MultiFieldFESpace([U_Disp; U_PF]), [uh_in; sh_in])
I also think it would be safer (at least to debug) to interpolate instead of creating your own object:
initial = interpolate([uh_in,sh_in],MultiFieldFESpace([U_Disp; U_PF]))
@JordiManyer
Thanks for the suggestion, I had tried this before, and checked again after you commented but still no luck
We are having some difficulties solving two coupled multi-variate non-linear PDEs using Gridap.
We have two PDEs that we need to solve together in increments for the vector field
uh
and the scalar fieldsh
. Their residuals are:The following function solves one increment starting from the initial conditions,
uh_in
andsh_in
.As you can see, our approach is to add the residuals from each PDE, combine the trial spaces and test spaces into
MultiFieldFESpace
s, and to combineuh_in
andsh_in
intoMultiFieldFEFunction
s.Unfortunately, although the model runs, the results are not correct against benchmarks analytical solutions.
I should point out that our previous approach used the "splitting method" to solve the system of PDEs, in which one equation is solved at a time, and the solution fed into the next equation, and cycled until the residual of both is below the tolerance. We found that this method was not very efficient and hard to converge, and hoped that this new method based on the fully implicit (aka monolithic residual) approach would work better. The only difference between the codes is in the
step
function above, so we are confident the error is somewhere here.Can anyone see what is going wrong?