i show that not all the files are joint to my precedent message, so
the intersec permeability is:
 for (int i = 0; i < dim; i++)
                K_[i][i] = 1e-7;

and i use the brook corey law:
 // residual saturations
        materialLawParams_.setSwr(0);
        materialLawParams_.setSnr(0);

        // parameters for the Brooks-Corey Law
        // entry pressures
        materialLawParams_.setPe(500);

        // Brooks-Corey shape parameters
        materialLawParams_.setLambda(2);

(there is the exactly same files of tutorial_coupled problem
and the input file is joint in my precedent message.

Beste regards

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

> I joint to you the file .input, he tutorialspatialparams_cdecoupled and
> the file .hh to show all parameters that i use.
> Thak's for the help.
> Best regards.
>
> 2015-10-21 21:10 GMT+02:00 Martin <[email protected]>:
>
>> That probably means that the matrix is singular and therefore the
>> pressure equation can not be solved.
>> What grid are you using and what intrinsic permeability values? Which
>> material law?
>>
>>
>> Regards,
>> Martin
>>
>>
>> On 10/21/2015 08:12 PM, Ait Mahiout Latifa wrote:
>>
>> Hi  Martin,
>> ok, so i corrected the condition, so now, my code is:
>>
>>
>>  void boundaryTypesAtPos(BoundaryTypes &bcTypes, const GlobalPosition&
>> globalPos) const /*@\label{tutorial-decoupled:bctype}@*/
>>     {
>>
>>
>>             if ((globalPos[0] >  580-  eps_) && (globalPos[1] > 580-
>> eps_) )
>>             {
>>                 bcTypes.setDirichlet(pressEqIdx);
>>                 bcTypes.setDirichlet(satEqIdx);
>>                //bcTypes.setAllDirichlet(); // alternative if the same BC
>> is used for both types of equations
>>             }
>>             // all other boundaries
>>             else  if ((globalPos[0] <  20-  eps_) && (globalPos[1] <
>> 20-  eps_) )
>>             {
>>                 //bcTypes.setNeumann(pressEqIdx);
>>                 //bcTypes.setDirichlet(satEqIdx);
>>                bcTypes.setAllNeumann(); // alternative if the same BC is
>> used for both types of equations
>>             }
>>             else
>>                 bcTypes.setAllNeumann();
>>     }
>>     //! Value for dirichlet boundary condition at position globalPos.
>>     /*! In case of a dirichlet BC for the pressure equation the pressure
>> \f$ [Pa] \f$, and for
>>      *  the transport equation the saturation [-] have to be defined on
>> boundaries.
>>      *
>>      *  \param values Values of primary variables at the boundary
>>      *  \param intersection The boundary intersection
>>      *
>>      *  Alternatively, the function dirichletAtPos(PrimaryVariables
>> &values, const GlobalPosition& globalPos)
>>      *  could be defined, where globalPos is the vector including the
>> global coordinates of the finite volume.
>>      */
>>     void dirichletAtPos(PrimaryVariables &values, const GlobalPosition&
>> globalPos) const
>>     {
>>        values=0;
>>
>>        if ((globalPos[0] >  580-  eps_) && (globalPos[1] >  580-  eps_) )
>>       {
>>         values[pwIdx] = 3.5e7;
>>         values[swIdx] = 0.0;
>>       }
>>        else if ((globalPos[0] <  20-  eps_) && (globalPos[1] <  20-
>> eps_) )
>>         values[swIdx] = 1.0;
>>     }
>>     //! Value for neumann boundary condition \f$ [\frac{kg}{m^3 \cdot s}]
>> \f$ at position globalPos.
>>     /*! In case of a neumann boundary condition, the flux of matter
>>      *  is returned as a vector.
>>      *
>>      *  \param values Boundary flux values for the different phases
>>      *  \param globalPos The position of the center of the finite volume
>>      *
>>      *  Alternatively, the function neumann(PrimaryVariables &values,
>> const Intersection& intersection) could be defined,
>>      *  where intersection is the boundary intersection.
>>      */
>>     void neumannAtPos(PrimaryVariables &values, const GlobalPosition&
>> globalPos) const /*@\label{tutorial-decoupled:neumann}@*/
>>     {
>>         values = 0;
>>          if ((globalPos[0] <  20-  eps_) && (globalPos[1] <  20-  eps_) )
>>         {
>>             values[nPhaseIdx] = -1e-8;
>>              //values[wPhaseIdx] = 0.0;
>>         }
>>        else
>>
>>         {
>>             values[nPhaseIdx] = 0.0;
>>              values[wPhaseIdx] = 0.0;
>>         }
>>     }
>>     //! Initial condition at position globalPos.
>>     /*! Only initial values for saturation have to be given!
>>      *
>>      *  \param values Values of primary variables
>>      *  \param element The finite volume element
>>      *
>>      *  Alternatively, the function initialAtPos(PrimaryVariables
>> &values, const GlobalPosition& globalPos)
>>      *  could be defined, where globalPos is the vector including the
>> global coordinates of the finite volume.
>>      */
>>     void initial(PrimaryVariables &values,
>>             const Element &element) const
>> /*@\label{tutorial-decoupled:initial}@*/
>>     {
>>         values = 0;
>>     }
>>
>> private:
>>     const Scalar eps_;
>> };
>> } //end namespace
>>
>>
>>
>>
>> with eps_=1e-6
>>
>>
>>
>>  and now i have this error
>> Don't panic... !
>>
>> Rank 0: No parameter file given. Defaulting to
>> './tutorial_decoupled.input' for input file.
>> Initializing problem 'tutorial_decoupled'
>> Dune reported error: ISTLError
>> [apply:/home/latifa/Dumux_2.6.0/dune-istl-2.3.1/dune/istl/solvers.hh:651]:
>> breakdown in BiCGSTAB - rho 0 <= EPSILON 1e-80 after 8.5 iterations
>>
>> i don't understand why i have this error, and what does it mean?
>>
>> 2015-10-21 20:06 GMT+02:00 Martin Schneider <
>> [email protected]>:
>>
>>> Hi,
>>>
>>> the first if-query is wrong, corresponding to your boundary conditions:
>>>
>>>     if x < 20m and y < 20 m: q_w.n = -1e-8 and Sw=1
>>>     if x > 580 and y > 580: pw= 150 bar and Sn=1
>>>
>>> it should be
>>>              if ((globalPos[0] >  580-  eps_) && (globalPos[1] > 580-
>>> eps_) )
>>>             {
>>>                 bcTypes.setDirichlet(pressEqIdx);
>>>                 bcTypes.setDirichlet(satEqIdx);
>>>                //bcTypes.setAllDirichlet(); // alternative if the same
>>> BC is used for both types of equations
>>>             }
>>>
>>> instead of:
>>>              if ((globalPos[0] >  600-  eps_) && (globalPos[1] > 600-
>>> eps_) )
>>>             {
>>>                 bcTypes.setDirichlet(pressEqIdx);
>>>                 bcTypes.setDirichlet(satEqIdx);
>>>                //bcTypes.setAllDirichlet(); // alternative if the same
>>> BC is used for both types of equations
>>>             }
>>>
>>> Regards,
>>> Martin
>>>
>>>
>>> On 10/21/2015 07:34 PM, Ait Mahiout Latifa wrote:
>>>
>>>
>>> Hi,
>>> i want to change the boundary conditions in tutorial_decoupled problem,
>>> so that in an domain 600*600, are imposed the boundary conditions:
>>> if x < 20m and y < 20 m: q_w.n = -1e-8 and Sw=1
>>> if x > 580 and y > 580: pw= 150 bar and Sn=1
>>> and no flux in the other parts of the domain.
>>> So, i change x and y in the .input file, and i have the folowing
>>> modifications in the tutorial_decoupled.hh:
>>> void boundaryTypesAtPos(BoundaryTypes &bcTypes, const GlobalPosition&
>>> globalPos) const /*@\label{tutorial-decoupled:bctype}@*/
>>>     {
>>>             if ((globalPos[0] >  600-  eps_) && (globalPos[1] > 600-
>>> eps_) )
>>>             {
>>>                 bcTypes.setDirichlet(pressEqIdx);
>>>                 bcTypes.setDirichlet(satEqIdx);
>>>                //bcTypes.setAllDirichlet(); // alternative if the same
>>> BC is used for both types of equations
>>>             }
>>>             // all other boundaries
>>>             else  if ((globalPos[0] <  20-  eps_) && (globalPos[1] <
>>> 20-  eps_) )
>>>             {
>>>                 bcTypes.setNeumann(pressEqIdx);
>>>                 bcTypes.setDirichlet(satEqIdx);
>>>                //bcTypes.setAllNeumann(); // alternative if the same BC
>>> is used for both types of equations
>>>             }
>>>             else
>>>                 bcTypes.setAllNeumann();
>>>     }
>>>     //! Value for dirichlet boundary condition at position globalPos.
>>>     /*! In case of a dirichlet BC for the pressure equation the pressure
>>> \f$ [Pa] \f$, and for
>>>      *  the transport equation the saturation [-] have to be defined on
>>> boundaries.
>>>      *
>>>      *  \param values Values of primary variables at the boundary
>>>      *  \param intersection The boundary intersection
>>>      *
>>>      *  Alternatively, the function dirichletAtPos(PrimaryVariables
>>> &values, const GlobalPosition& globalPos)
>>>      *  could be defined, where globalPos is the vector including the
>>> global coordinates of the finite volume.
>>>      */
>>>     void dirichletAtPos(PrimaryVariables &values, const GlobalPosition&
>>> globalPos) const
>>>     {
>>>        if ((globalPos[0] >  600-  eps_) && (globalPos[1] >  600-  eps_) )
>>>       {
>>>         values[pwIdx] = 3.5e7;
>>>         values[swIdx] = 0.0;
>>>       }
>>>        else if ((globalPos[0] <  20-  eps_) && (globalPos[1] <  20-
>>> eps_) )
>>>         values[swIdx] = 1.0;
>>>     }
>>>     //! Value for neumann boundary condition \f$ [\frac{kg}{m^3 \cdot
>>> s}] \f$ at position globalPos.
>>>     /*! In case of a neumann boundary condition, the flux of matter
>>>      *  is returned as a vector.
>>>      *
>>>      *  \param values Boundary flux values for the different phases
>>>      *  \param globalPos The position of the center of the finite volume
>>>      *
>>>      *  Alternatively, the function neumann(PrimaryVariables &values,
>>> const Intersection& intersection) could be defined,
>>>      *  where intersection is the boundary intersection.
>>>      */
>>>     void neumannAtPos(PrimaryVariables &values, const GlobalPosition&
>>> globalPos) const /*@\label{tutorial-decoupled:neumann}@*/
>>>     {
>>>         values = 0;
>>>          if ((globalPos[0] <  20-  eps_) && (globalPos[1] <  20-  eps_) )
>>>         {
>>>             values[nPhaseIdx] = -1e-8;
>>>              values[wPhaseIdx] = 0.0;
>>>         }
>>>        else
>>>
>>>         {
>>>             values[nPhaseIdx] = 0.0;
>>>              values[wPhaseIdx] = 0.0;
>>>         }
>>>     }
>>>     //! Initial condition at position globalPos.
>>>     /*! Only initial values for saturation have to be given!
>>>      *
>>>      *  \param values Values of primary variables
>>>      *  \param element The finite volume element
>>>      *
>>>      *  Alternatively, the function initialAtPos(PrimaryVariables
>>> &values, const GlobalPosition& globalPos)
>>>      *  could be defined, where globalPos is the vector including the
>>> global coordinates of the finite volume.
>>>      */
>>>     void initial(PrimaryVariables &values,
>>>             const Element &element) const
>>> /*@\label{tutorial-decoupled:initial}@*/
>>>     {
>>>         values = 0;
>>>     }
>>>
>>>
>>> There isn't a problem in compilation, but in execution, io have the
>>> folowing error:
>>>
>>>  ./tutorial_decoupled
>>>
>>> Wherever he saw a hole he always wanted to know the depth of it. To him
>>> this was important.
>>>  - Jules Verne, A journey to the center of the earth
>>>
>>> Rank 0: No parameter file given. Defaulting to
>>> './tutorial_decoupled.input' for input file.
>>> Initializing problem 'tutorial_decoupled'
>>> Dune reported error: ISTLError
>>> [apply:/home/latifa/Dumux_2.6.0/dune-istl-2.3.1/dune/istl/solvers.hh:679]:
>>> h=0 in BiCGSTAB
>>>
>>> So please, where os the problem in my definition of the boundary
>>> conditions? An how i can arrange it?
>>> Best regards.
>>>
>>>
>>>
>>> _______________________________________________
>>> Dumux mailing 
>>> [email protected]https://listserv.uni-stuttgart.de/mailman/listinfo/dumux
>>>
>>>
>>>
>>> --
>>> M.Sc. Martin Schneider
>>> University of Stuttgart             
>>> Institute for Modelling Hydraulic and Environmental Systems
>>> Department of Hydromechanics and Modelling of Hydrosystems
>>> Pfaffenwaldring 61
>>> D-70569 Stuttgart
>>> Tel: (+49) 0711/ 685-69159
>>> Fax: (+49) 0711/ 685-60430
>>> E-Mail: [email protected]
>>>
>>>
>>> _______________________________________________
>>> Dumux mailing list
>>> [email protected]
>>> https://listserv.uni-stuttgart.de/mailman/listinfo/dumux
>>>
>>>
>>
>>
>> _______________________________________________
>> Dumux mailing 
>> [email protected]https://listserv.uni-stuttgart.de/mailman/listinfo/dumux
>>
>>
>>
>> _______________________________________________
>> Dumux mailing list
>> [email protected]
>> https://listserv.uni-stuttgart.de/mailman/listinfo/dumux
>>
>>
>
_______________________________________________
Dumux mailing list
[email protected]
https://listserv.uni-stuttgart.de/mailman/listinfo/dumux

Reply via email to