0% acharam este documento útil (0 voto)
6 visualizações86 páginas

Instalação do Fortran com Ansys CFX

O documento é um tutorial que orienta a instalação e configuração do Fortran para integração com o Ansys CFX 14.0 ou superior, incluindo passos detalhados para instalar o Microsoft Visual Studio 2008 e o Intel Fortran Composer XE 2013. Ele também abrange a configuração de variáveis de ambiente e a utilização de rotinas Fortran em simulações de fluxo através de uma válvula borboleta. Exemplos práticos e estudos de caso são fornecidos para ilustrar a aplicação das rotinas no CFX.
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
6 visualizações86 páginas

Instalação do Fortran com Ansys CFX

O documento é um tutorial que orienta a instalação e configuração do Fortran para integração com o Ansys CFX 14.0 ou superior, incluindo passos detalhados para instalar o Microsoft Visual Studio 2008 e o Intel Fortran Composer XE 2013. Ele também abrange a configuração de variáveis de ambiente e a utilização de rotinas Fortran em simulações de fluxo através de uma válvula borboleta. Exemplos práticos e estudos de caso são fornecidos para ilustrar a aplicação das rotinas no CFX.
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Parque Tecnológico Itaipu - PTI

Centro de Estudos Avançados em Segurança de Barragens


Universidade Estadual do Oeste do Paraná
Laboratório de Computação de Alto Desempenho - LCAD

Tutorial para instalação e configuração do Fortran para


integração com Ansys CFX 14.0 ou superior

Profo . Dr. Rogério Luís Rizzi


Pétterson Vinícius Pramiu

Dezembro de 2015

Cascavel
2015
Sumário

1 Instalação e configuração - VS 2008 com Intel Fortran Composer XE 2013 . . . . . 1

1.1 Microsoft Windows SDK 7.1 for Windows 7 e .NET Framework 4 . . . . . . . . . . . . . . . 1

1.2 Instalação do Microsoft Visual Studio 2008 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.3 Instalação do Fortran Intel Composer XE 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

1.4 Setando variáveis de ambiente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

1.5 Configuração do CFX 14 para utilizar rotinas Fortran . . . . . . . . . . . . . . . . . . . . . . . . . 19

2 Exemplo de utilização de rotinas Fortran no CFX: Flow Through a Butterfly Valve 23

2.1 Modelo de Finnie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

2.2 Modelo de Tabakoff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

3 Implementação de perfil de velocidade: Flow Through a Butterfly Valve . . . . . . . . 40

3.1 Configuração do projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

3.1.1 Estudo de caso: perfil de velocidade inlet em função do raio do tubo,


empregando CEL - caso estacionário . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

3.1.2 Estudo de caso: perfil de velocidade inlet em função do raio do tubo,


empregando CEL Function - caso estacionário . . . . . . . . . . . . . . . . . . . . . . . . . 45

3.1.3 Emprego de condição de contorno de entrada (inlet) e de saída (outlet)


como um perfil de velocidade em função do raio do tubo em função do raio
do tubo empregando CEL - caso estacionário. . . . . . . . . . . . . . . . . . . . . . . . . . . 51

3.1.4 Emprego de condição de contorno de entrada (inlet) e de saída (outlet)


como um perfil de velocidade em função do raio do tubo em função do raio
do tubo empregando CEL Funtion (FORTRAN) - caso estacionário . . . . . . . . 57

4 Implementação de perfil de velocidade transiente na entrada e pressão na saída:


Flow Through a Butterfly Valve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

4.1 Configuração do projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68


ii

4.1.1 Emprego de condição de contorno de entrada (inlet) como um perfil senoidal


de velocidade em função do tempo de simulação e em função do raio do tubo,
e na saída (outlet) como um perfil de pressão em função do raio do tubo
empregando CEL - caso transiente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

4.1.2 Emprego de condição de contorno de entrada (inlet) como um perfil senoidal


de velocidade em função do tempo de simulação e em função do raio do tubo,
e na saída (outlet) como um perfil de pressão em função do raio do tubo
empregando CEL Function - caso transiente . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
1

1 Instalação e configuração - VS 2008 com Intel Fortran


Composer XE 2013

Para o correto funcionamento dos aplicativos aqui listados, procure executar em ordem as
tarefas apresentadas assim como escolher atentamente os softwares de acordo com as configurações
do seu sistema (32 ou 64bits).
Os aplicativos necessários para realização deste tutorial são:

• ANSYS CFX 14;

• Microsoft Windows SDK 7.1 for Windows 7 e .NET Framework 4;

• Microsoft Visual Studio 2008 (ou posterior);

• Compilador Fortran Intel Composer XE 2013;

1.1 Microsoft Windows SDK 7.1 for Windows 7 e .NET


Framework 4
Com o ANSYS 14 instalado e funcionando corretamente deve-se realizar a instalação e
configuração das ferramentas de desenvolvimento SDK. Um arquivo .iso com estes aplicativos pode
ser encontrado no link [Link]
Veja a Figura 1.

Figura 1: Andamento do download do Microsoft Windows SDK 7.1.

Após o download do arquivo deve-se montar a imagem com um aplicativo apropriado


(Alcoohol, Nero ou DeamonTools). Veja a Figura 2.
2

Figura 2: Montagem do arquivo .iso Microsoft Windows SDK 7.1.

Ao montar a imagem deve-se executar o [Link] para inicialização da instalação.

Figura 3: Instalação SDK.

As janelas a seguir serão apresentadas ao clicar em Next.


3

Figura 4: Instalação SDK.

Figura 5: Instalação SDK.


4

Figura 6: Instalação SDK.

Marque todas as opções de acordo com a Figura 7.

Figura 7: Instalação SDK.


5

Figura 8: Instalação SDK.

Figura 9: Instalação SDK.


6

Figura 10: Finalização da instalação SDK.

1.2 Instalação do Microsoft Visual Studio 2008


Com o SDK 7.1 instalado deve-se realizar a instalação e configuração do Microsoft Visual
Studio 2008. Um arquivo com este aplicativo pode ser encontrado no site da Microsoft http:
//[Link]/pt-br/evalcenter/[Link].
Após o download do arquivo deve-se montar a imagem com um aplicativo apropriado
(Alcoohol, Nero ou DeamonTools). Ao montar a imagem deve-se executar o [Link] para
inicialização da instalação.
As janelas a seguir serão apresentadas ao clicar em Next.

Figura 11: Instalação do VS 2008.


7

Figura 12: Instalação do VS 2008.

Figura 13: Instalação do VS 2008.


8

Figura 14: Instalação do VS 2008.

Escolha a opção Custom para uma instalação personalizada.

Figura 15: Instalação do VS 2008.

Certifique-se de marcar todas as opções conforme mostra a Figura 16.


9

Figura 16: Instalação do VS 2008.

Figura 17: Instalação do VS 2008.


10

Figura 18: Instalação do VS 2008.

1.3 Instalação do Fortran Intel Composer XE 2013


Com o VS 2008 instalado deve-se realizar a instalação e configuração do Fortran Intel
Composer XE 2013. Um arquivo com este aplicativo pode ser encontrado no site da Intel
[Link]
Após o download do arquivo deve-se executar o arquivo .exe para inicialização da instalação.
Clique em Extract para descompactar os arquivos necessários à instalação.

Figura 19: Instalação do Fortran Intel Composer XE 2013.


11

Figura 20: Instalação do Fortran Intel Composer XE 2013.

As janelas a seguir serão apresentadas ao clicar em Next.

Figura 21: Instalação do Fortran Intel Composer XE 2013.


12

Figura 22: Instalação do Fortran Intel Composer XE 2013.

Escolha a opção central Evaluate this product.

Figura 23: Instalação do Fortran Intel Composer XE 2013.


13

Figura 24: Instalação do Fortran Intel Composer XE 2013.

Selecione Custom Installation. Veja a Figura 25.

Figura 25: Instalação do Fortran Intel Composer XE 2013.


14

Figura 26: Instalação do Fortran Intel Composer XE 2013.

Marque todas as opções como na Figura 27.

Figura 27: Instalação do Fortran Intel Composer XE 2013.

Integre seu Fortran com o Visual Studio já instalado. Veja a Figura 28.
15

Figura 28: Instalação do Fortran Intel Composer XE 2013.

Figura 29: Instalação do Fortran Intel Composer XE 2013.


16

Figura 30: Instalação do Fortran Intel Composer XE 2013.

Figura 31: Instalação do Fortran Intel Composer XE 2013.

1.4 Setando variáveis de ambiente


Para a integração entre o compilador Fortran e o CFX, é necessário configurar as variáveis de
ambiente. Para isso abra as propriedades do computador clicando com o botão trocado do mouse
em Propriedades do Meu Computador ou usando as teclas de atalho Win + Pause.
17

Figura 32: Abrindo a janela de propriedades do computador.

Uma nova janela será exibida. Nesta janela clique sobre o link Configurações avançadas
do sistema, como mostra a Figura 33.

Figura 33: Propriedades do computador.

Ao clicar no link, uma nova janela será exibida. Nesta janela clique no botão Variáveis de
Ambiente. Veja a Figura 34
18

Figura 34: Propriedades do sistema.

Para criação das novas variáveis de ambiente, clique no botão Novo.... Figura 35

Figura 35: Variáveis de Ambiente.

Uma caixa com os campus Nome da variável e Valor da variável será exibida e deverá
ser preenchida com os valores da nova variável de ambiente:

