CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM CC Toolkits for Fluid-Structure Interaction (https://www.cfd-online.com/Forums/openfoam-cc-toolkits-fluid-structure-interaction/)
-   -   [solidMechanics] Support thread for "Solid Mechanics Solvers added to OpenFOAM Extend" (https://www.cfd-online.com/Forums/openfoam-cc-toolkits-fluid-structure-interaction/126706-support-thread-solid-mechanics-solvers-added-openfoam-extend.html)

tomdylan June 29, 2017 16:54

Thank you very much for this hint, Philip!

Now the solver is compiled without any errors.

And that was the reason for confusion:

lduMatrix::solverPerformance -> lduSolverPerformance

Is there any documentation out there of the syntax changes during the evolution of o30ext - o40ext?
Next time I might check the errors myself.

The modifications I am trying to implement is to consider the dependence of the fluid (gas & water mixture) stiffness K' (equivalent to the fluid compressibility 1/K') from the actual pore pressure. This of course enhances the non-linearity since the pore pressure equation is affected by the volumetric strain increment *and* the change of the fluid stiffness K' in response to pore pressure changes.

First tests indicate numerous iterations and non-convergence after a couple of time steps. However, a "lagged scheme" in which K' from the previous time step is considered (instead of simultaneous evaluation of K' within the iteration loop) yields reasonable results. These of course depend on the time step size selection...

Strongly non linear systems (e. g. unsaturated flow in porous media) sometimes are addressed through Picard-iteration approaches. I wonder if a Picard scheme might improve the convergence of the current problem.

Anyway, I succeeded installing o40x in opensuse leap 42.2. thanks again for your support!

Tom

bigphil June 30, 2017 04:35

Hi Tom,

I am glad the code is now compiling for you.

Quote:

Is there any documentation out there of the syntax changes during the evolution of o30ext - o40ext?
Not that I know of, apart from the code itself; there is some info here: http://foam-extend.fsb.hr/release-of-foam-extend-4-0/.

Quote:

Originally Posted by tomdylan (Post 655348)
First tests indicate numerous iterations and non-convergence after a couple of time steps. However, a "lagged scheme" in which K' from the previous time step is considered (instead of simultaneous evaluation of K' within the iteration loop) yields reasonable results. These of course depend on the time step size selection...

Strongly non linear systems (e. g. unsaturated flow in porous media) sometimes are addressed through Picard-iteration approaches. I wonder if a Picard scheme might improve the convergence of the current problem.

It makes sense that the lagged scheme is more stable; as regards coupling K changes within the time-step, I suppose you are already using Picard/Fixed-point iterations i.e. successive substitution.
Under-relaxation of the K field will probably help, or more under-relaxation of the p and U fields (equations and fields).

Philip

Horst July 10, 2017 04:27

fsiFoam in extend4.0 / running in parallel
 
Hello fsiFoamers,

is anyone running fsiFoam on ext-4.0 in parallel? In the ext-3.1 version there was this decomposeParFsi-tool, which was easy to use and worked fine, but on ext-4.0 there is nothing like that. The Allrun skript suggest the use of standard decomposePar, but all my parallel jobs break while calling the first solid solver.
It could depend on our machine here so it would be nice, if some of you could give me some short information about your experiences in running the ext-4.0 version of fsiFoam in parallel.

Thanks a lot in advance
Georg

BTW: the robin-bc approach in the ext-4.0 version is much more stable, even for high fluid density! Thanks to everyone who took part in developing, i highly appreciate your work.

ilhado July 10, 2017 08:24

Hello Georg,

I've been using fsiFoam for a couple months now and also used version 3.2 before. While for version 3.2 I was only able to decompose my cases with decomposeParFsi, in version 4.0 decomposePar worked great. There are only two issues I found so far:

1) I was not able to visualize the partitions on ParaView and

2) If I decompose from the latest time-step which is different from zero, the decomposition does not create the directory "processor*/constant" (instead, the utility name it "processor*/0")

However, since you say your solid solver is not called properly in run time, did you link the fluid and solid directories? I think this already happened to me, and I remember that I missed the links between fluid and solid. Is there any error message ?

Iago

iago

Horst July 11, 2017 10:24

Hello Iago,

thanks for your reply. Now i know that the problem is somewhere on our machine or local extend installation.

I was succesfully viszualizing the partitions with foamToVTK. It works both in 3.1 and 4.0.

Georg

tomdylan July 12, 2017 05:57

implementing spatial heterogeneity of the saturated hydraulic conductivity
 
Hi Philip,

Quote:

Originally Posted by bigphil (Post 655402)

It makes sense that the lagged scheme is more stable; as regards coupling K changes within the time-step, I suppose you are already using Picard/Fixed-point iterations i.e. successive substitution.
Under-relaxation of the K field will probably help, or more under-relaxation of the p and U fields (equations and fields).

Philip

I found a quite stable Picard approach in suGWFoam, a saturated unsaturated solver by Liu which could serve as template for a future implementation of coupled deformation saturated/unsaturated flow. I tested Liu's solver under quite mean conditions (flow with large gradients into extremely dry soil and it yielded excellent results (even commercial software would not resolve this problem). To be honest I presently do not feel experienced enough to effectively implement the Picard scheme (which is a time adaptive approach) into elastoPlastoBiotFoam. In view of the high non-linearity of the conductivity and storage properties in unsaturated flow considered by the Picard approach a segregated scheme to consider deformation should not represent a big issue.

I played a little bit around trying to implement the pressure dependence of the Kfluid-field (stiffness of the water gas mixture within the pores) and I came to stable results with the fixed point approach (relaxing only p and U):

Code:

fvm::ddt(p) == fvm::laplacian(coeff_Dp, p) - fvc::div(fvc::ddt(coeff_Dp2,U))
            );
        solverPerfP = pEqn.solve();
            p.relax();
            dp = p - p.oldTime();
            dp.correctBoundaryConditions(); 

          Kfluid = 1.0/(Sr/K_ + (1.0-Sr)/(p0+psi*gamma+dp));     
          coeff_Dp = (kSat/gamma*Kfluid/n);
          coeff_Dp2 = Kfluid/n;

This way the pressure changes dp are considered inside the iteration loop. The absolute pressure consists of the atmospheric (p0) and the hydrostatic (psi=pressure head below phreatic surface) components.

Probably relaxing Kfluid (how ?), as you suggest, might enhance convergence.

Now I tried to implement heterogeneity of the saturated hydraulic conductivity, which in natural settings is always an issue, by introducing the field kSat. in open water environments it is not uncommon to find conductivity contrasts spanning 4 orders of magnitude: sand 1^-04 m/s, silt 1^-8 m/s. The coeff_Dp field varies correspondingly over orders of magnitude.

