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:
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:
Pergunta
deliobs
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.
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.