Tutorial para Implementar um Modelo de Viscosidade Variando Com a Temperatura
Por: Luiz Miranda • 5/11/2019 • Artigo • 1.362 Palavras (6 Páginas) • 214 Visualizações
Tutorial para implementar um modelo de viscosidade variando com a temperatura:
Primeiro Bloco de comandos:
run
cp -r $FOAM_SRC/transportModels/incompressible/viscosityModels/powerLaw tempdeppowerLaw cd tempdeppowerLaw/ rm powerLaw.dep mkdir Make cd Make
cp $FOAM_SRC/transportModels/incompressible/Make/files files cp $FOAM_SRC/transportModels/incompressible/Make/options options
Estes comandos significam, na ordem:
- vai para o diretorio "run";
- copia a pasta do modelo "powerLaw" para o diretorio "run", criando uma pasta chamada
"tempdeppowerLaw";
- vai para a pasta "tempdeppowerLaw;
- cria a pasta "Make";
- vai para a pasta "Make";
- copia o arquivo "files" para a pasta "Make";
- copia o arquivo "options" para a pasta "Make";
Agora, é necessário editar os arquivos copiados. Para facilitar a identificação do que que deve ser editado, as modificações no código estão em vermelho:
No arquivo Make/file, substituir o conteúdo por:
tempdeppowerLaw.C
LIB = $(FOAM_USER_LIBBIN)/libusertempdeppowerLaw
No arquivo Make/options, substituir o conteúdo por:
EXE_INC = \
-I$(LIB_SRC)/transportModels/incompressible/lnInclude/ \
-I$(LIB_SRC)/finiteVolume/lnInclude
LIB_LIBS = \
-lfiniteVolume
Estes arquivos fazem parte do processo de compilação. As edições são para diferenciar o novo modelo dos anteriores.
O arquivo "tempdeppowerLaw.C" deve ser editado em 4 pontos. A primeira edição é em torno da linha 53, e serve para a rotina ler o campo de temperatura. A seguir, o trecho que contém onde a linha deve ser inserida:
// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * //
Foam::tmp
Foam::viscosityModels::tempdeppowerLaw::calcNu() const
{
const volScalarField& T= U_.mesh().lookupObject
(
nuMin_,
A próxima edição já é em uma parte da na equação do modelo, na definição de um "k" em função da temperatura.
Essa etapa se dá em torno da linha 60, de modo que a rotina ficará da seguinte forma:
nuMax_,
(k_-kslope_*(T-Tbase_))*pow
( max
(
dimensionedScalar("one", dimTime, 1.0)*strainRate(),
E para finalizar, as duas próximas edições são para que a rotina busque os valores dos coeficientes do modelo na biblioteca de propriedades do sistema. A primeira é na linha 87, com a inserção de duas linhas para leituras de novos coeficientes (kslope e Tbase):
k_("k", dimViscosity, powerLawCoeffs_), n_("n", dimless, powerLawCoeffs_), kslope_(powerLawCoeffs_.lookup("kslope")), Tbase_(powerLawCoeffs_.lookup("Tbase")), nuMin_("nuMin", dimViscosity, powerLawCoeffs_), nuMax_("nuMax", dimViscosity, powerLawCoeffs_),
Da mesma forma, 2 linhas são adicionadas na altura da linha 117:
powerLawCoeffs_.lookup("k") >> k_; powerLawCoeffs_.lookup("n") >> n_; powerLawCoeffs_.lookup("kslope") >> kslope_; powerLawCoeffs_.lookup("Tbase") >> Tbase_; powerLawCoeffs_.lookup("nuMin") >> nuMin_; powerLawCoeffs_.lookup("nuMax") >> nuMax_;
Já no arquivo "tempdeppowerLaw.H", apenas uma edição, também para permitir a leitura dos novos coeficientes, na altura da linha 63:
dimensionedScalar k_; dimensionedScalar n_; dimensionedScalar kslope_; dimensionedScalar Tbase_; dimensionedScalar nuMin_;
dimensionedScalar nuMax_;
Os próximos comandos são os seguintes:
cd ..
mv powerLaw.H tempdeppowerLaw.H mv powerLaw.C tempdeppowerLaw.C
sed -i s/powerLaw/tempdeppowerLaw/g tempdeppowerLaw.C sed -i s/powerLaw/tempdeppowerLaw/g tempdeppowerLaw.H wmake libso
Que representam:
- sobe um nível do diretorio: da pasta "make" para a pasta "temppowerlaw"
- muda o nome do arquivo powerlaw.H para tempdeppowerlaw.H
- muda o nome do arquivo powerlaw.C para tempdeppowerlaw.C
- substitui no arquivo temppowerLaw.C a expressão "powerLaw" por "tempdeppowerLaw". Repetir esse comando pode gerar erros.
- substitui no arquivo temppowerLaw.H a expressão "powerLaw" por "tempdeppowerLaw". Repetir esse comando pode gerar erros.
- compila o modelo. Caso esse comando seja executado sem erros, o modelo de viscosidade estará implementado.
Tutorial para adaptar um solver:
Comandos iniciais:
run
cp -r $FOAM_APP/solvers/incompressible/simpleFoam temperatureSimpleFoam cd temperatureSimpleFoam/ wclean rm -r SRFSimpleFoam/ rm -r porousSimpleFoam/ rm -r MRFSimpleFoam/ mv simpleFoam.C tempSimpleFoam.C cp UEqn.H TEqn.H
...