Hi Mohammad,

This seems like a C++ problem not a Dumux issue. What have you tried so far? 
What does it mean “it will abort”?

"Method 2” has the wrong logic. “Method 1” looks correct (apart from underscore 
missing for injectionEnd_). Your attached file neither implements 1 nor 2.

Best
Timo


On 23 Nov 2022, at 10:30, Mohammad Hodroj (Student) 
<mn...@mail.aub.edu<mailto:mn...@mail.aub.edu>> wrote:

Dear DuMux Community,

I hope this email finds you well.

I am writing to kindly ask for your support in the following:

a) I am using porous medium flow
b) I am using injection problem

I need to inject gas between  injectionDuration_ = 4.7304e8 seconds and time = 
injectionEnd_ = 4.80816e8 seconds (3months) but it is not working. Once it 
reaches the time it will abort.

I tired the following:

Method:1

 BoundaryTypes boundaryTypesAtPos(const GlobalPosition &globalPos) const
    {
        BoundaryTypes bcTypes;


            bcTypes.setAllNeumann();

        return bcTypes;
    }


NumEqVector neumannAtPos(const GlobalPosition &globalPos) const
    {

        NumEqVector values(0.0);


        if (time_ > injectionDuration_ && time_ < injectionEnd
             && globalPos[0] <3.15 + eps_ && globalPos[0] > 3.075 - eps_ && 
globalPos[1] < 0.9*this->gridGeometry().bBoxMax()[1])
        {

            values[Indices::conti0EqIdx + FluidSystem::CH4Idx] = -5e-5;
            values[Indices::conti0EqIdx + FluidSystem::H2OIdx] = 0.0;
        }



        return values;
    }


Method 2


NumEqVector neumannAtPos(const GlobalPosition &globalPos) const
    {
        // initialize values to zero, i.e. no-flow Neumann boundary conditions
        NumEqVector values(0.0);


        if (time_ < injectionDuration_
             && globalPos[0] <3.15 + eps_ && globalPos[0] > 3.075 - eps_ && 
globalPos[1] < 0.9*this->gridGeometry().bBoxMax()[1])
        {

            values[Indices::conti0EqIdx + FluidSystem::CH4Idx] = 0.0;
            values[Indices::conti0EqIdx + FluidSystem::H2OIdx] = 0.0;
        }

    else if (time_ > injectionDuration_
             && globalPos[0] <3.15 + eps_ && globalPos[0] > 3.075 - eps_ && 
globalPos[1] < 0.9*this->gridGeometry().bBoxMax()[1])
        {

            values[Indices::conti0EqIdx + FluidSystem::CH4Idx] = -5e-5;
            values[Indices::conti0EqIdx + FluidSystem::H2OIdx] = 0.0;
        }

     else if (time_ < injectionEnd_
             && globalPos[0] <3.15 + eps_ && globalPos[0] > 3.075 - eps_ && 
globalPos[1] < 0.9*this->gridGeometry().bBoxMax()[1])
        {

            values[Indices::conti0EqIdx + FluidSystem::CH4Idx] = -5e-5;
            values[Indices::conti0EqIdx + FluidSystem::H2OIdx] = 0.0;
        }

   else if (time_ > injectionEnd_
             && globalPos[0] <3.15 + eps_ && globalPos[0] > 3.075 - eps_ && 
globalPos[1] < 0.9*this->gridGeometry().bBoxMax()[1])
        {

            values[Indices::conti0EqIdx + FluidSystem::CH4Idx] = 0.0
            values[Indices::conti0EqIdx + FluidSystem::H2OIdx] = 0.0;
        }

        return values;
    }



Looking forward to your help.


Best Regards,
Mohammad Hodroj



<injection2pproblem.hh>_______________________________________________
DuMux mailing list
DuMux@listserv.uni-stuttgart.de<mailto:DuMux@listserv.uni-stuttgart.de>
https://listserv.uni-stuttgart.de/mailman/listinfo/dumux

_______________________________________________
DuMux mailing list
DuMux@listserv.uni-stuttgart.de
https://listserv.uni-stuttgart.de/mailman/listinfo/dumux

Reply via email to