Hi Felix, hi Georg,

Georg's suggestion results in undefined behaviour because it's returning a reference to a temporary vector. You should also get a compiler warning for that.


@Felix on first sight there seems to be nothing wrong with your implementation, except that you should initialize your gravity_ variable (best practice).

Did you verify that your functions (the bit in preTimeStep and the gravityAtPos function)

is actually called? Maybe just put a console output in there or a break point for the debugger.


Timo


On 08.01.19 09:03, [email protected] wrote:

Hi Felix,

You could try to run you problem with valgrind. Just type ‘valgrind ./my_problem’ to do that. Then you might see where the error comes from. If the output does not give you an idea try to compile your problem with debug-opts and rerun it with valgrind.

Best regards

Georg

*Von:*Dumux [mailto:[email protected]] *Im Auftrag von *Felix Feldmann
*Gesendet:* Dienstag, 8. Januar 2019 08:54
*An:* DuMuX User Forum
*Betreff:* Re: [DuMuX] gravity dependency on global postion

Dear Georg,

Thank you very much for the suggestion.

Unfortunately, I do get a segmentation fault (core dumped).

The error occurs independently from the used gravity values (I tried gravity values of 0, -9.81 or 100).

Best regards,

Felix

*From:*Dumux [mailto:[email protected]] *On Behalf Of *[email protected]
*Sent:* Monday, January 07, 2019 6:42 PM
*To:* [email protected]
*Subject:* Re: [DuMuX] gravity dependency on global postion

Hi Felix,

You should try the following:

const GravityVector &gravityAtPos(const GlobalPosition &pos) const

{

// initialize a gravity vector with zeros

GravityVector gravity(0.0);

// modify the entry for the x (???) direction according to your needs

if (onLeftArea_( pos))

gravity[0]=100;

else // don’t use else if here so gravity[0] is always defined!

gravity[0]=-100;

return gravity;

}

Best regards

Georg

*Von:*Dumux [mailto:[email protected]] *Im Auftrag von *Felix Feldmann
*Gesendet:* Montag, 7. Januar 2019 15:03
*An:* DuMuX User Forum
*Betreff:* Re: [DuMuX] gravity dependency on global postion

Hello Kilian & Timo,

Thanks for your quick reply.

1)_I initially added following line to my problem:_

typedef Dune::FieldVector<Scalar, dimWorld> GravityVector;

2)_The gravity values are then defined inside the preTimeStep() function:_

void preTimeStep()

{

if (GET_PARAM_FROM_GROUP(TypeTag, bool, Problem, EnableGravity))

{

                                if (onLeftArea_(globalPos))

                           { gravity_=100; }

                                                     else if (onRightArea_(globalPos))

                                {  gravity_=-100; }

}

}

3)_The gravity vector function is then added as suggested by Martin:_

const GravityVector &gravityAtPos(const GlobalPosition &pos) const

{  return gravity_;}

4)_Finally _gravity_ _is defined as a GravityVector:_

GravityVector gravity_;

Best regards,

Felix

*From:*Dumux [mailto:[email protected]] *On Behalf Of *Kilian Weishaupt
*Sent:* Monday, January 07, 2019 5:15 PM
*To:* [email protected] <mailto:[email protected]>
*Subject:* Re: [DuMuX] gravity dependency on global postion

Hi Felix,

are you sure you correctly overloaded the gravityAtPos method in your problem? Maybe there is a typo and your code actually still uses the base class's method which returns a constant value.

Kilian

On 01/07/2019 11:58 AM, Timo Koch wrote:

    Hi Felix,

    how did you verify this? We would need some more information to
    see what the issue is. You get a position inside the gravity
    member function so if you use that to determine your gravity
    vector it should also use these different gravity vectors...

    Timo


    Am 07.01.2019 um 10:12 schrieb Felix Feldmann
    <[email protected] <mailto:[email protected]>>:

        Dear Martin,

        Thank you very much for your answer.

        As suggested, I implemented the GravityVector method inside my
        problem file.

        Although I defined different gravity values for each global
        position, the resulting gravity still appears to be just one
        constant value.

        I am using DuMux 2.12.0

        Kind regards,

        Felix

        *From:*Martin Schneider
        [mailto:[email protected]]
        *Sent:* Wednesday, December 19, 2018 6:49 PM
        *To:* DuMuX User Forum <[email protected]
        <mailto:[email protected]>>; Felix Feldmann
        <[email protected] <mailto:[email protected]>>
        *Subject:* Re: [DuMuX] gravity dependency on global postion

        Dear Felix,

        you have to implement the following function
        *    const GravityVector &gravityAtPos(const GlobalPosition
        &pos) const
        *in your own problem file.
        This overwrites the function
        from/dumux/porousmediumflow/problem.hh

        I hope this helps.

        Regards,
        Martin

        On 12/19/2018 03:43 PM, Felix Feldmann wrote:

            Dear DuMux community,

            Is there any method to define gravity dependency
            <https://www.dict.cc/englisch-deutsch/dependency.html> on
            the global position? Or in other words, is it possible to
            define a specific gravity value for each node?

            Best regards,

            Felix

            _______________________________________________

            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

        Fax: (+49) 0711/ 685-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

--
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Kilian Weishaupt M.Sc.
Institut für Wasser- und Umweltsystemmodellierung (IWS)
Lehrstuhl für Hydromechanik und Hydrosystemmodellierung
Universität Stuttgart, Pfaffenwaldring 61, 70569 Stuttgart
Email: [email protected] <mailto:[email protected]>
Telefon: 0049 711 685-60461 ** fax: 0049-711-685-60430
http://www.hydrosys.uni-stuttgart.de
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

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

--
_______________________________________________________________

Timo Koch                              phone: +49 711 685 64676
IWS, Universität Stuttgart             fax:   +49 711 685 60430
Pfaffenwaldring 61        email: [email protected]
D-70569 Stuttgart            url: www.hydrosys.uni-stuttgart.de
_______________________________________________________________

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

Reply via email to