First I decided to adapt the laplacian scheme to harmonic, which makes more sense than a linear one from an geohydraulic point of view:

Code:

laplacian(Dp,p) Gauss harmonic corrected;
Unfortunately the solver now diverges during the first iterations.

From the (very illustrative) convergence analysis in "On finite volume method implementation of poro-elastic-plasticity soil model" by Tang, Heledal & Cardiff it is clear, that a very large Kfluid (due to almost compressed gas in 20 m below phreatic surface) becomes stiffer than the bulk modulus of the soil and therefore mesh and time step sizes are determined by the bulk modulus, the water unit weight and the hydraulic conductivity! It turned out that a mesh size of approx. 0.2 m is necessary. I reduced the model to 2D (app. 120 m x 20 m) but could not reach convergence yet.

I could imagine that my problem is not the first one to exhibit strongly varying laplacian terms. So I would appreciate any hints on strategies to overcome these kind of difficulties.

Tom

bigphil July 18, 2017 13:52

Hi Tom,

Quote:

Originally Posted by tomdylan (Post 656765)
I found a quite stable Picard approach in suGWFoam, a saturated unsaturated solver by Liu which could serve as template for a future implementation of coupled deformation saturated/unsaturated flow. I tested Liu's solver under quite mean conditions (flow with large gradients into extremely dry soil and it yielded excellent results (even commercial software would not resolve this problem).

Interesting; is the code shared somewhere?

Quote:

Originally Posted by tomdylan (Post 656765)
To be honest I presently do not feel experienced enough to effectively implement the Picard scheme (which is a time adaptive approach) into elastoPlastoBiotFoam. In view of the high non-linearity of the conductivity and storage properties in unsaturated flow considered by the Picard approach a segregated scheme to consider deformation should not represent a big issue.

I played a little bit around trying to implement the pressure dependence of the Kfluid-field (stiffness of the water gas mixture within the pores) and I came to stable results with the fixed point approach (relaxing only p and U):

Code:

fvm::ddt(p) == fvm::laplacian(coeff_Dp, p) - fvc::div(fvc::ddt(coeff_Dp2,U))
            );
        solverPerfP = pEqn.solve();
            p.relax();
            dp = p - p.oldTime();
            dp.correctBoundaryConditions(); 

          Kfluid = 1.0/(Sr/K_ + (1.0-Sr)/(p0+psi*gamma+dp));     
          coeff_Dp = (kSat/gamma*Kfluid/n);
          coeff_Dp2 = Kfluid/n;

This way the pressure changes dp are considered inside the iteration loop. The absolute pressure consists of the atmospheric (p0) and the hydrostatic (psi=pressure head below phreatic surface) components.

Probably relaxing Kfluid (how ?), as you suggest, might enhance convergence.

You can relax Kfluid just like p:
Code:

...
          Kfluid.storePrevIter();
          Kfluid = 1.0/(Sr/K_ + (1.0-Sr)/(p0+psi*gamma+dp));     
          Kfluid.relax();
...

The add the name of Kfluid to the relaxationFactors dictionary within fvSolution.

Quote:

Now I tried to implement heterogeneity of the saturated hydraulic conductivity, which in natural settings is always an issue, by introducing the field kSat. in open water environments it is not uncommon to find conductivity contrasts spanning 4 orders of magnitude: sand 1^-04 m/s, silt 1^-8 m/s. The coeff_Dp field varies correspondingly over orders of magnitude.

First I decided to adapt the laplacian scheme to harmonic, which makes more sense than a linear one from an geohydraulic point of view:

Code:

laplacian(Dp,p) Gauss harmonic corrected;
Unfortunately the solver now diverges during the first iterations.

From the (very illustrative) convergence analysis in "On finite volume method implementation of poro-elastic-plasticity soil model" by Tang, Heledal & Cardiff it is clear, that a very large Kfluid (due to almost compressed gas in 20 m below phreatic surface) becomes stiffer than the bulk modulus of the soil and therefore mesh and time step sizes are determined by the bulk modulus, the water unit weight and the hydraulic conductivity! It turned out that a mesh size of approx. 0.2 m is necessary. I reduced the model to 2D (app. 120 m x 20 m) but could not reach convergence yet.

I could imagine that my problem is not the first one to exhibit strongly varying laplacian terms. So I would appreciate any hints on strategies to overcome these kind of difficulties.
Hmnn relaxing the p field should help with convergence but you are already doing this; you could try more.

Philip

ilhado July 31, 2017 12:36

Hello,

In the new version of the FSI toolkit, a great number of new boundary conditions (BC) was implemented for the fluid part. One of them is called outflowPressure, which I suppose is intended for outlets of the flow domain with a specified pressure on it.

However, I am trying to understand what exactly this BC performs. I looked in its .C and .H files, but so far I only understood that the BC accounts for a correction/modification of the pressure involving a relation with the face normal velocity gradient through a variable called pp:

pp = nu.value()*(n & pU.snGrad())

where

pU = patch().lookupPatchField<volVectorField, vector>("U")

I could not guess more (my C++ is very limited, unfortunately) and, so far, I did not find any information about this specific implementation of this boundary condition in the forums or even comparing with the implemented BC's in other versions of foam-extend.
Does anyone knows what exactly this BC implements?

Thanks in advance for any help :)
Iago

shpalman November 21, 2017 05:17

elasticThermalSolidFoam
 
2 Attachment(s)
Hello,

Quote:

Originally Posted by will.logie (Post 571974)
I've not yet managed to validate thermalStressFoam with the hotCylinder case. Bug fix done.

I'm trying to use foam-extend-4.0, but it seemed like tractionBoundaryGradient.C still had "if (!incremental)" here.

What I'm actually trying to do is model steady-state elastic strain in semiconductor structures.[1] There's a "built-in" strain which comes from a "misfit" between two crystals with different atomic spacings. I had been using solidDisplacementFoam for this, and it basically worked, although I was faking the misfit strain with a thermal strain (setting the thermal conductivity to zero).

Basically, elasticThermalSolidFoam does not give the expected result (the solidDisplacementFoam result is correct) which is why I'm curious about the status of that !incremental bug, or the outcome of this thread.

Ideally I'd like to be able to properly specific a misfit strain somehow, i.e. that two different (orthotropic) materials are obliged to maintain the same lattice spacing at the interface despite having different natural lattice spacings, but for now the fake thermal strain thing would be ok.

Thanks!

