|
[Sponsors] |
September 12, 2008, 11:21 |
Hi Niels,
http://www.cfd-on
|
#21 |
Senior Member
|
Hi Niels,
You see how stupid I am, as you suggested, we could use a simple code to do this work if the syntax is not available for this repeat problem. Have a nice weekend. By the way, please allow me to send my best wished to you, your family and all Foamers here. Because on Sep 14, it is Mid-autum day, which means the family get-together and have fun. Best regards, Bin |
|
September 17, 2008, 07:12 |
Dear Niels and all friends her
|
#22 |
Senior Member
|
Dear Niels and all friends here,
I am glad to tell you that I find great pleasure writing my own code now, it is near completed. Now pls allow me to ask a question: Briefly: How to get three points on the boundary? Detailed:The way to provide the three points around the circle below is right? label patchID = mesh.boundaryMesh().findPatchID("circle"); volVectorField point1=U.mesh().boundary()[patchID].[0]; volVectorField point2=U.mesh().boundary()[patchID].[1]; volVectorField point3=U.mesh().boundary()[patchID].[2]; I need your hint at his point. Best regards, Bin |
|
September 17, 2008, 13:10 |
Dear all,
I know it is not
|
#23 |
Senior Member
|
Dear all,
I know it is not good to ask so many questions. I have followed one principle "problem is important when we compile". Now please allow me to ask one more questions (till now the above question is unsolved). I am thinking... abelAs you could see: If I want to use "mesh.boundary()[circlePatchID].Sf() / mesh.boundary()[circlePatchID].magSf();", I must do: circlePatchID=Mesh().boundary().findPatchID("circl e1"); But I have 100 circles. What I am thinking is that: if I specify whatever circles I have ( circle1, circle2, ...), as long as I specify "circleSlip", they will use my own boundary. I am doing this, I hope I could find a way out this evening.Otherwise I will be sleepless. Good luck to me. Best regards, bin |
|
September 17, 2008, 14:03 |
Hi Bin
Glad to hear that yo
|
#24 |
Senior Member
Niels Gjoel Jacobsen
Join Date: Mar 2009
Location: Copenhagen, Denmark
Posts: 1,903
Rep Power: 37 |
Hi Bin
Glad to hear that you are having progress. @First post: I would do something like this, say circle1: label patchID = mesh.boundaryMesh().findPatchID("circle1"); const vectorField & pp = mesh.boundary()[patchID].Cf(); if (pp.size() >= 3) { vector p0 = pp[0]; vector p1 = pp[1]; vector p2 = pp[2]; } I have had a bad experience with the way you mentioned, as it not always points to the correct value in the memory, but returns random values, therefore the seperate vectorField for the boundary field. @second question Still I assume that you are coding this directly in the solver? So what if you where doing something like this: forAll(mesh.boundary(),patchID) { if(mesh.boundary()[patchID].type() == "circleSlip") { Do your magic... } } I am doing this away from a working OF, but it should work, as far as I recall. On the other hand, if you have made a boundary-object, then if does know which patch you are dealing with, and thus it knows exactly which points are on the present patch, i.e. circle1, circle2, etc. Good luck Niels
__________________
Please note that I do not use the Friend-feature, so do not be offended, if I do not accept a request. |
|
September 18, 2008, 07:05 |
Hi Niels,
You are so kind,
|
#25 |
Senior Member
|
Hi Niels,
You are so kind, and what you said is valuable for me. I do this one step by one step, I hope I could deserve my carefulness. When I compile, I get: circleSlipFvPatchVectorField.C:156: error: 'grad' was not declared in this scope This error points to: //gradient of the above "tangential component"; vectorField GradTan= grad(phi_t); As you could see the above equation, after I get the tangential velocity phi_t, I should perform the gradient on it. I search the Doxgen online help, only to find that gradient is used for boundary normal gradient (without any input parameters). From the programmerGuide.pdf P-37, I know that we have many ways i.e. grad(chi), gGrad(phi), lsGrad(phi), snGrad(phi),snGradCorrection(phi), for vectorField, chi and phi are both ok. This is the reason why I have the above mentioned code. Hope you and any other friends could understand my situation now. Well, I benefit a lot from your suggestions and by the way from the error during compiling. Best regards, Bin |
|
September 18, 2008, 11:06 |
Hello,
Can I show my think
|
#26 |
Senior Member
|
Hello,
Can I show my thinking: 1. is it possible to use the one as the solver in the boundary condition, but not solver. Like: ------------------------- fvVectorMatrix UEqn ( n*fvc::grad(phi_t) ); solve(UEqn == (remda_+diam)/remda_*phi_t); ------------------------- 2. If there is no such function as "supposed" grad(phi_t), after I define "phi_t=phi_-n*(n & phi_)" I am struggling about this. Gook luck to me. Best regards, bin |
|
September 18, 2008, 11:07 |
Sorry, the 2 method is to defi
|
#27 |
Senior Member
|
Sorry, the 2 method is to define a self gradient for this parameter, let me work on it....
|
|
September 18, 2008, 11:54 |
Dear all,
I could see that
|
#28 |
Senior Member
|
Dear all,
I could see that fvm::grad(phi) could be used in the solver/applications. Therefore can I build a file named "tanUGrad.H" ------------------------- fvPatchTensorField tanUGrad ( IOobject ( "tanUGrad", runTime.timeName(), mesh, IOobject::NO_READ ), fvm::grad(U-(patch().Sf()/patch().magSf())*((patch().Sf()/patch().magSf()) & U)) ); tanUGrad.write(); ------------------------- Then #include "tanUGrad.H" in the solver when we want to use this boundary condition, so as to write the data "tanUGrad" in each time directory. Although this will generate the gradient of the previous, they are used for the current boundary calculation. This may generate error during the simulation. This is my stupid thinking. Welcome your comments for my current gradient function problem. Best regards, Bin |
|
September 19, 2008, 07:06 |
Dear all,
I find the functi
|
#29 |
Senior Member
|
Dear all,
I find the function of snGrad () ---------------------------------- //- Return gradient at boundary tmp<vectorfield> circleSlipFvPatchVectorField::snGrad() const { vectorField nHat=patch().nf(); vectorField pif_=this->patchInternalField(); return ( transform(I - sqr(nHat),pif_)-pif_ )*patch().deltaCoeffs(); } ------------------------------- First of all, I do not fully understand "transform(I - sqr(nHat),pif_)"; Second, after I look at the function transform(), I find what is written upbove is not right (because this function only needs one parameter input, maybe I am "wrong", welcome help); Third, one option to replace "transform(I - sqr(nHat),pif_)-pif_ " maybe "*this - patchInternalField()"; Ok, since as we could see snGrad () returns gradient at boundary. In my boundary condition "circleSlip", we can get the grad(U) only with snGrad(). But in the expression, we also know the vector "tangential velocity": tanU=U-n*(n & U). I really do not know how could I get grad(tanU) on the boundary using snGrad(). (It should return any gradient at boundary) Welcome suggestions for the syntax. Thank you. Best regards, Bin |
|
September 19, 2008, 14:06 |
Hello,
I find one "possible
|
#30 |
Senior Member
|
Hello,
I find one "possible" way to define a member function for the gradient of tangential velocity: grad(u_tangential), but still I need your suggestions if possible. In the .H file -------------------- virtual tmp<vectorfield> tanUGrad() const; -------------------- In the .C file -------------------- tmp<vectorfield> circleSlipFvPatchVectorField::tanUGrad() const { vectorField nHat=patch().nf(); iPt=this->patchInternalField()-n*(n & this->patchInternalField()); vectorField bPt=(*this)-n*(n & (*this)); vectorField iPt=(this->patchInternalField())-n*(n & (this->patchInternalField())); return ( bPt - iPt )*patch().deltaCoeffs(); } -------------------- However, it seems strange to me that when I compile, I get: -------------------- circleSlipFvPatchVectorField.C: In member function 'virtual Foam::tmp<foam::field<foam::vector<double> > > Foam::circleSlipFvPatchVectorField::tanUGrad() const': circleSlipFvPatchVectorField.C:143: error: no match for 'operator&' in '((const Foam::circleSlipFvPatchVectorField*)this)->Foam::circleSlipFvPatchVectorField::n & *(const Foam::circleSlipFvPatchVectorField*)this' /home/zhou/OpenFOAM/OpenFOAM-1.5/src/OpenFOAM/lnInclude/wordI.H:146: note: candidates are: Foam::word Foam::operator&(const Foam::word&, const Foam::word&) /home/zhou/OpenFOAM/OpenFOAM-1.5/src/OpenFOAM/lnInclude/dimensionSet.H:278: note: Foam::dimensionSet Foam::operator&(const Foam::dimensionSet&, const Foam::dimensionSet&) -------------------- You know what I do next? I think why I could not use the innerProduct function. I search the Doxgen, and find that this function is defined in "products.H", and In "FieldFieldFunctions.C". I could not solve this till now, would anybody give me a hint? Many thanks to you. Best regards, Bin |
|
September 19, 2008, 17:10 |
Hi,
Let allow me to answer
|
#31 |
Senior Member
|
Hi,
Let allow me to answer myself for this problem. In the .C file, replace "n" with "nHat". Best regards, Bin |
|
September 21, 2008, 11:31 |
Dear all,
When I apply my b
|
#32 |
Senior Member
|
Dear all,
When I apply my boundary, the simulation suddenly stops. I check the output value, and get: 1. The three point coordinates are (4.41226e-05,5.79779e-05), (4.71079e-05,6.24456e-05), (4.2272e-05,5.92143e-05); The circle center coordinate is4.469e-05,6.083e-05)-----this is correct, I have compared with gmsh geo file The diamter of the circle is:5.81612e-06-----however, the diameter should be 5.93 micrometer (I am sure the equation to calculate diameter is right: 2*sqrt(....)). Would you mind if I ask how could I improve the accuracy for diameter??? 2. Circle surface normal unit vetor is 16 ( (7.63918e-313 1.11173e+171 1.57793e+161) (2.06999e+161 1.01199e+261 2.31634e-152) (4.90982e-311 -7.84048e-45 0) (0.831478 -0.555558 4.60283e-19) (-0.980786 -0.195085 5.31636e-19) (0.980786 -0.195085 -5.31636e-19) (-0.831478 0.555558 -1.15071e-18) (0.555558 -0.831478 6.88294e-19) (-0.980786 0.195085 5.59336e-19) (-0.555558 -0.831478 -1.25939e-18) (-0.195085 -0.980786 5.31636e-19) (0.555558 0.831478 -4.60283e-19) (0.195085 -0.980786 -5.31636e-19) (-0.195085 0.980786 5.59336e-19) (0.980786 0.195085 -5.59336e-19) (-0.555558 0.831478 1.03138e-18) ) I really do not know why the first three has so large numbers? Just for your information. Best regards, Bin |
|
September 21, 2008, 17:15 |
Dear all,
The second proble
|
#33 |
Senior Member
|
Dear all,
The second problem is solved without "reference" to the vectorField n. Now I have a severe problems, when I run my case with simpleFoam and this boundary condition is implemented. The set is the same as what I have successfully done using slip, partialSlip boundary existing in OpenFOAM 1.5. But I find from the output file that: the case just apply "circleSlip" on the first circle, it runs only at time=0, and it writes the same thing repeatedly and seems endless. My log file becomes 58.2 M at the first several runs. I really do not know why the algorithm just repeat on the first "circle1" patch, and always on the time 0 ??? If you need some more information, I would be glad to share with you. I would appreciate it if you could give me a hand. Thank you. Bin |
|
September 22, 2008, 03:26 |
Hi, deal all,
In order to s
|
#34 |
Senior Member
|
Hi, deal all,
In order to solve this problem, I copy the partialSlip directory into name-1.5/application, and change "partial" into "circle", add Make directory, in which we have the "files" and "options": In "files": circleSlipFvPatchField.C LIB = $(FOAM_USER_LIBBIN)/libcircleSlip In "options": EXE_INC = \ -I$(LIB_SRC)/finiteVolume/lnInclude EXE_LIBS = When I compile, I get: ------------------------- Making dependency list for source file circleSlipFvPatchField.C SOURCE=circleSlipFvPatchField.C ; g++ -m32 -Dlinux -DDP -Wall -Wno-strict-aliasing -Wextra -Wno-unused-parameter -Wold-style-cast -O3 -DNoRepository -ftemplate-depth-40 -I/home/zhou/OpenFOAM/OpenFOAM-1.5/src/finiteVolume/lnInclude -IlnInclude -I. -I/home/zhou/OpenFOAM/OpenFOAM-1.5/src/OpenFOAM/lnInclude -I/home/zhou/OpenFOAM/OpenFOAM-1.5/src/OSspecific/Unix/lnInclude -fPIC -pthread -c $SOURCE -o Make/linuxGccDPOpt/circleSlipFvPatchField.o circleSlipFvPatchField.C:42: error: redefinition of 'Foam::circleSlipFvPatchField<type>::circleSlipFvP atchField(const Foam::fvPatch&, const Foam::DimensionedField<type,>&)' circleSlipFvPatchField.C:42: error: 'Foam::circleSlipFvPatchField<type>::circleSlipFvP atchField(const Foam::fvPatch&, const Foam::DimensionedField<type,>&)' previously declared here circleSlipFvPatchField.C:56: error: redefinition of 'Foam::circleSlipFvPatchField<type>::circleSlipFvP atchField(const Foam::circleSlipFvPatchField<type>&, const Foam::fvPatch&, const Foam::DimensionedField<type,>&, const Foam::fvPatchFieldMapper&)' circleSlipFvPatchField.C:56: error: 'Foam::circleSlipFvPatchField<type>::circleSlipFvP atchField(const Foam::circleSlipFvPatchField<type>&, const Foam::fvPatch&, const Foam::DimensionedField<type,>&, const Foam::fvPatchFieldMapper&)' previously declared here circleSlipFvPatchField.C:69: error: redefinition of 'Foam::circleSlipFvPatchField<type>::circleSlipFvP atchField(const Foam::fvPatch&, const Foam::DimensionedField<type,>&, const Foam::dictionary&)' circleSlipFvPatchField.C:69: error: 'Foam::circleSlipFvPatchField<type>::circleSlipFvP atchField(const Foam::fvPatch&, const Foam::DimensionedField<type,>&, const Foam::dictionary&)' previously declared here circleSlipFvPatchField.C:82: error: redefinition of 'Foam::circleSlipFvPatchField<type>::circleSlipFvP atchField(const Foam::circleSlipFvPatchField<type>&)' circleSlipFvPatchField.C:82: error: 'Foam::circleSlipFvPatchField<type>::circleSlipFvP atchField(const Foam::circleSlipFvPatchField<type>&)' previously declared here circleSlipFvPatchField.C:94: error: redefinition of 'Foam::circleSlipFvPatchField<type>::circleSlipFvP atchField(const Foam::circleSlipFvPatchField<type>&, const Foam::DimensionedField<type,>&)' circleSlipFvPatchField.C:94: error: 'Foam::circleSlipFvPatchField<type>::circleSlipFvP atchField(const Foam::circleSlipFvPatchField<type>&, const Foam::DimensionedField<type,>&)' previously declared here circleSlipFvPatchField.C:107: error: redefinition of 'void Foam::circleSlipFvPatchField<type>::autoMap(const Foam::fvPatchFieldMapper&)' circleSlipFvPatchField.C:107: error: 'virtual void Foam::circleSlipFvPatchField<type>::autoMap(const Foam::fvPatchFieldMapper&)' previously declared here circleSlipFvPatchField.C:119: error: redefinition of 'void Foam::circleSlipFvPatchField<type>::rmap(const Foam::fvPatchField<type>&, const Foam::labelList&)' circleSlipFvPatchField.C:119: error: 'virtual void Foam::circleSlipFvPatchField<type>::rmap(const Foam::fvPatchField<type>&, const Foam::labelList&)' previously declared here circleSlipFvPatchField.C:131: error: redefinition of 'Foam::tmp<foam::field<type> > Foam::circleSlipFvPatchField<type>::snGrad() const' circleSlipFvPatchField.C:131: error: 'virtual Foam::tmp<foam::field<type> > Foam::circleSlipFvPatchField<type>::snGrad() const' previously declared here circleSlipFvPatchField.C:144: error: redefinition of 'void Foam::circleSlipFvPatchField<type>::evaluate(Foam: :Pstream::commsTypes)' circleSlipFvPatchField.C:144: error: 'virtual void Foam::circleSlipFvPatchField<type>::evaluate(Foam: :Pstream::commsTypes)' previously declared here circleSlipFvPatchField.C:164: error: redefinition of 'Foam::tmp<foam::field<type> > Foam::circleSlipFvPatchField<type>::snGradTransfor mDiag() const' circleSlipFvPatchField.C:164: error: 'virtual Foam::tmp<foam::field<type> > Foam::circleSlipFvPatchField<type>::snGradTransfor mDiag() const' previously declared here circleSlipFvPatchField.C:181: error: redefinition of 'void Foam::circleSlipFvPatchField<type>::write(Foam:stream&) const' circleSlipFvPatchField.C:181: error: 'virtual void Foam::circleSlipFvPatchField<type>::write(Foam:stream&) const' previously declared here make: *** [Make/linuxGccDPOpt/circleSlipFvPatchField.o] Error 1 ----------------------- Does anybody have experience dealing with "redefinition"? Thank you. Bin |
|
September 22, 2008, 04:06 |
Hi, share with you.
Solutio
|
#35 |
Senior Member
|
Hi, share with you.
Solution: in Make/files: replace "circleSlipFvPatchField.C" with "circleSlipFvPatchFields.C" |
|
September 22, 2008, 06:56 |
Dear all,
I find it is str
|
#36 |
Senior Member
|
Dear all,
I find it is strange, because when I use the existing partialSlip boundary file as a base, I could not use the operator "&" in vectorField iPt=(this->patchInternalField())-n*(n & (this->patchInternalField())); I get the error: ------------------------ circleSlipFvPatchField.C: In member function 'Foam::tmp<foam::field<type> > Foam::circleSlipFvPatchField<type>::tanUGrad() const [with Type = Foam::SymmTensor<double>]': circleSlipFvPatchFields.C:42: instantiated from here circleSlipFvPatchField.C:150: error: conversion from 'Foam::tmp<foam::field<foam::tensor<double> > >' to non-scalar type 'Foam::Field<foam::symmtensor<double> >' requested circleSlipFvPatchField.C: In member function 'Foam::tmp<foam::field<type> > Foam::circleSlipFvPatchField<type>::tanUGrad() const [with Type = Foam::SphericalTensor<double>]': circleSlipFvPatchFields.C:42: instantiated from here circleSlipFvPatchField.C:150: error: conversion from 'Foam::tmp<foam::field<foam::tensor<double> > >' to non-scalar type 'Foam::Field<foam::sphericaltensor<double> >' requested /home/zhou/OpenFOAM/OpenFOAM-1.5/src/OpenFOAM/lnInclude/products.H: At global scope: /home/zhou/OpenFOAM/OpenFOAM-1.5/src/OpenFOAM/lnInclude/products.H: In instantiation of 'Foam::innerProduct<foam::vector<double>, double>': circleSlipFvPatchField.C:150: instantiated from 'Foam::tmp<foam::field<type> > Foam::circleSlipFvPatchField<type>::tanUGrad() const [with Type = double]' circleSlipFvPatchFields.C:42: instantiated from here /home/zhou/OpenFOAM/OpenFOAM-1.5/src/OpenFOAM/lnInclude/products.H:100: error: no type named 'type' in 'class Foam::typeOfRank<double,>' circleSlipFvPatchField.C: In member function 'Foam::tmp<foam::field<type> > Foam::circleSlipFvPatchField<type>::tanUGrad() const [with Type = double]': circleSlipFvPatchFields.C:42: instantiated from here circleSlipFvPatchField.C:150: error: no match for 'operator&' in 'nHat2 & iPt0_' /home/zhou/OpenFOAM/OpenFOAM-1.5/src/OpenFOAM/lnInclude/wordI.H:146: note: candidates are: Foam::word Foam::operator&(const Foam::word&, const Foam::word&) /home/zhou/OpenFOAM/OpenFOAM-1.5/src/OpenFOAM/lnInclude/dimensionSet.H:278: note: Foam::dimensionSet Foam::operator&(const Foam::dimensionSet&, const Foam::dimensionSet&) /home/zhou/OpenFOAM/OpenFOAM-1.5/src/OpenFOAM/lnInclude/quaternionI.H:290: note: Foam::scalar Foam::operator&(const Foam::quaternion&, const Foam::quaternion&) make: *** [Make/linuxGccDPOpt/circleSlipFvPatchFields.o] Error 1 ------------------------ This time I checked very carefully, because I only add vectorField iPt=(this->patchInternalField())-n*(n & (this->patchInternalField())); where n is well defined. Is it because I miss some included files? Bin |
|
September 22, 2008, 07:02 |
Here is my code:
template
|
#37 |
Senior Member
|
Here is my code:
template<class> tmp<field<type> > circleSlipFvPatchField<type>::tanUGrad() const { vectorField nHat2=this->patch().nf(); Field<type> iPt0_=this->patchInternalField(); Field<type> iPt=iPt0_-nHat2*(nHat2 & iPt0_); return ( transform(I - sqr(nHat2),iPt)-iPt )*this->patch().deltaCoeffs(); } |
|
September 22, 2008, 07:21 |
I have checked the programmerG
|
#38 |
Senior Member
|
I have checked the programmerGuide.pdf again, I get:
The inner product of two vectors a and b is commutative and produces a scalar s = a • b where s = aibi = a1b1 + a2b2 + a3b3 Inner product in OpenFOAM could be used for rank a, b >= 1(in Math: a • b, in OpenFOAM a & b) Well, I hope I could find a solution to this soon. |
|
September 23, 2008, 16:52 |
Dear all,
I am glad that I
|
#39 |
Senior Member
|
Dear all,
I am glad that I could make my boundary condition work, but only the first step. I need your help because I have an error: --------------------------- zhou@ENERGETICSAEROSOL:~/OpenFOAM/zhou-1.5/zhou/media_sep23> simpleFoam > log_circleSlip3 & [1] 9923 zhou@ENERGETICSAEROSOL:~/OpenFOAM/zhou-1.5/zhou/media_sep23> #0 Foam::error::printStack(Foam:stream&) in "/home/zhou/OpenFOAM/OpenFOAM-1.5/lib/linuxGccDPOpt/libOpenFOAM.so" #1 Foam::sigFpe::sigFpeHandler(int) in "/home/zhou/OpenFOAM/OpenFOAM-1.5/lib/linuxGccDPOpt/libOpenFOAM.so" #2 Uninterpreted: [0xffffe420] #3 Foam::tmp<foam::field<foam::vector<double> > > Foam::operator*<foam::vector<double> >(Foam::tmp<foam::field<double> > const&, Foam::tmp<foam::field<foam::vector<double> > > const&) in "/home/zhou/OpenFOAM/OpenFOAM-1.5/applications/bin/linuxGccDPOpt/simpleFoam" #4 Foam::fv::gaussConvectionScheme<foam::vector<doubl e> >::fvmDiv(Foam::GeometricField<double,> const&, Foam::GeometricField<foam::vector<double>, Foam::fvPatchField, Foam::volMesh>&) const in "/home/zhou/OpenFOAM/OpenFOAM-1.5/lib/linuxGccDPOpt/libfiniteVolume.so" #5 Foam::tmp<foam::fvmatrix<foam::vector<double> > > Foam::fvm::div<foam::vector<double> >(Foam::GeometricField<double,> const&, Foam::GeometricField<foam::vector<double>, Foam::fvPatchField, Foam::volMesh>&, Foam::word const&) in "/home/zhou/OpenFOAM/OpenFOAM-1.5/applications/bin/linuxGccDPOpt/simpleFoam" #6 Foam::tmp<foam::fvmatrix<foam::vector<double> > > Foam::fvm::div<foam::vector<double> >(Foam::GeometricField<double,> const&, Foam::GeometricField<foam::vector<double>, Foam::fvPatchField, Foam::volMesh>&) in "/home/zhou/OpenFOAM/OpenFOAM-1.5/applications/bin/linuxGccDPOpt/simpleFoam" #7 main in "/home/zhou/OpenFOAM/OpenFOAM-1.5/applications/bin/linuxGccDPOpt/simpleFoam" #8 __libc_start_main in "/lib/libc.so.6" #9 Foam::regIOobject::readIfModified() in "/home/zhou/OpenFOAM/OpenFOAM-1.5/applications/bin/linuxGccDPOpt/simpleFoam" -------------------- I searched this forum, and I see that I could find one solution, but I get some "nan" values on my output files. I would appreciative if you could have some comments for this. Best regards, Bin |
|
September 27, 2008, 12:35 |
Dear all,
When I run the ca
|
#40 |
Senior Member
|
Dear all,
When I run the case with my boundary, I get: DILUPBiCG: Solving for Ux: solution singularity DILUPBiCG: Solving for Uy: solution singularity DICPCG: Solving for p: solution singularity time step continuity errors : sum local = nan, global = nan, cumulative = nan After I take a look at lduMatrixTests.C, I know that bool Foam::lduMatrix::solverPerformance::checkSingulari ty ( const scalar residual ) { if (residual > VSMALL) { singular_ = false; } else { singular_ = true; } return singular_; } void Foam::lduMatrix::solverPerformance::print() const { if (debug) { Info<< solverName_ << ": Solving for " << fieldName_; if (singular()) { Info<< ": solution singularity" << endl; } else { Info<< ", Initial residual = " << initialResidual_ << ", Final residual = " << finalResidual_ << ", No Iterations " << noIterations_ << endl; } } } But I am not sure for my problem, where is the possible cause. Thank you for your attention. Best regards, Bin |
|
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Boundary details, free slip or no slip? | Tiago | CFX | 5 | August 20, 2013 23:54 |
Circle of circles | Andore | Main CFD Forum | 1 | February 8, 2008 15:45 |
Modelling with many circles in a rectangle | gdbaldw | OpenFOAM Pre-Processing | 37 | November 27, 2007 05:30 |
Slip Boundary Condition for Moving Boundary | Shukla | Main CFD Forum | 3 | November 11, 2005 16:02 |
Slip boundary for N.S. | Rasmus | Main CFD Forum | 0 | June 6, 2002 09:49 |