Thanks for the info. Let me try the workaround.
By the way, in the last few hours, I debugged the code and found these
comments in TransientSystem<Base>::reinit (). I traced through the class
hierarchy from TransientSystem, LinearImplicitSystem, ImplicitSystem,
ExplicitSystem to System, but found nothing related to old solution
projection.

template <class Base>
void TransientSystem<Base>::reinit ()
{
  // initialize parent data
  Base::reinit();

  // Project the old & older vectors to the new mesh
  // The System::reinit handles this now
  // this->project_vector (*old_local_solution);
  // this->project_vector (*older_local_solution);
}

--Junchao Zhang

On Wed, Jan 27, 2016 at 3:43 PM, Roy Stogner <royst...@ices.utexas.edu>
wrote:

>
> On Wed, 27 Jan 2016, Junchao Zhang wrote:
>
>  I slightly modified adaptivity_ex2.C ( see the outline below). I find
>> after the mesh is refined, the old solution is not correctly projected to
>> the new mesh.
>>  I print out old solution in each refinement step. At the beginning, time
>> = 0.025, r_step = 0, old_local_solution->print() prints the solution at
>> time = 0, which is correct. However, in next refinement (i.e, r_step =
>> 1), old_local_solution->print()'s output has boundary values at
>> time=0.025,
>> which instead should be values at time=0, I think. The wrong
>> old_local_solution will affect matrix assembly, where we call
>> system.old_solution()
>> to compute u_old and grad_u_old. I tried to debug the code, but it is hard
>> to get how equation_systems.reinit () works in libmesh.
>>  Is there something missing in my code? Thank you!
>>
>
> Nothing missing in your code, just a problem with the way we handle
> Dirichlet boundary conditions, I'm afraid.  You might be the first
> person to combine time-varying Dirichlet conditions with transient AMR
> and pay close enough attention to notice an O(h*deltat) flaw in the
> results.
>
> Dirichlet boundary conditions get converted into heterogeneous
> constraint equations, and we only store one set of constraint
> equations at a time, but we assume that these equations are applicable
> to all vectors in need of constraint.  Transient AMR breaks that
> assumption.
>
> We do have an option to forgo projecting a particular vector, but I
> don't think we have an option to project a vector without also
> applying constraint equations afterward... and we can't just add that
> option, because often applying constraint equations is necessary, so
> that e.g. an adaptive coarsening doesn't leave a non-conforming value
> on a hanging node.  Even applying only hanging node constraints
> wouldn't be an option, because we expand our constraint equations, and
> that expansion process brings in Dirichlet values in the cases of
> hanging nodes with neighboring nodes on a Dirichlet boundary.
>
> Gah.
>
> We currently do allow for each adjoint solution vector to have its own
> independent set of heterogeneous constraint values.  Perhaps we could
> extend that to any solution vector, old_solution included?  We'd also
> then need to re-evaluate the Dirichlet function after mesh refinement.
> None of that would be easily fixable from user code without tricky
> library changes.
>
> That's nothing I'd be able to get to myself in the immediate future,
> although obviously "subtle inaccuracy when mixing time-dependent
> Dirichlet + AMR" ought to be a high priority to fix.
>
> As a workaround from user code: you could project while using a
> "time lagged" boundary function, then rerun reinit_constraints() with
> the correct function, then enforce_constraints_exactly() on the
> solution, which will still leave the old_solution in the old state.
> ---
> Roy
>
------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140
_______________________________________________
Libmesh-users mailing list
Libmesh-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libmesh-users

Reply via email to