In your input file you have set:

[Grid]
UpperRightX = 300 # x-coordinate of the upper-right corner of the grid [m]
UpperRightY = 60 # y-coordinate of the upper-right corner of the grid [m]
NumberOfCellsX = 100 # x-resolution of the grid
NumberOfCellsY = 1 # y-resolution of the grid


that means, that your grid has a length of 300m and a height of 60m but your boundary conditions are set for a 600mx600m grid,
therefore you have to change that:

[Grid]
UpperRightX = 600 # x-coordinate of the upper-right corner of the grid [m]
UpperRightY = 600 # y-coordinate of the upper-right corner of the grid [m]
NumberOfCellsX = 100 # x-resolution of the grid
NumberOfCellsY = 100 # y-resolution of the grid

Hopefully that will help.
Martin

On 10/21/2015 09:22 PM, Ait Mahiout Latifa wrote:
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] <mailto:[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]
    <mailto:[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]
        <mailto:[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 list
            [email protected]
            <mailto:[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 <tel:%28%2B49%29%200711%2F%20685-69159>
            Fax:(+49) 0711/ 685-60430 <tel:%28%2B49%29%200711%2F%20685-60430>
            E-Mail:[email protected]
            <mailto:[email protected]>


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




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


        _______________________________________________
        Dumux mailing list
        [email protected]
        <mailto:[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