1. http://aip.scitation.org/doi/abs/10.1063/1.4765009

Thaw Tar December 6, 2017 02:19

Quote:

Originally Posted by Sourabhsup (Post 622251)
Hello all,

I am using the icoFsiElasticNonLinULSolidFoam solver. I cannot understand how the traction force (tForce) calculated in setInterfaceForce.H is applied in the solveSolid.H. The solveSolidEuler.H has the governing equation implemented, but i dont see the force term in the governing equation. Can anyone please explain the steps in which solid is solved? How is that traction force applied? and where?

Please guide me on this. Following code is solveSolidEuler.H

{
# include "readSolidMechanicsControls.H"

int iCorr = 0;
lduMatrix::solverPerformance solverPerf;
scalar initialResidual = 0;

lduMatrix::debug = 0;

# include "EulerCoeffs.H"

do
{
DU.storePrevIter();

fvVectorMatrix DUEqn
(
Cn*rho*fvm::ddt(DU)
- Co*rho*DV.oldTime()
==
fvm::laplacian(2*mu + lambda, DU, "laplacian(DDU,DU)")
- fvc::laplacian(mu + lambda, DU, "laplacian(DDU,DU)")
+ fvc::div
(
mu*gradDU.T()
+ lambda*(I*tr(gradDU))
+ mu*(gradDU&gradDU.T())
+ 0.5*lambda*(I*tr(gradDU & gradDU.T()))
+ (sigma & DF.T())
+ (DSigma & DF.T()),
"div(sigma)"
)
);

solverPerf = DUEqn.solve();

DU.relax();

if(iCorr == 0)
{
initialResidual = solverPerf.initialResidual();
}

gradDU = fvc::grad(DU);

DF = gradDU.T();

# include "calculateDSigma.H"
}
while
(
solverPerf.initialResidual() > convergenceTolerance
&& ++iCorr < nCorr
);

Info << "Solving for " << DU.name()
<< ", Initial residual = " << initialResidual
<< ", Final residual = " << solverPerf.initialResidual()
<< ", No outer iterations " << iCorr << endl;

DV = fvc::ddt(DU);

lduMatrix::debug = 1;
}



Hi, could anybody please explain me about this question, too. I also have this very confusion. I cannot figure out how the computed fluid force (traction force) is used in the solid solver.

Thaw Tar

bigphil December 7, 2017 04:45

Hi Thaw Tar,

The fluid force/traction is applied to the solid as a traction boundary condition in the "setInterfaceForce.H" header file (just before "solveSolid.H" in the "icoFsiElasticNonLinULSolidFoam.C" file).

Philip

Thaw Tar December 7, 2017 21:50

Quote:

Originally Posted by bigphil (Post 674314)
Hi Thaw Tar,

The fluid force/traction is applied to the solid as a traction boundary condition in the "setInterfaceForce.H" header file (just before "solveSolid.H" in the "icoFsiElasticNonLinULSolidFoam.C" file).

Philip

Thank you very much Dr. Cardiff for your very fast reply and for your contribution to the solid solver in OpenFOAM.

Now I understood how the fluid force was used as a boundary condition for the solid solver.

And also for the advice to increase the solid solver iteration count and to control the convergence with residuals. It worked very well!!!

Thaw Tar

Thaw Tar December 8, 2017 02:07

Dear Dr. Cardiff and others,

I am sorry for disturbing again. But I have one problem with the fsiFoam solver.

I ran the simulation for some time steps and wrote out the data. But when I restart the simulation from the last time step, it showed this following error:

Create extended GGI zone-to-zone interpolator
Checking fluid-to-solid face interpolator
Fluid-to-solid face interpolation error: 0.0126103
Checking solid-to-fluid point interpolator (GGI)
Extended GGI, master point distance, max: 1e+15, avg: 2.30143e+14, min: -0.002
Extended GGI, master point orientation (<0), max: 1, min: -1, nIncorrectPoints: 638/982


--> FOAM FATAL ERROR:
Master point addressing is not correct

From function ExtendedGGIInterpolation::masterToSlavePointInterp olate(const Field<Type> pf)
in file ./numerics/ggi/ExtendedGGIInterpolation/ExtendedGGIInterpolation.C at line 703.

FOAM aborting
Aborted (core dumped)

If anyone has the solution and could explain to me how to fix it, I would be very grateful.

Thaw Tar

RLFerreira December 14, 2017 14:10

2 Attachment(s)
Dear Formers, I trying simulate a 3D valve compressors. Initially, we created a 2D simple model with a cantilever beam, which will be a valve, as showed by mesh picture attached. At a certain time of simulation, the FSI interface doesn't match with solid mesh anymore (Uncoupled_meshes.png). In addition, the simulation does not diverge and the solution proceeds with those uncoupling meshes. Can someone help me? I know that if I try to restart the simulation from the last time step the error "Master point addressing is not correct" occurs.

Thanks.

wjw January 11, 2018 07:21

How to get the contact area and normal contact stress?
 
Hello Everybody,
Nice to be here!
I am a phD student in Germany facing with a task of simulating and calculating dry sliding wear in a total hip replacement in a long term. As is all known, FEM method in Abaqus is a common and relative simple approach to perform this task. So far, I have not found any paper which used FVM method to simulate dry sliding wear. But with solidmechanics solver in combination with dynamical mesh technology in foam extend can the same goal be theoretically achieved. My plan is finally to publish a paper with both fem and fvm approach, and show that fvm can be a good alternative approach.
Now, I am at the beginning stage and already tried NonLinUL solvers to build some simple contact models. The results are pretty good compared with abaqus. The problem I am confonted with is that i am not albe to get the contact area and normal contact stress from the soildmechanics solver in foam-extend , but I really need these two for simulating wear. Can I get some help or cooperation from here? Since these two results are very common and important for contact problems and can usually be directly obtained from some fem softwares, I am looking forward to seeing these two can also be included in foam-extend 5.0.

Best regards,
Jingwei

Tobi January 12, 2018 08:06

Hi,

I guess Phil can help you more based on the fact that he developed it but since I am using an own solid stress solver, it should be not a big deal to get the contact area. In the contact class there should be some information about the cells / faces which are in contact and thus, you should easily be able to calculate the area. The normal contact stress should be similar. However, I do not know how the normal contact stress is given in terms of mathematical expressions. Again, Philip should be the one who could give more fundamental insight.

I just wanted to let you know that it is possible.

wjw January 12, 2018 08:59

Quote:

Originally Posted by Tobi (Post 677854)
Hi,