Figura 36: Nova Variável de Ambiente.

Nome da variável: lib


Valor da variável: C:\Program Files (x86)\Intel\Composer XE 2013\compiler\lib;
C:\Program Files (x86)\Intel\Composer XE 2013\compiler\lib\intel64
19

Clique em Ok para que a variável seja criada. Note que os endereços aqui utilizados podem mudar
de acordo com as opções selecionadas no momento da instalação.
Repita este procedimento criando uma nova variável include com valores:
C:\Program Files (x86)\Intel\Composer XE 2013\compiler\include;
C:\Program Files (x86)\Intel\Composer XE 2013\compiler\include\intel64
Novamente, repita este procedimento criando uma nova variável PATH com valores:
C:\Program Files\ANSYS Inc\v140\CFX\bin;C:\Program Files (x86)\Intel\
Composer XE 2013\bin;C:\Program Files (x86)\Intel\Composer XE 2013\
bin\intel64;C:\Program Files (x86)\Intel\Composer XE 2013\redist;
C:\Program Files (x86)\Intel\Composer XE 2013\redist\intel64;
C:\Program Files (x86)\Intel\Composer XE 2013\redist\intel64\compiler;
C:\Program Files (x86)\Intel\Composer XE 2013\redist\intel64\mkl;
C:\Program Files (x86)\Intel\Composer XE 2013\redist\intel64\mpirt
Caso seu sistema seja 32bits renomeie todas a pastas chamadas intel64 para ia32. Por
exemplo, a variável lib em um sistema 32bits seria da forma:
Nome da variável: lib
Valor da variável: C:\Program Files (x86)\Intel\Composer XE 2013\compiler\lib;
C:\Program Files (x86)\Intel\Composer XE 2013\compiler\lib\ia32
Feito isso, clique em OK para sair da janela de Propriedades do Sistema.

1.5 Configuração do CFX 14 para utilizar rotinas Fortran


Para a utilização das sub rotinas implementadas em Fortran, é necessário compilar os arquivos
fonte através do módulo CFX. Abra o CFX 14.0, através do menu iniciar. Veja figura 37:

Figura 37: Configuração do CFX 14.

Em seguida clique no menu Tools -> Command Line. Veja Figura 38:
20

Figura 38: Configuração do CFX 14.

Uma nova janela do prompt será aberta. Veja a Figura 39

Figura 39: Configuração do CFX 14.

Nesta janela de prompt, navegue até o diretório onde se encontra o compilador Fortran
(C:\Program Files (x86)\Intel\Composer XE 2013\bin) e digite o seguinte comando:
[Link] intel64. Caso seu sistema seja 32bits use o comando [Link] ia32.
Se a configuração for realizada com sucesso será exibida uma mensagem como na Figura 40.
21

Figura 40: Configuração do CFX 14.

Para gerar os arquivos necessários ao funcionamento do CFX, navegue pelo prompt até
o diretório onde está localizado seu arquivo fonte em Fortran. Dentro do diretório digite o
comando: cfx5mkext -64bit <nome_arquivo.F>. Caso seu sistema seja 32bits use o comando
cfx5mkext <nome_arquivo.F>. Veja a Figura 41.

Figura 41: Configuração do CFX 14.

A Figura 42 mostra a janela que deverá ser exibida se a compilação for executada com êxito.
22

Figura 42: Configuração do CFX 14.

Note que no diretório onde está o código fonte é gerada uma nova pasta, que contém os
arquivos utilizados pelo solver do CFX. Veja a Figura 43.

Figura 43: Configuração do CFX 14.


23

2 Exemplo de utilização de rotinas Fortran no CFX: Flow


Through a Butterfly Valve

Antes de prosseguir faça a configuração do CFX apresentada na


seção 1.5 e crie um diretório para seu projeto. Encontre o diretório
C:\Program Files\ANSYS Inc\v140\CFX\examples\UserFortran e copie os arquivos
pt_erosion.F e pt_erosion.cll para o diretório que foi criado para o seu projeto.

2.1 Modelo de Finnie


O exemplo aqui apresentado segue o tutorial apresentado no manual do CFX “Flow Through
a Butterfly Valve”, com a diferença que será utilizado o modelo de Finnie para erosão implementado
em Fortran ao invés do modelo de Finnie implementado no CFX. Obviamente utilizando os mesmo
parâmetros, os resultados devem ser iguais.
Após montar o problema “Flow Through a Butterfly Valve” com auxílio do tutorial do ANSYS
CFX Tutorials, para utilização de sub rotinas Fortran deve-se criar uma “User Routines”. Para isso,
clique com o botão trocado do mouse em “User Routines” e insira uma nova rotina, como na Figura
44.

Figura 44: Criação de rotinas no CFX.

Nomeie sua rotina como myerosion. Veja a Figura 45


24

Figura 45: Criação de rotinas no CFX.

Na janela que será exibida, selecione a opção particle user routine e preencha os campus
de acordo com a Figura 46

Figura 46: Criação de rotinas no CFX.

Em que Library Path é o local onde você salvou seu código fonte Fortran pt_erosion.F.
Em seguida deve-se editar as opções do Default Domain:
25

Figura 47: Criação de rotinas no CFX.

Na guia Fluid Specific Models escolha como Erosion model a opção User defined,
como apresentado nas Figuras 48 e 49.

Figura 48: Criação de rotinas no CFX.


26

Figura 49: Criação de rotinas no CFX.

Altere as opções do Default Domain default:

Figura 50: Criação de rotinas no CFX.

Na guia Fluid Values selecione as opções como apresentado nas Figuras 51 e 52.
27

Figura 51: Criação de rotinas no CFX.

Figura 52: Criação de rotinas no CFX.

Em que o valor dos argumentos é: Sand Fully [Link] Impact Angle,Sand


Fully [Link] e o valor de retorno é: Particle Erosion.
Altere as opções do Wall:
28

Figura 53: Criação de rotinas no CFX.

Na guia Fluid Values selecione as opções como apresentado nas Figuras 54 e 55.

Figura 54: Criação de rotinas no CFX.


29

Figura 55: Criação de rotinas no CFX.

Em que o valor dos argumentos é: Sand Fully [Link] Impact Angle,Sand


Fully [Link] e o valor de retorno é: Particle Erosion.
Em seguida execute o Solver do CFX e aguarde o final da simulação. Veja a Figura 56.

Figura 56: Criação de rotinas no CFX.

A Figura 57 mostra os resultados obtidos usando o modelo Finnie do CFX e o implementado


em Fortran (pt_erosion.F) para comparação dos resultados.
30

Figura 57: Resultado da simulação de erosão utilizando o modelo Finnie.

O código fonte do arquivo pt_erosion.F é descrito a seguir:


1 # include " cfx5ext . h "
2 dllexport ( pt_erosion )
3 SUBROUTINE PT_EROSION ( NLOC , NRET , NARG , RET , ARG , CRESLT ,
4 & CZ , DZ , IZ , LZ , RZ )
5 CC
6 C D User routine : Finnie erosion model
7 CC
8 CC --------------------
9 CC Input
10 CC --------------------
11 CC
12 C C NLOC - number of entities
13 C C NRET - length of return stack
14 C C NARG - length of argument stack
15 C C ARG - argument values
16 CC
17 CC --------------------
18 CC Modified
19 CC --------------------
20 CC
21 CC --------------------
22 CC Output
23 CC --------------------
24 CC
25 C C RET - return values
26 CC
27 CC --------------------
28 CC Details
29 CC --------------------
30 CC
31 CC ======================================================================
32 C
33 C ------------------------------
34 C Preprocessor includes
35 C ------------------------------
36 C
31

37 # include " cfd_sysdep . h "


38 # include " cfd_constants . h "
39 C
40 C ------------------------------
41 C Argument list
42 C ------------------------------
43 C
44 INTEGER NARG , NRET , NLOC
45 C
46 REAL ARG ( NLOC , NARG ) , RET ( NLOC , NRET )
47 C
48 CHARACTER *(4) CRESLT
49 C
50 INTEGER IZ (*)
51 CHARACTER CZ (*)*(1)
52 DOUBLE PRECISION DZ (*)
53 LOGICAL LZ (*)
54 REAL RZ (*)
55 C
56 C ------------------------------
57 C External routines
58 C ------------------------------
59 C
60 C
61 C ------------------------------
62 C Local Parameters
63 C ------------------------------
64 C
65 C
66 C ------------------------------
67 C Local Variables
68 C ------------------------------
69 C
70 C ------------------------------
71 C Stack pointers
72 C ------------------------------
73 C
74 C =======================================================================
75 C
76 C ---------------------------
77 C Executable Statements
78 C ---------------------------
79 C
80 C =======================================================================
81 C
82 C Return variables :
83 C -----------------
84 C
85 C Particle erosion : RET (1 ,1)
86 C
87 C Argument variables
88 C -------------------
89 C
90 C Particle impact angle : ARG (1 ,1)
91 C Particle velocity : ARG (1 ,2)
32

92 C
93 C =======================================================================
94 C
95 C -----------------------------------------------------------------------
96 C Calculate the return variables
97 C -----------------------------------------------------------------------
98 C
99 CALL FINNIE ( RET (1 ,1) ,
100 & ARG (1 ,1) , ARG (1 ,2))
101 C
102 END
103

104 SUBROUTINE FINNIE ( EROSION , ANGLE , VEL_PT )


