|
[Sponsors] |
January 30, 2014, 05:39 |
this->refValue()[faceI] = ??
|
#1 |
New Member
Y
Join Date: Feb 2013
Location: The Earth
Posts: 25
Rep Power: 13 |
Dear OF users,
as mentioned in my last post, I am doing a coupling between OF and another programm with pvm. http://www.cfd-online.com/Forums/ope...m-pvm-how.html I modified the transferData() in externalCoupledTemperatureMixedFvPatchScalarField. C and readData() in externalCoupledMixedFvPatchField.C with pvm data transfer. After some debugging the code finally works. Now I face a new problem in externalCoupledMixedFvPatchField.C: // so it receives a double temp[faceI] for example: pvm_recv(tid, faceI); pvm_upkdouble(&temp[faceI],1,1); // how do I get this double temp[faceI] into refValue()[faceI] ?? this->refValue()[faceI] = ?? I was trying to send tempratures to this .so, so it is just a scalar. I appreciate any advices. peter |
|
February 1, 2014, 18:42 |
|
#2 |
Retired Super Moderator
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 10,982
Blog Entries: 45
Rep Power: 128 |
Greetings Peter,
I'm having a bit of difficulty understanding your question. Because, the answer seems to be as simple as: Code:
this->refValue()[faceI] = temp[faceI]; If it didn't, then please provide more information. Best regards, Bruno
__________________
|
|
February 3, 2014, 13:03 |
|
#3 |
New Member
Y
Join Date: Feb 2013
Location: The Earth
Posts: 25
Rep Power: 13 |
Hi Bruno, thanks for your reply!
I tried that option already - right at the beginning. But it that solution is too nice and simple to be right. Here is the error message from wmake: Code:
fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.C:350:33: error: no match for ‘operator=’ (operand types are ‘Foam::Vector<double>’ and ‘double’) this->refValue()[faceI] = temp[faceI]; Code:
template<class Type> void Foam::externalCoupledMixedFvPatchField<Type>::readData() { // ********************************************************************* // // pvm part beginning... int tid; char buf[100]; double temp[1000]; double tempi; // foam::vector<double> refV(tempi, 0, 0); // vector<double> refV(tempi, 0, 0); vector<type> refV(tempi, 0, 0); // vector refV(tempi, 0, 0); // ********************************************************************* // // send message to xfoam: Info<< "lib.so::readData ==> sending message to xfoam -> \n"; printf("lib.so::readData ==> mytid: %x\n", pvm_mytid()); tid = pvm_gettid("xf", 0); if (tid<0) { Info<< "readData() cannot find xfoam tid!!"; exit(FatalError); } strcpy(buf, "feed me now"); pvm_initsend(PvmDataDefault); pvm_pkstr(buf); pvm_send(tid, 9998); Info<< "lib.so::readData ==> just ordered food.\n"; // ********************************************************************* // // now the loop for data transfer: forAll(this->patch(), faceI) { pvm_recv(tid, faceI); pvm_upkdouble(&temp[faceI],1,1); tempi = temp[faceI]; // this->refValue()[faceI] = pTraits<Type>::zero; // this->refValue()[faceI] = pTraits<Type>(temp[faceI]); this->refValue()[faceI] = pTraits<Type>(refV); // this->refValue()[faceI] = pTraits<scalar>::zero; // this->refValue()[faceI] = temp[faceI]; // this->refValue()[faceI] = refV; // this->refValue()[faceI] = tempi; this->refGrad()[faceI] = pTraits<Type>::zero; this->valueFraction()[faceI] = 1; // is >> this->refValue()[faceI] // >> this->refGrad()[faceI] // >> this->valueFraction()[faceI]; Info<< "lib.so::readData ==> received data for face " << faceI << endl; Info<< "received value = " << temp[faceI] << endl; // send confirm: strcpy(buf, "okay from libfinite!"); pvm_initsend(PvmDataDefault); pvm_pkstr(buf); pvm_send(tid, 2015); } // ********************************************************************* // initialised_ = true; Info<< "lib.so::readData ==> finished receiving for one step!" << endl; // update the value from the mixed condition mixedFvPatchField<Type>::evaluate(); } |
|
February 3, 2014, 13:06 |
|
#4 |
New Member
Y
Join Date: Feb 2013
Location: The Earth
Posts: 25
Rep Power: 13 |
By the way, this is the only one that worked until now. But this does not help me much.
this->refValue()[faceI] = pTraits<Type>::zero; |
|
February 3, 2014, 13:59 |
|
#5 |
Senior Member
Marco A. Turcios
Join Date: Mar 2009
Location: Vancouver, BC, Canada
Posts: 740
Rep Power: 28 |
The error seems to indicate that you are trying to assign a double to vector double (or vice-versa). How is temp read in and what does it contain?
|
|
February 3, 2014, 17:41 |
|
#6 |
New Member
Y
Join Date: Feb 2013
Location: The Earth
Posts: 25
Rep Power: 13 |
pvm_upkdouble(&temp[faceI],1,1);
With this function pvm would assign the unpacked double value to temp[faceI], so temp[0], temp[1], temp[3] ... are just single double values, like 312.99 I also tried this->refValue()[faceI] = some vector double, it did not work either. |
|
February 3, 2014, 17:51 |
|
#7 |
New Member
Y
Join Date: Feb 2013
Location: The Earth
Posts: 25
Rep Power: 13 |
I figured out a real dummy solution for my problem.
I firstly use lockfile as an output file stream os: os << temp[faceI] then define lockfile as a input file stream is: is >> this->refValue()[faceI] and then os.flush() I tested it and it worked out. But this is really dummy. There must be a neater way. |
|
February 3, 2014, 18:20 |
|
#8 |
Senior Member
Joachim Herb
Join Date: Sep 2010
Posts: 650
Rep Power: 22 |
[QUOTE=peteryuan;473162]
Code:
fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.C:350:33: error: no match for ‘operator=’ (operand types are ‘Foam::Vector<double>’ and ‘double’) this->refValue()[faceI] = temp[faceI]; Code:
this->refValue()[faceI] = Vector(1, 2, 3); // This is probably the wrong syntax but I hope you get the idea Code:
this->refValue() = this->patch().nf() * temp; Code:
this->refValue()[faceI] = faceINormal * temp[faceI]; http://www.cfd-online.com/Forums/ope...tml#post424141 perhaps in your case: Code:
vector faceINormal = this->patch().Sf()[facesI] / this->patch().magSf()[facesI] ; |
|
February 3, 2014, 20:51 |
|
#9 |
New Member
Y
Join Date: Feb 2013
Location: The Earth
Posts: 25
Rep Power: 13 |
Hi Joachim:
thank you so much for your help. I added this two lins in my forAll loop: Code:
vector faceINormal = this->patch().Sf()[faceI] / this->patch().magSf()[faceI]; this->refValue()[faceI] = faceINormal * temp[faceI]; Code:
fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.C:352:33: error: no match for ‘operator=’ (operand types are ‘Foam::SymmTensor<double>’ and ‘Foam::Vector<double>’) this->refValue()[faceI] = faceINormal * temp[faceI]; Code:
[xy@fuji finiteVolume]$ wmake SOURCE=fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.C ; g++ -m64 -Dlinux64 -DWM_DP -Wall -Wextra -Wno-unused-parameter -Wold-style-cast -Wnon-virtual-dtor -O3 -DNoRepository -ftemplate-depth-100 -I/home/xy/OpenFOAM/OpenFOAM-2.2.x/src/triSurface/lnInclude -I/home/xy/OpenFOAM/OpenFOAM-2.2.x/src/meshTools/lnInclude -I/home/xy/pvm3/include -IlnInclude -I. -I/home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude -I/home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OSspecific/POSIX/lnInclude -fPIC -c $SOURCE -o Make/linux64GccDPOpt/externalCoupledMixedFvPatchFields.o In file included from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.H:349:0, from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.H:29, from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.C:26: fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.C: In instantiation of ‘void Foam::externalCoupledMixedFvPatchField<Type>::readData() [with Type = Foam::Tensor<double>]’: fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.C:40:1: required from here fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.C:334:29: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings] tid = pvm_gettid("xf", 0); ^ fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.C: In instantiation of ‘void Foam::externalCoupledMixedFvPatchField<Type>::readData() [with Type = Foam::SymmTensor<double>]’: fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.C:40:1: required from here fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.C:334:29: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings] fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.C:352:33: error: no match for ‘operator=’ (operand types are ‘Foam::SymmTensor<double>’ and ‘Foam::Vector<double>’) this->refValue()[faceI] = faceINormal * temp[faceI]; ^ fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.C:352:33: note: candidates are: In file included from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/SymmTensor.H:158:0, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/symmTensor.H:38, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/symmTensorField.H:41, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/tensorField.H:41, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/primitiveFields.H:40, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/pointField.H:36, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/edge.H:40, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/edgeList.H:32, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/PrimitivePatch.H:56, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/primitivePatch.H:35, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/polyPatch.H:43, from lnInclude/fvPatch.H:39, from lnInclude/fvPatchField.H:47, from lnInclude/mixedFvPatchField.H:75, from lnInclude/mixedFvPatchFields.H:29, from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.H:110, from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.H:29, from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.C:26: /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/SymmTensorI.H:168:13: note: void Foam::SymmTensor<Cmpt>::operator=(const Foam::SphericalTensor<Cmpt>&) [with Cmpt = double] inline void SymmTensor<Cmpt>::operator=(const SphericalTensor<Cmpt>& st) ^ /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/SymmTensorI.H:168:13: note: no known conversion for argument 1 from ‘Foam::Vector<double>’ to ‘const Foam::SphericalTensor<double>&’ In file included from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/symmTensor.H:38:0, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/symmTensorField.H:41, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/tensorField.H:41, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/primitiveFields.H:40, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/pointField.H:36, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/edge.H:40, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/edgeList.H:32, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/PrimitivePatch.H:56, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/primitivePatch.H:35, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/polyPatch.H:43, from lnInclude/fvPatch.H:39, from lnInclude/fvPatchField.H:47, from lnInclude/mixedFvPatchField.H:75, from lnInclude/mixedFvPatchFields.H:29, from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.H:110, from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.H:29, from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.C:26: /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/SymmTensor.H:54:7: note: Foam::SymmTensor<double>& Foam::SymmTensor<double>::operator=(const Foam::SymmTensor<double>&) class SymmTensor ^ /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/SymmTensor.H:54:7: note: no known conversion for argument 1 from ‘Foam::Vector<double>’ to ‘const Foam::SymmTensor<double>&’ In file included from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.H:349:0, from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.H:29, from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.C:26: fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.C: In instantiation of ‘void Foam::externalCoupledMixedFvPatchField<Type>::readData() [with Type = Foam::SphericalTensor<double>]’: fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.C:40:1: required from here fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.C:334:29: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings] tid = pvm_gettid("xf", 0); ^ fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.C:352:33: error: no match for ‘operator=’ (operand types are ‘Foam::SphericalTensor<double>’ and ‘Foam::Vector<double>’) this->refValue()[faceI] = faceINormal * temp[faceI]; ^ fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.C:352:33: note: candidate is: In file included from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/sphericalTensor.H:38:0, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/sphericalTensorField.H:39, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/tensorField.H:40, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/primitiveFields.H:40, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/pointField.H:36, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/edge.H:40, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/edgeList.H:32, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/PrimitivePatch.H:56, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/primitivePatch.H:35, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/polyPatch.H:43, from lnInclude/fvPatch.H:39, from lnInclude/fvPatchField.H:47, from lnInclude/mixedFvPatchField.H:75, from lnInclude/mixedFvPatchFields.H:29, from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.H:110, from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.H:29, from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.C:26: /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/SphericalTensor.H:52:7: note: Foam::SphericalTensor<double>& Foam::SphericalTensor<double>::operator=(const Foam::SphericalTensor<double>&) class SphericalTensor ^ /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/SphericalTensor.H:52:7: note: no known conversion for argument 1 from ‘Foam::Vector<double>’ to ‘const Foam::SphericalTensor<double>&’ In file included from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.H:349:0, from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.H:29, from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.C:26: fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.C: In instantiation of ‘void Foam::externalCoupledMixedFvPatchField<Type>::readData() [with Type = Foam::Vector<double>]’: fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.C:40:1: required from here fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.C:334:29: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings] tid = pvm_gettid("xf", 0); ^ fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.C: In instantiation of ‘void Foam::externalCoupledMixedFvPatchField<Type>::readData() [with Type = double]’: fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.C:40:1: required from here fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.C:334:29: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings] fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.C:352:33: error: cannot convert ‘Foam::Vector<double>’ to ‘double’ in assignment this->refValue()[faceI] = faceINormal * temp[faceI]; ^ In file included from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/VectorSpaceI.H:28:0, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/VectorSpace.H:168, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Vector.H:44, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/vector.H:39, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/point.H:35, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/pointField.H:35, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/edge.H:40, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/edgeList.H:32, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/PrimitivePatch.H:56, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/primitivePatch.H:35, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/polyPatch.H:43, from lnInclude/fvPatch.H:39, from lnInclude/fvPatchField.H:47, from lnInclude/mixedFvPatchField.H:75, from lnInclude/mixedFvPatchFields.H:29, from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.H:110, from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.H:29, from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.C:26: /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/VectorSpaceM.H: In instantiation of ‘static void VectorSpaceOps<N, I>::eqOp(V1&, const V2&, EqOp) [with V1 = Foam::VectorSpace<Foam::Vector<Foam::Vector<double> >, Foam::Vector<double>, 3>; V2 = Foam::VectorSpace<Foam::Vector<double>, double, 3>; EqOp = Foam::eqOp<Foam::Vector<double> >; int N = 3; int I = 0]’: /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/VectorSpaceI.H:60:58: required from ‘Foam::VectorSpace<Form, Cmpt, nCmpt>::VectorSpace(const Foam::VectorSpace<Form2, Cmpt2, nCmpt>&) [with Form2 = Foam::Vector<double>; Cmpt2 = double; Form = Foam::Vector<Foam::Vector<double> >; Cmpt = Foam::Vector<double>; int nCmpt = 3]’ /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/VectorI.H:42:42: required from ‘Foam::Vector<Cmpt>::Vector(const Foam::VectorSpace<Foam::Vector<Cmpt2>, Cmpt2, 3>&) [with Cmpt2 = double; Cmpt = Foam::Vector<double>]’ fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.C:352:33: required from ‘void Foam::externalCoupledMixedFvPatchField<Type>::readData() [with Type = Foam::Tensor<double>]’ fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.C:40:1: required from here /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/VectorSpaceM.H:26:32: error: no match for call to ‘(Foam::eqOp<Foam::Vector<double> >) (Foam::Vector<double>&, const double&)’ eo(vs1.v_[I], vs2.v_[I]); ^ In file included from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/VectorSpaceI.H:29:0, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/VectorSpace.H:168, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Vector.H:44, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/vector.H:39, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/point.H:35, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/pointField.H:35, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/edge.H:40, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/edgeList.H:32, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/PrimitivePatch.H:56, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/primitivePatch.H:35, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/polyPatch.H:43, from lnInclude/fvPatch.H:39, from lnInclude/fvPatchField.H:47, from lnInclude/mixedFvPatchField.H:75, from lnInclude/mixedFvPatchFields.H:29, from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.H:110, from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.H:29, from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.C:26: /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/ops.H:70:6: note: candidate is: EqOp(eq, x = y) ^ /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/ops.H:60:7: note: in definition of macro ‘EqOp’ class opName##Op \ ^ /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/ops.H:64:10: note: void Foam::eqOp<T>::operator()(T&, const T&) const [with T = Foam::Vector<double>] void operator()(T& x, const T& y) const \ ^ /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/ops.H:70:1: note: in expansion of macro ‘EqOp’ EqOp(eq, x = y) ^ /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/ops.H:64:10: note: no known conversion for argument 2 from ‘const double’ to ‘const Foam::Vector<double>&’ void operator()(T& x, const T& y) const \ ^ /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/ops.H:70:1: note: in expansion of macro ‘EqOp’ EqOp(eq, x = y) ^ fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.dep:481: recipe for target 'Make/linux64GccDPOpt/externalCoupledMixedFvPatchFields.o' failed make: *** [Make/linux64GccDPOpt/externalCoupledMixedFvPatchFields.o] Error 1 |
|
February 4, 2014, 05:36 |
|
#10 |
Senior Member
Joachim Herb
Join Date: Sep 2010
Posts: 650
Rep Power: 22 |
Ok, could you try somethings:
I have programmed a new boundary conditions with this inheritance: Code:
class couplingNormalInletOutletVelocityFvPatchVectorField : public mixedFvPatchVectorField Code:
double refValue_ = 1.0 // here your value goes refValue() = refValue_*patch().nf(); valueFraction() = 1.0 // use to value not the (zero) gradient Does this work? What is the base class of your new boundary condition? The error messages point to some tensor class. |
|
February 4, 2014, 18:13 |
|
#11 |
New Member
Y
Join Date: Feb 2013
Location: The Earth
Posts: 25
Rep Power: 13 |
Thanks Joachim, I will try that.
Actually I did not know how to implement a new BC. So I simply backed up the original file and modified my src directory, then recompile. "I modified the transferData() in externalCoupledTemperatureMixedFvPatchScalarField. C and readData() in externalCoupledMixedFvPatchField.C with pvm data transfer." But I just found some tutorials on how ot do that more "properly". I might try to move my modified classe out of src and give them another name. Now I have another question, which is more important for me: How can I make heat flux external coupled like I did with tempratur? There is not even a qDot file in 0 dir... Last edited by peteryuan; February 4, 2014 at 19:31. |
|
February 4, 2014, 18:36 |
|
#12 |
New Member
Y
Join Date: Feb 2013
Location: The Earth
Posts: 25
Rep Power: 13 |
just a quick feed back:
I have not tried this with a new class. But if I put this->refValue() = this->patch().nf() * temp[faceI]; in my old code, which assign a single value for the whole patch, I get the following message: error: no match for ‘operator=’ (operand types are ‘Foam::Field<Foam::Tensor<double> >’ and ‘Foam::tmp<Foam::Field<Foam::Vector<double> > >’) this->refValue() = this->patch().nf() * temp[faceI]; Code:
[xy@fuji finiteVolume]$ wmake SOURCE=fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.C ; g++ -m64 -Dlinux64 -DWM_DP -Wall -Wextra -Wno-unused-parameter -Wold-style-cast -Wnon-virtual-dtor -O3 -DNoRepository -ftemplate-depth-100 -I/home/xy/OpenFOAM/OpenFOAM-2.2.x/src/triSurface/lnInclude -I/home/xy/OpenFOAM/OpenFOAM-2.2.x/src/meshTools/lnInclude -I/home/xy/pvm3/include -IlnInclude -I. -I/home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude -I/home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OSspecific/POSIX/lnInclude -fPIC -c $SOURCE -o Make/linux64GccDPOpt/externalCoupledMixedFvPatchFields.o In file included from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.H:349:0, from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.H:29, from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.C:26: fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.C: In instantiation of ‘void Foam::externalCoupledMixedFvPatchField<Type>::readData() [with Type = Foam::Tensor<double>]’: fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.C:40:1: required from here fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.C:334:29: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings] tid = pvm_gettid("xf", 0); ^ fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.C:353:26: error: no match for ‘operator=’ (operand types are ‘Foam::Field<Foam::Tensor<double> >’ and ‘Foam::tmp<Foam::Field<Foam::Vector<double> > >’) this->refValue() = this->patch().nf() * temp[faceI]; ^ fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.C:353:26: note: candidates are: In file included from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.H:360:0, ... /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.C:625:6: note: void Foam::Field<Type>::operator=(const Foam::Field<Type>&) [with Type = Foam::Tensor<double>] void Foam::Field<Type>::operator=(const Field<Type>& rhs) ^ /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.C:625:6: note: no known conversion for argument 1 from ‘Foam::tmp<Foam::Field<Foam::Vector<double> > >’ to ‘const Foam::Field<Foam::Tensor<double> >&’ /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.C:646:6: note: void Foam::Field<Type>::operator=(const Foam::UList<T>&) [with Type = Foam::Tensor<double>] void Foam::Field<Type>::operator=(const UList<Type>& rhs) ^ /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.C:646:6: note: no known conversion for argument 1 from ‘Foam::tmp<Foam::Field<Foam::Vector<double> > >’ to ‘const Foam::UList<Foam::Tensor<double> >&’ /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.C:639:6: note: void Foam::Field<Type>::operator=(const Foam::SubField<Type>&) [with Type = Foam::Tensor<double>] void Foam::Field<Type>::operator=(const SubField<Type>& rhs) ^ /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.C:639:6: note: no known conversion for argument 1 from ‘Foam::tmp<Foam::Field<Foam::Vector<double> > >’ to ‘const Foam::SubField<Foam::Tensor<double> >&’ ... /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.H:320:14: note: template<class Form, class Cmpt, int nCmpt> void Foam::Field<Type>::operator=(const Foam::VectorSpace<Form, Cmpt, nCmpt>&) [with Form = Form; Cmpt = Cmpt; int nCmpt = nCmpt; Type = Foam::Tensor<double>] void operator=(const VectorSpace<Form,Cmpt,nCmpt>&); ^ /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.H:320:14: note: template argument deduction/substitution failed: In file included from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.H:349:0, from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.H:29, from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.C:26: fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.C:353:26: note: ‘Foam::tmp<Foam::Field<Foam::Vector<double> > >’ is not derived from ‘const Foam::VectorSpace<Form, Cmpt, nCmpt>’ this->refValue() = this->patch().nf() * temp[faceI]; ^ fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.C: In instantiation of ‘void Foam::externalCoupledMixedFvPatchField<Type>::readData() [with Type = Foam::SymmTensor<double>]’: fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.C:40:1: required from here fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.C:334:29: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings] tid = pvm_gettid("xf", 0); ^ fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.C:353:26: error: no match for ‘operator=’ (operand types are ‘Foam::Field<Foam::SymmTensor<double> >’ and ‘Foam::tmp<Foam::Field<Foam::Vector<double> > >’) this->refValue() = this->patch().nf() * temp[faceI]; ^ fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.C:353:26: note: candidates are: ... /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.C:625:6: note: void Foam::Field<Type>::operator=(const Foam::Field<Type>&) [with Type = Foam::SymmTensor<double>] void Foam::Field<Type>::operator=(const Field<Type>& rhs) ^ /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.C:625:6: note: no known conversion for argument 1 from ‘Foam::tmp<Foam::Field<Foam::Vector<double> > >’ to ‘const Foam::Field<Foam::SymmTensor<double> >&’ /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.C:646:6: note: void Foam::Field<Type>::operator=(const Foam::UList<T>&) [with Type = Foam::SymmTensor<double>] void Foam::Field<Type>::operator=(const UList<Type>& rhs) ^ /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.C:646:6: note: no known conversion for argument 1 from ‘Foam::tmp<Foam::Field<Foam::Vector<double> > >’ to ‘const Foam::UList<Foam::SymmTensor<double> >&’ /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.C:639:6: note: void Foam::Field<Type>::operator=(const Foam::SubField<Type>&) [with Type = Foam::SymmTensor<double>] void Foam::Field<Type>::operator=(const SubField<Type>& rhs) ^ /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.C:639:6: note: no known conversion for argument 1 from ‘Foam::tmp<Foam::Field<Foam::Vector<double> > >’ to ‘const Foam::SubField<Foam::SymmTensor<double> >&’ /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.C:653:6: note: void Foam::Field<Type>::operator=(const Foam::tmp<Foam::Field<Type> >&) [with Type = Foam::SymmTensor<double>] void Foam::Field<Type>::operator=(const tmp<Field>& rhs) ^ /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.C:653:6: note: no known conversion for argument 1 from ‘Foam::tmp<Foam::Field<Foam::Vector<double> > >’ to ‘const Foam::tmp<Foam::Field<Foam::SymmTensor<double> > >&’ /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.C:670:6: note: void Foam::Field<Type>::operator=(const Type&) [with Type = Foam::SymmTensor<double>] void Foam::Field<Type>::operator=(const Type& t) ^ /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.C:670:6: note: no known conversion for argument 1 from ‘Foam::tmp<Foam::Field<Foam::Vector<double> > >’ to ‘const Foam::SymmTensor<double>&’ In file included from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/labelField.H:39:0, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/primitiveFields.H:37, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/pointField.H:36, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/edge.H:40, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/edgeList.H:32, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/PrimitivePatch.H:56, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/primitivePatch.H:35, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude ... from lnInclude/fvPatch.H:39, from lnInclude/fvPatchField.H:47, from lnInclude/mixedFvPatchField.H:75, from lnInclude/mixedFvPatchFields.H:29, from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.H:110, from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.H:29, from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.C:26: /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.C:625:6: note: void Foam::Field<Type>::operator=(const Foam::Field<Type>&) [with Type = Foam::SphericalTensor<double>] void Foam::Field<Type>::operator=(const Field<Type>& rhs) ^ /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.C:625:6: note: no known conversion for argument 1 from ‘Foam::tmp<Foam::Field<Foam::Vector<double> > >’ to ‘const Foam::Field<Foam::SphericalTensor<double> >&’ /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.C:646:6: note: void Foam::Field<Type>::operator=(const Foam::UList<T>&) [with Type = Foam::SphericalTensor<double>] void Foam::Field<Type>::operator=(const UList<Type>& rhs) ^ /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.C:646:6: note: no known conversion for argument 1 from ‘Foam::tmp<Foam::Field<Foam::Vector<double> > >’ to ‘const Foam::UList<Foam::SphericalTensor<double> >&’ /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.C:639:6: note: void Foam::Field<Type>::operator=(const Foam::SubField<Type>&) [with Type = Foam::SphericalTensor<double>] void Foam::Field<Type>::operator=(const SubField<Type>& rhs) ^ /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.C:639:6: note: no known conversion for argument 1 from ‘Foam::tmp<Foam::Field<Foam::Vector<double> > >’ to ‘const Foam::SubField<Foam::SphericalTensor<double> >&’ /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.C:653:6: note: void Foam::Field<Type>::operator=(const Foam::tmp<Foam::Field<Type> >&) [with Type = Foam::SphericalTensor<double>] void Foam::Field<Type>::operator=(const tmp<Field>& rhs) ^ /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.C:653:6: note: no known conversion for argument 1 from ‘Foam::tmp<Foam::Field<Foam::Vector<double> > >’ to ‘const Foam::tmp<Foam::Field<Foam::SphericalTensor<double> > >&’ /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.C:670:6: note: void Foam::Field<Type>::operator=(const Type&) [with Type = Foam::SphericalTensor<double>] void Foam::Field<Type>::operator=(const Type& t) ^ /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.C:670:6: note: no known conversion for argument 1 from ‘Foam::tmp<Foam::Field<Foam::Vector<double> > >’ to ‘const Foam::SphericalTensor<double>&’ In file included from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/labelField.H:39:0, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/primitiveFields.H:37, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/pointField.H:36, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/edge.H:40, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/edgeList.H:32, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/PrimitivePatch.H:56, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/primitivePatch.H:35, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/polyPatch.H:43, from lnInclude/fvPatch.H:39, from lnInclude/fvPatchField.H:47, from lnInclude/mixedFvPatchField.H:75, from lnInclude/mixedFvPatchFields.H:29, from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.H:110, from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.H:29, from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.C:26: /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.H:320:14: note: template<class Form, class Cmpt, int nCmpt> void Foam::Field<Type>::operator=(const Foam::VectorSpace<Form, Cmpt, nCmpt>&) [with Form = Form; Cmpt = Cmpt; int nCmpt = nCmpt; Type = Foam::SphericalTensor<double>] void operator=(const VectorSpace<Form,Cmpt,nCmpt>&); ^ /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.H:320:14: note: template argument deduction/substitution failed: In file included from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.H:349:0, from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.H:29, from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.C:26: fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.C:353:26: note: ‘Foam::tmp<Foam::Field<Foam::Vector<double> > >’ is not derived from ‘const Foam::VectorSpace<Form, Cmpt, nCmpt>’ this->refValue() = this->patch().nf() * temp[faceI]; ^ fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.C: In instantiation of ‘void Foam::externalCoupledMixedFvPatchField<Type>::readData() [with Type = Foam::Vector<double>]’:... Type>::operator=(const Foam::UList<T>&) [with Type = double] void Foam::Field<Type>::operator=(const UList<Type>& rhs) ^ /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.C:646:6: note: no known conversion for argument 1 from ... /primitivePatch.H:35, from /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/polyPatch.H:43, from lnInclude/fvPatch.H:39, from lnInclude/fvPatchField.H:47, from lnInclude/mixedFvPatchField.H:75, from lnInclude/mixedFvPatchFields.H:29, from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.H:110, from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.H:29, from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.C:26: /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.C:670:6: note: void Foam::Field<Type>::operator=(const Type&) [with Type = double] void Foam::Field<Type>::operator=(const Type& t) ... /externalCoupledMixedFvPatchField.H:110, from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.H:29, from fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.C:26: /home/xy/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.H:320:14: note: template<class Form, class Cmpt, int nCmpt> void Foam::Field<Type>::operator=(const Foam::VectorSpace<Form, Cmpt, nCmpt>&) [with Form = Form; Cmpt = Cmpt; int nCmpt = nCmpt; Type = double] void operator=(const VectorSpace<Form,Cmpt,nCmpt>&); ^ ... ‘Foam::tmp<Foam::Field<Foam::Vector<double> > >’ is not derived from ‘const Foam::VectorSpace<Form, Cmpt, nCmpt>’ this->refValue() = this->patch().nf() * temp[faceI]; ^ fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.dep:481: recipe for target 'Make/linux64GccDPOpt/externalCoupledMixedFvPatchFields.o' failed make: *** [Make/linux64GccDPOpt/externalCoupledMixedFvPatchFields.o] Error 1 |
|
February 5, 2014, 08:37 |
|
#13 |
Senior Member
Joachim Herb
Join Date: Sep 2010
Posts: 650
Rep Power: 22 |
The boundary conditions of which field do you want to couple? Is it a tensor field? Does the coupling work for scalar fields (like p, T, ...)? Is your code based on http://foam.sourceforge.net/docs/cpp/a04346_source.html (line 391)?
|
|
February 5, 2014, 09:01 |
|
#14 |
New Member
Y
Join Date: Feb 2013
Location: The Earth
Posts: 25
Rep Power: 13 |
yep, the receiving data part is based on that location. The sinding out data part is based on http://foam.sourceforge.net/docs/cpp/a09284_source.html on line
226 os << magSf[faceI] << token::SPACE ... I need openfoam to receive temprature and heat flux as boundary condition from an external programm via pvm and send magSf, qDot and htc back to the external programm. So T is a scalar field. Heat flux is a vector field. Right? The sending out data part works pretty good already. The receiving data part works okay for temprature with my dummy solution through is and os. (we might be able to improve that later.) Now I still do not know how to read in heat flux as a boudary condition from the external solver. |
|
August 29, 2018, 15:11 |
|
#15 |
Senior Member
Reviewer #2
Join Date: Jul 2015
Location: Knoxville, TN
Posts: 141
Rep Power: 11 |
Hi,
I know this is an old post. But do you have any updates on how to assign the values to the refValue or refGrad in the BC file? Thanks, Rdf ---- So there is another way to work around the issue. // reinitialize the refValue_ with all 1 refValue_= pTraits<Type>:ne; and then do the operation you want refValue_ = refValue_* YourValue; Last edited by wyldckat; August 31, 2018 at 19:59. Reason: merged posts a few minutes apart |
|
|
|