Pesquisar na Comunidade
Mostrando resultados para as tags ''openfoam''.
Encontrado 1 registro
-
Tenho dúvidas sobre o erro de ambiguidade. Como ele se dá? Eu estou tentando modificar um código de um simulador numérico de escoamento de fluidos (OpenFOAM), por meio da inserção de uma variável que me dê uma nova condição de contorno na variável de temperatura. Ao compilar o código recebo a seguinte mensagem de erro: In constructor ‘Foam::atmBoundaryLayerInletTemperatureFvPatchScalarField::atmBoundaryLayerInletTemperatureFvPatchScalarField(const Foam::fvPatch&, const Foam::DimensionedField<double, Foam::volMesh>&, const Foam::dictionary&)’: RAS/derivedFvPatchFields/atmBoundaryLayerInletTemperature/atmBoundaryLayerInletTemperatureFvPatchScalarField.C:61:26: error: reference to ‘T’ is ambiguous A variável T é declarada no arquivo atmBoundaryLayer.H conforme o código: tmp<scalarField> T(const vectorField& p) const; Como uma função membro para avaliação da temperatura na classe atmBoundaryLayer. No arquivo atmBoundaryLayer.C eu utilizou a função de acordo com o seguinte código: tmp<scalarField> atmBoundaryLayer::T(const vectorField& p) const { if (L_ < 0) //Atmosfera instável { return Tstar_/kappa_*(log(((zDir_ & p) + z0_)/z0_) - (2*log(1/2*(1 + sqrt(1 - 16*(zDir_ & p)/L_))))); } if (L_ > 0) //Atmosfera estável { return Tstar_/kappa_*(log(((zDir_ & p) + z0_)/z0_) - (5*(zDir_ & p)/L_)); } if (L_ == 0) //Atmosfera neutra { return Tstar_/kappa_*log(((zDir_ & p) + z0_)/z0_); } } Quando eu introduzir a condição de contorno de temperatura na simulação, o farei para uma fronteira do sistema do seguinte modo. faceXPos { type atmBoundaryLayerInletTemperature; flowDir ( -1 0 0 ); zDir ( 0 0 1 ); kappa 0.41; Uref 4; Tref 303; Zref 5; z0 uniform 1.75; zGround uniform 0.05; L 0; value uniform 303; } O nome atmBoundaryLayerInletTemperature, pode ser reconhecido graças a seguinte a linha, implementada no arquivo atmBoundaryLayerInletTemperatureFvPatchScalarField.H class atmBoundaryLayerInletTemperatureFvPatchScalarField : public fixedValueFvPatchScalarField, public atmBoundaryLayer { public: //- Runtime type information TypeName("atmBoundaryLayerInletTemperature"); . . . Essa biblioteca será incluída no arquivo atmBoundaryLayerInletTemperatureFvPatchScalarField.C e a variável T será novamente implementada conforme a seguinte linha: atmBoundaryLayerInletTemperatureFvPatchScalarField:: atmBoundaryLayerInletTemperatureFvPatchScalarField ( const fvPatch& p, const DimensionedField<scalar, volMesh>& iF, const dictionary& dict ) : fixedValueFvPatchScalarField(p, iF), atmBoundaryLayer(patch().Cf(), dict) { scalarField::operator=(T(patch().Cf())); } Caso alguém possa me ajudar ficaria agradecido.