105 C
106 C =======================================================================
107 C Calculate Finnie erosion rate
108 C =======================================================================
109 C
110 C ---------------------------
111 C Preprocessor includes
112 C ---------------------------
113 C
114 # include " cfd_sysdep . h "
115 # include " cfd_constants . h "
116 C
117 C ------------------------------
118 C Argument list
119 C ------------------------------
120 C
121 REAL EROSION , ANGLE , VEL_PT (3)
122 C
123 C ------------------------------
124 C Local variables
125 C ------------------------------
126 C
127 REAL ANGLE_DEG , F , V0 , N , VEL
128 C
129 C ------------------------------
130 C Executable statements
131 C ------------------------------
132 C
133 V0 = 1.0
134 N = 2.0
135 C
136 ANGLE_DEG = ANGLE *180./ PI
137 C
138 IF ( ANGLE_DEG . GE . 18.5) THEN
139 F = COS ( ANGLE )**2 / THREE
140 ELSE
141 F = SIN ( TWO * ANGLE ) - THREE * SIN ( ANGLE )**2
142 ENDIF
143 C
144 VEL = SQRT ( VEL_PT (1)**2 + VEL_PT (2)**2 + VEL_PT (3)**2)
145 C
146 EROSION = ( VEL /( V0 + SN ))** N * F
33

147 C
148 END

Para simples conferência, as definições dos comandos no CFX foram as seguintes:


USER ROUTINE DEFINITIONS:
USER ROUTINE: myerosion
Calling Name = pt_erosion
Library Name = pt_erosion
Library Path = C:/PIPE VALVE EROSION 2
Option = Particle User Routine
END
END
END
FLOW: Flow Analysis 1
SOLUTION UNITS:
Angle Units = [rad]
Length Units = [m]
Mass Units = [kg]
Solid Angle Units = [sr]
Temperature Units = [K]
Time Units = [s]
END
ANALYSIS TYPE:
Option = Steady State
EXTERNAL SOLVER COUPLING:
Option = None
END
END
DOMAIN: Default Domain
Coord Frame = Coord 0
Domain Type = Fluid
Location = B1.P3
BOUNDARY: Default Domain Default
Boundary Type = WALL
Location = \
F1.B1.P3,F10.B1.P3,F11.B1.P3,F12.B1.P3,F2.B1.P3,F6.B1.P3,F7.B1.P3,F8.\
B1.P3,F9.B1.P3
BOUNDARY CONDITIONS:
MASS AND MOMENTUM:
Option = No Slip Wall
END
WALL ROUGHNESS:
Option = Smooth Wall
END
END
FLUID: Sand Fully Coupled
BOUNDARY CONDITIONS:
EROSION MODEL:
Option = User Defined
END
PARTICLE USER WALL INTERACTION:
Argument Variables List = Sand Fully [Link] Impact \
Angle,Sand Fully [Link]
Particle User Routine = myerosion
Particle Wall Interaction Return Variables List = Particle Erosion
END
PARTICLE WALL INTERACTION:
Option = Equation Dependent
END
VELOCITY:
Option = Restitution Coefficient
Parallel Coefficient of Restitution = 1.0
Perpendicular Coefficient of Restitution = 0.9
END
END
END
FLUID: Sand One Way Coupled
BOUNDARY CONDITIONS:
34

EROSION MODEL:
Option = User Defined
END
PARTICLE USER WALL INTERACTION:
Argument Variables List = Sand One Way [Link] Impact \
Angle,Sand One Way [Link]
Particle User Routine = myerosion
Particle Wall Interaction Return Variables List = Particle Erosion
END
PARTICLE WALL INTERACTION:
Option = Equation Dependent
END
VELOCITY:
Option = Restitution Coefficient
Parallel Coefficient of Restitution = 1.0
Perpendicular Coefficient of Restitution = 0.9
END
END
END
END

2.2 Modelo de Tabakoff


O exemplo aqui apresentado segue o tutorial apresentado no manual do CFX “Flow Through a
Butterfly Valve”, com a diferença que será utilizado o modelo de Tabakoff para erosão implementado
em Fortran ao invés do modelo de Tabakoff implementado no CFX. Obviamente utilizando os mesmo
parâmetros, os resultados devem ser iguais.
A Figura 58 mostra os resultados obtidos usando o modelo Tabakoff do CFX e o implementado
em Fortran (pt_erosion.F) para comparação dos resultados.

Figura 58: Resultado da simulação de erosão utilizando o modelo Tabakoff.

O código fonte do arquivo erosion_tabakoff.F é descrito a seguir:


1 # include " cfx5ext . h "
2 dllexport ( erosion_tabakoff )
3 SUBROUTINE EROSION_TABAKOFF ( NLOC , NRET , NARG , RET , ARG , CRESLT ,
4 & CZ , DZ , IZ , LZ , RZ )
5 CC
6 C D User routine : Tabakoff erosion model
7 CC
35

8 CC --------------------
9 CC Input
10 CC --------------------
11 CC
12 C C NLOC - number of entities
13 C C NRET - length of return stack
14 C C NARG - length of argument stack
15 C C ARG - argument values
16 CC
17 CC --------------------
18 CC Modified
19 CC --------------------
20 CC
21 CC --------------------
22 CC Output
23 CC --------------------
24 CC
25 C C RET - return values
26 CC
27 CC --------------------
28 CC Details
29 CC --------------------
30 CC
31 CC ======================================================================
32 C
33 C ------------------------------
34 C Preprocessor includes
35 C ------------------------------
36 C
37 # include " cfd_sysdep . h "
38 # include " cfd_constants . h "
39 C
40 C ------------------------------
41 C Argument list
42 C ------------------------------
43 C
44 INTEGER NARG , NRET , NLOC
45 C
46 REAL ARG ( NLOC , NARG ) , RET ( NLOC , NRET )
47 C
48 CHARACTER *(4) CRESLT
49 C
50 INTEGER IZ (*)
51 CHARACTER CZ (*)*(1)
52 DOUBLE PRECISION DZ (*)
53 LOGICAL LZ (*)
54 REAL RZ (*)
55 C
56 C ------------------------------
57 C External routines
58 C ------------------------------
59 C
60 C
61 C ------------------------------
62 C Local Parameters
36

63 C ------------------------------
64 C
65 C
66 C ------------------------------
67 C Local Variables
68 C ------------------------------
69 C
70 C ------------------------------
71 C Stack pointers
72 C ------------------------------
73 C
74 C =======================================================================
75 C
76 C ---------------------------
77 C Executable Statements
78 C ---------------------------
79 C
80 C =======================================================================
81 C
82 C Return variables :
83 C -----------------
84 C
85 C Particle erosion : RET (1 ,1)
86 C
87 C Argument variables
88 C -------------------
89 C
90 C Particle impact angle : ARG (1 ,1)
91 C Particle velocity : ARG (1 ,2)
92 C
93 C =======================================================================
94 C
95 C -----------------------------------------------------------------------
96 C Calculate the return variables
97 C -----------------------------------------------------------------------
98 C
99 CALL TABAKOFF ( RET (1 ,1) ,
100 & ARG (1 ,1) , ARG (1 ,2))
101 C
102 END
103

104 SUBROUTINE TABAKOFF ( EROSION , ANGLE , VEL_PT )


105 C
106 C =======================================================================
107 C Calculate Tabakoff erosion rate
108 C =======================================================================
109 C
110 C ---------------------------
111 C Preprocessor includes
112 C ---------------------------
113 C
114 # include " cfd_sysdep . h "
115 # include " cfd_constants . h "
116 C
117 C ------------------------------
37

118 C Argument list


119 C ------------------------------
120 C
121 REAL EROSION , ANGLE , VEL_PT (3)
122 C
123 C ------------------------------
124 C Local variables
125 C ------------------------------
126 C
127 REAL RT , VP , K2 , K12 , V1 , V2 , V3 , ANGLE_MAX_RAD , ANGLE_MAX ,
128 & ANGLE_DEG , F , VEL
129 C
130 C ------------------------------
131 C Executable statements
132 C ------------------------------
133 C
134 ANGLE_MAX = 25.0
135 ANGLE_MAX_RAD = ANGLE_MAX * PI /180.
136 K12 = 0.585
137 V1 = 159.11
138 V2 = 194.75
139 V3 = 190.5
140 C
141 ANGLE_DEG = ANGLE *180./ PI
142 C
143 VEL = SQRT ( VEL_PT (1)**2 + VEL_PT (2)**2 + VEL_PT (3)**2)
144 C
145 VP = (( VEL / V2 )* SIN ( ANGLE ))**4
146 C
147 RT = 1 -( VEL / V3 )* SIN ( ANGLE )
148 C
149 IF ( ANGLE_DEG . LE . ANGLE_MAX ) THEN
150 K2 = 1.0
151 ELSE
152 K2 = 0.0
153 ENDIF
154 C
155 F = (1+ K2 * K12 * SIN ( ANGLE *( PI /2)/ ANGLE_MAX_RAD ))**2
156 C
157 EROSION = ( F *(( VEL / V1 )**2)*( COS ( ANGLE )**2)*(1 - RT **2)+ VP )/1000.
158 C
159 END

Para conferência, as definições dos comandos no CFX foram as seguintes:

USER ROUTINE DEFINITIONS:


USER ROUTINE: myerosion
Calling Name = erosion_tabakoff
Library Name = erosion_tabakoff
Library Path = C:\PIPE VALVE EROSION_tabakoff
Option = Particle User Routine
END
END
END
FLOW: Flow Analysis 1
SOLUTION UNITS:
Angle Units = [rad]
Length Units = [m]
38