I guess Phil can help you more based on the fact that he developed it but since I am using an own solid stress solver, it should be not a big deal to get the contact area. In the contact class there should be some information about the cells / faces which are in contact and thus, you should easily be able to calculate the area. The normal contact stress should be similar. However, I do not know how the normal contact stress is given in terms of mathematical expressions. Again, Phillip should be the one who could give more fundamental insight.

I just wanted to let you know that it is possible.

Hi Tobias,
Thanks for your answer. Actually my German name is also Tobias. I agree with you that the key point is to get the information about which cell/surfaces are really in contact. The rest things are pretty easy. By the way, If you are interested in the mathematical expression of normal conact stress from FEM method which is vertex-based, you can send me a PM, I can send you a link or a paper.

Jingwei

bigphil January 25, 2018 08:22

Quote:

Originally Posted by wjw (Post 677688)
Hello Everybody,
Nice to be here!
I am a phD student in Germany facing with a task of simulating and calculating dry sliding wear in a total hip replacement in a long term. As is all known, FEM method in Abaqus is a common and relative simple approach to perform this task. So far, I have not found any paper which used FVM method to simulate dry sliding wear. But with solidmechanics solver in combination with dynamical mesh technology in foam extend can the same goal be theoretically achieved. My plan is finally to publish a paper with both fem and fvm approach, and show that fvm can be a good alternative approach.
Now, I am at the beginning stage and already tried NonLinUL solvers to build some simple contact models. The results are pretty good compared with abaqus. The problem I am confonted with is that i am not albe to get the contact area and normal contact stress from the soildmechanics solver in foam-extend , but I really need these two for simulating wear. Can I get some help or cooperation from here? Since these two results are very common and important for contact problems and can usually be directly obtained from some fem softwares, I am looking forward to seeing these two can also be included in foam-extend 5.0.

Best regards,
Jingwei

Hi Jingwei,

Further to Tobias's response:

The topic of my PhD was on modelling a hip joint in OpenFOAM, so some of the following articles may be useful:

Quote:

Originally Posted by wjw (Post 677688)
Hello Everybody,
Nice to be here!
I am a phD student in Germany facing with a task of simulating and calculating dry sliding wear in a total hip replacement in a long term. As is all known, FEM method in Abaqus is a common and relative simple approach to perform this task. So far, I have not found any paper which used FVM method to simulate dry sliding wear. But with solidmechanics solver in combination with dynamical mesh technology in foam extend can the same goal be theoretically achieved. My plan is finally to publish a paper with both fem and fvm approach, and show that fvm can be a good alternative approach.
Now, I am at the beginning stage and already tried NonLinUL solvers to build some simple contact models. The results are pretty good compared with abaqus. The problem I am confonted with is that i am not albe to get the contact area and normal contact stress from the soildmechanics solver in foam-extend , but I really need these two for simulating wear. Can I get some help or cooperation from here? Since these two results are very common and important for contact problems and can usually be directly obtained from some fem softwares, I am looking forward to seeing these two can also be included in foam-extend 5.0.

Best regards,
Jingwei

Hi Jingwei,

Further to Tobias's response:

The topic of my PhD was on modelling a hip joint in OpenFOAM, so some of the following articles may be useful:Also, you can find my PhD on my ResearchGate, which may be useful.

As regards calculating the normal contact stress (\boldsymbol{\sigma}_n = \boldsymbol{n} \cdot \boldsymbol{\sigma}), it is not written by default but you can write a utility to do this (send me a PM with your email and I will send you a utility that will work).

For the contact area, it is possible to do it in a similar way.

Philip

Thaw Tar January 31, 2018 03:51

VIV of a finite length vertical cylinder by fsiFoam
 
Dear all,

I tried to simulate the fluid structure interaction of a finite length vertical cylinder with a fixed bottom using fsiFoam and succeeded. It could simulate the occurrence of VIV and lock-in.

https://www.youtube.com/watch?v=NnFrh9ygWos

Special thanks to Dr. Cardiff for developing the solid solver and his advice to tighten the solid solver by increasing the iteration count.

I will test on more cases of reduced velocities.

Thaw Tar

bigphil January 31, 2018 06:40

Quote:

Originally Posted by RLFerreira (Post 675140)
Dear Formers, I trying simulate a 3D valve compressors. Initially, we created a 2D simple model with a cantilever beam, which will be a valve, as showed by mesh picture attached. At a certain time of simulation, the FSI interface doesn't match with solid mesh anymore (Uncoupled_meshes.png). In addition, the simulation does not diverge and the solution proceeds with those uncoupling meshes. Can someone help me? I know that if I try to restart the simulation from the last time step the error "Master point addressing is not correct" occurs.

Thanks.

Hi RLFerreira,

If the solid and fluid interface do not match then this typically means that the FSI loop did not converge to a tight enough tolerance (or did not converge at all) in each time-step.

I would suggest looking at the FSI residual and check if it is converging in each time-step; if it is not then try a larger maximum number of FSI correctors or a different FSI coupling method or smaller time-steps; if it is converging, then try a tighter FSI tolerance.

Separately, the segregated solid solver is typically not very efficient for slender geometries (like your thin beam): it much prefers "blocky" geometry. I understand you probably can't change your geometry, but if you PM me your email address then I can send you a work-in-progress coupled solid solver that may be more efficient/robust in this case.

Best,
Philip

Also, nice simulation Thaw Tar.

amanbearpig February 5, 2018 21:53

I know there is an older version of this Solid Mechanics addon for OpenFOAM 2.0-2.3, but has anyone ported it to the ESI version of OpenFOAM (OpenFOAM-v1706 and such - the ever changing names becomes confusing)?

fabiofonseca March 14, 2018 15:07

Quote:

Originally Posted by bigphil (Post 651072)
Hi Bartosz,

The problem is with the globalFaceZones: after a topological change, these get messed up and it is not trivially to fix them; consequently, as you have seen the GGI will complain. In your case, is there a topo change at the patch/faceZone? If so, have you tried a case when the topo change is away from the patch? Just an idea.

Similar issue discussed here: https://sourceforge.net/p/openfoam-e...ndrelease/280/

Philip

Dear Prof. Cardiff

I faced the same problem trying to use a dynamic motion solver coupled with adaptive mesh refinement with fsiFoam (dynamicMotionSolverRefineFvMesh). Is it possible to fix the mess after the topological change? Or is there another way to implement this kind of solver in fsiFoam?

Best regards
Fábio Fonseca

Tshiro March 31, 2018 09:37

Hey All,
I am new to OpenFoam and found the solidMechanics solvers to be very helpful.
So now to my Problem:D:
I want to use the Gent elasticity model with the Terzaghi stress given by:

