Topic: Exclude regions with certain materials from nonlocal averaging

Hello,

I am currently modelling a 3D specimen which is split in 3 regions. Only one region is modelled with a nonlocal model whereas the other two are modelled as elastic.

In order to speed up the calculations I want to stop OOFEM from taking into account points in the elastic regions during nonlocal averaging. In other words I want regions' boundaries to act as nonlocal barriers. However this feature is not available in 3D and I think that in the case of multiple reinforcement bars it would be quite inefficient. So far I am bypassing it by adding these lines in lines 163 and 280 of nonlocalmaterialext.C:

        if ( gp->giveMaterial()->giveNumber() != ielem->giveMaterial()->giveNumber() && noInterMaterialInteraction == 1 ) {
            continue;
        }

Here (noInterMaterialInteraction) is a material parameter used as a flag to denote that only points from the same material are taken into account ( I am attaching the modified nonlocalmaterialext.C and h). However I am not sure if this is the most efficient way in terms of memory. Is there possibly another way to do this?

Thanks in advance.

Post's attachments

nonlocalmaterialext.C 24.56 kb, file has never been downloaded. 

You don't have the permssions to download the attachments of this post.

Re: Exclude regions with certain materials from nonlocal averaging

Somewhat related to this:
I have had thoughts about trying to clean up the nonlocal material code, to have it work with other types of cross-sections (the material model is not). The problem is the function "ielem->giveMaterial()", which incorrectly assumes that an element has to have the same material model in all gausspoints (which is not true in several scenarios, for example layered cross-sections).

This would break some usecases, where a numerical pertubation is applied to a material (so that one element contains slightly different material parameters). Of course, one can probably argue that this pertubation could be made in other ways (e.g. small external force).
In general though, I'm pretty sure isn't not a good idea to try to add nonlocal effects across different material models.

For distinctly different materials, I think a nonlocal material model should always be applied without that material model

So, I think it should rather be

        if ( gp->giveMaterial()->giveNumber() != jGp->giveMaterial()->giveNumber() ) {
            continue;
        }

But, I can't add such changes now, as it would break the tests that do a numerical pertubation.

Re: Exclude regions with certain materials from nonlocal averaging

Thank you for your answer.

I understand that my solution is not very good and is limited only to what I am currently working on.