Hi Jaekwang

One way I can think of is to construct your ConstraintMatrix for Part B 
manually. Iterate over your triangulation, find all the dofs on the target 
boundaries, then use ConstraintMatrix::add_line and 
ConstraintMatrix::set_inhomogeinity to set the BC.

Another method might be putting your calc_tangential_velocity function 
inside New_VelBndValues. I assume this function needs to know the solution, 
triangulation etc. Then you would have to create some references or dealii 
SmartPointers in this class as well.

I hope this helps.

Jie

On Monday, April 9, 2018 at 6:32:28 PM UTC-4, Jaekwang Kim wrote:
>
> Hi, all 
>
>
> I am always thank you for all guys here in this community. 
>
>
> I have a question on the use of  VectorTools::interpolate_boundary_values 
> functions
>
>
> Typically we use this function in when we set-up system as in the form 
>
>
>
> VectorTools::interpolate_boundary_values (dof_handler,
>
>                                         1,
>
>                                        *Original**_VelBndValues<dim>(),*
>
>                                        constraints,
>
>                                        fe.component_mask(velocities));
>
>
>
> The red lined functions are usually declared out side of main class. 
>
>
> One problem I am interested in now is to (Part A) solve stokes flow with 
> no slip boundary condition on every boundary one time (as step-22), -
>
>
> and then to (Part B) solve same system again with slightly different 
> boundary condition comes from the straight problem
>
>
> If I finish Part A, i have numerical solution of (u,p) linked with dot 
> handler. 
>
>
> In (Part B), I post process solutions part A, e.g. I calculated stress 
> value and I calculated tangential velocity of a boundary using Navier slip 
> condition, 
>
>
> So, I need to use 
>
>
>
> VectorTools::interpolate_boundary_values (dof_handler,
>
>                                         1,
>
>                                        *New_VelBndValues<dim>(),*
>
>                                        constraints,
>
>                                        fe.component_mask(velocities));
>
>
> such that 
>
>     
>
>      template<intdim>
>
>      double
>
>      New_VelBndValues<dim>::value (constPoint<dim>  &p,
>
>      constunsignedintcomponent) const
>
>      {
>
>      Assert (component < this->n_components,
>
>      ExcIndexRange (component, 0, this->n_components));
>
>      
>
>      if(component == 0)
>
>          *return calc_tangential_velocity ();     (Error Here!!)*
>
>      else
>
>          return0;
>
>      }
>
>
>
>
> where '*calc_tangential_velocity ();' *is declared in main class, since I 
> should have information of dot_handler and solution vectors.
>
>
>   template<intdim>
>
>   classStokesProblem
>
>   {
>
>   public:
>
>     StokesProblem (constunsignedintdegree);
>
>     voidrun ();
>
>   private:
>
>     
>
>       ……
>
>  
>
>     *double calc_tangential_velocity ();*
>
>  
>
>     BlockVector<double> solution;
>
>  
>
> };
>
>     
>
>   ////////
>
> Obviously, this method does not work, I mean I cannot compile the code and 
> it shows  'use of undeclared identifier 'calc_tangential_velocity' on the 
> line  *(Error Here!!)*
>
> I would appreciate any one who comment it. It seems that complier has to 
> know what is that before. 
>
>
> Will this be possible in a certain way? How can I  go around this problem 
> ? 
>
>
> Thanks, 
>
>
> Jaekwang 
>
>
>
>

-- 
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see 
https://groups.google.com/d/forum/dealii?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to dealii+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to