Dear Ait,

as far as I can see your boundary conditions setup is not feasible.

if x=580m and y=580m: S_n=1 and P_w=350 bar
Dirichlet boundary condition for mass balances, that's ok.

if x=20m and y=20m:    S_n=0, q_w . n = -1.e-8 and q_n.n=0
Dirichlet bc for the non-wetting phase and Neumann bc for both equations. That will not work. What you will end up with according to your implementation below is:
q_w . n = -1.e-8 and q_n.n=0
The Dirichlet bc does not have any effect because SnIdx is the same than contiNEqIdx. You have two mass balances in your system at one node you can only choose Dirichlet or Neumann for each mass balance.

In general when your system does not converge, try the following:

- check your initial conditions in the initial vtu file, are they as you expect them to be?
- smaller initial time step size
- set the inflow to zero, and gradually increase it

Best regards
Alex




On 10/17/2015 12:02 AM, Ait Mahiout Latifa wrote:
Hi,
i try to change the boundary conditions in tutorial_coupled problem. The domain is 600m*600m, and the boundary conditions are:

if x=580m and y=580m: S_n=1 and P_w=350 bar
if x=20m and y=20m:    S_n=0, q_w . n = -1.e-8 and q_n.n=0
and nos flux in the rest of domain.
So, i try to do like in decoupled problem, and i write:



void boundaryTypes(BoundaryTypes &bcTypes, const Vertex &vertex) const
    {
        const GlobalPosition &globalPos = vertex.geometry().center();
        if (globalPos[0] > 580-eps_ && globalPos[1] > 580-eps_)   //
           bcTypes.setAllDirichlet();

        if (globalPos[0] < 20-eps_ && globalPos[1] < 20-eps_)
          {
           bcTypes.setDirichlet(Indices::snIdx);
           bcTypes.setNeumann(Indices::contiWEqIdx);
            bcTypes.setNeumann(Indices::contiNEqIdx);
          }

        else // neuman for the remaining boundaries
           bcTypes.setAllNeumann();

    }

    //! Evaluates the Dirichlet boundary conditions for a finite volume
    //! on the grid boundary. Here, the 'values' parameter stores
    //! primary variables.
void dirichletAtPos(PrimaryVariables &values, const GlobalPosition& globalPos) const
    {
      if (globalPos[0] > 580-eps_ && globalPos[1] > 580-eps_ )
       {
        values[Indices::pwIdx] = 1.5e7; // 1 bar = e5 Pa
values[Indices::snIdx] = 1.0; // 0 % oil saturation on left boundary
       }
      else if (globalPos[0] < 20-eps_ && globalPos[1] < 20-eps_ )
        {
        //values[Indices::pwIdx] = 3.5e7; // 1 bar = e5 Pa
values[Indices::snIdx] = 0.0; // 0 % oil saturation on left boundary
        }
    }

    //! Evaluates the boundary conditions for a Neumann boundary
    //! segment. Here, the 'values' parameter stores the mass flux in
    //! [kg/(m^2 * s)] in normal direction of each phase. Negative
    //! values mean influx.
    void neumann(PrimaryVariables &values,
                 const Element &element,
                 const FVElementGeometry &fvGeometry,
                 const Intersection &intersection,
                 int scvIdx,
                 int boundaryFaceIdx) const
    {
        const GlobalPosition &globalPos =
fvGeometry.boundaryFace[boundaryFaceIdx].ipGlobal;


        if (globalPos[0] < 20-eps_ && globalPos[1] < 20-eps_ )
            {
             values[Indices::contiWEqIdx] = -1.e-8;
             values[Indices::contiNEqIdx] = 0.0;
             }
            // no-flow on the remaining Neumann-boundaries.
           else
           {
            values[Indices::contiWEqIdx] = 0.0;
            values[Indices::contiNEqIdx] = 0.0;
           }

    }

but in execution, i have the output file joint to this mail. Please,how we can implement these boundary conditions in a coupled problem?
Thank you for the help.
Kind regards.

2015-10-16 23:15 GMT+02:00 Ait Mahiout Latifa <[email protected] <mailto:[email protected]>>:

    Hi, is it possible to implement boundary like this:
    for example, we have and domain 600m*600m, and we have impos the
    boundary contitions:
    if x =20m and y=20m: Sn=0.0 and q_w . n = -e-8, and q_n.n = 0

    The method used in decoupled problem to implement in the same
    times Dirichlet and Neumann conditions not walk in
    tutorial_coupled problem. So is it possible to implement in the
    same times Dirichlet avec Neumann conditions in an part of an
    domain, in tutorial_coupled problem?
     Thak's for the hel.




_______________________________________________
Dumux mailing list
[email protected]
https://listserv.uni-stuttgart.de/mailman/listinfo/dumux


--
Alexander Kissinger
Institut für Wasser- und Umweltsystemmodellierung
Lehrstuhl für Hydromechanik und Hydrosystemmodellierung
Pfaffenwaldring 61
D-70569 Stuttgart

Telefon: +49 (0) 711 685-64729
E-Mail:  [email protected]

_______________________________________________
Dumux mailing list
[email protected]
https://listserv.uni-stuttgart.de/mailman/listinfo/dumux

Reply via email to