Mass Units = [kg]


Solid Angle Units = [sr]
Temperature Units = [K]
Time Units = [s]
END
ANALYSIS TYPE:
Option = Steady State
EXTERNAL SOLVER COUPLING:
Option = None
END
END
DOMAIN: Default Domain
Coord Frame = Coord 0
Domain Type = Fluid
Location = B1.P3
BOUNDARY: Default Domain Default
Boundary Type = WALL
Location = \
F1.B1.P3,F10.B1.P3,F11.B1.P3,F12.B1.P3,F2.B1.P3,F6.B1.P3,F7.B1.P3,F8.\
B1.P3,F9.B1.P3
BOUNDARY CONDITIONS:
MASS AND MOMENTUM:
Option = No Slip Wall
END
WALL ROUGHNESS:
Option = Smooth Wall
END
END
FLUID: Sand Fully Coupled
BOUNDARY CONDITIONS:
EROSION MODEL:
Option = User Defined
END
PARTICLE USER WALL INTERACTION:
Argument Variables List = Sand Fully [Link] Impact \
Angle,Sand Fully [Link]
Particle User Routine = myerosion
Particle Wall Interaction Return Variables List = Particle Erosion
END
PARTICLE WALL INTERACTION:
Option = Equation Dependent
END
VELOCITY:
Option = Restitution Coefficient
Parallel Coefficient of Restitution = 1.0
Perpendicular Coefficient of Restitution = 0.9
END
END
END
FLUID: Sand One Way Coupled
BOUNDARY CONDITIONS:
EROSION MODEL:
Option = User Defined
END
PARTICLE USER WALL INTERACTION:
Argument Variables List = Sand One Way [Link] Impact \
Angle,Sand One Way [Link]
Particle User Routine = myerosion
Particle Wall Interaction Return Variables List = Particle Erosion
END
PARTICLE WALL INTERACTION:
Option = Equation Dependent
END
VELOCITY:
Option = Restitution Coefficient
Parallel Coefficient of Restitution = 1.0
Perpendicular Coefficient of Restitution = 0.9
END
END
39

END
END
40

3 Implementação de perfil de velocidade: Flow Through a


Butterfly Valve

Esta seção ilustra a implementação de um perfil de velocidade de entrada empregando rotinas


definidas em CEL (CFX Expression Language) e em CEL Functions que são implementadas em
Fortran 77, para o problema “Flow Through a Butterfly Valve”. Também será apresentando a
implementação de um perfil de pressão na condição de contorno de saída (outlet). As simulações
realizadas são listadas a seguir:

1. Emprego de condição de contorno de entrada (inlet), como um perfil de velocidade em função


do raio do tubo, empregando CEL - caso estacionário. Seção 3.1.1.

2. Emprego de condição de contorno de entrada (inlet), como um perfil de velocidade em função


do raio do tubo, empregando CEL Function (FORTRAN) - caso estacionário. Seção 3.1.2.

3. Emprego de condição de contorno de entrada (inlet) e de saída (outlet) como um perfil de


velocidade em função do raio do tubo em função do raio do tubo empregando CEL - caso
estacionário. Seção 3.1.3.

4. Emprego de condição de contorno de entrada (inlet) e de saída (outlet) como um perfil de


velocidade em função do raio do tubo em função do raio do tubo empregando CEL Funtion
(FORTRAN) - caso estacionário. Seção 3.1.4.

3.1 Configuração do projeto


Os arquivos que contém a malha e a configuração deste estudo de caso fazem parte do pacote
de exemplos que acompanham o software ANSYS, mais especificamente o módulo CFX. O tutorial
de configuração é apresentado nas páginas seguintes.

3.1.1 Estudo de caso: perfil de velocidade inlet em função do raio do


tubo, empregando CEL - caso estacionário

Como mencionado no Guia de Referência do ANSYS CFX existem quatro formas de especificar
condições de contorno para um problema, sendo elas determinadas através de condições constantes
(tipo Dirichlet), através da utilização de CEL (CFX Expression Language), da utilização de CEL
Function (FORTRAN) ou através da leitura de arquivo que contenha os valores explícitos da condição
de contorno em cada ponto do domínio.
Este primeiro estudo de caso emprega uma condição de contorno inlet especificada como um
perfil de velocidade em função do raio do tubo, expresso por:
ˇ ˇ1
ˇ r ˇ7
Wprof prq “ Wmax ˇˇ1 ´ ˇ (3.1)
Rmax ˇ
41