Code:

1/det(F)*[I_lim/(I_lim-(Tr(F*F.T)-3))*F.T*F-I]
The model is nonlinear and I am not sure if there is an easy way to use this
model with the solidMechanics solvers. All the solvers and most of the BCs
seem to need the Lamé coefficients. Has someone already done something
similar or knows how this could be done?

bigphil April 3, 2018 09:26

Quote:

Originally Posted by Tshiro (Post 687237)
Hey All,
I am new to OpenFoam and found the solidMechanics solvers to be very helpful.
So now to my Problem:D:
I want to use the Gent elasticity model with the Terzaghi stress given by:

Code:

1/det(F)*[I_lim/(I_lim-(Tr(F*F.T)-3))*F.T*F-I]
The model is nonlinear and I am not sure if there is an easy way to use this
model with the solidMechanics solvers. All the solvers and most of the BCs
seem to need the Lamé coefficients. Has someone already done something
similar or knows how this could be done?

Hi Tshiro,

I have been working on extending the solidMechanics code to make it easier to implement new constitutive laws such as this.

I have some other hyperelastic laws implemented and you are welcome to try it out, just PM me your email address and I will send you a link.

Philip

cguti April 10, 2018 11:34

Hi, we are trying to run a FSI simulation (OF-ext 4) using the PronyViscoelastic rheology model. We are clueless on how to define the parameters (k, kDimensions, etc) of this model and will thank any help.

Could any of you give us an example?

Or, for example, how the model g(t)=[1-g1*(1-exp(-t/tau1))-g2*(1-exp(-t/tau2))] could be implemented???

Thanks a lot!!!

bigphil April 10, 2018 16:03

Quote:

Originally Posted by cguti (Post 688315)
Hi, we are trying to run a FSI simulation (OF-ext 4) using the PronyViscoelastic rheology model. We are clueless on how to define the parameters (k, kDimensions, etc) of this model and will thank any help.

Could any of you give us an example?

Or, for example, how the model g(t)=[1-g1*(1-exp(-t/tau1))-g2*(1-exp(-t/tau2))] could be implemented???

Thanks a lot!!!

Hi cguti,

Separately from the PronySeries law in OF-4.0-EXT, I have also implemented the viscoelastic approach described in "Simo and Hughes, 2000, Computational Inelasticity", which uses a relaxation function just like you have shown.

PM me your email and I will share it with you.

Philip

szbence April 17, 2018 12:53

elasticOrthoSolidFoam
 
Hello All,

Currently I'm trying to familiarize myself with OpenFOAM, particularly the elasticOrthoSolidFoam solver. (Foam Extend 4.0)
First I just wanted to understand the basics so I took a simple cantilever, and tried to see how the simulation goes for normal and shear (bending) force.

After I've read through this thread - if I understand correctly - I see that this shear case might be a little problematic with this solver.
I thought about stress singularity so I've made a "base plate" with a fillet but I still failed to get good results. Setting nCorrectors to 20000 in fvSolutions did not help.

What should I do in order to get close to the analytical results? With the normal force case I get perfect results.

Here is a link to the case folder, if needed:
https://www.dropbox.com/sh/m9roulbqe...grmz2VQNa?dl=0

Thanks,
Bence

bigphil April 17, 2018 13:38

Quote:

Originally Posted by szbence (Post 689241)
Hello All,

Currently I'm trying to familiarize myself with OpenFOAM, particularly the elasticOrthoSolidFoam solver. (Foam Extend 4.0)
First I just wanted to understand the basics so I took a simple cantilever, and tried to see how the simulation goes for normal and shear (bending) force.

After I've read through this thread - if I understand correctly - I see that this shear case might be a little problematic with this solver.
I thought about stress singularity so I've made a "base plate" with a fillet but I still failed to get good results. Setting nCorrectors to 20000 in fvSolutions did not help.

What should I do in order to get close to the analytical results? With the normal force case I get perfect results.

Here is a link to the case folder, if needed:
https://www.dropbox.com/sh/m9roulbqe...grmz2VQNa?dl=0

Thanks,
Bence

Hi Bence,

Yes, you are right that the segregated algorithm employed by the solver is not so efficient in a bending cantilever case. However, the stress singularity does not cause a problem (for convergence or efficiency).
From checkMesh, I can see that there are a number of severely non-orthogonal faces, these are not good for convergence (though the solver does seem to be converging).

I suggest you try the case without the base plate and increase the nCorrectors further until convergence is achieved at least for a residual of 1e-6: this should produce predictions close to the analytical results; if it slightly underestimates then you will need to tighten this tolerance.

Separately, if you PM me your email, I can share a case using the solid block coupled solver, which will be much faster for this case (but orthotropy is not implemented yet...).

Philip

szbence April 18, 2018 14:43

Quote:

Originally Posted by bigphil (Post 689244)
Hi Bence,

Yes, you are right that the segregated algorithm employed by the solver is not so efficient in a bending cantilever case. However, the stress singularity does not cause a problem (for convergence or efficiency).
From checkMesh, I can see that there are a number of severely non-orthogonal faces, these are not good for convergence (though the solver does seem to be converging).

I suggest you try the case without the base plate and increase the nCorrectors further until convergence is achieved at least for a residual of 1e-6: this should produce predictions close to the analytical results; if it slightly underestimates then you will need to tighten this tolerance.

Separately, if you PM me your email, I can share a case using the solid block coupled solver, which will be much faster for this case (but orthotropy is not implemented yet...).

Philip

Dear Philip,

Thank you for your quick response, I will PM you!
As I'm using a virtualbox the 30000 iterations took 2 hours, (without the base plate) but the residuals "look nice" even though it would need some more time to reach the target value. (https://www.dropbox.com/s/nlt3x48kju...uals3.JPG?dl=0) The results are getting closer to the analytical one, maybe I'll try a longer simulation during night, but I believe the results would be all right.

Bence

alia May 17, 2018 06:57

Quote:

Originally Posted by rege (Post 649932)
Hi all,

I've been trying to implement LES to the "beamInCrossFlow" tutorial for the FSI toolkit for foam-extend 4.0.
My problem is that a heavily oscillating pressure field appears in the fluid field, eventually causing extreme velocities, causing the simulation to crash.

