|
[Sponsors] |
Where might I obtain a copy of FOAM-2.2/2.3...? |
|
LinkBack | Thread Tools | Search this Thread | Display Modes |
July 13, 2010, 07:28 |
Where might I obtain a copy of FOAM-2.2/2.3...?
|
#1 |
Super Moderator
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,097
Rep Power: 34 |
Hi,
I wonder if anyone might know where I can obtain a copy of FOAM-2.3 or earlier? I want to see how/if the old version of the contact stress solver worked, as the current version in the -dev line does not work anymore presumably due to certain changes/updates in the main source files. Any suggestions would be very welcome, Philip C Also, I am not quite sure of the legalities since FOAM was a commercial software although Nabla Ltd did offer free academia licenses. |
|
July 13, 2010, 11:19 |
|
#2 |
Senior Member
Hrvoje Jasak
Join Date: Mar 2009
Location: London, England
Posts: 1,907
Rep Power: 33 |
I've got the full archive, back to approx 1993. It would be nice to know what does not work, especially to help with fixing it.
As a former director of Nabla Ltd, I am sure I can legally give you the code. Here's the listing of some of the old release versions done under Nabla Ltd; other and older work, including my PhD version (foam-1.5, 1996) are on backup DVDs, so these are easier: 16M 2001-07-06 11:16 foam1.9.6_19_04_01.gtgz 46M 2002-01-21 19:58 foam2.0_21_01_02.gtgz 48M 2002-03-28 15:11 foam2.1_28_03_02.gtgz 85M 2003-12-04 19:43 foam2.2_04_12_03.gtgz 88M 2004-12-13 16:22 foam2.3.2_13_12_04.gtgz 75M 2004-12-13 16:22 foam2.3_28_10_04.gtgz Hrv
__________________
Hrvoje Jasak Providing commercial FOAM/OpenFOAM and CFD Consulting: http://wikki.co.uk |
|
July 13, 2010, 11:46 |
Thanks for the help
|
#3 |
Super Moderator
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,097
Rep Power: 34 |
Hi Hrv,
Thanks for replying. That would be great if you could send me one of the FOAM versions, if possible the version in which the original contact solver was developed, so I can compare codes with the current release. I have spent the past few weeks seriously looking into newContactStressFoam, and the problem seems to be that the slave faces that are partially in contact seem to be set with the wrong BC; these faces get displaced too close to the contact surface causing tensile stress peaks. The attached picture shows how there are tensile stress peaks in the slave cells with faces that are partially in contact (slave is on the top). These partially in-contact faces are a mix between fixedValue (in-contact) and fixedGradient (not-in-contact) where the touchFraction sets the proportion of mixing, but it doesn't seem to be mixed correctly. The master is fine, as the method only passes over positive pressures, but the slave faces partially in contact do not do what they are meant to... Maybe some changes in the main OpenFOAM code have caused the solver to stop working... that's why I would like to get a hold of the original "working" code and compare things and find the problem. Best Regards, Philip |
|
July 14, 2010, 04:51 |
|
#4 |
Senior Member
Hrvoje Jasak
Join Date: Mar 2009
Location: London, England
Posts: 1,907
Rep Power: 33 |
We had to introduce some changes saying that the contact cannot transfer the tensile stresses (on the stress side) and that the cells under tension lose contact (on the displacement side). It will be in the force transfer in the boundary condition, probably in the top-level solver at that time. Have a look at the code and see on which side you get tension (the one that uses fixed displacement or the one which fixes traction) - that should tell you which filter is missing.
My guess is that you won't find what you need in the library, because contact detection and interpolation didn't change in quite a while (6-7 years?). You need the old contact code, probably from the UC Dublin group. In any case, if you want the old releases you are welcome to it, but please tell me which one. Hrv
__________________
Hrvoje Jasak Providing commercial FOAM/OpenFOAM and CFD Consulting: http://wikki.co.uk |
|
July 14, 2010, 07:40 |
|
#5 |
Super Moderator
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,097
Rep Power: 34 |
Hrv,
For newContactStressFoam the slave (the one that is fixed displacement) has tension in the partially in contact cells. I can see in the code where the pressure is passed from the slave to the master (fixed traction patch) and it only passes positive pressure and so the master is fine and never has tensile stresses at the contact. So this master moves a bit from the pressure and then the slave gets displaced up to it and the loop continues until the contact converges. The problem as I see it is setting the correct conditions on the slave faces that are partially in contact, hmmmn I think this comes down to setting the correct valueFraction at these faces. Hmmnn you are probably right about me needing the old code but I am finding it hard to acquire - I am a PhD student in U C Dublin!. I have been working closely with Aleksandar Karac but he cannot seem to find his old code that he definitely had working. If you are able to send me the last FOAM release (75M 2004-12-13 16:22 foam2.3_28_10_04.gtgz) that would be great! Hopefully it is only something small that has to be changed. Also from slowly going through the code, there are a few things that look a bit strange to me (or maybe I am not interpretting/understanding them correctly), for example: In newContactStressFoam, the slave valueFraction is set as Code:
(contactProblem.C line 248): slavePatch.valueFraction() = (1.0 - urfFraction_)*slavePatch.valueFraction() + I*urfFraction_*valueFraction[slaveIndex]; This means that the valueFraction does not take into account the patch normals!? What direction gets set as fixedValue in this case? I would set the slave valueFration as: Code:
slavePatch.valueFraction() = (1.0 - urfFraction_)*slavePatch.valueFraction() + I*urfFraction_*valueFraction[slaveIndex] * symm(nSLavePatch*nSlavePatch); In this way, the slave faces would be fixedValue (or a mix of FV and FG if touchFrac is < 1) in their normal direction and fixedGradient in their tangential direction. I made this change and it seems to work better but the slave partially in contact faces still are in tension. Another piece of code that look strange to me is when the slave refValue is calculated (contactPatchPair.C line 355): Code:
refValue[slaveIndex] += nSlavePatch* min ( pos(slaveFrac)* ( (nSlavePatch & Upatches[slaveIndex]) + slaveFrac*contactTol_ ), (nSlavePatch & slaveDisp) ); 1) pos(slaveFrac) is always all "1"? slaveFrac varies from 0 to 1 but by the definition of "pos" in the programmer's guide, it says pos(s) is 1 for s>=0? 2) Why use "+=" instead of "=", refValue[slaveIndex] is set to zero just before this? 3) What is the point of the first argument in the "min()" function? It just moves the faces by the contactTol_, is this just to make sure the faces don't move too quickly per step? Does under-relaxtion not achieve this anyway? I would think to set the slave refValue as: Code:
refValue[slaveIndex] = nSlavePatch * (nSlavePatch & slaveDisp); Phew, sorry for the long long reply, I feel as if it is something small (hopefully), Best Regards, Philip C _____________ Prof. Ivankovic's Research Group University College Dublin |
|
July 27, 2010, 12:54 |
The problem seems to be with the direction of the valueFraction
|
#6 |
Super Moderator
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,097
Rep Power: 34 |
OK,
the problem seems to be with the direction of the valueFraction on the slave patch - the slave patch is the directionMixed patch. The valueFraction (symmTensor) depends on the touchFrac (scalar) but the problem is: what direction should the slave faces be a mix of fixedValue and fixedGradient? i.e. How do you calculate the slave valueFrac when you have the slave touchFrac? At the moment in newContactStressFoam, valueFraction is set: valueFraction = I*touchFrac; But what direction are the faces a mix of fixedValue and fixedGradient? I have tried: valueFraction = touchFrac*symm(nSlavePatch*nSlavePatch) it works better but is not right for partially in contact faces. I have also tried: valueFraction = touchFrac*symm(nSlaveDisp*nSlaveDisp) where nSlaveDisp=slaveDisp/mag(slaveDisp); This works better for partially in contact faces but still sometimes they are in tension. In the physical sense I am unsure which direction should be used... I am spending considerable time on this and I am not sure I am even going in the right direction, Do you have any tip how I might get to the bottom of this? Philip |
|
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
[Commercial meshers] Using starToFoam | clo | OpenFOAM Meshing & Mesh Conversion | 33 | September 26, 2012 05:04 |
[blockMesh] BlockMesh FOAM warning | gaottino | OpenFOAM Meshing & Mesh Conversion | 7 | July 19, 2010 15:11 |
[Gmsh] Import problem | ARC | OpenFOAM Meshing & Mesh Conversion | 0 | February 27, 2010 11:56 |
[blockMesh] Axisymmetrical mesh | Rasmus Gjesing (Gjesing) | OpenFOAM Meshing & Mesh Conversion | 10 | April 2, 2007 15:00 |
[Gmsh] Import gmsh msh to Foam | adorean | OpenFOAM Meshing & Mesh Conversion | 24 | April 27, 2005 09:19 |