em que Wprof indica o perfil de velocidade, Wmax “ 5 m{s é a velocidade máxima do fluido em
escoamento, 0 ď r ď 20 mm representa o raio do tubo e Rmax “ 20 mm indica o valor máximo
assumido para r. A Figura 59 ilustra a variação do perfil de velocidade especificado pela expressão
(3.1).
5

5*(1-50.0*r)^(1/7)
Velocidade de entrada - (m/s)

0
0 0.005 0.01 0.015 0.02
Raio do tubo - (m)

Figura 59: Perfil de velocidade ao longo do raio do tubo.

A Figura 60 ilustra a distribuição do perfil de velocidade no CFX, especificado através da


expressão (3.1).

Figura 60: Perfil de velocidade inlet CFX.

Após a configuração do problema no CFX, é necessário criar as CEL Expressions Wmax, Rmax,
Wprof para representação o perfil de velocidade inlet. Para tal criação, o usuário deve clicar com
42

o botão direito do mouse sobre o menu Expressions->Insert->Expression como ilustrado na


Figura 61.

Figura 61: Criação de CEL Expression no CFX.

Em seguida uma nova janela será exibida, em que o usuário deve inserir o nome da Expression
a ser criada. A primeira expressão criada deve ser denominada de Wmax. Veja a Figura 62.

Figura 62: Criação de CEL Expression no CFX.

Ao clicar em ’OK’ será exibida uma janela em que o usuário deverá definir a sua Expressão.
Para a expressão que define a velocidade máxima do fluido em escoamento, Wmax, será utilizado um
valor constante igual 5 m/s. Em seguida deve-se clicar em ’Aplly’. Veja a Figura 63.
43

Figura 63: Criação de CEL Expression no CFX.

Duas novas Expressions devem ser criadas e nomeadas como Rmax e Wprof seguindo os
procedimentos anteriormente apresentados. A Expression Rmax deve assumir o valor 20 mm e a
Expression Wprof deve assumir o valor expresso em (3.1). Veja a Figura 64 para uma ilustração de
como devem estar configuradas as CEL Expressions.

Figura 64: Criação de CEL Expression no CFX.

Deve-se notar a importância de declarar e manter a consistência dimensional em cada CEL


Expression declarada, caso contrário mensagens de erro serão apresentadas. A variável r é uma
44

variável do ambiente CFX e é avaliada em termos das coordenadas cartesianas, x e y, como:


a
r “ x2 ` y 2 (3.2)

A Figura 65 ilustra o gradiente de velocidade na entrada especificado através de CEL


Expression Wprof.

Figura 65: Criação de CEL Expression no CFX.

O resultado desta simulação é apresentado na Figura 66.

Figura 66: Criação de CEL Expression no CFX.


45

3.1.2 Estudo de caso: perfil de velocidade inlet em função do raio do


tubo, empregando CEL Function - caso estacionário

Alternativamente ao emprego de CEL Expressions é possível empregar CEL Functions que


permitem a implementação de códigos mais sofisticados através da linguagem Fortran. Os
procedimentos para instalação, configuração e compilação de códigos Fortran (Intel Fortran) foram
apresentados em detalhes no capítulo 1.
Nesta seção o perfil de velocidade na condição de contorno de entrada será especificado com
o emprego de CEL Functions e combinado com a utilização de CEL Expressions, objetivando uma
melhor compreensão da passagem de parâmetros entre o Solver do CFX e o código Fortran, durante
a execução do Solver.
Primeiramente o arquivo [Link] deve ser carregado e as configurações padrão do
problema devem ser realizadas de acordo com o tutorial Flow Through a Butterfly Valve. Após
realizar as configurações iniciais do problema, deve-se criar duas CEL Expressions denominadas de
Wmax e Rmax, cujos valores são 5 m/s e 20 mm, respectivamente. Veja Figura 67.

Figura 67: Criação de CEL Expression no CFX.

Agora deve-se criar o arquivo que contém o código fonte a ser compilado em Fortran. O
código fonte é apresentado como segue.
1 # include " cfx5ext . h "
2 dllexport ( inlet_velocity )
3 SUBROUTINE INLET_VELOCITY (
4 & NLOC , NRET , NARG , RET , ARGS , CRESLT , CZ , DZ , IZ , LZ , RZ )
5 INTEGER NLOC , NARG , NRETC
6 CHARACTER CRESLT *(*)
7 REAL ARGS ( NLOC , NARG ) , RET ( NLOC , NRET )
8 INTEGER IZ (*)
46

9 CHARACTER CZ (*)*(1)
10 DOUBLE PRECISION DZ (*)
11 LOGICAL LZ (*)
12 REAL RZ (*)
13 INTEGER ILOC
14 REAL EXPONENT
15 REAL VALUE
16 C CALL SET_A_0 ( RET , NLOC * NRET )
17 EXPONENT = 1.0/7.0
18 C
19 PRINT * , NLOC , NRET , NARG
20 DO ILOC = 1 , NLOC
21 VALUE = 1.0 - ARGS ( ILOC ,2)/ ARGS ( ILOC ,3)
22 IF ( VALUE . LT . 0.0) VALUE = 0.0
23 RET ( ILOC ,1) = ARGS ( ILOC ,1)* VALUE ** EXPONENT
24 END DO
25 C
26 CRESLT = ’ GOOD ’
27 C Executable statements
28 CALL MESAGE ( ’ WRITE ’ , ’␣ ’)
29 CALL MESAGE ( ’ WRITE ’ , ’ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ’)
30 CALL MESAGE ( ’ WRITE ’ , ’␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ Start ␣ USER_OUTPUT ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ’)
31 CALL MESAGE ( ’ WRITE ’ , ’ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ’)
32 CALL MESAGE ( ’ WRITE ’ , ’␣ ’)
33 C
34 C =======================================================================
35 END

Note que a estrutura das subrotinas Fortran utilizadas pelo CFX deve apresentar os
argumentos fixos <subroutine_name>(NLOC , NRET , NARG , RET , ARGS , CRESLT , CZ
,DZ ,IZ ,LZ ,RZ ), em que:

• NLOC: Número de faces sobre a qual os cálculos devem ser realizados.

• NARG: Número de argumentos passados para a função.

• ARGS(1: NLOC, 1: NARG): Argumentos passados para a função (em cada ponto no
espaço).

• NRET: Número de variáveis de retorno, sendo sempre igual a 1 no CFX.

• RET (1: NLOC, 1: NRET): Variáveis de retorno (em cada ponto no espaço).

• CZ (*), DZ (*), IZ (*), LZ (*), RZ (*): Declaração de variáveis do tipo DOUBLE,


INTEIRO, LOGICAL e REAL.

Em seguida o código fonte deve ser compilado de forma análoga ao apresentado na seção 1.5.
As Figuras 68 e 69 ilustram o resultado da compilação do código Fortran.
47

Figura 68: Configuração do compilador Intel Fortran para utilização com CFX.

É importante observar as mensagens apresentadas após a execução dos comandos, que devem
ser iguais às ilustradas nas Figuras 68 e 69.

Figura 69: Compilação do arquivo inlet_velocity.F.

Em seguida, dois passos são necessários para definir uma CEL Fucntion do usuário que utiliza a
sub-rotina Fortran compilada. Em primeiro lugar, deve-se definir uma User Routine que aponta para
a sub-rotina Fortran. Em seguida, uma User Function que aponta para a User Routine previamente
criada. Para isso o usuário deve seguir os passos listados abaixo:

1. Na barra de ferramentas principal, clique com o botão direito do mouse em User Routines.

2. Defina o nome da rotina como WprofRoutine e clique em ’OK’. Em seguida irá aparecer ao
usuário os detalhes da User Routine.

3. Definir a opção para User CEL Function.

4. Defina o campo do formulário Calling Name como inlet_velocity. Este é o nome da


sub-rotina dentro do arquivo Fortran. Sempre use letras minúsculas para o nome de chamanda,
mesmo que nome da sub-rotina no arquivo Fortran seja em maiúsculas.
48

5. Defina o Library Name para inlet_velocity. Este é o nome passado para o comando
cfx5mkext pela opção -name. Se a opção -name não for especificado, um padrão será usado.
O padrão é o nome do arquivo Fortran sem a extensão .F.

6. Defina o Library Path para o diretório onde o comando cfx5mkext foi executado
(geralmente o diretório de trabalho atual). Por exemplo, em Windows:
C:/TUTORIAIS_LEARN/ButterflyValve. Isso pode ser feito rapidamente, clicando em
Procurar (ao lado do Library Path), navegando até a pasta apropriada (não é necessário se o
usuário selecionar o diretório de trabalho), e clicando em OK (em Select Directory).

7. Clique em OK para finalizar. A Figura 89 ilustra como deve ficar a configuração da User
Routine.

Figura 70: Criação da User Routine.

Em seguida o usuário deverá criar uma User Function para linkar o Solver com o código em
Fortran declarado pela User Routine. Para isso o usuário deve seguir os passos listados abaixo:

1. Clique com o botão direito do mouse em User Function.

2. Seleciona o nome da User Function como WprofFunction, e clique em OK. Os detalhes de


User Function serão exibidos. Notque que não deve ser utilizado o mesmo nome para a User
Routine e para a User Function.

3. Selecione a Option para User Function.

4. Selecione a User Routine Name como WprofRoutine.

5. Digite a lista de argumentos a ser passada para o código Fortran como [m s-̂1], [m], [m].
Estas são as unidades dos três argumentos de entrada: Wmax, r e Rmax.
49

6. Passe a unidade do argumento de retorno em Result Units como [m s-̂1], que é a unidade do
perfil de velocidade calculado pelo código Fortran.

7. Clique em OK para completar a especificação da User Function. A Figura 90 ilustra como


deve ficar a configuração da User Routine.

Figura 71: Criação da User Function.

Após definir a User Function e a User Routine, é necessário definí-la como condição de entrada
e como condição inicial. Isto pode ser feito seguindo as configurações apresentadas nas Figuras 72
e 73.
50

Figura 72: Definição da condição inicial especificada por WprofFunction.

Figura 73: Definição da condição inicial especificada por WprofFunction.

Os resultados desta simulação são apresentados na Figura 74


51

Figura 74: Resultado da simulação empregando a rotina Fortran.

3.1.3 Emprego de condição de contorno de entrada (inlet) e de saída


(outlet) como um perfil de velocidade em função do raio do tubo
em função do raio do tubo empregando CEL - caso estacionário.

Esta seção apresenta a configuração do problema de escoamento através do tubo com válvula
borboleta empregando condições de contorno inlet e outlet especificadas como distintos perfis de
velocidade em função do raio do tubo, expresso em inlet por:
ˆˇ ˇ˙ 1
ˇ r ˇ 7
Win prq “ Wmax ˇˇ1 ´ ˇ (3.3)
Rmax ˇ

e em outlet por: ˆˇ ˇ˙ 2
ˇ r ˇ
Wout prq “ Wmax ˇˇ1 ´ ˇ (3.4)
Rmax ˇ
em que Win indica o perfil de velocidade de entrada, Wout representa o perfil de velocidade de saída,
Wmax “ 5 m{s é a velocidade máxima do fluido em escoamento, 0 ď r ď 20 mm representa o raio
do tubo e Rmax “ 20 mm indica o valor máximo assumido para r. As Figuras 75 e 76 ilustram a
variação dos perfis de velocidade especificados pelas expressões (3.3) e (3.4), respectivamente.
52

5*(1-50.0*r)^(1/7)
Velocidade de entrada - (m/s)
4

0
0 0.005 0.01 0.015 0.02
Raio do tubo - (m)

Figura 75: Perfil de velocidade inlet ao longo do raio do tubo.

4.5

5*(1-50.0*r)^2
4

3.5
Velocidade de saída - (m/s)

2.5

1.5

0.5

0
0 0.005 0.01 0.015 0.02
Raio do tubo - (m)

Figura 76: Perfil de velocidade outlet ao longo do raio do tubo.

A Figura 77 ilustra a distribuição do perfil de velocidade de entrada, especificado através da


expressão (3.3).
53

Figura 77: Perfil de velocidade inlet CFX.

A Figura 78 ilustra a distribuição do perfil de velocidade de saída, especificado através da


expressão (3.4).

Figura 78: Perfil de velocidade outlet CFX.

Após a configuração do problema no CFX, é necessário criar as CEL Expressions Wmax, Rmax,
Wprof para representação o perfil de velocidade inlet. Para tal criação, o usuário deve clicar com
o botão direito do mouse sobre o menu Expressions->Insert->Expression como ilustrado na
Figura 79.
54

Figura 79: Criação de CEL Expression no CFX.

Em seguida uma nova janela será exibida, em que o usuário deve inserir o nome da Expression
a ser criada. A primeira expressão criada deve ser denominada de Wmax. Veja a Figura 80.

Figura 80: Criação de CEL Expression no CFX.

Ao clicar em ’OK’ será exibida uma janela em que o usuário deverá definir a sua Expressão.
Para a expressão que define a velocidade máxima do fluido em escoamento, Wmax, será utilizado um
valor constante igual 5 m/s. Em seguida deve-se clicar em ’Aplly’. Veja a Figura 81.
55

Figura 81: Criação de CEL Expression no CFX.

Três novas Expressions devem ser criadas e nomeadas como Rmax, Wprof e WprofOutlet
seguindo os procedimentos anteriormente apresentados. A Expression Rmax deve assumir o valor
20 mm, a Expression Wprof deve assumir o valor expresso em (3.3) e a Expression WprofOutlet
deve assumir o valor expresso em (3.4). Veja a Figura 82 para uma ilustração de como devem estar
configuradas as CEL Expressions.

Figura 82: Criação de CEL Expression no CFX.

Deve-se notar a importância de declarar e manter a consistência dimensional em cada CEL


56

Expression declarada, caso contrário mensagens de erro serão apresentadas. A variável r é uma
variável do ambiente CFX e é avaliada em termos das coordenadas cartesianas, x e y, como:
a
r “ x2 ` y 2 (3.5)

A Figura 83 ilustra o gradiente de velocidade na entrada especificado através de CEL


Expression Wprof e na saída através da CEL Expression WprofOutlet.

Figura 83: Criação de CEL Expression no CFX.

O resultado da simulação empregando distintos perfis de velocidade como condições de


contorno de entrada e saída, respectivamente, é ilustrado na Figura 84.
57

Figura 84: Resultado da simulação empregando a rotina Fortran.

3.1.4 Emprego de condição de contorno de entrada (inlet) e de saída


(outlet) como um perfil de velocidade em função do raio do tubo
em função do raio do tubo empregando CEL Funtion (FORTRAN)
- caso estacionário

.
Nesta seção os perfis de velocidade nas condições de contorno de entrada e saída serão
especificado com o emprego de CEL Functions e combinado com a utilização de CEL Expressions,
objetivando uma melhor compreensão da passagem de parâmetros entre o Solver do CFX e o código
Fortran, durante a execução do Solver.
Primeiramente o arquivo [Link] deve ser carregado e as configurações padrão do
problema devem ser realizadas de acordo com o tutorial Flow Through a Butterfly Valve. Após
realizar as configurações iniciais do problema, deve-se criar duas CEL Expressions denominadas de
Wmax e Rmax, cujos valores são 5 m/s e 20 mm, respectivamente. Veja Figura 86.
58

Figura 85: Criação de CEL Expression no CFX.

Agora deve-se criar os arquivos que contém os códigos fonte para a condição de entrada e
para a condição de saída. Os códigos fonte são apresentados como segue.
1 # include " cfx5ext . h "
2 dllexport ( inlet_velocity )
3 SUBROUTINE INLET_VELOCITY (
4 & NLOC , NRET , NARG , RET , ARGS , CRESLT , CZ , DZ , IZ , LZ , RZ )
5 INTEGER NLOC , NARG , NRETC
6 CHARACTER CRESLT *(*)
7 REAL ARGS ( NLOC , NARG ) , RET ( NLOC , NRET )
8 INTEGER IZ (*)
9 CHARACTER CZ (*)*(1)
10 DOUBLE PRECISION DZ (*)
11 LOGICAL LZ (*)
12 REAL RZ (*)
13 INTEGER ILOC
14 REAL EXPONENT
15 REAL VALUE
16 C CALL SET_A_0 ( RET , NLOC * NRET )
17 EXPONENT = 1.0/7.0
18 C
19 PRINT * , NLOC , NRET , NARG
20 DO ILOC = 1 , NLOC
21 VALUE = 1.0 - ARGS ( ILOC ,2)/ ARGS ( ILOC ,3)
22 IF ( VALUE . LT . 0.0) VALUE = 0.0
23 RET ( ILOC ,1) = ARGS ( ILOC ,1)* VALUE ** EXPONENT
24 END DO
25 C
26 CRESLT = ’ GOOD ’
27 C Executable statements
28 CALL MESAGE ( ’ WRITE ’ , ’␣ ’)
59

29 CALL MESAGE ( ’ WRITE ’ , ’ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ’)


30 CALL MESAGE ( ’ WRITE ’ , ’␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ Start ␣ USER_OUTPUT ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ’)
31 CALL MESAGE ( ’ WRITE ’ , ’ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ’)
32 CALL MESAGE ( ’ WRITE ’ , ’␣ ’)
33 C
34 C =======================================================================
35 END

1 # include " cfx5ext . h "


2 dllexport ( outlet_velocity )
3 SUBROUTINE OUTLET_VELOCITY (
4 & NLOC , NRET , NARG , RET , ARGS , CRESLT , CZ , DZ , IZ , LZ , RZ )
5 INTEGER NLOC , NARG , NRETC
6 CHARACTER CRESLT *(*)
7 REAL ARGS ( NLOC , NARG ) , RET ( NLOC , NRET )
8 INTEGER IZ (*)
9 CHARACTER CZ (*)*(1)
10 DOUBLE PRECISION DZ (*)
11 LOGICAL LZ (*)
12 REAL RZ (*)
13 INTEGER ILOC
14 REAL EXPONENT
15 REAL VALUE
16 CALL SET_A_0 ( RET , NLOC * NRET )
17 EXPONENT = 2.0
18 C
19 PRINT * , NLOC , NRET , NARG
20 DO ILOC = 1 , NLOC
21 VALUE = 1.0 - ARGS ( ILOC ,2)/ ARGS ( ILOC ,3)
22 IF ( VALUE . LT . 0.0) VALUE = 0.0
23 RET ( ILOC ,1) = ARGS ( ILOC ,1)* VALUE ** EXPONENT
24 END DO
25 C
26 CRESLT = ’ GOOD ’
27 C
28 C =======================================================================
29 END

Note que a estrutura das subrotinas Fortran utilizadas pelo CFX deve apresentar os
argumentos fixos <subroutine_name>(NLOC , NRET , NARG , RET , ARGS , CRESLT , CZ
,DZ ,IZ ,LZ ,RZ ), em que:

• NLOC: Número de faces sobre a qual os cálculos devem ser realizados.

• NARG: Número de argumentos passados para a função.

• ARGS(1: NLOC, 1: NARG): Argumentos passados para a função (em cada ponto no
espaço).

• NRET: Número de variáveis de retorno, sendo sempre igual a 1 no CFX.

• RET (1: NLOC, 1: NRET): Variáveis de retorno (em cada ponto no espaço).

• CZ (*), DZ (*), IZ (*), LZ (*), RZ (*): Declaração de variáveis do tipo DOUBLE,


INTEIRO, LOGICAL e REAL.
60

Em seguida o código fonte deve ser compilado de forma análoga ao apresentado na seção 1.5.
As Figuras 86 e 69 ilustram o resultado da compilação do código Fortran.

Figura 86: Configuração do compilador Intel Fortran para utilização com CFX.

É importante observar as mensagens apresentadas após a execução dos comandos, que devem
ser iguais às ilustradas nas Figuras 68, 87 e 88.

Figura 87: Compilação do arquivo inlet_velocity.F.


61

Figura 88: Compilação do arquivo outlet_velocity.F.

Em seguida deve-se definir uma User Routine que aponta para a sub-rotina
inlet_velocity.F. E após, uma User Function que aponta para a User Routine previamente
criada. Para isso o usuário deve seguir os passos listados abaixo:

1. Na barra de ferramentas principal, clique com o botão direito do mouse em User Routines.

2. Defina o nome da rotina como WprofRoutine e clique em ’OK’. Em seguida irá aparecer ao
usuário os detalhes da User Routine.

3. Definir a opção para User CEL Function.

4. Defina o campo do formulário Calling Name como inlet_velocity. Este é o nome da


sub-rotina dentro do arquivo Fortran. Sempre use letras minúsculas para o nome de chamanda,
mesmo que nome da sub-rotina no arquivo Fortran seja em maiúsculas.

5. Defina o Library Name para inlet_velocity. Este é o nome passado para o comando
cfx5mkext pela opção -name. Se a opção -name não for especificado, um padrão será usado.
O padrão é o nome do arquivo Fortran sem a extensão .F.

6. Defina o Library Path para o diretório onde o comando cfx5mkext foi executado
(geralmente o diretório de trabalho atual). Por exemplo, em Windows:
C:/TUTORIAIS_LEARN/ButterflyValve. Isso pode ser feito rapidamente, clicando em
Procurar (ao lado do Library Path), navegando até a pasta apropriada (não é necessário se o
usuário selecionar o diretório de trabalho), e clicando em OK (em Select Directory).

7. Clique em OK para finalizar. A Figura 89 ilustra como deve ficar a configuração da User
Routine.
62

Figura 89: Criação da User Routine.

Em seguida o usuário deverá criar uma User Function para linkar o Solver com o código em
Fortran declarado pela User Routine. Para isso o usuário deve seguir os passos listados abaixo:

1. Clique com o botão direito do mouse em User Function.

2. Seleciona o nome da User Function como WprofFunction, e clique em OK. Os detalhes de


User Function serão exibidos. Notque que não deve ser utilizado o mesmo nome para a User
Routine e para a User Function.

3. Selecione a Option para User Function.

4. Selecione a User Routine Name como WprofRoutine.

5. Digite a lista de argumentos a ser passada para o código Fortran como [m s-̂1], [m], [m].
Estas são as unidades dos três argumentos de entrada: Wmax, r e Rmax.

6. Passe a unidade do argumento de retorno em Result Units como [m s-̂1], que é a unidade do
perfil de velocidade calculado pelo código Fortran.

7. Clique em OK para completar a especificação da User Function. A Figura 90 ilustra como


deve ficar a configuração da User Routine.
63

Figura 90: Criação da User Function.

Após definir a User Function e a User Routine, é necessário definí-la como condição de entrada
e como condição inicial. Isto pode ser feito seguindo as configurações apresentadas nas Figuras 91
e 92.

Figura 91: Definição da condição de entrada especificada por WprofFunction.


64

Figura 92: Definição da condição inicial especificada por WprofFunction.

Deve-se também definir uma User Routine que aponta para a sub-rotina outlet_velocity.F.
E após, uma User Function que aponta para a User Routine previamente criada. Para isso o usuário
deve seguir os passos listados abaixo:

1. Na barra de ferramentas principal, clique com o botão direito do mouse em User Routines.

2. Defina o nome da rotina como WprofRoutineOutlet e clique em ’OK’. Em seguida irá


aparecer ao usuário os detalhes da User Routine.

3. Definir a opção para User CEL Function.

4. Defina o campo do formulário Calling Name como outlet_velocity. Este é o nome da


sub-rotina dentro do arquivo Fortran. Sempre use letras minúsculas para o nome de chamanda,
mesmo que nome da sub-rotina no arquivo Fortran seja em maiúsculas.

5. Defina o Library Name para outlet_velocity. Este é o nome passado para o comando
cfx5mkext pela opção -name. Se a opção -name não for especificado, um padrão será usado.
O padrão é o nome do arquivo Fortran sem a extensão .F.

6. Defina o Library Path para o diretório onde o comando cfx5mkext foi executado
(geralmente o diretório de trabalho atual). Por exemplo, em Windows:
C:/TUTORIAIS_LEARN/ButterflyValve. Isso pode ser feito rapidamente, clicando em
Procurar (ao lado do Library Path), navegando até a pasta apropriada (não é necessário se o
usuário selecionar o diretório de trabalho), e clicando em OK (em Select Directory).

7. Clique em OK para finalizar. A Figura 93 ilustra como deve ficar a configuração da User
Routine.
65

Figura 93: Criação da User Routine.

Em seguida o usuário deverá criar uma User Function para linkar o Solver com o código em
Fortran declarado pela User Routine recém configurada. Para isso o usuário deve seguir os passos
listados abaixo:

1. Clique com o botão direito do mouse em User Function.

2. Seleciona o nome da User Function como WprofOutFunction, e clique em OK. Os detalhes


de User Function serão exibidos. Notque que não deve ser utilizado o mesmo nome para a
User Routine e para a User Function.

3. Selecione a Option para User Function.

4. Selecione a User Routine Name como WprofRoutineOutlet.

5. Digite a lista de argumentos a ser passada para o código Fortran como [m s-̂1], [m], [m].
Estas são as unidades dos três argumentos de entrada: Wmax, r e Rmax.

6. Passe a unidade do argumento de retorno em Result Units como [m s-̂1], que é a unidade do
perfil de velocidade calculado pelo código Fortran.

7. Clique em OK para completar a especificação da User Function. A Figura 94 ilustra como


deve ficar a configuração da User Routine.
66

Figura 94: Criação da User Function.

Após definir a User Function e a User Routine, é necessário definí-la como condição de saída.
Isto pode ser feito seguindo as configurações apresentada na Figura 95.

Figura 95: Definição da condição de contorno especificada por WprofOutFunction.

Os resultados desta simulação são apresentados na Figura 96


67

Figura 96: Resultado da simulação empregando rotinas inlet e outlet em Fortran.


68

4 Implementação de perfil de velocidade transiente na


entrada e pressão na saída: Flow Through a Butterfly
Valve

Esta seção ilustra a implementação de um perfil de velocidade de entrada e de um perfil de


pressão na condição de contorno de saída empregando rotinas definidas em CEL (CFX Expression
Language) e em CEL Functions que são implementadas em Fortran 77, para o problema “Flow
Through a Butterfly Valve”. As simulações realizadas são listadas a seguir:

1. Emprego de condição de contorno de entrada (inlet) como um perfil senoidal de velocidade


em função do tempo de simulação e em função do raio do tubo, e na saída (outlet) como um
perfil de pressão em função do raio do tubo empregando CEL - caso transiente. Seção 4.1.1.

2. Emprego de condição de contorno de entrada (inlet) como um perfil senoidal de velocidade


em função do tempo de simulação e em função do raio do tubo, e na saída (outlet) como um
perfil de pressão em função do raio do tubo empregando CEL - caso transiente. Seção 4.1.2.

4.1 Configuração do projeto


As configurações iniciais deste estudo de caso deve seguir o apresentado na seção 3.1.1,
notando que agora a simulação será do tipo transiente.

4.1.1 Emprego de condição de contorno de entrada (inlet) como um


perfil senoidal de velocidade em função do tempo de simulação e
em função do raio do tubo, e na saída (outlet) como um perfil
de pressão em função do raio do tubo empregando CEL - caso
transiente

As expressões (4.1) e (4.2) apresentam as expressões que modelam as condições de contorno


de entrada e de saída, respectivamente.
ˇ ˇ1
ˇ r ˇˇ 7
Wprof pr, tq “ Wmax ˇ1 ´
ˇ | sinp10πt{tempoq| (4.1)
Rmax ˇ

em que Wprof indica o perfil de velocidade de entrada, Wmax “ 5 m{s é a velocidade máxima do
fluido em escoamento, 0 ď r ď 20 mm representa o raio do tubo e Rmax “ 20 mm indica o valor
máximo assumido para r, t é o tempo de simulação e tempo é igual a 1 s para manter a consistência
dimensional. ˇ ˇ2
ˇ r ˇ
Pprof prq “ Pmax ˇˇ1 ´ ˇ (4.2)
Rmax ˇ
69

em que Pprof indica o perfil de pressão de saída, Pmax “ 0.05 P a é a pressão máxima do fluido
em escoamento, 0 ď r ď 20 mm representa o raio do tubo e Rmax “ 20 mm indica o valor
máximo assumido para r. As Figuras 104 e 105 ilustram a variação do perfil de entrada e saída,
respectivamente.
Velocidade de entrada - (m/s)

5
4
3
2
1
0
0

0.005
Ra
io

0.01
do

0.5
tub

0.4
o-

0.015 0.3
(m

0.2 )
)

(seg
0.1 po -
Tem
0.02 0

Figura 97: Perfil de velocidade de entrada.


70

0.05

0.04
Pressão de saída - (Pa)

0.03

0.02

0.01

0
0 0.005 0.01 0.015 0.02
Raio do tubo - (m)

Figura 98: Perfil de pressão de saída.

Para configurar o tipo de análise como transiente deve-se clicar em “Analysis Type”, como
indicado na Figura 99.

Figura 99: Alteração para problema tipo transiente.


71

Uma nova guia será exibida em que o usuário deverá alterar a opção “Analysis Type” de
Steady State para Transient. E as configurações de Max. Timesteps e Time Steps devem seguir às
apresentadas na Figura 100.

Figura 100: Configurações do problema tipo transiente.

Após configurar os Time Steps, o usuário deve criar as Expressions Pmax, Pprof, Rmax,
Wmax, Wprof, densityw, tempo, cujos valores e unidades são exibidos na Figura 101.

Figura 101: Configurações do problema tipo transiente.


72

Com as expressões definidas para as condições de contorno, é necessário linkar tais expressões
com as regiões inlet e outle. Para isso deve-se dar um duplo clique sobre a o menu “inlet” para
setar a expressão Wprof como condição de entrada. Veja a Figura 102.

Figura 102: Configurações da condição de contorno de entrada.

Analogamente o perfil de pressão Pprof é configurado na condição de saída conforme Figura


103.

Figura 103: Configurações da condição de contorno de sáida.

Após realizar as configurações pode-se executar o Solver do CFX para obtenção da solução
73

numérica do problema. A Figura abaixo ilustra o resultado final da simulação tipo transiente para
variação da velocidade no domínio, utilizando CFX CEL Expressions.

Variação da velocidade

4.1.2 Emprego de condição de contorno de entrada (inlet) como um


perfil senoidal de velocidade em função do tempo de simulação e
em função do raio do tubo, e na saída (outlet) como um perfil de
pressão em função do raio do tubo empregando CEL Function -
caso transiente

As expressões (4.3) e (4.4) apresentam as expressões que modelam as condições de contorno


de entrada e de saída, respectivamente.
ˇ ˇ1
ˇ r ˇˇ 7
Wprof pr, tq “ Wmax ˇ1 ´
ˇ | sinp10πt{tempoq| (4.3)
Rmax ˇ

em que Wprof indica o perfil de velocidade de entrada, Wmax “ 5 m{s é a velocidade máxima do
fluido em escoamento, 0 ď r ď 20 mm representa o raio do tubo e Rmax “ 20 mm indica o valor
máximo assumido para r, t é o tempo de simulação e tempo é igual a 1 s para manter a consistência
dimensional. ˇ ˇ2
ˇ r ˇ
Pprof prq “ Pmax ˇˇ1 ´ ˇ (4.4)
Rmax ˇ
em que Pprof indica o perfil de pressão de saída, Pmax “ 0.05 P a é a pressão máxima do fluido
em escoamento, 0 ď r ď 20 mm representa o raio do tubo e Rmax “ 20 mm indica o valor
máximo assumido para r. As Figuras 104 e 105 ilustram a variação do perfil de entrada e saída,
respectivamente.
74

Velocidade de entrada - (m/s)


5
4
3
2
1
0
0

0.005
Ra
io

0.01
do

0.5
tub

0.4
o-

0.015 0.3
(m

seg)
0.2
)

0.1 po-(
Tem
0.02 0

Figura 104: Perfil de velocidade de entrada.

0.05

0.04
Pressão de saída - (Pa)

0.03

0.02

0.01

0
0 0.005 0.01 0.015 0.02
Raio do tubo - (m)

Figura 105: Perfil de pressão de saída.

O tutorial aqui apresentado é assemelhado ao exibido na seção 4.1.1, diferendo apenas


pela utilização de CEL Functions implementadas em Fortran para representação das condições de
75

contorno. Desta forma, deve-se criar os arquivos que contém os códigos fonte para a condição de
entrada e para a condição de saída. Os códigos fonte são apresentados como segue.
1 # include " cfx5ext . h "
2 dllexport ( i n l e t _ v e l o c i t y _ t r a n s i e n t )
3 SUBROUTINE I N L E T _ V E L O C I T Y _ T R A N S I E N T (
4 & NLOC , NRET , NARG , RET , ARGS , CRESLT , CZ , DZ , IZ , LZ , RZ )
5 INTEGER NLOC , NARG , NRETC
6 CHARACTER CRESLT *(*)
7 REAL ARGS ( NLOC , NARG ) , RET ( NLOC , NRET ) , PI
8 INTEGER IZ (*)
9 CHARACTER CZ (*)*(1)
10 DOUBLE PRECISION DZ (*)
11 LOGICAL LZ (*)
12 REAL RZ (*)
13 INTEGER ILOC
14 REAL EXPONENT
15 REAL VALUE
16 C CALL SET_A_0 ( RET , NLOC * NRET )
17 PI = 4.0* ATAN (1.0)
18 EXPONENT = 1.0/7.0
19 C
20 DO ILOC = 1 , NLOC
21 VALUE = 1.0 - ARGS ( ILOC ,2)/ ARGS ( ILOC ,3)
22 IF ( VALUE . LT . 0.0) VALUE = 0.0
23 RET ( ILOC ,1) = ( ARGS ( ILOC ,1)* VALUE ** EXPONENT )* ABS ( SIN (10*3.1415*
24 & ARGS ( ILOC ,4)))
25 END DO
26 C
27 CRESLT = ’ GOOD ’
28 C
29 C =======================================================================
30 END

1 # include " cfx5ext . h "


2 dllexport ( o u t l e t _ p r e s s u r e _ t r a n s i e n t )
3 SUBROUTINE O U T L E T _ P R E S S U R E _ T R A N S I E N T (
4 & NLOC , NRET , NARG , RET , ARGS , CRESLT , CZ , DZ , IZ , LZ , RZ )
5 INTEGER NLOC , NARG , NRETC
6 CHARACTER CRESLT *(*)
7 REAL ARGS ( NLOC , NARG ) , RET ( NLOC , NRET ) , PI
8 INTEGER IZ (*)
9 CHARACTER CZ (*)*(1)
10 DOUBLE PRECISION DZ (*)
11 LOGICAL LZ (*)
12 REAL RZ (*)
13 INTEGER ILOC
14 REAL EXPONENT
15 REAL VALUE
16 C CALL SET_A_0 ( RET , NLOC * NRET )
17 PI = 4.0* ATAN (1.0)
18 EXPONENT = 2.0
19 C
20 DO ILOC = 1 , NLOC
76

21 VALUE = 1.0 - ARGS ( ILOC ,2)/ ARGS ( ILOC ,3)


22 IF ( VALUE . LT . 0.0) VALUE = 0.0
23 RET ( ILOC ,1) = ARGS ( ILOC ,1)*( VALUE ** EXPONENT )
24 END DO
25 C
26 CRESLT = ’ GOOD ’
27 C
28 C =======================================================================
29 END

Em seguida o código fonte deve ser compilado de forma análoga ao apresentado na seção 1.5.
As Figuras 106 e 107 ilustram o resultado da compilação do código Fortran.

Figura 106: Configuração do compilador Intel Fortran para utilização com CFX.

É importante observar as mensagens apresentadas após a execução dos comandos, que devem
ser iguais às ilustradas nas Figuras 106, 107 e 108.

Figura 107: Compilação do arquivo inlet_velocity_transient.F.


77

Figura 108: Compilação do arquivo outlet_pressure_transient.F.

Em seguida analogamente ao realizado para o caso estacionário, deve-se definir uma User
Routine que aponta para a sub-rotina inlet_velocity_transient.F. E após, uma User Function
que aponta para a User Routine previamente criada. Para isso o usuário deve seguir os passos
listados abaixo:

1. Na barra de ferramentas principal, clique com o botão direito do mouse em User Routines.

2. Defina o nome da rotina como Wprof_transient e clique em ’OK’. Em seguida irá aparecer
ao usuário os detalhes da User Routine.

3. Definir a opção para User CEL Function.

4. Defina o campo do formulário Calling Name como inlet_velocity_transient. Este é o


nome da sub-rotina dentro do arquivo Fortran. Sempre use letras minúsculas para o nome de
chamanda, mesmo que nome da sub-rotina no arquivo Fortran seja em maiúsculas.

5. Defina o Library Name para inlet_velocity_transient. Este é o nome passado para o


comando cfx5mkext pela opção -name. Se a opção -name não for especificado, um padrão
será usado. O padrão é o nome do arquivo Fortran sem a extensão .F.

6. Defina o Library Path para o diretório onde o comando cfx5mkext foi executado
(geralmente o diretório de trabalho atual). Por exemplo, em Windows:
C:/TUTORIAIS_LEARN/ButterflyValve/pipe_valve. Isso pode ser feito rapidamente,
clicando em Procurar (ao lado do Library Path), navegando até a pasta apropriada (não é
necessário se o usuário selecionar o diretório de trabalho), e clicando em OK (em Select
Directory).

7. Clique em OK para finalizar. A Figura 109 ilustra como deve ficar a configuração da User
Routine.
78

Figura 109: Criação da User Routine.

Em seguida o usuário deverá criar uma User Function para linkar o Solver com o código em
Fortran declarado pela User Routine. Para isso o usuário deve seguir os passos listados abaixo:

1. Clique com o botão direito do mouse em User Function.

2. Seleciona o nome da User Function como WprofTrans, e clique em OK. Os detalhes de User
Function serão exibidos. Notque que não deve ser utilizado o mesmo nome para a User Routine
e para a User Function.

3. Selecione a Option para User Function.

4. Selecione a User Routine Name como Wprof_transient.

5. Digite a lista de argumentos a ser passada para o código Fortran como [m s-̂1], [m], [m], [s].
Estas são as unidades dos três argumentos de entrada: Wmax, r, Rmax e t.

6. Insira a unidade do argumento de retorno em Result Units como [m s-̂1], que é a unidade do
perfil de velocidade calculado pelo código Fortran.

7. Clique em OK para completar a especificação da User Function. A Figura 110 ilustra como
deve ficar a configuração da User Routine.
79

Figura 110: Criação da User Function.

Após definir a User Function e a User Routine, é necessário definí-la como condição de entrada
e como condição inicial. Isto pode ser feito seguindo as configurações apresentadas nas Figuras 111
e 112.

Figura 111: Definição da condição de entrada especificada por WprofTrans.


80

Figura 112: Definição da condição inicial especificada por WprofTrans.

Deve-se criar outra User Function e User Routine para representar a condição de contorno de
saída, seguindo os procedimentos abaixo:

1. Na barra de ferramentas principal, clique com o botão direito do mouse em User Routines.

2. Defina o nome da rotina como Pprof_transient e clique em ’OK’. Em seguida irá aparecer
ao usuário os detalhes da User Routine.

3. Definir a opção para User CEL Function.

4. Defina o campo do formulário Calling Name como outlet_pressure_transient. Este é o


nome da sub-rotina dentro do arquivo Fortran. Sempre use letras minúsculas para o nome de
chamanda, mesmo que nome da sub-rotina no arquivo Fortran seja em maiúsculas.

5. Defina o Library Name para outlet_pressure_transient. Este é o nome passado para o


comando cfx5mkext pela opção -name. Se a opção -name não for especificado, um padrão
será usado. O padrão é o nome do arquivo Fortran sem a extensão .F.

6. Defina o Library Path para o diretório onde o comando cfx5mkext foi executado
(geralmente o diretório de trabalho atual). Por exemplo, em Windows:
C:/TUTORIAIS_LEARN/ButterflyValve/pipe_valve. Isso pode ser feito rapidamente,
clicando em Procurar (ao lado do Library Path), navegando até a pasta apropriada (não é
necessário se o usuário selecionar o diretório de trabalho), e clicando em OK (em Select
Directory).

7. Clique em OK para finalizar. A Figura 113 ilustra como deve ficar a configuração da User
Routine.
81

Figura 113: Criação da User Routine.

Em seguida o usuário deverá criar uma User Function para linkar o Solver com o código em
Fortran declarado pela User Routine. Para isso o usuário deve seguir os passos listados abaixo:

1. Clique com o botão direito do mouse em User Function.

2. Seleciona o nome da User Function como PprofTrans, e clique em OK. Os detalhes de User
Function serão exibidos. Notque que não deve ser utilizado o mesmo nome para a User Routine
e para a User Function.

3. Selecione a Option para User Function.

4. Selecione a User Routine Name como Pprof_transient.

5. Digite a lista de argumentos a ser passada para o código Fortran como [Pa], [m], [m]. Estas
são as unidades dos três argumentos de entrada: Pmax, r, Rmax.

6. Insira a unidade do argumento de retorno em Result Units como [Pa], que é a unidade do
perfil de pressão calculado pelo código Fortran.

7. Clique em OK para completar a especificação da User Function. A Figura 114 ilustra como
deve ficar a configuração da User Routine.
82

Figura 114: Criação da User Function.

Após definir a User Function e a User Routine, é necessário definí-la como condição de saída.
Isto pode ser feito seguindo as configurações apresentadas nas Figuras 115.

Figura 115: Definição da condição de saída especificada por PprofTrans.

Após realizar as configurações pode-se executar o Solver do CFX para obtenção da solução
83

numérica do problema. A animação abaixo ilustra o resultado final da simulação tipo transiente
para variação da velocidade no domínio, utilizando CFX CEL Functions.

Variação da velocidade

Você também pode gostar