My changes with respect to the original tutorial are as follows:
- Rewritten blockMeshDict to a complete 3D domain for both the fluid and structure.
- Increased the max speed in setInletVelocity to 10, in order to get turbulence.
- Changed the properties of the solid to the following: rho = 8000, E = 4e6, nu = 0.3
- Implemented PISO solver with LES model oneEqEddy, with vanDriest smoothing.
- Decreased FSI tolerance to 1e-5 and increased nOuterCorr to 200.
- ddtScheme: CrankNicolson 0.8
- div(phi,U) Gauss filteredLinear2 1 0
- fvSolution changed to common settings for LES simulations.
- The Courant number has been kept at 0.4-0.5.

The ddtScheme was chosen by trying out all the ddtSchemes without FSI.
The use of other ddtSchemes, including CrankNicolson 0.7 or 0.9, causes the simulations without FSI to blow up, too.
Simulations with CrankNicolson 0.8 run smoothly without FSI however.

In all cases, the problem has been that a field of high pressure at the lower edge of the inlet has merged with the field of high pressure in front of the beam. When these two fields of high pressure merge, they start to "pump" the fluid over the beam, resulting in pressure oscillations for the entire field.
The pressure typically ends up oscillating from +200 Pa to -200 Pa for 80% of the internal field within 0.05 seconds.
I therefore assumed that the inlet was too close to the beam, and increased the length from the inlet by 0.5m. The pressure oscillations did still occur.

I have also tried the following adjustments:
- Max speed 5 m/s.
- Initial internal fields calculated by consistentIcoFluid with FSI, by LES simulation without FSI, and by increasing the velocity from zero with LES and FSI.
- Reduced cell lengths to the half in all directions.
- Adjusted time step to Co = 0.2 and Co = 0.8.

In all these configurations, the pressure oscillations do still occur.
The pressure oscillations do not occur when doing a LES simulation of the undeformed geometry without FSI, and neither if the stiffness (E) of the solid is set to be very high in the FSI simulation (causing it to be stationary).

Has anyone else tried to implement LES to this case?
I would be very grateful for any suggestions.

Best regards,
KR

Hi Kristen,

Have you tried using Euler D2dt2 (D_) scheme? it could be more stable. the CrankNicolson also may be better to be replaced with more stable Euler scheme.

Regards
Ali

amanbearpig May 24, 2018 09:49

Quick question about the hronTurek FSI function object. I'm using the FSI toolkit for foam-extend-4.0, however I've run into an issue with the hronTurek and pointHistory function objects.

Initially they would not compile, giving me errors about the virtual functions being pure. I fixed this by adding in public member functions for "updateMesh" and "movePoints" in the header file, and changing virtual bool execute() to virtual bool execute(const bool forceWrite);

They now compile successfully, however they are only outputting force and position data for the very first time-step. After this they no longer are writing any output.

Have the function object definitions changed in the updated foam-extend version, or perhaps my modifications to fix the compiling issues were in error? :confused:

cfdopenfoam July 16, 2018 02:08

Hi all,

I hope this is the right place to ask for help. I just want to understand the math theory and mechanics of a very simple solidMechanics solver, solidDisplacementFoam.

I have initial OF coding experience but in fluid FVM. I hope someone here could offer me some basic materials and tutorials for solidDisplacementFoam, and much better if they can explain to me the code structure details corresponding to the full mechanics including thermal stress implementation in the solver.

Many thanks in advance.

bigphil July 16, 2018 04:05

Quote:

Originally Posted by cfdopenfoam (Post 699344)
Hi all,

I hope this is the right place to ask for help. I just want to understand the math theory and mechanics of a very simple solidMechanics solver, solidDisplacementFoam.

I have initial OF coding experience but in fluid FVM. I hope someone here could offer me some basic materials and tutorials for solidDisplacementFoam, and much better if they can explain to me the code structure details corresponding to the full mechanics including thermal stress implementation in the solver.

Many thanks in advance.

Hi cfdopenfoam,

The solidsDisplacementFoam solver is described in the following articles:
  • Weller et al. (1998) A tensorial approach to computational continuum mechanics using object-oriented techniques link
  • Jasak and Weller (2000) Application of the finite volume method and unstructured meshes to linear elasticity link

Also, I have provided descriptions of the background theory in some of my conference presentations (see my ResearchGate), such as:
  • Introduction to Solid Mechanics with OpenFOAM: Basic Training link
  • The finite volume method for solid mechanics in OpenFOAM link
  • Towards the Development of an Extendable Solid Mechanics and Fluid-Solid Interaction Toolbox for OpenFOAM link

I hope it helps,
Philip

cfdopenfoam July 16, 2018 04:25

Quote:

Originally Posted by bigphil (Post 699357)
Hi cfdopenfoam,

The solidsDisplacementFoam solver is described in the following articles:
  • Weller et al. (1998) A tensorial approach to computational continuum mechanics using object-oriented techniques link
  • Jasak and Weller (2000) Application of the finite volume method and unstructured meshes to linear elasticity link

Also, I have provided descriptions of the background theory in some of my conference presentations (see my ResearchGate), such as:
  • Introduction to Solid Mechanics with OpenFOAM: Basic Training link
  • The finite volume method for solid mechanics in OpenFOAM link
  • Towards the Development of an Extendable Solid Mechanics and Fluid-Solid Interaction Toolbox for OpenFOAM link

I hope it helps,
Philip

Thank you, Philip. This is great help. I appreciate. But I still cannot understand the mechanics of the thermal stress included in the solver. Any math/theory background on this?

bigphil July 16, 2018 06:52

Hooke's law can be extended to the so-called Duhamel-Neumann form of Hooke's law by including a thermal stress term e.g. books like Mase and Mase, Continuum Mechanics for Engineers discuss linear thermoelasticity.

So the solid stress is a function of temperature and you end up with a source term in the momentum equation that is a function of temperature. For cases where the kinetic energy is small, this temperature equation is decoupled for momentum so you can solve temperature first and then solve momentum (only one-way coupling).

If you PM your email, I can send you some slides I have that might help explain its OpenFOAM implementation.

Philip

cfdopenfoam July 23, 2018 09:27

Hi all,

just one more question here,

is mesh updated in solidDisplacementFoam (I guess not)? and how?

if I want to implement mesh motion/displacement due to solid mechanics, is there a basic solverFoam in OF and related tutorials?

Thanks in advance.

Tobi July 23, 2018 16:25

Hi,


short: No. The basic stress solvers in the Foundation version do not support mesh motion such as plastic movement of the solid. The solvers only handle linear-elastic problems. If you are interested into problems which include plasticity, you should check the foamExtend version. Phil made huge workarounds here. I also refer to his Ph.D. if you are interested in the theory.

Kellis October 22, 2018 23:37

Hello,

First off, hopefully this is the right spot for this question -- if not, sorry!

