getfem-users
[Top][All Lists]

## [Getfem-users] Multiple Dirichlet cond. bricks in a 2D Stokes flow probl

 From: Iago Barbeiro Subject: [Getfem-users] Multiple Dirichlet cond. bricks in a 2D Stokes flow problem (please dismiss the last message) Date: Thu, 26 Jun 2008 08:58:51 -0300

Dear Getfem users,

(first I'm sorry about the first incomplete message...It was an accident)

I would like to solve the 2D Stokes flow around a half cylinder with symmetry and Dirichlet inlet condition.

I started building my domain with a simple unit square structured mesh, in which  I applied  this  geometric transformation:

x'=(Rcy+y^n*(Rex-Rcy))*cos((1-x)*pi);
y'=(Rcy+y^n*(Rex-Rcy))*sin((1-x)*pi);

that gives the following result:

______                      __
|          |                  /        \
|          |     ->       /      _      \
|_____ |              |___/    \___|
|-|         Rcy
|------- |   Rex

Using the test example "stokes.cc" I was able to solve this problem with this set of boundary conditions:

1)Body (half cylinder inside) : Homogeneous Dirichlet (no-slip)
2)Inlet  (half circular exterior boundary): Non Homogeneous Dirichlet (U=1i+0j)
3)Botton (two straight segments): Homogeneous Neumann

This case has given me good results (the vtk plots looked what I expected), but THEN when I tried to insert "homogeneous normal component Dirichlet condition"  to  represent Symmetry on the two faces of the bottom, I got a SEGMENTATION FAULT.

Here is the brick sequence I tried:

// Linearized elasticity brick.
getfem::mdbrick_isotropic_linearized_elasticity<> ELAS(mim, mf_u, 0.0, nu);

// Pressure term
getfem::mdbrick_linear_incomp<> INCOMP(ELAS, mf_p);

// Normal Dirichlet condition brick (symmetry).
getfem::mdbrick_normal_component_Dirichlet<> pre_final_model(INCOMP, NORMAL_DIRICHLET_BOUNDARY_NUM, mf_rhs);

// Defining the Full Dirichlet condition value.
plain_vector F(nb_dof_rhs * N);
gmm::clear(F);
for (size_type i = 0; i < nb_dof_rhs; ++i)
gmm::copy(sol_u(mf_rhs.point_of_dof(i)),gmm::sub_vector(F, gmm::sub_interval(i*N, N)));

// Full Dirichlet condition brick (cylinder and inlet).
getfem::mdbrick_Dirichlet<> final_model(pre_final_model, FULL_DIRICHLET_BOUNDARY_NUM);
final_model.rhs().set(mf_rhs,F);

// Generic solve.
cout << "Number of variables : " << final_model.nb_dof() << endl;
getfem::standard_model_state MS(final_model);
gmm::iteration iter(residual, 1, 40000);
getfem::standard_solve(MS, final_model, iter);

// Solution extraction
gmm::copy(ELAS.get_solution(MS), U);

Do you guys see something MISSING or overconstraining the problem? any wrong order?

What I'm thinking to try next is to use the generalized Dirichlet brick prescribing the h(2x2) matrix and the u(2x1) vector all over the outer boundaries......but I don't know if it is a good way...

Thanks a lot!!

Iago