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