I've been struggling with an issue trying to run an FSI solver in parallel for a while now. It's based off of the standard icoFsiElasticNonLinULSolidFoam, but modified to work in a single rotating reference frame and to use the PISO algorithm for fluid solving. All of the solid mechanics stuff was untouched. For what it's worth, I tried running the standard solver (icoFsi...Foam) and received the same error. The case runs perfectly serially but refuses to run in parallel :mad:

The mesh was created in blockMesh and builds without errors. It is then decomposed using the patchConstrained method, keeping the entire fluid/solid interface patch on one processor:

Code:

/*--------------------------------*- C++ -*----------------------------------*\
| =========                |                                                |
| \\      /  F ield        | OpenFOAM Extend Project: Open Source CFD        |
|  \\    /  O peration    | Version:  1.6-ext                              |
|  \\  /    A nd          | Web:      www.extend-project.de                |
|    \\/    M anipulation  |                                                |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version    2.0;
    format      ascii;
    class      dictionary;
    location    "system";
    object      decomposeParDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

numberOfSubdomains  4;
method                              patchConstrained;

preservePatches ( AF side1 side2 );

patchConstrainedCoeffs
{
        method                                metis;
        numberOfSubdomains        4;

        patchConstraints
        (
                (side1 0) // cyclicGgi sides
                (side2 0)
                (AF 1) // this is the fluid patch that corresponds to the solid interface
        );
}

metisCoeffs
{
    processorWeights ( 1 1 1 1 );
}

distributed    no;

roots          ( );

// ************************************************************************* //

And a similar file for the solid region, assigning the interface to processor 1 again. However, when trying to run the case I get the following error:

Code:

kellis@desktop:~/foam/kellis-3.2/run/wellsTurbine/FSITests/300FSITest_1022/caseDir/fluid$ mpirun -np 4 SRFPisoFSIFoam -parallel
/*---------------------------------------------------------------------------*\
| =========                |                                                |
| \\      /  F ield        | foam-extend: Open Source CFD                    |
|  \\    /  O peration    | Version:    3.2                                |
|  \\  /    A nd          | Web:        http://www.foam-extend.org        |
|    \\/    M anipulation  | For copyright notice see file Copyright        |
\*---------------------------------------------------------------------------*/
Build    : 3.2-a4e7bf3b15c0
Exec    : SRFPisoFSIFoam -parallel
Date    : Oct 22 2018
Time    : 22:14:36
Host    : desktop
PID      : 13246
CtrlDict : "/home/kellis/foam/kellis-3.2/run/wellsTurbine/FSITests/300FSITest_1022/caseDir/fluid/system/controlDict"
Case    : /home/kellis/foam/kellis-3.2/run/wellsTurbine/FSITests/300FSITest_1022/caseDir/fluid
nProcs  : 4
Slaves :
3
(
desktop.13247
desktop.13248
desktop.13249
)

Pstream initialized with:
    nProcsSimpleSum  : 16
    commsType        : blocking
SigFpe  : Enabling floating point exception trapping (FOAM_SIGFPE).

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Create time

Create dynamic mesh for time = 0

Selecting dynamicFvMesh dynamicMotionSolverFvMesh
Initializing the GGI interpolator between master/shadow patches: side1/side2
Selecting motion solver: laplace
Selecting motion diffusivity: quadratic

Reading transportProperties

Reading field p

Reading field Urel

Creating field Uabs

Creating SRF model

Selecting SRFModel rpm
Reading/calculating face flux field phi

Selecting incompressible transport model Newtonian
Selecting turbulence model type RASModel
Selecting RAS turbulence model kOmegaSST
kOmegaSSTCoeffs
{
    alphaK1        0.85;
    alphaK2        1;
    alphaOmega1    0.5;
    alphaOmega2    0.856;
    gamma1          0.555556;
    gamma2          0.44;
    beta1          0.075;
    beta2          0.0828;
    betaStar        0.09;
    a1              0.31;
    b1              1;
    c1              10;
    F3              false;
}

Reading incremental displacement field DU

Patch AFS        Traction boundary field: DU
        nonLinear set to updated Lagrangian
Patch AFS        Traction boundary field: Usolid
        nonLinear set to updated Lagrangian
Reading incremental displacement field DV

Reading accumulated velocity field V

Reading accumulated stress field sigma

Reading incremental stress field DSigma

Selecting rheology model linearElastic
Creating constitutive model

Reading coupling properties
Create fluid-to-solid and solid-to-fluid interpolators
Check fluid-to-solid and solid-to-fluid interpolators
[1]
[1]
[1] --> FOAM FATAL ERROR:
[1] given field does not correspond to patch. Patch size: 2842 field size: 0
[1]
[1]    From function PatchToPatchInterpolation::faceInterpolate(const Field<Type> ff)
[1]    in file /home/kellis/foam/foam-extend-3.2/src/foam/lnInclude/PatchToPatchInterpolate.C at line 132.
[1]
FOAM parallel run aborting
[1]
--------------------------------------------------------------------------
MPI_ABORT was invoked on rank 1 in communicator MPI_COMM_WORLD
with errorcode 1.

NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes.
You may or may not see output from other processes, depending on
exactly when Open MPI kills them.
--------------------------------------------------------------------------
--------------------------------------------------------------------------
mpirun has exited due to process rank 1 with PID 13247 on
node desktop exiting improperly. There are two reasons this could occur:

1. this process did not call "init" before exiting, but others in
the job did. This can cause a job to hang indefinitely while it waits
for all processes to call "init". By rule, if one process calls "init",
then ALL processes must call "init" prior to termination.

2. this process called "init", but exited without calling "finalize".
By rule, all processes that call "init" MUST call "finalize" prior to
exiting or it will be considered an "abnormal termination"

This may have caused other processes in the application to be
terminated by signals sent by mpirun (as reported here).
--------------------------------------------------------------------------

You may have noticed there are cyclic GGI patches involved, but I don't think they are to blame. I swapped them to standard cyclics and the problem still persisted.

The patch size is consistent with the number of faces on the fluid side of the interface patch, and the error originates from the processor I assigned it to. However, I can't find anything wrong with the case files and am not sure what to try next. Has anyone encountered a similar issue before?

Thanks for any assistance!
-Kellis

kanuk November 1, 2018 15:11

Quote:

Originally Posted by Kellis (Post 712066)
Hello,

First off, hopefully this is the right spot for this question -- if not, sorry!

I've been struggling with an issue trying to run an FSI solver in parallel for a while now. It's based off of the standard icoFsiElasticNonLinULSolidFoam, but modified to work in a single rotating reference frame and to use the PISO algorithm for fluid solving. All of the solid mechanics stuff was untouched. For what it's worth, I tried running the standard solver (icoFsi...Foam) and received the same error. The case runs perfectly serially but refuses to run in parallel :mad:

The mesh was created in blockMesh and builds without errors. It is then decomposed using the patchConstrained method, keeping the entire fluid/solid interface patch on one processor:

Code:

/*--------------------------------*- C++ -*----------------------------------*\
| =========                |                                                |
| \\      /  F ield        | OpenFOAM Extend Project: Open Source CFD        |
|  \\    /  O peration    | Version:  1.6-ext                              |
|  \\  /    A nd          | Web:      www.extend-project.de                |
|    \\/    M anipulation  |                                                |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version    2.0;
    format      ascii;
    class      dictionary;
    location    "system";
    object      decomposeParDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

numberOfSubdomains  4;
method                              patchConstrained;

preservePatches ( AF side1 side2 );

patchConstrainedCoeffs
{
        method                                metis;
        numberOfSubdomains        4;

        patchConstraints
        (
                (side1 0) // cyclicGgi sides
                (side2 0)
                (AF 1) // this is the fluid patch that corresponds to the solid interface
        );
}

metisCoeffs
{
    processorWeights ( 1 1 1 1 );
}

distributed    no;

roots          ( );

// ************************************************************************* //

And a similar file for the solid region, assigning the interface to processor 1 again. However, when trying to run the case I get the following error:

Code:

kellis@desktop:~/foam/kellis-3.2/run/wellsTurbine/FSITests/300FSITest_1022/caseDir/fluid$ mpirun -np 4 SRFPisoFSIFoam -parallel
/*---------------------------------------------------------------------------*\
| =========                |                                                |
| \\      /  F ield        | foam-extend: Open Source CFD                    |
|  \\    /  O peration    | Version:    3.2                                |
|  \\  /    A nd          | Web:        http://www.foam-extend.org        |
|    \\/    M anipulation  | For copyright notice see file Copyright        |
\*---------------------------------------------------------------------------*/
Build    : 3.2-a4e7bf3b15c0
Exec    : SRFPisoFSIFoam -parallel
Date    : Oct 22 2018
Time    : 22:14:36
Host    : desktop
PID      : 13246
CtrlDict : "/home/kellis/foam/kellis-3.2/run/wellsTurbine/FSITests/300FSITest_1022/caseDir/fluid/system/controlDict"
Case    : /home/kellis/foam/kellis-3.2/run/wellsTurbine/FSITests/300FSITest_1022/caseDir/fluid
nProcs  : 4
Slaves :
3
(
desktop.13247
desktop.13248
desktop.13249
)

Pstream initialized with:
    nProcsSimpleSum  : 16
    commsType        : blocking
SigFpe  : Enabling floating point exception trapping (FOAM_SIGFPE).

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Create time

Create dynamic mesh for time = 0

Selecting dynamicFvMesh dynamicMotionSolverFvMesh
Initializing the GGI interpolator between master/shadow patches: side1/side2
Selecting motion solver: laplace
Selecting motion diffusivity: quadratic

Reading transportProperties

Reading field p

Reading field Urel

Creating field Uabs

Creating SRF model

Selecting SRFModel rpm
Reading/calculating face flux field phi

Selecting incompressible transport model Newtonian
Selecting turbulence model type RASModel
Selecting RAS turbulence model kOmegaSST
kOmegaSSTCoeffs
{
    alphaK1        0.85;
    alphaK2        1;
    alphaOmega1    0.5;
    alphaOmega2    0.856;
    gamma1          0.555556;
    gamma2          0.44;
    beta1          0.075;
    beta2          0.0828;
    betaStar        0.09;
    a1              0.31;
    b1              1;
    c1              10;
    F3              false;
}

Reading incremental displacement field DU

Patch AFS        Traction boundary field: DU
        nonLinear set to updated Lagrangian
Patch AFS        Traction boundary field: Usolid
        nonLinear set to updated Lagrangian
Reading incremental displacement field DV

Reading accumulated velocity field V

Reading accumulated stress field sigma

Reading incremental stress field DSigma

Selecting rheology model linearElastic
Creating constitutive model

Reading coupling properties
Create fluid-to-solid and solid-to-fluid interpolators
Check fluid-to-solid and solid-to-fluid interpolators
[1]
[1]
[1] --> FOAM FATAL ERROR:
[1] given field does not correspond to patch. Patch size: 2842 field size: 0
[1]
[1]    From function PatchToPatchInterpolation::faceInterpolate(const Field<Type> ff)
[1]    in file /home/kellis/foam/foam-extend-3.2/src/foam/lnInclude/PatchToPatchInterpolate.C at line 132.
[1]
FOAM parallel run aborting
[1]
--------------------------------------------------------------------------
MPI_ABORT was invoked on rank 1 in communicator MPI_COMM_WORLD
with errorcode 1.

NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes.
You may or may not see output from other processes, depending on
exactly when Open MPI kills them.
--------------------------------------------------------------------------
--------------------------------------------------------------------------
mpirun has exited due to process rank 1 with PID 13247 on
node desktop exiting improperly. There are two reasons this could occur:

1. this process did not call "init" before exiting, but others in
the job did. This can cause a job to hang indefinitely while it waits
for all processes to call "init". By rule, if one process calls "init",
then ALL processes must call "init" prior to termination.

2. this process called "init", but exited without calling "finalize".
By rule, all processes that call "init" MUST call "finalize" prior to
exiting or it will be considered an "abnormal termination"

This may have caused other processes in the application to be
terminated by signals sent by mpirun (as reported here).
--------------------------------------------------------------------------

You may have noticed there are cyclic GGI patches involved, but I don't think they are to blame. I swapped them to standard cyclics and the problem still persisted.

The patch size is consistent with the number of faces on the fluid side of the interface patch, and the error originates from the processor I assigned it to. However, I can't find anything wrong with the case files and am not sure what to try next. Has anyone encountered a similar issue before?

Thanks for any assistance!
-Kellis


Kellis,

I have had a similar problem in the past, with no success finding a solution. I had to resort to performing a full simulation (in my case, 3 blades of a wind turbine). I only post here to add my name to the list of people who are looking for a solution..

Cheers,
Dave

bigphil November 2, 2018 07:36

Hi Kellis, Dave,

I suggest running the solver through a debugger (e.g. gdb) in debug mode and finding the lines of code where the solver stops. From there, it should be clear where the error is coming from and then hopefully a solution can be found.

Philip


All times are GMT -4. The time now is 15:40.