Sie sind auf Seite 1von 78

Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.

2]g
1
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
NOTASDOAUTOR
A apostila busca esclarecer de forma direta para alunos dos cursos de engenharia sobre a
importnciadaprogramaonoexercciodaprofisso.Geralmente,osalunosquandoestocursandoadisciplinade
programaonoseucursodeengenharianoconsegueterumavisogeraldecomoutilizlaemuitasvezesprefere
utilizarumplanilhaeletrnica.
UmsoftwaredeplanilhaeletrnicacomooMicrosoftExcel,oantigoLotus123,Gnumeric,
CalcdoBrOfficeeoutros.Aimportncianaaprendizagemdeumalinguagemdeprogramainfluinomomentoem
que o aluno necessita realizar o clculo de um mtodo numrico, por exemplo, mtodo numrico de Newton
Raphson. Alguns mtodos numricos so capazes de serem realizados em planilhas eletrnicas, mas de forma
bastantemanual.
Aslinguagensdeprogramaovemenvolvendocadavezmaisomundotecnolgico.Java,PHP,
MySQL,C#,Delphi,Ruby,C,Pythonemuitasoutrasestopresentesemnossoscomputadores,telefonescelulares,
TVdigitais,automveiseetc.Oengenheirodomundoatualnecessitaentenderpelomenosdeumaformabsica
sobreprogramaoetiposdelinguagens,damesmaformaquenecessitafalartrslinguas.
AapostilabuscafacilitarousodalinguagemdeprogramaoCparaaplicaesemengenhariae
assimoestudantedaroprimeiropasso.Damesmaformaqueestematerialdisponibilizadodeformagratuita,se
espera o interesse por parte de outros estudantes, professores e profissionais para colaborar com a expanso do
mesmo.
Voudeixardebl,bl,bleesperoquegostem!
RafaeldeC.Farias
www.engemec.com
2
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
NDICE
1INTRODUO........................................................................................................................................... 4
1.1Programaoparaengenharias?........................................................................................................ 4
1.2GPL,livre,gratuito,aberto,customizao,trabalhocolaborativo................................................. 4
1.3Porqueequaissoftwaresutilizar........................................................................................................ 4
2PREPARANDOOCOMPUTADOREESCOLHENDOALINGUAGEM........................................... 6
2.1Configurandoocompilador................................................................................................................ 6
2.2AlinguagemdeprogramaoC......................................................................................................... 7
3PRIMEIROSPASSOSPARAAPROGRAMAOEMC................................................................... 8
3.1EstruturadeumprogramaemCeo1programa....................................................................... 8
3.2As4operaesbsicasdamatemtica............................................................................................... 10
3.3Entendendoasfunestrigonomtricas............................................................................................ 11
4DIMENSIONAMENTODEISOLAMENTOTRMICOEMLINHADEVAPOR........................... 14
4.1Introduo............................................................................................................................................. 14
4.2Caractersticasdoproblema............................................................................................................... 14
4.3Baseterica........................................................................................................................................... 14
4.4Cdigofontecomentadopassoapasso.............................................................................................. 15
5PROJETODEUMTROCADORDECALORDOTIPOCASCOETUBOS(GUALEO)......... 22
5.1Introduo............................................................................................................................................. 22
5.2Caractersticasdoproblema............................................................................................................... 22
5.3Baseterica........................................................................................................................................... 23
5.4Cdigofontecomentadopassoapasso.............................................................................................. 26
6PROJETODEVIGABIAPOIADA......................................................................................................... 35
6.1Introduo............................................................................................................................................. 35
6.2Caractersticasdoproblema............................................................................................................... 35
6.3Baseterica........................................................................................................................................... 35
6.4Cdigofontecomentadopassoapasso.............................................................................................. 36
7PROJETODEVASOSDEPRESSO...................................................................................................... 42
7.1Introduo............................................................................................................................................. 42
7.2Caractersticasdoproblema............................................................................................................... 42
7.3Baseterica........................................................................................................................................... 42
7.4Cdigofontecomentadopassoapasso.............................................................................................. 44
REFERNCIAS................................................................................................................................................ 49
APNDICEAFontesdeinformaoparainstalaodoUbuntu............................................................. 50
APNDICEBCdigosfontedosprogramasabordados........................................................................... 51
3
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
1INTRODUO
1.1ProgramaoparaEngenharias?
OensinodaprogramaoparaoscursosdeEngenhariaso,atualmente,falhosemsuamaioriadas
vezes.EmmuitasUniversidadecomoaUFCUniversidadeFederaldoCear,asdisciplinasvoltadasparaareada
programaoseencontramcomdificuldadesparaseremlecionadas.Asdificuldadesmaisinsistentesso:afaltade
laboratrioscomumaestruturaparatalatividade,trocaconstantedeprofessores,materialdidticovoltadoparaa
Engenhariaeacontinuidadedoensinocomutilizaodaprogramaoaolongodocurso.
Existem outras dificuldades, como a falta de informao sobre softwares livres que podem ser
utilizadosseminfringirleisdedireitosautoraisecombaixocusto.Autilizaodesoftwaresproprietriodeforma
ilegal no pas como o sistema operacional Windows, ferramentas de escritrio Microsoft Office, desenhos
tcnicoscomooAutoCAD eatmesmoparaaprogramaoemcertaslinguagenscomousodossoftwares da
Borlandsoumarealidadeinfeliz.
Esse trabalho tem comoobjetivoservirdematerial didtico, sepossvel,para osestudantesde
Engenhariaquequeiramaprenderprogramaocomexemplosprticosutilizandosoftwareslivres,eassimconhecer
asvantagensdeumtrabalhocolaborativo.Umainformaoquevalesersalientadanessemomento,quetodoo
contedo deste trabalho ser disponibilizado para as pessoas que tiverem interesse em aprender um pouco de
programaoesuautilizaonareadeEngenharia.
Omotivodarealizaodestetrabalhodevidodificuldadejmencionadanaaprendizagemda
programao computacional nos cursos de Engenharia, e uma forma de contribuio e agradecimento com a
comunidadeacadmicaeasociedadecomoumtodo.
1.2GPL,livre,gratuito,aberto,customizao,trabalhocolaborativo
O trabalho realizado utilizou um SO (Sistema Operacional) totalmente livre e gratuito sob a
licenaGPL(GenericPublicLicense),asferramentasabordadasparaodesenvolvimentodesoftwarestambmesto
sobamesmalicena.demonstradoque,atualmente,nspodemosutilizarossoftwareslivresemnossasatividades
mais comuns e na aprendizagem da programao para Engenharia. Todo este trabalho foi escrito com o uso de
softwareslivres.
Valeressaltarnestemomentosobreostermoslivre,abertoegrtis.Otermolivreindicaquetodos
podem usar de forma gratuita, geralmente, mas no necessariamente. O termo aberto indica a possibilidade de
customizarmos a ferramenta que estamos utilizando. O termo grtis o mais claro para todos, usado por um
determinado perodo ou por tempo indeterminado de acordo com a verso escolhida. Quando mencionado os
termosabertoelivre,issoindicaqueestamostrabalhandocomferramentasgratuitasemsuamaioriadasvezese
comapossibilidadedemodificarmoserepassarasmelhoriasrealizadasparaasoutraspessoasnamesmaforma.
Todasasferramentasqueseroabordadaspodemseradquiridasdeformalegaleserousadaspara
beneficiaroutraspessoasquepoderocolaborarcomessetrabalho,comotrabalhocolaborativo.
1.3Porqueequaissoftwaresutilizar
O primeiro passo, se deve com a instalao de um SO (Sistema Operacional) livre, aberto e
gratuito.ParaSO,aescolhaadotadaoUbuntunasuaverso7.10.EleumaboaopoporserLiveCD(SOque
rodam diretamente do CD) que pode ser instalado no computador ou no. O Ubuntu 7.10 alm de ser bastante
difundido e de fcil acesso, tem outras vantagens como a sua facilidade de manuseio, ferramentas embarcadas,
utilitrios,aplicativosediversosoutrossoftwaresdeusocomumprontosparauso.
O Ubuntu 7.10 apresenta por padro o Open Office para escritrio (editor de texto, planilha
eletrnica,bancodedados,apresentadorecriadordeslideseetc.),nareamultimdiacomooTotem(reprodutorde
udioevdeo),naediodeimagenscomoGimpediversosoutrossoftwares.Aformadeinstalaodeprogramas
extremamentefcilerapidamenteumusurioiniciantenomundoLinux/GNUaprender.
OnomeLinuxoriginadoecriadoporLinusTorvalds.JasiglaGNUdevidoaoprojetoGNU.
OprojetoGNUfoiiniciadoporRichardStallmancomoobjetivodecriarumsistemaoperacionaltotalmentelivre.A
siglaGNUfoiescolhidapelofatodeserumacrnimorecursivodeGNUisNotUnixqueemportugussignifica:
GNUnoUnix.QuandoumadistribuioserefereaLinux/GNU,naverdadeelabaseadaebemparecidacom
osistemaoperacionalUnix,masno.
OUbuntu7.10umadistribuioderivadadoLinux/GNU.utilizadooLinuxcomoSOporsero
prpriokernel(ncleoeSO)eossoftwaresGNUqueseintegramcomoLinux,formandooUbuntu7.10.Vejacomo
ocorreaintegrao:
4
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
Linux(kernel)+GNU(softwares)=Ubuntu7.10
OquedifereasdistribuiesLinux/GNUsoossoftwaresintegradosedistribudoscomela,poiso
Linux(kernel)omesmoparatodaselasbasicamente.Freqentemente,okernelsofreatualizaeseporissoelese
diferemuitopoucoentreasdistribuies.
AgoraqueestexplicadodaformamaisbsicapossvelsobreaescolhadoSOadequadoparaa
realizaodesteprojeto,importantemencionarumpoucosobreosprogramasqueforamutilizadosnarealizao
destetrabalho.interessanteutilizarumeditordetextobastantesimpleschamadoGeditoqualfoiutilizadoparaa
elaboraodostextosdosprogramas(rotinas,funes,frmulas,comentrioseetc).OGeditfcildeserutilizado
elembrabastanteoBlocodeNotasdoSOMicrosoftWindows.Adiferenaqueno Gedit quandosesalvao
arquivocomocdigofonte,eleautomaticamentemodificaacordotextoparaqueasfunes,comentrioseoutros
elementosdotextosejamdiferenciadas.
O compilador utilizado e recomendado o GCC. Compilador a ferramenta responsvel para
transformar o texto que foi escrito na linguagem de programao escolhida no arquivo executvel do programa
desejado.Oarquivoexecutvelgeradopelocompiladorexatamenteoprogramaouprogramasdesenvolvidos.Com
um editor de texto e um compilador, todos so capazes de escrever seus prprios programas e executlos
normalmente.
NestetrabalhonoabordadaainstalaodoSOLinux/GNU,masnoApndiceA,seencontram
alguns endereos eletrnicos bastante interessantes para se iniciar no mundo Linux/GNU. Alguns termos mais
tcnicos so abordados nos prximos captulos, e a explicao de cada termo ser apresentada da forma mais
detalhadapossvel.
importante ressaltar uma ltima observao sobre software livre, o termo livre se difere no
sentidodegratuito,masgeralmenteelessogratuitoseoscriadoresdeprogramaslivresganhamcomosuportepara
clientesqueapresentemdificuldadesemseuuso.Otermogratuitonotemsignificadolivreouaberto,elesse
refereautilizaogratuitadeumadeterminadaversooudeterminadoperodo.Jotermoabertonosereferea
livreenemgratuito,esimapossibilidadedeseadquirirocdigofontedoprograma.
5
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
2PREPARANDOOCOMPUTADOREESCOLHENDOALINGUAGEM
2.1Configurandoocompilador
Quandoseescrevealgumprograma,deveseusarcomumeditordetexto(nocasooGedit)eem
seguida salvlo, para que ele seja transformado no programa. O programa exatamente o nosso cdigofonte
funcional.Aferramentaresponsvelemtransformarasaesetarefasqueseescrevenoeditordetextoparaaforma
deprogramaocompilador.
OGCC(GNUCompilerCollection)ocompiladorgratuito,livreeabertoqueserapresentado
nestaliteraturaparatransformaroscdigosfonteparaaformadeprograma.Aversoatualmenteinstaladapelo
Ubuntu7.10a4.1.3.Elebemsimplesdeserutilizadoeatendetodasasnecessidadesdosprogramasapresentados.
NomenuAplicaes>Acessrios>Terminal, abrir uma janela chamada TERMINALque se
tratadalinhadecomandodoLinux.possveltervriasjanelasdeterminalabertas,masolimitemximoso64
terminaisaproximadamente.Paraainstalaodenovosprogramas,oterminalaindaamelhorsoluodoqueas
ferramentasassistidasdoUbuntu7.10eoutrasdistribuiesLinux/GNU.
DuranteainstalaodoUbuntu7.10,criadaacontadeumusurioparaacesslo.Esseusurio
queprovavelmentetemonomedocriadorouseuapelidonoumsupersurio.Osuperusuriooadministrador
de tudo no SO, ele responsvel por todas as configuraes, instalaes, remoes e outros. A senha deve ser
determinadaaoseiniciaraprimeiravezoSO,dessaformapossvelutilizaroTERMINALparaexecutaras
tarefasdeinstalaodoGCCeoutrasqueseroapresentadasnestetrabalho.Paraalterarasenhadosuperusurio(o
nomeverdadeiroROOT)bastaseguiraseqnciademenu:Sistema>Administrao>UsurioseGrupos.
necessrioescolheroROOTealterarasuasenhaparaseterpermissesprivilegiadasquandonecessrias.
AlteradaasenhadoROOT,imprescindvelaverificaodaversodoGCCinstaladaeisso
realizadocomocomando:
gccversion
Noterminaldeexecuo,essecomandodeveseapresentardaseguinteforma:
nome@mquina:~$gccversion
Nolocaldonomeousurioativonoexatomomento,enolugardemquinaonomeda
mquinaquefoidefinidaduranteainstalaodoSOnocomputador.Nocasoacima,ousuriodocomputadorest
apresentadocomousuriopadrodoSO.ParaexecutaromesmocomandocomoROOTsedevedigitar:
nome@mquina:~$su
Logoemseguida,sersolicitadaasenhadoROOTealinhadecomando(linhaqueesperao
comandodousurioativo)seapresentarnaforma:
root@mquina:/home/usurio#
IssoinformaqueousuriodoSOnaquelemomentooROOT(administrador)equeseencontra
napastadousurioqueiniciouoSO.OROOTtambmtemsuapastaqueseencontranaraizdosistemade
arquivos.Vejaqueocifrofoisubstitudopelo#.Assimtodososcomandosqueseroapresentadosapartirdeagora
equepossuemosmbolo#,estsubtendidoqueousurioativooROOT.Quandoosmboloforo$,entono
necessrioooperadordamquinaestarativocomousurioROOT.
Para um melhor entendimento dos conceitos do Linux/GNU e a manipulao de usurios,
necessrioleroApndiceAqueapresentadiversosendereoseletrnicossobreLinux/GNU.
Com a abertura do terminal como ROOT, interessante a instalao do pacote essencial do
GCCparaosclculosmatemticoseprogramaoavanada.Ocomandoquedeveserdigitadonoterminalo:
#aptgetinstallbuildessential
Essecomandofarcomqueseucomputadorentreemcontatocomosservidoresresponsveispela
atualizao e instalao remota do SO, e assim, esse pacote ser instalado no computador. Provavelmente ser
necessrioaconfirmaoparaainstalaodopacoteeparaissobastaquesejarespondidoSIM.
importantelembrarqueocomputadordeveestarconectadocomainternetparaqueainstalao
6
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
dopacotesejarealizadacomsucesso.SeocomputadornopossuidisponvelumaconexocomaInternet,ento
necessriaainstalaodopacoteemquestoapartirdosDVDsdadistribuioDebianLinux/GNU.OUbuntu
uma distribuio baseada no Debian, ento no sero apresentados problemas de incompatibilidade. Mas essa
instalaoapartirdosDVDsdoDebiannoserdiscutidanestetrabalho.
2.2AlinguagemdeprogramaoC
necessriomencionarsobreanecessidadedacriaodaslinguagensdeprogramaoeaescolha
dalinguagemquefoiabordadaaolongodestetrabalho. Aslinguagensdeprogramaosurgiramparafacilitara
comunicao dos softwares com os hardwares das mquinas. Pois a linguagem de mquina se reduz a uma
quantidadeenormede0e1quechamadadelinguagembinria.Essalinguagembinriaacompreendidapelos
processadores.Quandosedesenvolveumprogramaparaasomade2nmerosporexemplo,naverdade,cadavalor
assumirumaquantidadede0e1emumadeterminadaordemeaoperaodesomaeoresultadosoapresentados
damesmaforma.
Existem diversas linguagens de programao e compiladores para cada uma delas. Algumas
linguagensdeprogramaoapresentamsimilaridadesentresi,mastodastmumadeterminadacaractersticanasua
utilizaoeescolha.Existemlinguagensespecficasparaclculoscientficos,outrasquetrabalhamdiretamentecom
aInternet,combancodedadoseetc.
A linguagem abordada neste trabalho a C. Ela uma linguagem bem simples e de fcil
entendimento.AlinguagemCfoicriadaporDennisRitchienaAT&TBellLabscomointuitodedesenvolvero
SOUnixparaserutilizadoemservidores.AlinguagemseespalhouporoutrossistemascomooWindows,Linux,
Unix (atualmente Solaris), BSD e outros. Por ser uma linguagem portvel, ela pode ser utilizada em diferentes
plataformas.OCfoidesenvolvidobaseadonoSOUnixporvoltade1969e1973,masaproximadamente10anos
apsasuacriao,apresentavaumacertaausnciadepadronizaonoscompiladores.Osprogramaseramescritos
comdiversasferramentasquenemtodososcompiladoresconseguiamentender.Parasolucionaressaproblema,a
ANSI(Instituto NacionalAmericano dePadronizao), implantouumanorma paraa linguagemC. Assim, os
compiladores desenvolvidos atualmente buscam atender todos os programas desenvolvidos com base no padro
ANSIC.
Os programas que sero apresentados nesse trabalho podem ser compilados em Linux/GNU,
Microsoft Windows ou em qualquer outro SO, desde que o compilador atenda o padro ANSI C. Em muitas
EmpresaseUniversidadesosoftwarelivrenodominante,masexistemcompiladoresgratuitosdelinguagemC
paraSOproprietrios.
7
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
3PRIMEIROSPASSOSPARAPROGRAMAOEMC
3.1EstruturadeumprogramaemCeo1programa
Um programa escrito em qualquer linguagem de programao segue uma ordem lgica na sua
criao.AdivisoexistentenoscdigosfontenagrandemaioriadaslinguagensseguecomoCABEALHOe
DESENVOLVIMENTO.
O CABEALHO composto pelas bibliotecas. As bibliotecas so arquivos que contm as
explicaesefuncionalidadesdasfunesquesoempregadasnocdigofonte.Asomade2nmeros,oclculodo
cosseno de um determinado ngulo, constantes como o so exemplos de elementos que no necessria a
explicaodecomofuncionam.Ouseja,noseprecisacriarofuncionamentodefunescomoascitadas,poiselas
jsodescritasnopadroANSIC.
Asbibliotecascitadas,nosprogramasabordadosnestetrabalhoso:stdio.h,stdlib.hemath.h.Elas
possuemumsignificadoespecficocomoStandartInput/Outputparastdio.h,StandartLibraryparastdlib.he
Mathematic para math.h. Elas possuem as informaes necessrias para a execuo de todos os problemas
abordados. A biblioteca do padro ANSI C possui 15 arquivos de bibliotecas, j alguns compiladores possuem
bibliotecascomfunesbastantesinteressantes,masessenoofocodestetrabalho.Umoutrodetalheinteressante
que a linguagem no padro ANSI C apresenta um vocabulrio de 32 palavraschaves, logo, de fcil
aprendizagem.
Vejaumprogramabastantesimplesquenofazabsolutamentenada:
#include <stdio.h> |
#include <stdlib.h> | Parte 1
#include <math.h> |
//--------------------------- | Parte 2
main () |
{ |
printf ("Nao faz nada!\n"); | Parte 3
return 0; |
} |
FIGURA3.1.1Simplescdigofontecomdivisesexplicativas.
O cdigofonte foi dividido em 3 partes. A primeira se refere aos arquivos de biblioteca
declarados.Quandoseinsere#includeeonomedabibliotecaentreossinaisdemaioremenor,automaticamenteo
compiladorirpegarasfunesdessasbibliotecaseutilizlasquandonecessrio.Mesmoquenosejautilizadasas
funesouasbibliotecascomoumtodo,norepresentaumproblemaparaoprograma.Quandoolocalcompletoda
bibliotecanoforespecificado,ocompiladorbuscaremseudiretriodebibliotecas.
A segunda parte do cdigofonte se refere a forma de incluso de comentrios. Simplesmente,
todas as vezes que for digitada //, o restante da linha se torna um comentrio. Isso permite a insero de
comentriosaolongodoprogramaeafacilitaoparaterceirosentenderemoquefoiescrito.Nosprogramasque
seroapresentadosmaisadiante,sermostradodiversoscomentriosaolongodocdigofonte,exatamente,para
servirdeexplicaodomesmo.
Naterceirapartedocdigofonteondeseescreveoprogramaemsi.Aterceiraparteapresenta
todasastarefasdoprogramaemseqncias.Asomade2nmeros,aescritanateladoquedigitadoouclculosde
umtrocadordecalor,tudoescritonaterceiraparte.
Umatcnicarecomendadaparaaelaboraodeumbomcdigofonteaescritadoalgoritmo.
Existemdiversoslivrosqueabordamoestudodealgoritmoseelesservemcomoumesqueletodocdigofonte.As
disciplinasdeprogramaosempresoiniciadascomoestudodealgoritmos,dessaformafcildesevisualizaro
cdigofonte.Aescritadoalgoritmobasicamenteadescriodeformadetalhadadetodosospassosdeexecuo
doprograma.Estetrabalhonoabordaoestudoeacriaodoalgoritmo,poisaprpriaseqnciaderesoluodos
problemasabordadospodemserconsideradoscomoumaformadealgoritmo.
ParaexplicaodaFIGURA3.1.1escritoanteriormente,necessrioescreverocdigofonteem
umeditordetextopuro.ParaacessarooeditordetextopuronoUbuntu7.10,bastaseguiromenuAplicaes>
Acessrios>EditordetextoouentoabrirumTERMINALeescrever $geditepressionarateclaEnter.
Apsaexecuodealgumdessesprocedimentosoeditordetextoabrirsemproblemas.Agora, bastadigitaro
cdigofonteabaixo:
8
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//-----------------------------------
main ()
{
printf ("Nao faz nada!\n");
return 0;
}
FIGURA3.1.2Simplescdigofontesemdivisesexplicativas.
Agoranecessrioqueocdigofontesejasalvocomonomeprograma001.cemumapasta,ou
ento,quesecrieumapastaparaosprogramasapresentadosnestetrabalho,eassim,sejamlocalizadosfacilmente.
Oprximopassoacompilaoecriaodoarquivoexecutveldoprimeiroprograma,masantes
de prosseguir, necessrio explicar a funcionalidade do mesmo. Aps a declarao das bibliotecas (Parte 1 da
FIGURA3.1.1)eainserodocomentrio(Parte2daFIGURA3.1.1)oprogramaseiniciacomapalavramain.
As funes da linguagem C sero explicadas mais adiante, mas para dar continuidade necessrio abordar o
mnimo possvel. A palavra main est representando a funo principal. Ela seguida por parnteses que
representamovaloradotadoeemseguidaumjogodechavescominformaes.Acomparaodafunomain
comumafunomatemticaconhecidaumadasformasdeseuentendimento.Veja:
f(x)=ax+b equivalenteamain(x){ax+b}
Afunomatemticaestparaafunomaindamesmaformaqueaexpressodesomaest
paraocontedodaschaves.Ouseja,afunomainserexecutadadeacordocomoseucontedo.Nalinguagem
Cpossvelescreverdiversasfunes,masoprogramasemprecomearpelafunomain.Otrabalhocom
funessermelhorexplicadoemcaptulosposteriores,poisserdegrandevalianaformaodeblocosdecdigos
fonte.
Partindoparaocontedodafunomain,apresentadaapalavraprintfquetambmuma
funo. Ou seja, uma funo dentro de outra funo (funo composta). O printf na verdade, a funo
responsvel para imprimir na tela do computador os resultados, comentrios, observaes e etc. No primeiro
programaelasimplesmenteirapresentarafrase:Naofaznada!.UmaobservaoimportantenalinguagemC
quenoexistemcaracterescomacentos,porissooNonopossuiacentonafrase.Apsqualquertextoquefor
designadoparaserapresentadonatelapelafunoprintfetiveremseuinciooufinalotermo\n,sersaltada
umalinha.
Apsafunoprintf,apresentadaalinhacomocomandoreturn0queoresponsvelparaa
finalizaodoprograma.Eemseguidafinalizadaaaodafunomaincomofechamentodaschaves.Agora,
depoisdeexplicaroprogramadeformabsicaerpida,podeserexecutadaasuacompilao.
Para compilar o primeiro programa, basta abrir o terminal e acessar a pasta que se encontra o
arquivocriado(programa001.c).OcomandodecompilaocomoGCC(compiladormencionadonoinciodeste
trabalho)bastantesimples.Observe:
$gccprograma001.c
Sercriadoumarquivoexecutvelnamesmapastacomonomea.outeparaexecutlobasta
digitar:
$./a.out
A execuo do programa no passa da impresso da frase Nao faz nada!. Um detalhe
interessantequeoexecutvelgeradopodeterqualquernome,masporpadroelegeracomoa.out.Acriaodo
executvelcomumnomedeescolhadoprogramador,deveexecutaroGCCcomoparmetroabaixo:
$gccprograma001.conomedesejavel
Agorapossvelexecutaroprogramacomonomedesejadocomomesmocomando.Veja:
$./nomedesejavel
Umaltimaobservaoquedevesercomentadaomotivodoarquivocriadonoeditordetextose
9
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
chamarprograma001.c.Naverdadeonomedoarquivopodeserqualquerum,masaextenso.cdefinequese
tratadeumcdigofonteescritonalinguagemC.QuandosetrabalhacomalinguagemC++,porexemplo,a
extensodoarquivosetorna.cpp.Seguindoessasregras,possvelcompilartodososprogramasapresentados
nestetrabalhoemqualquercompiladorquesegueopadroANSICnoSOqueutilizar.
3.2As4operaesbsicasdaMatemtica
Autilizaodas4operaesbsicasdaMatemticadegrandeimportnciaparaousocotidiano.
Avisitaaosupermercadonoinciooufimdomsumtimoexemplodesubtrao.O13salriooutrobom
exemplodeadiodedinheironooramentofamiliar.Logo,as4operaesbsicasqueseromencionadasso:
soma,subtrao,multiplicaoediviso.ParaseentenderoconceitodasoperaescomousodalinguagemC,
observeocdigofonteabaixo:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//-----------------------------------
main ()
{
double x, y, z;
printf ("\nVamos somar dois numeros.");
printf ("\n\nDigite o valor de x:");
scanf ("%lf",&x);
getchar ();
printf ("Digite o valor de y:");
scanf ("%lf",&y);
getchar ();
z=x+y;
printf ("z e igual a: %lf\n",z);
getchar ();
return 0;
}
FIGURA3.2.1Cdigofontedasomade2nmeros.
AParte3docdigofonteacima,ondecontmumadas4operaesbsicasdamatemticaeo
seu funcionamento na linguagem C. Primeiramente, se escreve o cdigofonte no editor de texto puro j
mencionadoesalvaoarquivocomonome:programa002.c.Assim,osprogramasapresentadosnestetrabalhosero
armazenadosemordemcrescentededificuldade.
Osnmeroseletrasdoalfabetopodemterdiversossignificadoseparaseatribuirovalordeum
nmero a uma letra ou palavra, se deve declarlas no cdigofonte. Veja a tabela abaixo para entender alguns
padresquealinguagemCutiliza:
TABELA3.2.1(pgina18ApostilaCursodeLinguagemCUFMG)
Tipo Formatoparaleituracom
scanf
Intervalo(Incio) Intervalo(Fim)
char %c 128 127
unsignedchar %c 0 255
signedchar %c 128 127
int %i 32.768 32.767
unsignedint %u 0 65.535
signedint %i 32.768 32.767
shortint %hi 32.768 32.767
unsignedshortint %hu 0 65.535
signedshortint %hi 32.768 32.767
longint %li 2.147.483.648 2.147.483.647
signedlongint %li 2.147.483.648 2.147.483.647
10
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
unsignedlongint %lu 0 4.294.967.295
float %f 3,4E38 3,4E+38
double %lf 1,7E308 1,7E+308
longdouble %Lf 3,4E4932 3,4E+4932
Agora, basta entender cada linha do cdigofonte escrito. Veja que aps declarada a funo
main,foiafirmadanadeclaraodoublex,y,z;quex,y,zassumiramumvalornumricodotipodouble.O
tipo double informa que as variveis declaradas se encontram com um intervalo numrico entre 1,7E308 e
1,7E+308,ouseja,essesseroosvaloresmximoemnimosadmitidosduranteosclculos.Apsadeclaraodex,
yez,bastaimprimirnatelaoprximopassonaexecuodoprograma.informadoqueousuriodeveentrarcom
ovalordexquesersomadocomoutronmero.
Paraaentradadovalordex,utilizadaafunoscanfquearesponsvelporarmazenar
todasasinformaesdeentradapeloteclado.Afunoscanfnaentradadovalordex,explicaqueeleserum
doubleequeseuvalorficararmazenadoemx.Vejaalinhadessafunomaisumavez:
scanf(%lf,&x);
Vejaquedentrodafunoscanfseapresentam2termosbastanteinteressantesquedevemser
explicadosagora.Oqueseencontradentrodeaspas%lfsereferequeotermoxserdevalordouble,pois
lf seria igual a long float. Mas o termo long float o mesmo que double. A linguagem C faz essas
diferenas quesero percebidasaolongo dosexemplos apresentadosnos captulos subseqentes. O termo&x
apresentadoapsavrgula,significaqueovalordexserdigitadonotecladoequeassumirotipodenmero
designadoantesdavrgula.Podeparecerumpoucocomplicadoeconfuso,masalinguagemCporincrvelque
parea a mais fcil de ser compreendida pela maiorias das pessoas que buscam aprender um linguagem de
programao.
Continuandoaexplicaodocdigofonte,afunogetchar()apresentadalogoemseguida,
poisesperaqueousuriopressioneateclaEnterdotecladoparacontinuarcomaexecuodoprograma.Omais
importantedafunogetchar()nomomentoapausaqueelaprovocaduranteaexecuo.
Podeseperceberqueasprximas3linhasdepoisdaexecuodafunogetchar()arepetio
deentradadeumvalor,masagoradoyqueovalorasersomadocomox.Continuandocomalinhaque
determinaovalordez,queoresultadodaoperaomatemtica,seobtm:z=x+y.Note,quenonecessrio
informarotipodedadodoz,poiselejfoideclaradonoinciodoprograma.
Agoravejaaformadecomomostradoovalordez,jcalculadopelasomadosvaloresdexe
y:
printf("zeiguala:%lf\n",z);
Simplesmente, ser impresso na tela a frase z e igual a: com o valor de z sendo do tipo
doubleechamadoparaaposioemque%lfseencontra.Apsavrguladigitamosotermosqueserchamado
paraaposio,esepercebequeovalordez.Umdetalheimportantesoasaspasutilizadasnoincioefimda
frasequesedesejaimprimirnatela.
Depoisdetodosessespassosexplicados,deveseinserirafunogetchar()maisumavezpara
pausaraexecuo.Alinhaseguinte,serveparaencerraroprogramaapresentado,poisafunoreturn0apresenta
osignificado de exitnessasituao. Masela sermelhorabordadanos exemplosdos captulosposteriores. O
return0pararetornarovalordezeroparaafunomainquelogoentenderqueparaovalorzerosedeve
encerraroprograma.
A operao desoma apresentadapode sersubstitudapelasoutras 3 operaesda Matemtica,
bastandosubstituirosinaldeoperao.
3.3Entendendoasfunestrigonomtricas
Oseo3.3trs2exemplosparaautilizaodasrelaestrigonomtricas.Oprimeiroexemplo
podeserconsideradoaformamaissimplesdeseusarfunesseno,cossenoetangente.Josegundoexemplo,
apresentaoconceitodeumafunopreviamentedefinidaechamadaquandonecessria.umpoucocomplicadode
se entender no segundo exemplo, mas de grande importncia para a reduo do nmero de linhas e elevar a
11
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
elegnciadocdigofonteescrito.
O primeiro exemplo trs o simples clculo do seno de um nmero, mas a linguagem C no
trabalhacomgraus,esimcomradianos.Logo,necessriofazeratransformaodonguloantesdafunosenoou
dentrodela.Observeoprimeiroexemplo:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//-----------------------------------
main ()
{
double x, y;
printf("\nEntre com o ngulo em graus para calcularmos o seno:");
scanf("%lf",&x);
getchar();
y = sin((x*M_PI)/180);
printf ("\nO valor do seno e: %lf\n",y);
getchar();
return 0;
}
FIGURA3.3.1Cdigofontedeprogramaparaconversodengulos.
Notequena11linhadocdigofonte,estatransformaodongulopararadianosdentroda
funoseno.Essaaformamaissimplesdeseentendereutilizar,masaquantidadedelinhaseaconfusoquando
aplicadaemumaequaomaiscomplexabemntida,assim,eladeixadeserinteressante.Asadaseriaescrever
umafunoentreocabealhoeafunomaindocdigofonte.Vejaosegundoexemplo:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//------------------------------------------------------
double DegToRad (double x)
{return (x*M_PI/180);}
//------------------------------------------------------
main ()
{
double x, y;
printf("\nEntre com o ngulo para calcularmos o seno:");
scanf("%lf",&x);
getchar();
y = sin(DegToRad(x));
printf ("\nO valor do seno e: %lf\n",y);
getchar();
return 0;
}
FIGURA3.3.2Cdigofontedeprogramaalternativoparaconversodengulos.
Otrechodacriaodafunoestnaprimeiracaixadetexto,exatamenteentreoCABEALHO
eoDESENVOLVIMENTO,esuaaplicaonasegundacaixadetexto.visvelamelhoranaescrita,poistodas
asvezesquefornecessriaatransformaodeumngulopararadianosnasfunestrigonomtricas,bastachamar
DegToRad().AescolhadaexpressoDegToRadparaficardefcilentendimentoafraseDegreetoRadian,
quetraduzindoparaalnguaportuguesa,significaGrausparaRadianos.possvelcriarfunesdediversostipos.
Valeressaltarnessemomentoqueessemtododecriaodefunesserbastantetilnacriaodecdigosfonte
emblocos.
ParaexplicaroqueocorrecomafunoDegToRad,importanteentenderasuaestruturano
trechonaprimeiracaixadetexto:
doubleDegToRad(doublex)
{return(x*M_PI/180);}
declarado que a a funo DegToRad do tipo double e retornar um valor x do tipo
double.Emseucorpo,foiinformadoqueovalorderetornodeveserovalorx,massendomultiplicadopor
edivididopor180.Issoresulta,exatamente,natransformaodovalordexemradianos.Ouseja,vejaaaplicao
dafuno:
12
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
y=sin(DegToRad(x));
O valor de x inserido na funo main sofre a transformao para radianos devido a funo
DegToRadedessaforma,ovalordosenopodesercalculadodeformacorreta.Apsaescritadoprogramaesua
explicaodefuncionamento,bastacompillo.AcompilaopossuiumdetalhequandoutilizadooSOUbuntu
7.10. Na utilizao do e das funes trigonomtricas necessria a insero do termo lm no final do
comando de compilao do GCC. Essa expresso deve ser usada para forar o compilador a usar a biblioteca
matemticaquepossuiasfunestrigonomtricaseo.Umasugestoparaonomedosarquivosreferentesaos
doisexemplosnessecaptulosoprograma003.ceprograma004.crespectivamente.Vejacomoseriaocomando
decompilaodecadaumdosexemplos:
$gccprograma003.clmonomedesejavel
e
$gccprograma004.clmonomedesejavel
Apsacompilaodoscdigosfonte,aexecuodoprogramasersatisfatriaeosresultadosso
obtidoscom6casasdecimaissignificativas.
13
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
4DIMENSIONAMENTODEISOLAMENTOTRMICOEMLINHADEVAPOR
4.1Introduo
O processo de dimensionamento e escolha de um isolamento trmico em linhas de vapor ou
qualquer outra substncia, deve ser realizado de forma a no apresentar uma perda considervel de material de
construoeassimreduziroscustos.necessrioabordaraformadecomoosclculosdevemserrealizadosepara
tal situao, necessrio o uso de conhecimentos em transmisso de calor. A rotina computacional que
apresentadanodecorrerdocaptulopoderservirdebasepararesoluodesituaesnavidaprofissionaldeum
engenheiro.
4.2Caractersticasdoproblema
Parainiciaraelaboraodeumarotinacomputacionalparaodimensionamentodoisolamentoem
umduto,necessriotomarcomobasealgumasinformaescomo:ofluidoemquesto,omaterialdatubulaoe
os diversos tipos de isolantes trmicos, por exemplo. Esse captulo trata do desenvolvimento de tal rotina
computacionalparaasseguintessituaes:
1. Elaborararotinacomputacionalparaodimensionamentodeumalinhadevaporapartirdaquedade
temperaturadalinha;
2. Poderinverter oprocedimentoecalcularaqueda de temperaturade uma linhadevaporapartir da
espessuradoisolamento.
Odimensionamentodevesercalculadodeformaautomticaapartirdeumconjuntomnimode
dadosdeentradaeconsiderandoqueovaporescoaemregimeestacionrioeplenamentedesenvolvido.Lembrando
queascondiesdetransfernciadecalorporconvecosoassumidasconstantes.
Osresultadosquedevemserapresentadosnofinaldaexecuodoprogramaparaasituao1so:
espessuradoisolamentotrmicocrticaerecomendada,temperaturadasuperfcieexternadoisolamentoepesodo
isolamentotrmicoporunidadedecomprimento. Osresultadosquedevemserapresentadosnofinalda
execuodoprogramaparaasituao2so:espessuradoisolamentotrmicocrtico,quedadetemperaturapor
unidadedecomprimento,temperaturadasuperfcieexternadoisolamentoepesodoisolamentotrmicoporunidade
decomprimento.
Paracomplicarumpoucomaisnaelaboraodoprograma,interessanteaopodematerialda
tubulaoedoisolamentotrmicoempregado.Ocomprimentoedimetrodatubulaotambmsoinseridoscomo
dadosdoprograma.Dessaforma,osoftwarepodeserelaboradodeformamaisabrangente.
4.3Baseterica
A rotina computacional apresenta duas possibilidades de clculo de espessura de isolamento e
quedadetemperaturanalinha,veja:
1Determinaraespessuradeumisolamentotrmicoapartirdaquedadetemperaturadalinha;
2Determinaraquedadetemperaturaapartirdaespessuradeumisolamentotrmico.
Paraasduassituaespropostasnecessriooconhecimentodoqueocorrenalinhadevapor.
Vejaafiguraabaixo:
FIGURA4.3.1Desenhoesquemticodoisolamentotrmicoemumtrechodetubulao.
Para calcular alguma das duas situaes propostas pela rotina computacional, necessrio
14
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
consideraracondutividadetrmicadotubo,doisolamentoeaconvecodoisolamentotrmicocomoambiente.A
taxadeconduotrmicaemsuperfciescilndricasdadapelafrmula:
dr
dT
L k qr = ) 2 (
(4.3.1)
Asresistnciastrmicasdasecocircularquedevemserconsideradasso:
FIGURA4.3.2Desenhoesquemticodeumcorteumtrechodetubulaocomisolamentotrmico.
Alminadealumnioque,geralmente,envolveoisolamentoparaproteglodaumidadepodeser
desconsiderada, pois a espessura da lmina de aproximadamente 0,3 mm. Logo, o valor da taxa de conduo
trmicapodeserescritacomo:
3 2
1
2
) 2 / 3 ln(
2
) 1 / 2 ln(
r h L k L
r r
k L
r r
T Ti
q
i t
r

+

+


=

(4.3.2)
Eigualandocomumaoutraformadeescreverataxadeconduotrmica:
T c m
r h L k L
r r
k L
r r
T Ti
p
i t
=

+

+


3 2
1
2
) 2 / 3 ln(
2
) 1 / 2 ln(

(4.3.3)
Com essa equao acima, possvel determinar a queda de temperatura isolando o T ou a
espessura do isolamento trmico pela subtrao da expresso matemtica r3 r2. O cdigofonte descrito na
sessoabaixo,apresentatodooprocedimentodasequaesapresentadaspossvelousuriodeterminardurantea
execuodoprogramadiversasvariveisdeprojeto.Aescolhadomaterialdotubo,otipodeisolamento,vazo
mssicadovapor,temperaturadeentradadovaporeoutrasinformaessoexemplosdevariveisquepodemser
inseridas.
4.4Cdigofontecomentadopassoapasso
Ocdigofonteapresentadoporpartes,poisoseucontedonantegraseencontranoApndice
B. Sero apresentados trechos que explicam a funcionalidade do programa, e as partes de complementao do
mesmosoomitidasquandodesnecessriasparaoseuentendimento.
ApsoCABEALHOpadrojmencionadonoscaptulosanteriores,sedevefazeraescolha
entreasduasopesdesoluodoprogramaouafinalizaodomesmo.Umoutrodetalheadescriodotermo
inicio:,eleoresponsvelpelareinicializaodoprograma.Veja:
15
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
main ()
{
inicio:
printf ("\n DIMENSIONAMENTO DE ISOLAMENTO TERMICO EM LINHA DE VAPOR");
printf ("\n\n\n 1 - Determina a espessura do isolamento a partir da queda de
temperatura.");
printf ("\n 2 - Determina a queda de temperatura a partir da espessura do isolamento.");
printf ("\n 3 - Finalizar o programa.");
printf ("\n\n\n Escolha a Situacao:");
Aescolharealizadapelaadiodeumacondiochamadaif,queapresentaosignificadode
se em portugus. Com os valores de 1 at 3 de acordo com as opes mencionadas no incio do programa.
Observe:
int x;
scanf ("%d",&x);
if (x==1)
{
O incio da condio caso seja escolhida a primeira opo de execuo do programa, com a
declarao de variveis da Equao 4.3.3. Note que todos os valores so do tipo double, assim, possvel se
trabalharcomumintervalobastanteconsidervel.Perceba:
double R1, R2, R3, KI, KT, H, L, VAZAO, Cp, e, vazao,
C0, C1, C2, C3, Teta, TI, TA, Tsi, RC, Funcao, T_int, T_ext,
PESO, Qr, dT, Ro, G, Eiso, dTporL, L1, L2, T1, T2;
Apsadeclaraodasvariveisdentrodaprimeiracondioif,diversosvaloressoperguntados
einseridosnamemria.Dessaforma,asvariveisassumemoseuvalorouservemdebaseparavaloresdeoutras
variveis.Aespecificaododimetroexternodotubo,espessuradaparededotubosovariveisnecessriasparao
clculodavarivelresponsvelpeloraiointernodotubo.Veja:
printf ("\n Espeficique a diametro externo do tubo (m): ");
scanf ("%lf",&R2);
printf (" Especifique a espessura da parede do tubo (m): ");
scanf ("%lf",&e);
R1 = R2-e;
O prximo passo dentro da primeira condio a escolha do material do tubo que compe a
tubulao.Depoisdasmensagensinformativasdasopesdostubos,criadaumaseqnciadecondiesdotipo
if,novamente,paraaescolhadacaractersticadocoeficientedecondutividadetrmicaporconduo.Observe:
printf ("\n Escolha o material do tubo:\n");
printf (" 1 - Tubo de aco carbono ANSI 1010.\n");
printf (" 2 - Tubo de aco INOX ANSI 304.\n");
printf (" 3 - Tudo de bronze comercial.\n");
printf (" Escolha: ");
int KTubo;
scanf ("%d",&KTubo);
if (KTubo == 1)
{KT = 63.9;} //Tubo de ao carbono ANSI 1010.
if (KTubo == 2)
{KT = 14.9;} //Tubo de ao INOX ANSI 304.
if (KTubo == 3)
{KT = 52;} //Tubo de bronze comercial.
16
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
Agora, o mesmo procedimento para a escolha do tipo de isolamento trmico e a adio da
caractersticadedensidade.Perceba:
printf ("\n Escolha o material do isolamento termico:\n");
printf (" 1 - Manta de la de vidro.\n");
printf (" 2 - Tubo bi-partido de la de rocha.\n");
printf (" 3 - Flocos de la de rocha.\n");
printf (" Escolha: ");
int KIsolamento;
scanf ("%d",&KIsolamento);
if (KIsolamento == 1)
{KI = 0.025;
Ro = 40;}
if (KIsolamento == 2)
{KI = 0.046;
Ro = 130;}
if (KIsolamento == 3)
{KI = 0.037;
Ro = 60;}
Logoemseguida,ovalordocoeficientedeconvecoexternaadotadoemaisinformaesso
pedidascomo:comprimentodatubulao,vazomssicadovapor,temperaturasinternaeexternadatubulao.
Veja:
H = 30; //Coeficiente de conveco externa.
printf ("\n Informe o comprimento da tubulacao (m): ");
scanf ("%lf",&L);
printf (" Informe a vazao massica do vapor (kg/s): ");
scanf ("%lf",&vazao);
VAZAO = vazao/3600;
printf (" Informe a temperatura do vapor (oC): ");
scanf ("%lf",&T_int);
printf (" Informe a temperatura do ambiente (oC): ");
scanf ("%lf",&T_ext);
Aps a entrada de todas as informaes, as equaes abaixo fazem outros clculos como a
conversodatemperaturadeCparaK.Valeressaltarqueovalordovapornodeveultrapassarointervalode250
K1200K,poisosvaloresdasconstantesC0,C1,C2eC3paraoclculodocalorespecficoCpestofixadosno
cdigofonte.Percebaquenotrechoabaixo,tambmdeclaradoovalordagravidadeparaoclculodopesodo
isolamento.Observe:
TI = T_int+273.15;
TA = T_ext+273.15;
Teta = TI/1000;
C0 = 1.79;
C1 = 0.107*Teta;
C2 = 0.586*Teta*Teta;
C3 = -0.2*Teta*Teta*Teta;
G = 9.81;
Cp = (C0+C1+C2+C3)*1000;
Abaixo,contmumadasformasdesecalcularovalordoisolamentotrmicoapartirdaquedade
temperaturanalinha.OmtodoaplicadofoiaaproximaodosdoisladosdaEquao4.3.3, poisovalordoraio
externo do isolamento trmico assumido, inicialmente, exatamente igual ao raio externo do tubo selecionado.
Dessaforma,acondiowhile,quepossuiosignificadodeenquantoemportugus,aplicadaparaqueocorra
oincrementode0,0000001novalordoraioexternodoisolamento.Assim,ocorreumlooping dentrodacondio
whileatqueovalordoraioexternodoisolamentopermitaaveracidadedaigualdadedaEquao4.3.3.Ento,
encontrado o valor do raio externo do isolamento, fcil de encontrar o valor da espessura do isolamento pela
17
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
expressoEiso=R3R2.Perceba:
R3 = R2;
printf (" Informe a queda de temperatura na linha (oC/m):");
scanf ("%lf",&dTporL);
Funcao = ((TI-TA)/((((log(R2/R1)))/(2*M_PI*KT*L))+(((log(R3/R2)))/(2*M_PI*KI*L))+(1/
(H*2*M_PI*R3*L))))/(VAZAO*Cp);
while (((dTporL*L)/Funcao)<1)
{
R3 = R3+0.0000001;
Funcao = ((TI-TA)/((((log(R2/R1)))/(2*M_PI*KT*L))+(((log(R3/R2)))/(2*M_PI*KI*L))+(1/
(H*2*M_PI*R3*L))))/(VAZAO*Cp);
}
Eiso = R3-R2;
Apsoclculodaespessuradoisolamentotrmico, oprogramacontinuaaresolveraprimeira
condio if caso tenha sido escolhida a primeira opo de soluo. E o passo seguinte, a impresso dos
resultadoseoclculodealgumasinformaesteisprovenientesdoprocessodedimensionamentodoisolamento.A
temperaturaexternadoisolamento,opesodoisolamentoporunidadedecomprimentoeoraiocrticodoisolamento
soexemplosderespostasquepodemseradquiridascomoprograma.Veja:
printf ("\n Espessura do isolamento recomendada ========================> %5.4lf (m)",
Eiso);
L1 = log(R2/R1);
L2 = log(R3/R2);
T1 = (L1*H*R3)/KT;
T2 = (L2*H*R3)/KI;
Tsi = ((TI/(T1+T2))+TA)/((1/(T1+T2))+1)-273.15;
printf ("\n Temperatura da superficie externa do isolamento ============> %5.2lf oC",
Tsi);
PESO = G*Ro*(R3*R3-R2*R2)*M_PI;
RC = (KI/H);
printf ("\n O peso do isolamento em kgf/m ==============================> %5.3lf N/m",
PESO);
printf ("\n O raio critico do isolamento ===============================> %5.5lf m", RC);
Um outro detalhe que vale ressaltar a influncia do raio crtico na escolha e utilizao do
isolamentotrmico.Paraadefiniodoraiocrticosendomaioroumenorqueoraiointernodotuboinseridaa
condioifjconhecida,eemseguidaacondioelseparaacomplementao.Apsadefiniodoraiocrtico
emrelaoaoraiointernodotubo,acontinuaodoprogramaseguecomocomandogotoinicio;quesetratada
voltadeexecuodoprogramaparaotermoinicio:.Veja:
if (RC<R1)
{
printf ("\n\n Como o raio do tubo e maior do que o raio critico, qualquer adicao de");
printf ("\n camadas de isolamento ira aumentar a resistencia total e portanto");
printf ("\n diminuindo a perda de calor.");
}
else
{
printf ("\n\n Como o raio do tubo e menor que o raio critico, a resistencia total");
printf ("\n diminui e, portanto, a taxa de calor aumenta com a adicao de camadas");
printf ("\n de isolamento.");
}
printf ("\n\n\n Pressione a tecla ENTER para reiniciar.");
getchar();
getchar();
goto inicio;
}
Agora,aresoluodasegundaopodoprogramaexplicada.Percebaqueasegundaopose
iniciapelacondioif.Observe:
18
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
if (x==2)
{
A declarao de todas as variveis necessria, pois a condio if trata o cdigofonte com
ramificaesindependentes.Assim,existeanecessidadededeclarartudonovamente,masbastacopiaradeclarao
jrealizadanacondioifinicial.Perceba:
double R1, R2, R3, KI, KT, H, L, VAZAO, Cp, T1, T2, T_int, T_ext,
C0, C1, C2, C3, Teta, TI, TA, Tsi, RC, L1, L2, e, vazao,
D1, D2, PESO, Qr, dT, Ro, G, Eiso, dTporL, Q1, Q2, Q3;
Os passos seguintes so os mesmos da primeira condio j apresentada. Perceba que nesse
segundocaso,aEquao4.3.3precisaterovalordaquedadetemperaturaisoladaparaoclculo.Clculobem
maisfcildoquenaprimeiraopo.Veja:
printf ("\n Especifique a diametro externo do tubo (m): ");
scanf ("%lf",&R2);
printf (" Especifique a espessura da parede do tubo (m): ");
scanf ("%lf",&e);
R1 = R2-e;
printf ("\n Escolha o material do tubo:\n");
printf (" 1 - Tubo de aco carbono ANSI 1010.\n");
printf (" 2 - Tubo de aco INOX ANSI 304.\n");
printf (" 3 - Tudo de bronze comercial.\n");
printf (" Escolha: ");
int KTubo;
scanf ("%d",&KTubo);
if (KTubo == 1)
{KT = 63.9;} //Tubo de ao carbono ANSI 1010.
if (KTubo == 2)
{KT = 14.9;} //Tubo de ao INOX ANSI 304.
if (KTubo == 3)
{KT = 52;} //Tubo de bronze comercial.
printf ("\n Escolha o material do isolamento termico:\n");
printf (" 1 - Manta de la de vidro.\n");
printf (" 2 - Tubo bi-partido de la de rocha.\n");
printf (" 3 - Flocos de la de rocha.\n");
printf (" Escolha: ");
int KIsolamento;
scanf ("%d",&KIsolamento);
if (KIsolamento == 1)
{KI = 0.025;
Ro = 40;}
if (KIsolamento == 2)
{KI = 0.046;
Ro = 130;}
if (KIsolamento == 3)
{KI = 0.037;
Ro = 60;}
H = 30;
printf ("\n Informe o comprimento da tubulacao (m): ");
scanf ("%lf",&L);
printf (" Informe a vazao massica do vapor (kg/s): ");
scanf ("%lf",&vazao);
VAZAO = vazao/3600;
printf (" Informe a temperatura do vapor (oC): ");
scanf ("%lf",&T_int);
printf (" Informe a temperatura do ambiente (oC): ");
scanf ("%lf",&T_ext);
TI = T_int+273.15;
TA = T_ext+273.15;
Teta = TI/1000;
C0 = 1.79;
C1 = 0.107*Teta;
C2 = 0.586*Teta*Teta;
19
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
C3 = -0.2*Teta*Teta*Teta;
G = 9.81;
Cp = (C0+C1+C2+C3)*1000;

Agora,bastaentrarcomovalordaespessuradoisolamentoparaaexecuorestantedoprograma
elaborado. Perceba que so recalculados todos os itens da primeira condio, novamente, mas com o valor da
espessuradoisolamentodesignadapeloousurio.Observe:
printf (" Espessura do isolamento desejado (m):");
scanf ("%lf",&Eiso);
R3 = R2+Eiso;
L1 = log(R2/R1);
L2 = log(R3/R2);
D1 = 2*M_PI*KT*L;
D2 = 2*M_PI*KI*L;
Q1 = L1/D1;
Q2 = L2/D2;
Q3 = 1/(2*M_PI*R3*H*L);
Qr = (TI-TA)/(Q1+Q2+Q3);
dT = (Qr)/(VAZAO*Cp);
dTporL = dT/L;
T1 = (L1*H*R3)/KT;
T2 = (L2*H*R3)/KI;
Tsi = ((TI/(T1+T2))+TA)/((1/(T1+T2))+1)-273.15;
PESO = G*Ro*(R3*R3-R2*R2)*M_PI;
RC = (KI/H);
printf ("\n A queda de temperatura na linha por unidade de comprimento => %5.9lf oC/m",
dTporL);
printf ("\n Temperatura da superficie externa do isolamento ============> %5.2lf oC",
Tsi);
printf ("\n O peso do isolamento em kgf/m ==============================> %5.3lf N/m",
PESO);
printf ("\n O raio critico do isolamento ===============================> %5.5lf m", RC);

Adefiniodoraiocrticoencontradomaisumavezapresentadaeareinicializaodoprograma
executadaparaseescolher,novamente,asopesouafinalizaodoprograma.Note:
if (RC<R1)
{
printf ("\n\n Como o raio do tubo e maior do que o raio critico, qualquer adicao de");
printf ("\n camadas de isolamento ira aumentar a resistencia total e portanto");
printf ("\n diminuindo a perda de calor.");
}
else
{
printf ("\n\n Como o raio do tubo e menor que o raio critico, a resistencia total");
printf ("\n diminui e, portanto, a taxa de calor aumenta com a adicao de camadas");
printf ("\n de isolamento.");
}
printf ("\n\n\n Pressione a tecla ENTER para reiniciar.");
getchar();
getchar();
goto inicio;
}
Altimacondioifquesereferesopesiniciaisdeapresentaodoprograma,responsvel
somenteparaafinalizaodomesmo.Percebaqueotermoreturn0utilizadoparatalsituao.Veja:
if (x==3)
{
return 0;
}
getchar();
20
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
return 0;
}
As possibilidades para alterao e melhorias do programa apresentado nesse captulo so
inmeras.Oprogramapodesofreroacrscimodemateriaisparaisolamentotrmico,tubosdeoutrosmateriaispara
alinhadevapor,oacrscimodenovosfluidoseetc,soalgumasopesdemelhoriaseexpansesquepodemser
citadas.
21
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
5PROJETODEUMTROCADORDECALORDOTIPO
CASCOETUBOS(GUALEO)
5.1Introduo
Oprojetodetrocadoresdecalordegrandevaliaparaaprofissionaisnareadeengenharia,seja
umEngenheiroMecnicoouEngenheiroQumico.Ostrocadoresdecalorsoutilizadosemsuagrandemaiorianas
indstrias qumicas para resfriar ou aquecer uma determinada substncia. Um exemplo bem tpico e fcil de
demonstrarautilizaodesseequipamentoparaoaquecimentodeguanaentradadeumacaldeira,assim,agua
entrapraquecidanoafetandodeformabruscaofornecimentodevapordacaldeira.Essecaptulodemonstraa
elaboraodeumarotinacomputacionalparaoprojetodeumtrocadordecalordotipocascoetubo.
FIGURA5.1.1Vistadecortedeumtrocadordecalordotipocascotubo.
Paraseterumproblemapalpvelnecessrioescolherlquidoscomsuaspropriedadesemtabelas
conhecidas.Paraexemplificararotinacomputacionaldestecaptulo,assubstnciasescolhidasso:guaeleode
motor.Sendooleocomoofluidodemaiortemperaturaequeserresfriadopelaperdadecalor.
5.2Caractersticasdoproblema
Oproblemacomumenteencontradoparaoprojetodeumtrocadordecaloraausnciadealguns
dadosiniciais.Aspossibilidadesdeconfiguraodeumtrocadordecalorcascotubosoinimaginveisparaum
mesmoproblema.Aexperinciaeaprticaconstantenoprojetoedimensionamentodetrocadoresdecalorlevao
projetistaaumaproximidadedamelhorrelaoentrecustoebenefcio.
Umtimoproblemaparaaelaboraodeumarotinacomputacionaldeumtrocadordecalordo
tipocascotuboparaarrefecimentoesemmudanadefase.Fluidoscomoagua,queutilizadaparaoresfriamento
deumleodemotorutilizadonalubrificaodeumcompressorbastantecomum.Arotinacomputacionaldeste
captulotrsaresoluodesseproblema.Osdadosdoleodemotoraserconsideradoso:
Atemperaturadeentradanotrocadorde95Cesuasadacom60Ccomumavazode75litrospor
minuto;
Oleodemotorpassapelocasco,poisgeralmenterecomendadoqueofluidoquentepasseporentreo
feixedetubos;
Consideraesadicionaiscomo:dimetrodobocaldeentradaesadadoleo,adiodechicanas,opes
deintervalosdetemperaturaeoutrasinformaes,socargodoprojetista.
Osdadosdaguapararesfriamentodoleodeveterasseguintescaractersticas:
Entradaatemperaturaambiente;
Elapassapelofeixedetubosfazendocomqueocorraatrocatrmicacomoleo;
Odimetrodostubosparaapassagemdaguadedefiniodoprojetista;
Omaterialdostubosconsideradopeloprojetista;
Outrasconsideraesficamacargodoprojetista.
Paraaelaboraomaisfacilitadadarotinacomputacional,podeseadmitirqueodimetrodocasco
podeserescolhidoentre3e12eseucomprimentoente350mme3050mm.Omaterialdocasco,tampos,bocais
eoutrosacessriosficaacargodoprojetista.
22
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
Comalgunsdosparmetrosjdescritos,ficamaisfcildeseelaborararotinacomputacional.
interessante que o programa fornea dados auxiliares como: rea de troca trmica, coeficiente global de
transfernciadecalor,excessodotrocadoreoutros.Noprximoitem5.3Baseterica.humadasformasdese
realizarumprogramaparaoprojetodotrocadordecalor.
5.3Baseterica
Antesdeprosseguircomaelaboraodarotinacomputacional,precisocompreenderaseqncia
deresoluo.Primeiramente,necessriofazeralgumasconsideraescomo:
Oleopassadoladodocascoeaguapordentrodostubosdofeixe;
Aguaeoleoapresentamsuascorrentesemsentidoscontrriosdevidoamaiortrocatrmica;
Oescoamentodosfluidosseencontraplenamentedesenvolvido;
Perdadecalorparaavizinhana,variaesdeenergiacinticaepotencialdesprezadas;
Resistncia trmica da parede dos tubos do feixe so desprezveis, pois devese considerar um tubo
delgado;
Regimeestacionrio;
Noocorregeraodetrabalho;
Perdadecargadesprezvel.
Umdetalheimportanteparaasermencionadoquearotinaabaixoelaboradaparaoclculodo
comprimentodocascodotrocadordecalor.Dessaforma,ousuriodoprogramaentrarcomosdadosdoslquidos
efaralgumasescolhassobreadimensodotrocadordecalor.Oresultadosqueseroapresentadosserviropara
umaanlisecrticaquevisaaviabilidadedoprojeto.
So utilizadas para os clculos as tabelas com as propriedades da gua e do leo de motor,
encontradasemdiversoslivrosdetransmissodecalor,poissernecessrioainterpolaodediversosvalores.Para
seiniciaroprocedimentodeclculonecessriooclculodastemperaturasmdiasdaguaedoleo.Vejaas
equaes:
T
m ,c
=
(T
i , c
+T
o, c
)
2
(5.3.1)
e
T
m ,t
=
(T
i ,t
+T
o, t
)
2
(5.3.2)
A Equao 5.3.1 representa a temperatura mdia da gua que ser aquecida e a Equao 5.3.2
representaatemperaturamdiadoleoqueserresfriado.Assimatrocatrmicaocorrernosentidoleo>gua,ou
seja,ocalorserretiradodoleoeabsorvidopelagua.
Para dar incio a resoluo do problema, necessrio escolher a substncia na qual ir ser
calculadaprimeiramente.apresentadaapartirdeagoraametodologiadoleoquepassapelocascodotrocadorde
calor.
Ocalorextradocalculadopelaequao:
q= mc
p
(T
i , c
T
o ,c
) (5.3.3)
Onde o primeiro termo a quantidade de calor extrada em KJ/s, o segundo tratase da vazo
mssicaemkg/s,oterceiroocalorespecficoemKJ/kg.K,eoquartotermorepresentaadiferenadetemperatura
dasubstncia.Notequeadiferenadetemperaturaexatamenteovalordeentrada,subtradodovalordesadada
substnciaemquesto.Fazendooclculoparaoleoqueentranocascodotrocadordecalor,seobtmovalordo
calorextradoemKJ/squeserutilizadomaisadiante.
Oprximopassooclculodavelocidadedoleonocasco.Veja:
v
c
=
w
A
b
(5.3.4)
Oprimeirotermodaequaoavelocidadedoleonocascoemm/s,oterceirotermoque a
23
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
vazo volumtrica em m/s que est se comportando como numerador e o quarto termo se trata rea da seo
transversaldobocaldeentradadoleoemm.
Apsoclculodavelocidadedoleonocasco,necessriooclculodavelocidademximado
leonocascoparaseprosseguircomodesenvolvimento.Veja:
v
max
=
P
( PD
t
)
v
c
(5.3.5)
O primeiro termo representa a velocidade mxima que o leo atingir em m/s. O termo
representadopelaletraPserefereaopassolongitudinaldofeixeetubosdotrocadordecalor.Segundoanormal
TEMA(TubeExchangeMaterialsAssociation)umvalorquesepodeadotarparaumpassolongitudinaldotubos
utilizadosnofeixedotrocadornointervalode3/8at5/83/4.Essevalorde3/4representaadistnciaentre
centrosdostubosdofeixetubulardotrocadordecalor.Lembrandoqueoarranjoconsideradoparaosclculosdo
tipoquadrangular.
Otermoquesubtraiopassolongitudinaloprpriodimetrodostubosutilizadosnofeixetubular
dotrocadordecalor.Porfim,otermofinalavelocidadedoleojcalculadaemencionadaanteriormente.Uma
observaoquesedevefazeragora,sobreaunidadeadotadanopassoenodimetrodotubodofeixetubular,todas
elassoemmetros.
Comosdados calculados atomomento, se podecalcularovalordonmerode Reynoldsno
cascopelaequao:
Re
D ,c
=
(j
c
v
max
D
t
)
j
c
(5.3.6)
Lembrandoqueametodologiadeclculoapresentadoparaacriaodeumtrocadordecalorno
intervalodadoinicialmente.
Otermoquemultiplicaavelocidademximaeodimetroexternodostubosquecompeofeixe
tubular do trocador de calor a densidade especfica do fluido em kg/m, e o denominador da equao a
viscosidadedinmicaemN.s/m.LembrandoqueonmerodeReynoldsadimensional.
OprximopassooclculodonmerodeNusselt,masparaissosedeveconhecerafrmula.
Veja:
Nu
D, c
=C( Re
D
)
m
( Pr )
n

(
Pr
Pr
s
)
0,25
(5.3.7)
VejaqueostermosmensoencontradosapartirdovalordonmerodeRaynoldscalculado
anteriormente.Vejaatabela:
TABELA5.3.1(TransmissodeCaloredeMassaIncroperaeDeWitt)
Re
D
m n
1100 0,40 0,36
1001000 0,50 0,36
10
3
2x10
5
0,63 0,36
2x10
5
2x10
6
0,80 0,40
OtermoCapresentadonaEquao5.3.7deveserescolhidodeacordocomatabelaabaixo:
TABELA5.3.2(TransfernciadeCaloredeMassaIncroperaeDeWitt)
N
f
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
C 0,7 0,8 0,86 0,9 0,93 0,95 0,96 0,96 0,98 0,98 0,98 0,98 0,99 0,99 0,99
Todas as tabelas apresentadas at o momento se referem a resoluo do problema proposto no
inciodocaptulo.Paraoutrassituaesnecessriotodaumamudananomtododeclculoaplicado,talmudana
podeseraplicadacomoexpansodoprograma.
ApsocalculodonmerodeNusselt,possveldeterminarovalordocoeficientedeconveco
dentrodotrocadordecalorpelocasco.Veja:
24
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
h
c
=
Nu
D
k
c
D
t
(5.3.8)
Encontrado o valor do coeficiente de conveco do casco, o prximo passo encontrar o
coeficientedeconvecodostubos,poisocoeficientedetransfernciaglobalcalculadoapartirdosdoisvalores.
Paradarcontinuidadenecessriocalcularmoscertosvaloreseoprimeirodelesofluxomssiconostubosdo
feixe.Perceba:
m=
q
(c
p ,t
(T
o
T
i
)
t
)
(5.3.9)
Valeressaltarqueovalordeqjfoicalculadoanteriormenteparaocascoeesseomesmo
aplicadoparaofeixedetubos.Ovalordocalorespecficoparaofluidodostubosadquiridodamesmaformaque
ofluidodocasco,atravsdetabelaseporinterpolaoquandonecessriaeapresentadonasmesmasunidadesj
mencionadas. O termo (T
o
T
i
)
t
exatamente a diferena de temperatura de entrada e sada do fluido que
desejamos.
AgoranecessriooclculodonmerodeReynoldspelaequaoabaixo.Veja:
Re
D ,t
=
4 m
t
( N
t
nD
t
j)
(5.3.10)
OstermosqueaindanoforammencionadossoNtquerepresentaonmerodetubosdofeixe,
eoquetabeladodeacordocomofluidoe,geralmente,encontradonasunidadesN.s/m.Agoracomovalordo
nmerodeReynolds,necessriocalcularonmerodeNusseltpelafrmulaabaixo.Observe:
Nu
D ,t
=
(
f
8
)
( Re
D ,t
1000)Pr
t
(
1+12,7
(
f
8
)
1/2
( Pr
t
2/3
1)
)
(5.3.11)
Sendoovalordefcalculadopelafrmula:
f =(0,790ln( Re
D ,t
)1,64)
2
(5.3.12)
OvalordePronmerodePrandtldofluidoequepodeserobtidoportabelasdepropriedades
dofluidoatravsdeinterpolaosimples.Apsosclculosrealizados,possvelrealizaroclculodocoeficientede
convecodostubosatravsdaequaoabaixo:
h
t
=
Nu
D ,t
k
t
D
t
(5.3.13)
Agora possvel se calcular o coeficiente global de transferncia de calor que servir para o
clculodocomprimentofeixedetubos.Vejaafrmulaabaixodocoeficienteglobal:
U=
(
1
h
c
+
1
h
t
)
1
(5.3.14)
Osclculosapartirdeagora,sovisadosparaencontrarovalordocomprimentodofeixetubular
quepodeserconsideradocomooprpriocomprimentodotrocadordecalor.Apartirdovalordocomprimentodo
feixe,umaanlisepodeserrealizadaparaadmissoourecusadotrocadordecalorcalculadopeloprograma.Vejao
procedimentodoclculodocomprimentodofeixedetubos:
25
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
L
t
=
q
(PassoN
t
UnD
t
F
cr
AT
lm,CF
)
(5.3.15)
OndeoF
cr
calculadopelaequao:
F
cr
=
( R
2
+1)
0,5
ln
(1SR)
(1S)
(1R)ln
(2S)( R+1( R
2
+1)
0,5
)
(2S)( R+1+( R
2
+1)
0,5
)
(5.3.16)
EosvaloresdeReSpodemserencontradospor:
S=
(T
o, t
T
i ,t
)
(T
i ,c
T
i ,t
)
(5.3.17)
e
R=
(T
i , c
T
o,c
)
(T
o, t
T
i ,t
)
(5.3.18)
Agora,faltaapenasencontrarovalordatemperaturalogartmicapelaequao:
AT
lm, CF
=
(
(T
i ,c
T
o ,t
)(T
o, c
T
i , t
)
)
(
ln
(T
i , c
T
o,t
)
(T
o, c
T
i ,t
)
)
(5.3.19)
Comasequaesacimapossvelseencontrarocomprimentodofeixetubular,dessaformabasta
realizarumaanlisedosresultado.Abaixo,segueocdigofontedoprogramaparaoclculodocomprimentodo
feixetubular.
5.4Cdigofontecomentadopassoapasso
Ocdigofonteabaixoseapresentadeformaresumida,poismuitosdetalhesderepetioforam
substitudosporlinhaspontilhadas.Dessaforma,ocdigofonteparaentendimentonoficacomprometidoenem
extensodemais.
O cdigofonte se encontra, totalmente, comentado como os apresentados at o momento. O
CABEALHO do programa o mesmo j apresentado nos captulos anteriores, logo no ser mostrado
novamente.Assim:
main ()
{
//Declarao de algumas constantes e variveis.
int x, y, w;
double TempHE, dHE, cpHE, uHE, vHE, kHE, aHE, PrHE, TempHM, PI, TempHEntrada, TempHSaida,
TempHS, dHS, cpHS, uHS, vHS, kHS, aHS, PrHS, mH, U, dTempC, mc, RedTubo, f, factor001,
factor002, NudTubo, ht, R, S, F, factor003, factor004, factor005, factor006, factor007, L,
DeltaTempLM, Atroca, DcascoIN, Razao, VolH2O, NudCasco, hc, mh, q, Dtubo, Dcasco, N,
dTempH, Bocal, P, Nf, C, Passo, m, n, Abocal, Q, V, Vmax, RedCasco, vHM, kHM, aHM, PrHM,
dHM, cpHM, uHM, TempCE, TempCS, TempCM, dCE, cpCE, uCE, kCE, PrCE, dCS, cpCS, uCS, kCS,
PrCS, TempCEntrada, TempCSaida, dCM, cpCM, uCM, kCM, PrCM, Acalculada, Excesso;
Aps a declarao de todas as variveis do programa, interessante fazer uma figura
representativadeumtrocadordecalor.Naexecuodoprogramaaimagemficabemdefinida.Vejacomopodeser
escritaafiguraatravsdecaracteres:
26
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
//Mensagem de informao do programa.
printf ("\n\n SOFTWARE PARA DIMENSIONAMENTO DE");
printf ("\n TROCADOR DE CALOR DO TIPO CASCO E TUBO");
printf ("\n\n ===== \n");
printf (" | | \n");
printf (" |---|----------------------|---| \n");
printf (" | ||====================|| | \n");
printf (" || | ||====================|| | ||\n");
printf (" ||--- ||====================|| ---||\n");
printf (" ||--- ||====================|| ---||\n");
printf (" || | ||====================|| | ||\n");
printf (" | ||====================|| | \n");
printf (" |---|----------------------|---| \n");
printf (" | | \n");
printf (" ===== \n");
interessanteorientaredaralgumasinformaesdoprogramaparaousurio.Assim,ousurio
noterproblemascomosdadosdeentradareferentesastemperaturaseointervalonoqualoprogramacapazde
calcular. importante nesse momento, informar sobre o sentido das correntes de entrada e sada dos fluidos
tambm.Veja:
//Entrada dos valores da temperatura de entrada e sada do leo.
printf ("\n OBSERVACOES:");
printf ("\n 1 - A temperatura do oleo deve estar na faixa de (-0.15 <-> 156.85) oC,");
printf ("\n pois corresponde a tabela encotrada em literatura.");
printf ("\n 2 - A temperatura da agua deve estar na faixa de (0 <-> 91.85) oC,");
printf ("\n pois corresponde a tabela encotrada em literatura.");
printf ("\n 3 - A agua entra pelo feixe de tubos e o oleo pelo casco, isso se deve,");
printf ("\n a literatura recomenda que o fluido quente passe pelo casco.");
printf ("\n 4 - O trocador e do tipo 'contra corrente' pois trocadores desse tipo,");
printf ("\n apresentam melhor troca termica.");
Apartirdeagora,aentradadeinformaeseescolhasparaoprojetodotrocadordecalorseinicia.
Percebacomoocdigofontefoiescritoparapedirastemperaturasdeentradaesadadoleodemotor:
printf ("\n\n Entre com o valor da temperatura de entrada (quente) do oleo (oC): ");
scanf ("%lf",&TempHEntrada);
getchar ();
printf (" Entre com o valor da temperatura de saida (fria) do oleo (oC): ");
scanf ("%lf",&TempHSaida);
getchar ();
Aps a declarao das temperaturas de entrada e sada do leo de motor, necessrio que o
programafaaoclculodatemperaturamdiaeemseguidautilizeatemperaturamdiaparaumainterpolao.Essa
interpolaorealizadaapartirdafunodecondioifquealinguagemCpossui.Vejaotrechodocdigo
fonteabaixo,oiftemosignificadodese.Ouseja,seatemperaturamdiacalculadaatenderaose,osvalores
dedentrodoscolchetesseroassumidosparaasvariveisapresentadas.Naltimalinha,dentrodocolchetedecada
condioapresentadoocomandogoto.Essecomandorepresentaqueapsassumirosvaloresdasasvariveis
dentrodocolchete,ascondiesseguintessodesconsideradasatencontrarnocdigofontealinhacomapalavra
fimTempHE:.Acaixadedilogoabaixoapresentaalgumaslinhaspontilhadas,umaformadefazerrefernciaa
continuidadedosifparaoutrosintervalos.Nointeressantedemostrartodososifparatodasastemperaturas,
masocdigofontecompletoapresentadonoApndiceB.Observe:
//Busca de TempHM pelos valores menores e maiores.
TempHM = (TempHEntrada+TempHSaida)/2;
//1a. parte da interpolao.
if (TempHM<=-0.15)
{TempHE = -0.15;
27
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
dHE = 889.1;
cpHE = 1796;
uHE = 3.85;
vHE = 0.004280;
kHE = 0.147;
aHE = 0.0000000910;
PrHE = 47000;
goto fimTempHE;}
if (TempHM<=6.85)
{TempHE = 6.85;
dHE = 895.3;
cpHE = 1827;
uHE = 2.17;
vHE = 0.002430;
kHE = 0.144;
aHE = 0.0000000880;
PrHE = 27500;
goto fimTempHE;}
..............
..........
.......
...
if (TempHM<=156.85)
{TempHE = 156.85;
dHE = 806.5;
cpHE = 2471;
uHE = 0.00470;
vHE = 0.00000583;
kHE = 0.132;
aHE = 0.0000000662;
PrHE = 88;}
fimTempHE:
Asvariveisencontradasacimasoreferentesaomenorouigualvalordatemperaturalistadaem
umatabelaemrelaotemperaturamdia.Explicandodeformamaisclara,encontradoomenorvaloranteriora
temperaturamdiaeassimadmitidososvaloresdessasvariveis.Dessaforma,apropriedadespodemterovalor
menorouigualdoqueodatemperaturamdiaarmazenadosnamemria.Otrechoabaixofazomesmomtododo
apresentadoacima,masparaencontrarosvaloresreferentestemperaturamaiorouigualtemperaturamdia.Todo
essesistemaumaformadebuscanatabelaporvaloresanterioreseposterioresdaspropriedadesparaoclculopor
interpolaosimplesdasmesmaspropriedadesparatemperaturamdia.
//Continuao da 2a. parte para interpolao.
if (TempHM>=156.85)
{TempHS = 156.85;
dHS = 806.5;
cpHS = 2471;
uHS = 0.00470;
vHS = 0.00000583;
kHS = 0.132;
aHS = 0.0000000662;
PrHS = 88;
goto fimTempHS;}
if (TempHM>=146.85)
{TempHS = 146.85;
dHS = 812.1;
cpHS = 2427;
uHS = 0.00564;
vHS = 0.00000694;
kHS = 0.133;
aHS = 0.0000000675;
PrHS = 103;
goto fimTempHS;}
..............
..........
.......
...
if (TempHM>=-0.15)
{TempHS = -0.15;
dHS = 889.1;
cpHS = 1796;
28
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
uHS = 3.85;
vHS = 0.004280;
kHS = 0.147;
aHS = 0.0000000910;
PrHS = 47000;}
fimTempHS:
Agora,comosvaloresanterioreseposterioresdaspropriedadesreferentesatemperaturamdia.
possveloclculoporinterpolaosimplesparaseencontrarosvaloresdaspropriedadesdatemperaturamdia.
Noteotrechodocdigofonteabaixo:
//Clculos de interpolaes.
vHM = (((TempHM-TempHE)*(vHS-vHE))/(TempHS-TempHE))+vHE;
kHM = (((TempHM-TempHE)*(kHS-kHE))/(TempHS-TempHE))+kHE;
aHM = (((TempHM-TempHE)*(aHS-aHE))/(TempHS-TempHE))+aHE;
PrHM = (((TempHM-TempHE)*(PrHS-PrHE))/(TempHS-TempHE))+PrHE;
dHM = (((TempHM-TempHE)*(dHS-dHE))/(TempHS-TempHE))+dHE;
cpHM = (((TempHM-TempHE)*(cpHS-cpHE))/(TempHS-TempHE))+cpHE;
uHM = (((TempHM-TempHE)*(uHS-uHE))/(TempHS-TempHE))+uHE;
Nessemomento,possvelfazeralgunsclculosparaoleomotor.Antes,necessriaaentrada
davazodeentradadoleo.Observe:
//Entrada do valor da vazo do leo.
printf ("\n Entre com a vazao do oleo (L/min): ");
scanf ("%lf",&mH);
getchar ();
Agora,adefiniodopassoentreostubosdofeixedadapelovalordePnotrechodocdigo
fonte abaixo. O valor de 0,01905 metros uma tima considerao, pois tal admisso foi realizada devido ao
intervalo dos dimetros dos tubos do feixe sugeridos no problema enunciado no incio deste captulo. A
transformaodavazotambmnecessriaepelaseqnciaoclculodadiferenadetemperaturaedaquantidade
decalorporsegundo.
//Clculos a partir da vazo do leo fornecida.
P = 0.01905;
mh = (mH/60)*(dHM/1000);
dTempH = TempHEntrada-TempHSaida;
q = mh*cpHM*dTempH;
Aescolhadodimetrodostubosdofeixetubularnecessrianesseexatomomentoerealizada
pormaisumacondio.Veja:
//Escolha do dimetro do tubo.
printf ("\n Escolha o diametro do tubo do feixe: ");
printf ("\n 1 - Tubo de 3/8 in.");
printf ("\n 2 - Tubo de 1/2 in.");
printf ("\n 3 - Tubo de 5/8 in.");
printf ("\n A escolha e: ");
scanf ("%d",&x);
getchar ();
if (x==1)
{Dtubo = 0.009525;}
if (x==2)
{Dtubo = 0.0127;}
if (x==3)
{Dtubo = 0.015875;}
29
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
Agorasolistadastodasaspossibilidadesdeconfiguraodotrocadordecalordeacordocomos
dadoseparmetrosfornecidospeloproblema.Assim,apsumaescolhaaleatriaosresultadosqueseroobtidose
apresentados pelo programa podem ser analisados de forma mais coerente. O usurio escolher uma das
possibilidadesdeconfiguraoparaosintervalosdadosnoproblemainicial.Veja:
//Escolha a configurao do trocador nos parmetros abaixo.
printf ("\n Escolha a configuracao do trocador de calor: ");
printf ("\n 1 - 12 tubos, 1 passo, 3 in de casco");
printf ("\n 2 - 16 tubos, 1 passo, 3.5 in de casco");
printf ("\n 3 - 16 tubos, 1 passo, 4 in de casco");
..............
..........
.......
...
printf ("\n 22 - 22 tubos, 4 passos, 8 in de casco");
printf ("\n 23 - 37 tubos, 4 passos, 10 in de casco");
printf ("\n 24 - 52 tubos, 4 passos, 12 in de casco");
printf ("\n A escolha e: ");
scanf ("%d",&y);
getchar ();
if (y==1)
{N = 12;
Dcasco = 3*0.0254;
Nf = 4;
C = 0.90;
Passo = 1;}
if (y==2)
{N = 16;
Dcasco = 3.5*0.0254;
Nf = 4;
C = 0.90;
Passo = 1;}
..............
..........
.......
...
if (y==24)
{N = 52;
Dcasco = 12*0.0254;
Nf = 14;
C = 0.99;
Passo = 4;}
Vale salientar que a varivel C apresentada no trecho acima do cdigofonte, a mesma
apresentadanaTabela5.3.2destecaptulo.Oseuvalordependedonmerodefileirasquetambmfoiescolhido
combasenointervalododimetrosdotubosdofeixeeaquantidadedetubos.
Paraoprosseguimentodosclculos,necessriaaescolhadobocaldeentradadoleotrmico.
Dessaforma,possveloclculodareadeentradadobocaleassimavelocidadeeoutrasvariveisnecessrias.
Vejaqueoprocedimentosegueomesmoprincpiojapresentadocomoif:
//Escolha o bocal de entrada do leo.
printf ("\n Escolha o diametro do tubo do bocal de entrada do oleo:");
printf ("\n 1 - Bocal de 1 in");
printf ("\n 2 - Bocal de 1.5 in");
printf ("\n 3 - Bocal de 2 in");
printf ("\n A escolha e: ");
scanf ("%d",&w);
if (w==1)
{Bocal = 0.0254;}
if (w==2)
{Bocal = 0.0381;}
if (w==3)
{Bocal = 0.0508;}
30
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
Com os dados j calculados, possvel dar continuidade no procedimento de resoluo do
problema.Vejaalgunsclculoscomplementares:
//Calculos complementares como: No. de Reynolds, rea da seco do bocal e etc.
Abocal = M_PI*(Bocal/2)*(Bocal/2);
Q = (mH*0.001)/60;
V = Q/Abocal;
Vmax = (P*V)/(P-Dtubo);
RedCasco = (dHM*Vmax*Dtubo)/uHM;
if (RedCasco<=100)
{m = 0.4;
n = 0.36;}
else if (RedCasco<=1000)
{m = 0.5;
n = 0.36;}
else if (RedCasco<=200000)
{m = 0.63;
n = 0.36;}
else if(RedCasco<=2000000)
{m = 0.8;
n = 0.4;}
PercebaqueapartirdoclculodonmerodeReynoldsfoideterminadoosvaloresdemenda
Equao5.3.7.
Agora,oprocedimentorealizadocomoleodemotorparaoclculodaspropriedadesdofluido
repetido para a gua. O valor da temperatura de entrada e sada da gua so inseridos. Efetuase o clculo da
temperaturamdiadaguaeemseguidaomesmoprocessodebuscadosvaloresanterioreseposterioreseoclculo
porinterpolaorealizado.Dessaforma,encontradoosvaloresdaspropriedadesdaguanatemperaturamdia.
Assim:
//Dados de temperatura da gua de entrada e sada desejadas.
printf ("\n Entre com o valor da temperatura de entrada (fria) da agua (oC): ");
scanf ("%lf",&TempCEntrada);
getchar ();
printf (" Entre com o valor da temperatura de saida (quente) da agua (oC): ");
scanf ("%lf",&TempCSaida);
getchar ();
//Busca de TempCM pelos valores menores e maiores.
TempCM = (TempCEntrada+TempCSaida)/2;
//1a. parte da interpolao.
if (TempCM<=0)
{TempCE = 0;
dCE = 1;
cpCE = 4217;
uCE = 0.001750;
kCE = 0.569;
PrCE = 12.99;
goto fimTempCE;}
if (TempCM<=1.85)
{TempCE = 1.85;
dCE = 1;
cpCE = 4211;
uCE = 0.001652;
kCE = 0.574;
PrCE = 12.22;
goto fimTempCE;}
..............
..........
.......
...
if (TempCM<=91.85)
{TempCE = 91.85;
dCE = 1.038;
cpCE = 4209;
31
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
uCE = 0.000306;
kCE = 0.677;
PrCE = 1.91;
goto fimTempCE;}
fimTempCE:


//Continuao da 2a. parte para interpolao.
if (TempCM>=91.85)
{TempCS = 91.85;
dCS = 1.038;
cpCS = 4209;
uCS = 0.000306;
kCS = 0.677;
PrCS = 1.91;
goto fimTempCS;}
if (TempCM>=86.85)
{TempCS = 86.85;
dCS = 1.034;
cpCS = 4203;
uCS = 0.000324;
kCS = 0.674;
PrCS = 2.02;
goto fimTempCS;}
..............
..........
.......
...
if (TempCM>=0)
{TempCS = 0;
dCS = 1;
cpCS = 4217;
uCS = 0.001750;
kCS = 0.569;
PrCS = 12.99;}
fimTempCS:


//Clculos de interpolaes.
dCM = (((TempCM-TempCE)*(dCS-dCE))/(TempCS-TempCE))+dCE;
cpCM = (((TempCM-TempCE)*(cpCS-cpCE))/(TempCS-TempCE))+cpCE;
uCM = (((TempCM-TempCE)*(uCS-uCE))/(TempCS-TempCE))+uCE;
kCM = (((TempCM-TempCE)*(kCS-kCE))/(TempCS-TempCE))+kCE;
PrCM = (((TempCM-TempCE)*(PrCS-PrCE))/(TempCS-TempCE))+PrCE;
O clculo de mais algumas variveis necessrio. No trecho abaixo o clculo da diferena de
temperaturadagua,vazomssica,nmerodeReynoldsdaguadentrodostubosdofeixeeoclculodefque
foiapresentadonaEquao5.3.12.Emseguida,calculadoavarivelfactor001efactor002quesotermos
utilizadosnoclculodonmerodeNusseltparaaguanofeixetubular.Observe:
//Continuao de alguns clculos.
dTempC = TempCSaida-TempCEntrada;
mc = q/(cpCM*dTempC);
RedTubo = (4*mc)/(N*M_PI*Dtubo*uCM);
f = 1/(((0.790*log(RedTubo))-1.64)*((0.790*log(RedTubo))-1.64));
factor001 = (f/8)*(RedTubo-1000)*PrCM;
factor002 = 1+12.7*pow(f/8,0.5)*(pow(PrCM,0.666666666667)-1);
Antes de prosseguir, necessrio falar sobre a funo pow no trecho acima. Essa funo
responsvelpelasoperaesqueenvolvempotncia.Afunopowutilizadadaseguinteforma:
pow(x,y) omesmoque x
y
ApartirdetodososclculosdadospossveldeterminaronmerodeReynoldseonmerode
Nusseltdaguaqueescoapelostubos.Dessaforma,encontradoovalordeh
t
daEquao5.3.8.Veja:
32
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
//Clculo para o No. de Nussent (tubo) a partir da faixa do No. de Reynolds.
if (RedTubo>=2500)
{NudTubo = factor001/factor002;}
else
{NudTubo = 4.36;}
ht = (kCM*NudTubo)/Dtubo;
Agora,podesercalculadotambmoh
c
daEquao5.3.13.Issosedevepeloclculodonmero
deNusseltdocasco.Assim:
//Clculo do No. de Nussent (casco).
NudCasco = C*(pow(RedCasco,m))*(pow(PrHM,n))*(pow((PrHM/PrCM),0.25));
hc = (kHM*NudCasco)/Dtubo;
Depoisdoclculodoh
c
eh
t
,possvelencontrarovalordocoeficienteglobaldetransferncia
decalor.Observe:
//Agora temos o hc e o ht, logo calcularemos o U.
U = 1/((1/ht)+(1/hc));
VejaoclculodofatordecorreoapresentadonaEquao5.3.16eoclculodeReSdas
Equaes5.3.17e5.3.18:
//Vamos calcular o fator de correo F.
R = (TempHEntrada-TempHSaida)/(TempCSaida-TempCEntrada);
S = (TempCSaida-TempCEntrada)/(TempHEntrada-TempCEntrada);
factor005 = pow(((R*R)+1),0.5);
factor003 = (2-(S*(1+R-factor005)));
factor004 = (2-(S*(1+R+factor005)));
factor006 = log((1-(S*R))/(1-S));
factor007 = (1-R);
F = ((factor005*factor006)/(factor007*log(factor003/factor004)));
A separao da Equao 5.3.16 em termos como factor003, factor004, factor005,
factor006efactor007foiparafacilitarasuaescritanocdigofonte.
Depois de cumprir o procedimento de clculo mencionado, resta o clculo da diferena de
temperaturalogartmicaedocomprimentodocascodotrocadordecalor.Observe:
//E agora calculando o valor de L que representar o comprimento do casco.
DeltaTempLM = ((TempHEntrada-TempCSaida)-(TempHSaida-TempCEntrada))/
log((TempHEntrada-TempCSaida)/(TempHSaida-TempCEntrada));
L = (q/(U*M_PI*Dtubo*DeltaTempLM*F*N*Passo));
Paraencerrarapartedeclculo,oltimotrechodocdigofontesetratadeclculosinformativos
paraaimpressonatelaemformaderelatrioderesultados,juntamente,comoutrosdadosjencontrados.Dessa
forma,umaanlisedotrocadordecalorpoderserrealizada,eassim,decidiroclculodeumnovotrocadoroua
seleodeoutraconfigurao.Vejaosltimosclculos:
//Clculo de dados como: rea de troca trmica, dimentro do casco e outros.
Atroca = L*N*Passo*(M_PI*2*(Dtubo/2));
DcascoIN = Dcasco/0.0254;
Razao = Atroca/(M_PI*(Dcasco/2)*(Dcasco/2));
VolH2O = (mc)/(dCM*1000);
33
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
Acalculada = (q/(U*DeltaTempLM));
Excesso = ((Atroca-Acalculada)/Atroca);
Agora, a impresso na tela dos resultados com o a condio if aplicada para informar se os
escoamentosnostubosounocascolaminarouturbulento.Nasltimaslinhasdocdigofonte,apresentadauma
formadefinalizaodoprograma:
//Resultados.
printf
("\n\n----------------------------------------------------------------------------------");
printf ("\n CARACATERISTICAS BASICAS DO TROCADOR DE CALOR");
printf ("\n 1. Comprimento do Casco = %lf m",L);
printf ("\n 2. Diametro do casco = %lf in",DcascoIN);
printf ("\n 3. Diametro do tubo do feixe = %lf m",Dtubo);
printf ("\n 4. Quantidade de tubos = %lf ",N);
printf ("\n 5. Numero de passes = %lf",Passo);
printf ("\n 6. Area de troca termica (calculada) = %lf m2",Acalculada);
printf ("\n 7. Area de troca termica (fisica) = %lf m2",Atroca);
printf ("\n 8. Excesso do trocador de calor = %lf %%",Excesso);
printf ("\n 9. Razao da area de troca termica (fisica) e o volume do trocador =
%lf",Razao);
printf ("\n 10. Coeficiente global de transferencia de calor = %lf W/m2*K",U);
printf ("\n 11. Arranjo dos tubos = Quadrangular");
printf
("\n----------------------------------------------------------------------------------");
printf ("\n RESULTADOS DO OLEO (CASCO)");
printf ("\n 1. Temperatura de entrada = %lf oC",TempHEntrada);
printf ("\n 2. Temperatura de saida = %lf oC",TempHSaida);
printf ("\n 3. Vazao massica = %lf kg/s",mh);
printf ("\n 4. Velocidade do oleo no casco = %lf m/s",V);
printf ("\n 5. Velocidade maxima do oleo no casco = %lf m/s",Vmax);
printf ("\n 6. Taxa de calor extraido do oleo = %lf KJ/segundo",q);
printf ("\n 7. Numero de Reynolds no casco = %lf",RedCasco);
printf ("\n 8. Numero de Nussent no casco = %lf",NudCasco);
printf ("\n 9. Coeficiente de conveccao no casco = %lf W/m2*K",hc);
if (RedCasco>2500)
{printf ("\n O escoamento do oleo no casco e: Turbulento");}
else
{printf ("\n O escoamento do oleo no casco e: Laminar");}
printf
("\n----------------------------------------------------------------------------------");
printf ("\n RESULTADOS DA AGUA (TUBOS)");
printf ("\n 1. Temperatura de entrada = %lf oC",TempCEntrada);
printf ("\n 2. Temperatura de saida = %lf oC",TempCSaida);
printf ("\n 3. Vazao massica = %lf kg/s",mc);
printf ("\n 4. Vazao volumetrica da agua = %lf m3/segundo",VolH2O);
printf ("\n 5. Numero de Reynolds nos tubos = %lf",RedTubo);
printf ("\n 6. Numero de Nussent nos tubos = %lf",NudTubo);
printf ("\n 7. Coeficiente de conceccao nos tubos = %lf W/m2*K",ht);
if (RedTubo>2500)
{printf ("\n O escoamento da agua nos tubos e: Turbulento");}
else
{printf ("\n O escoamento da agua nos tubos e: Laminar");}
printf
("\n----------------------------------------------------------------------------------\n\n"
);
printf ("\n Pressione 'Enter' para finalizar.");
getchar ();
return 0;
}
Umaltimainformaoimportantequedeveserrepassadanessemomento,emrelaoalinhado
relatrioimpressonatelasobreoexcessodotrocadordecalor.Oexcessoreferentearelaoentreareadetroca
trmica calculada earea de trocatrmicafsica. Oprograma seencontra com dcimosde excesso, ouseja, o
dimensionamentodotrocadorpraticamenteexatoaonecessrio.
34
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
6PROJETODEVIGABIAPOIADA
6.1Introduo
Asvigassoelementosestruturaisbastanteusadosnaconstruocivil,nareadeedificaoeem
estruturasmetlicas.Omtododeclculoparaseprojetaroperfilcorretodeumavigatemograudecomplexidade
proporcionalformadaestruturametlicaouedificao.Ummtododeseiniciaraescolhadomaterialdavigae
dimensionamentodoperfilpodeserrealizadopelaanlisedomaioresforonomaiorvolivre.
O mtodo comentado no pargrafo acima uma forma de iniciar o clculo com base em um
referencial.Asvigaspodemterdiversostiposdeperfis,masexistemalgunsquesobastantescomerciaiscomoo
perfilC(tambmconhecidocomoUnoBrasil)eoperfilI.Osmateriaisempregadosvodesdadeaosliga,ao
carbono,aoinox,ligasdealumnioeetc.fcildepercebertodaagamadasvariveispresentesnoprojetodeuma
viga.
6.2Caractersticasdoproblema
Oprojetodeumavigaaseradicionadaemumaestrutura,aseleodeumperfilcorretoparaa
construoouaescolhadomaterialadequadoequesuporteosesforossoexemplosdevariveisdoproblema.
Aelaboraodarotinacomputacionaldestecaptulofoirealizadaseguindoalgunspassos,comoa
entradadealgumasvariveis.Aforaaplicadasobreaviga,ocomprimentototaldaviga,ocoeficientedesegurana
quedeveseraplicado,soalgunsdosdadosdeentradanecessriosqueousuriodeveinformaraoprograma.
Asituaoconsideradareferenteaumaforacentralaumaviganaqualestapoiadaemsuas
extremidades.Paraumamelhorcompreensovejaafiguraabaixo:
FIGURA6.2.1Carregamentocentralemvigabiapoiada.
Umsoftware paraoclculode umaviga simples como aapresentada naFigura6.2.1pode ter
diversasvariveiscomoaescolhadoperfil.interessantequesepossaterumaescolhadepelomenosdoisperfis
paraclculo.AforaPaplicadanocentrodavigapodeserdequalquervalordefinidopeloprojetistaporexemplo.
Dadosdeentradaesadasoextremamenteimportantesnofinaldaexecuodoprograma,assim,oprojetistapode
terumavisocrticadosresultados,bemcomoseavigairfalharouno.
Umaspectointeressantequesedevetercomooponaexecuodoprogramainformarqualo
coeficientedeseguranaquesedesejausarparaosclculoseumalistadeopesdemateriaiscomo:
AocarbonoA36;
AoinoxAISI304;
Ligadealumnio2024T4;
eoutras.
Aescolhadasdimensesdosperfistambmficaporcontadoprojetista,logoamesmaformaque
abordadaemrelaosopesdemateriais,podeseraplicadaparaasdimensesdosperfis.Noprximoitem
abordadaasoluotericaparaaconstruodosoftwaredestecaptulo.
6.3Baseterica
35
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
Aresoluoparaoproblemapropostoeemseguidaarealizaodeumarotinacomputacionalse
iniciapeladeterminaodomomentomximoeforacisalhantemxima.Veja:
M
max
=
( PL)
4
(6.3.1)
e
V
max
=
P
2
(6.3.2)
AunidadeadotadaparaaforaPoNewtoneaunidadedecomprimentometroparaLnas
Equaes6.3.1e6.3.2.perceptvelqueaunidadedomomentofletormximoN.meparaaforacisalhanteo
Newton.
Apsoclculodomomentofletormximo,oprximopassoadeterminaodoSnec.Sneco
mduloresistentedaviga.OmduloderesistenciaarelaoentreIec,isto:
Snec=
I
c
(6.3.3)
OIconhecidocomomomentodeinrciadoperfildavigaeoccomoadistnciadoeixo
neutroatextremidademxima.Utilizandoafrmuladatenso:
c=
Mc
I
(6.3.4)
Agora,realizandoasdevidassubstituiesseobtm:
Snec=
M
c
adm
(6.3.5)
Comoofatordeseguranaarelaodatensodeescoamentodomaterialeatensoadmissvel,
seobtm:
fs=
c
mat
c
adm
(6.3.6)
Logo,ovalordeSnecdoperfilselecionadodeveserdeacordocomaequao:
Snec=
Mfs
c
mat
(6.3.7)
A Equao 6.3.7 fornece o valor do mdulo de resistncia da viga de acordo com o material
escolhido.Lembrandoqueovalordatensoadmissveldomaterialencontradaemtabelasdelivroseapostilas.
ApsoclculodoSnec,defcilcompreensoqueseuvalordevesertomadocomobasena
escolhadoperfildeaplicao.OperfilaserescolhidoemtabelasdeperfisdediversosfabricantesdeveteroSnec
superioraocalculado.Casocontrrio,aviganoatendersnecessidadesdoprojeto.Observe:
Snec
tab
>Snec (6.3.8)
Comasequaesestabelecidas,podeseriniciadooprocessodeelaboraodocdigofonte.
6.4Cdigofontecomentadopassopasso
Ocdigofonteabaixoseapresentadeformaresumida,poismuitosdetalhesderepetioforam
substitudosporlinhaspontilhadas.Dessaforma,paraentendimentonoficacomprometidoenemextensodemais.
36
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
OcdigopodeservistosemcortesnoApndiceB.
main ()
{
//Programa para projetode vigas biapoiadas.
int pI, m_viga, pC;
double P, L, CS, Mmax, Vmax, E, Ty, Tadm, Snec, Stab;
int x = 1;
printf ("\n PROGRAMA PARA O PROJETO DE VIGA BI-APOIADAS ");
printf ("\n");
printf ("\n");
printf ("\n | carga P");
printf ("\n |");
printf ("\n V");
printf ("\n =====================");
printf ("\n ^ | ^");
printf ("\n |---L/2---|---L/2---|");
printf ("\n\n");
printf ("================================================================");
Notrechodecdigofonteapresentadoacima,mostradaadeclaraodealgumasvariveisdo
tipodoubleeint.LembrandoqueotipointserefereanmerosinteirosnointervaloapresentadonaTabela
3.2.1.Emseguida,apresentadaumafiguraparademonstrarotipodecarregamentoempregadosobreavigaaser
projetada.
Oprximotrechoapresentaaprimeiraaparionestetrabalhodeumarotinadeseleo.Arotina
deseleoutilizadadaseguinteforma:
switch()
{case1:
blocodecomandos;
break;
casen+1:
blocodecomandos;
break;
.............
........
.....
casen:
blocodecomandos;
break;
Paraovalorde()
{sefor1:
executaessaseqnciadecomandos;
sadadarotinadeseleo;
seforn+1:
executaessaseqnciadecomandos;
sadadarotinadeseleo;
.............
........
.....
seforn:
executeessaseqnciadecomandos;
sadadarotinadeseleo;
FIGURA6.4.1Estruturadasrotinacomswitchcasebreak.
Aapresentaodaformaquesedeveutilizararotinadeseleoqueenvolveswitchcasebreak
utilizadanoprogramadestecaptuloeseprolongarnosprximosprogramasabordados.
switch (x)
{
case 1: //Primeira situacao.
printf ("\n Informe o valor da carga 'P' (N):");
scanf ("%lf",&P);
printf ("\n Informe o comprimento da viga (m):");
scanf ("%lf",&L);
printf ("\n Informe o coeficiente de seguranca:");
scanf ("%lf",&CS);
//Calculos do momento maximo e da forca cortante.
Mmax = P*L/4;
37
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
Vmax = P/2;
//Escolha do material com switch dentro de outro switch.
int material_1;
printf ("\n Escolha o material:");
printf ("\n");
printf ("\n [1] - A-36 [8] - AISI 304");
printf ("\n [2] - AISI-C 1018 [9] - Liga de Aluminio 1100-H12");
printf ("\n [3] - AISI-C 1030 [10] - Liga de Aluminio 2024 T4");
printf ("\n [4] - AISI-C 1040 [11] - Liga de Aluminio 6061 T6");
printf ("\n [5] - AISI-C 1080 [12] - Liga de Aluminio 6063 T6");
printf ("\n [6] - AISI-C 3140 [13] - Liga de Aluminio 2024 T4");
printf ("\n [7] - AISI-C 4340");
printf ("\n Sua opcao e:");
scanf ("%d",&material_1);
getchar ();
Oprimeiroswitchapresentadonoprogramaocorreunotrechoacima. Esseswitchusado
comoumaopoparafuturassituaesdeclculo.visvelasuapraticidadecomarotina,eumanovarotinapara
outrasituaopodeserfacilmenteimplementada.Umarvoreexplicativadetodoocdigofonteapresentadano
finaldesteitem6.4.
Aaoinicialdoswitchapresentadoacimareferenteexecuodoblocodecomandosque
pedeaousurioovalordaforaPaplicadanaviga,ovalordeLqueocomprimentodavigaeovalordofator
desegurana.Efetuaseoclculointernamentedomomentofletormximoedaforacortantemximaeemseguida
realizadaaescolhadomaterialdaviga.
Uma outra caracterstica apresentada no programa deste captulo a possibilidade de rotinas
aninhadas.Osegmentoabaixomostraumswitchinseridoemoutroswitchjapresentadonotrechoacima,que
usaovalordaopodomaterialdaviga.Veja:
switch (material_1)
{
case 1: // A-36
E = 200e9;
Ty = 250e6;
Tadm = Ty/CS;
Snec = Mmax*CS/Ty*1E6;
break;
case 2: // AISI-C 1018
E = 200e9;
Ty = 370e6;
Tadm = Ty/CS;
Snec = Mmax*CS/Ty*1E6;
break;
..........................
................
........
...
case 13: // Liga de Aluminio 2024 T4
E = 72e9;
Ty = 500e6;
Tadm = Ty/CS;
Snec = Mmax*CS/Ty*1E6;
break;
}
O bloco de cdigofonte apresentado acima, referente escolha do material. Outra rotina
bastantesimilaraaplicadanosCaptulos5e6comousodasrotinasifeifelseif.Avantagemdarotinacom
o switchcasebreak mais direta. Quando o valor da escolha inserido no switch o case imediatamente
executaoblocodecomandosdesuaresponsabilidade.Asvariveisso:Ecomoomdulodeelasticidadedo
material, Ty como sendo a tenso admissvel do material de compresso, Tamd sendo a tenso admissvel
calculadaparaofatordeseguranaadotadoeSneccomoomduloderesistnciadavigarequerido.
Aps recarregar os valores das variveis na memria, o procedimento pode ser seguido.
apresentadaaaplicaodeoutroswitchdentrodoprimeiroapresentadonoinciodocdigofonte.Valeressaltar
que ao final dos comentrios do cdigofonte ter a estrutura do programa de forma simplificada. O bloco de
cdigofonteseguinterelacionadoopodeseleodoperfildaviga.Umoutrodetalhequepodeserpercebido
38
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
ainserodeoutroswitchnoswitchdeescolhadoperfildavigaqueseencontradentrodoswitchdotipode
clculoaserrealizado.Ouseja,temostrsestruturasdeswitchaninhadas.Veja:
//Escolha do perfil da viga.
printf ("\n Escolha o perfil para a viga:");
printf ("\n\n [1] - Perfil I");
printf ("\n [2] - Perfil C");
printf ("\n Sua opcao e:");
int perfil;
scanf ("%d",&perfil);
getchar ();
switch (perfil)
{case 1: //Procedimento do clculo com o perfil I pra situacao 1.
printf ("\n Escolha o perfil I de acordo com as dimensoes abaixo:");
printf ("\n Lembrando que Altura x Base e a nomeclatura adotada.");
printf ("\n\n [1] - 150x14 [6] - 250x18 [11] - 310x74");
printf ("\n [2] - 150x30 [7] - 250x45 [12] - 310x129");
printf ("\n [3] - 200x22 [8] - 250x80");
printf ("\n [4] - 200x71 [9] - 250x149");
printf ("\n [5] - 200x100 [10] - 310x39");
........................
................
.........
printf ("\n A sua escolha e:");
scanf ("%d",&pI);
getchar ();
switch (pI)
{case 1:
Stab = 91.2;
break;
case 2:
Stab = 218;
break;
....................
.............
.......
case 12:
Stab = 1940;
break;}
//-----Resultados-----
printf ("\n=============================================================");
printf ("\n SOLICITACAO E ESPECIFICACAO DA VIGA");
printf ("\n=============================================================");
printf ("\n Carga aplicada 'P': %lf N",P);
printf ("\n Comprimento da Viga: %lf m",L);
printf ("\n Coeficiente de seguranca: %lf",CS);
printf ("\n=============================================================");
printf ("\n RESULTADOS DOS CALCULOS DA RESPECTIVA VIGA");
printf ("\n=============================================================");
printf ("\n Esforco cortane maximo: %lf N",Vmax);
printf ("\n Momento fletor maximo: %lf N.m",Mmax);
printf ("\n Tensao admissivel: %lf Pa",Tadm);
printf ("\n Tensao de escoamento: %lf Pa",Ty);
printf ("\n Modulo de elasticidade do material: %lf Pa",E);
printf ("\n Modulo de resistencia necessario: %lf mm3",Snec);
printf ("\n Modulo de resistencia tabelado: %lf mm3",Stab);
printf ("\n");
if (Snec<Stab)
{printf ("\n O perfil selecionado suportara o carregamento.");
printf ("\n Teste outros perfis para tentar reduzir seus gastos!");}
else
{printf ("\n O perfil selecionado nao duporta o carregamento.");
printf ("\n Escolhe um perfil mais robusto com o Snec superio");
printf ("\n ao desejado.");}
getchar ();
break;
case 2: //Procedimento do clculo com o perfil C pra situacao 1.
printf ("\n Escolha o perfil C de acordo com as dimensoes abaixo:");
printf ("\n Lembrando que Altura x Base e a nomeclatura adotada.");
printf ("\n\n [1] - 75x6 [6] - 230x30");
printf ("\n [2] - 100x11 [7] - 250x45");
printf ("\n [3] - 150x19 [8] - 310x45");
printf ("\n [4] - 180x22 [9] - 380x50");
39
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
printf ("\n [5] - 200x28 [10] - 380x74");
........................
................
.........
printf ("\n A sua escola e:");
scanf ("%d",&pC);
getchar ();
switch (pC)
{case 1:
Stab = 18.1;
break;
case 2:
Stab = 37.5;
break;
....................
.............
.......
case 10:
Stab = 882;
break;}
//-----Resultados-----
printf ("\n=============================================================");
printf ("\n SOLICITACAO E ESPECIFICACAO DA VIGA");
printf ("\n=============================================================");
printf ("\n Carga aplicada 'P': %lf N",P);
printf ("\n Comprimento da Viga: %lf m",L);
printf ("\n Coeficiente de seguranca: %lf",CS);
printf ("\n=============================================================");
printf ("\n RESULTADOS DOS CALCULOS DA RESPECTIVA VIGA");
printf ("\n=============================================================");
printf ("\n Esforco cortane maximo: %lf N",Vmax);
printf ("\n Momento fletor maximo: %lf N.m",Mmax);
printf ("\n Tensao admissivel: %lf Pa",Tadm);
printf ("\n Tensao de escoamento: %lf Pa",Ty);
printf ("\n Modulo de resistencia necessario: %lf mm3",Snec);
printf ("\n Modulo de resistencia tabelado: %lf mm3",Stab);
printf ("\n");
if (Snec<Stab)
{printf ("\n O perfil selecionado suportara o carregamento.");
printf ("\n Teste outros perfis para tentar reduzir seus gastos!");
printf ("\n");}
else
{printf ("\n O perfil selecionado nao duporta o carregamento.");
printf ("\n Escolhe um perfil mais robusto com o Snec superio");
printf ("\n ao desejado.");
printf ("\n");}
break;}
break;
}
getchar ();
return 0;
}
Para uma maior compreenso do cdigofonte como um todo, necessrio ver a descrio do
mesmodeacordocomaestruturaaseguir.Observe:
main ( )
{
switch ( ) //Escolha para possvel expanso para outros tipos de carregamento.
{case.......
switch ( ) //Escolha do material do carregamento 1.
{case .......
break ;}
switch ( ) //Escolha do perfil do carregamento 1.
{case .......
switch ( ) //Processo de calculo e relatrio para o Perfil I.
{case.......
break ;}
switch ( ) //Processo de calculo e relatrio para o Perfil C.
{case.......
40
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
break ;}
break ;}
break ;}
getchar ( ) ;
return 0 ;
}
FIGURA6.4.1EstruturadocdigofonteaplicadonoCap.6
Comestruturadescritaacima,fcilperceberoinciodadivisodocdigofonteemblocos.No
blocoreferenteaomaterialdaviga,elepoderserutilizadoportodososperfisadicionadosnoprogramaparao
materialdeterminado.Dessaforma,arepetiodocdigofontefazcomquesejareduzidootempodeescritae
otimizaacompilaodomesmo.
O ltimo switch que se refere gerao de relatrio para cada perfil escolhido, tambm
apresenta uma praticidade para possveis expanses do programa. perceptvel que esse programa tem como
estruturafundamentalautilizaoadequadadarotinadeescolhaswitchcasebreak.Nofinaldetodasasrotinasde
escolha,oprogramafinalizadocomumsimplesreturn0;.
41
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
7PROJETODEVASOSDEPRESSO
7.1Introduo
Vasodepressootermodesignadoparasefazerrefernciaatodososrecipientesestanquesque
apresentampressoexternaouinterna.Algunsdevasosdepressoso:tanquesdearmazenamentodelquidose
gros,umasimplespaneladepressoouatmesmoumreatornuclear.
Na indstria qumica os vasos de presso so utilizados constantemente. Seja para o simples
armazenamentodelquidossobpressoouempressoatmosfrica,comonaarmazenagemdegasespressurizados.
Aimportncianoclculodosvasosdepressosodeextremaimportncia,poiscasoocorraumerrodeprojeto,a
exploso,vazamentoourachaduraspodemcomprometeratodasaspessoasqueomanuseiam.
Neste captulo, realizado o processo de desenvolvimento de um software que faz o
dimensionamentodocascoetamposdeumvasodepressocomosentidodapressodedentroparafora,ouseja,
pressointerna.Existemdiversosfatoresevariveisaseremconsideradoscomoaqualidadedasolda,materialdos
tampos,materialdocostado,processodesoldagemeoutros.
7.2Caractersticasdoproblema
Oprojetodeumvasodepressorealizadoapartirdaentradadealgunsdadosfornecidospelo
setor de Engenharia Qumica de Processo de uma indstria qumica por exemplo. Os Engenheiros de Processo
fornecemosdadoscomopressoefluidodetrabalho.Apartirdestemomentonecessrioseguiralgumasnormas
comoaASMEAmericanSocietyofMechanicalEngineer.AASMEapresentaprocedimentosqueserviramde
baseparaoutrasnormascomoaABNT,porexemplo.
Oprocedimentodeprojetoparaumvasodepressoseiniciacomadeterminaoeentradade
algunsdadosparaoclculodocascocomo:raiointernodocasco,pressodeprojeto,sobreespessuradecorroso
quandoaplicada,temperaturadetrabalhoeaclassedomaterialdocasco.Apartirdessesdados,jpossvela
determinao da tenso admissvel de cada material S por tabelas encontradas em livros e na prpria norma
ASME,SeoVIII,Diviso1UCS23,porexemplo.
ValoresdecoeficientesdesoldatambmsoapresentadosnanormaASME,evariamdeacordo
comograudeinspeoetipodesoldarealizada.Apsasinformaesfornecidasatomomentofcilarealizao
doclculodaespessuradachapaquedeveserutilizadaparaocascoeostamposdeumvasodepresso.
muitovantajosoquesejaelaboradaumarotinacomputacionalcomointuitodanorepetiodo
clculoebuscaemtabelasnasnormasmencionadas.Dessaforma,otrabalhoalmdeserotimizadointeressante
elaboraoderesultadosemformaderelatrioporexemplo.Noprximoitem,7.3,oprocedimentoterico,como
frmulasutilizadaspelanormaASMEsomencionados,eassimnoitem7.4adescriodarotinacomputacional
desenvolvidacomentada.
7.3Baseterica
7.3.aDimensionamentodoCostado
Ametodologiadeclculoparaodimensionamentodocostadodeumvasodepressoamesma
adotadanaASME.AnormaASMEsugerequeodimensionamentodaespessuradocostadosigaaequaoabaixo:
e=
PR
( SE0,6P)
+C (7.3.1)
OndeasvariveisPdotadaapressointernadeprojeto,Roraiomnimointernodocostado,
Satensoadmissvelbsicadomaterial,Eocoeficientedeeficinciadasolda,Csobreespessuradecorroso
eaespessuramnimaparaachapadocostado.
AsobreespessuradecorrosoCdeacordocomofluidodetrabalhoeotempodevidado
equipamento.Aespessuradachapadefabricaodoequipamentonopodesermenorqueaespessuramnimade
resistncia estrutural. E caso isso ocorra, se deve usar a equao da espessura mnima de resistncia estrutural.
Observe:
e
s
= , 2 5+ , 0 0 0 2R+C (7.3.2)
42
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
Outrainformaodeextremaimportnciaapressomximadetrabalhoadmissvelconhecida
comoPMTA.Elacalculadapelaequao:
PMTA=
SEe
( R+0,6e)
(7.3.3)
7.3.bDimensionamentodostampos
Oprocedimentodeclculoparaostampossimilaraoclculodocostado.Devidoadiversidade
de tampos o cdigofonte apresenta 3 possibilidades de escolha. Tampo plano, semielptico e cnico, so os
modelosquepodemserescolhidoseparacadatipodetampoexisteumaequaoparaoclculodaespessura.Vejaa
equao do clculo da espessura para o tampo semielptico e a equao para a presso mxima de trabalho
admissvel:
e
te
=
PR
( SE0,1P)
+C (7.3.4)
e
PMTA
te
=
SEe
te
( R+0,1e
te
)
(7.3.5)
Vejaaformadeumtamposemielptico:
FIGURA7.3.1Tamposemielptico.
Asequaesparaotampocnicoso:
e
tc
=
PR
(cos(o)(SE0,6P))
+C (7.3.6)
e
PMTA
tc
=
(SEe
tc
cos(o))
( R+ , 0 6e
tc
cos(o))
+C (7.3.7)
Ondeotermo representaongulodotetodotampocomalinhasdecentro.
Observeaformadeumtampocnico:
FIGURA7.3.2Tampocnico.
Asequaesparaotampoplanoso:
e
tp
=
.
NP
( SE)
+C
(7.3.8)
e
PMTA
tp
=
127S
(2R)
(7.3.9)
43
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
Observeaformadeumtampoplano:
FIGURA7.3.3Tampoplano.
7.4Cdigofontecomentadopassoapasso
Ocdigofonteabaixoseapresentadeformaresumida,poismuitosdetalhesderepetioforam
substitudosporlinhaspontilhadas.Dessaforma,ocdigofonteparaentendimentonoficacomprometidoenem
extensodemais.
O cdigofonte do programa deste captulo bastante rico em informaes, pois ele apresenta
diversostrechosemsuarotina,docontedojdiscutidoatomomento.Rotinasdeescolhacomoswitchcase
break, ifelseif, criao de funes e outras bastante interessantes. O cabealho padro foi retirado, pois o
cdigofontecompletoesemcortesseencontranoApndiceB.
double DegToRad (double x)
{return (x*M_PI/180);}
//---------------------------------------------------
main ()
{
double R, P, C, Temp, S, E, e, es, PMTA, e_Torri, e_Torri_PMTA, alpha,
e_Cone, e_Cone_PMTA, e_Reto, e_Reto_PMTA;
int MC, Grau, Tipo, Tampo;
O bloco de cdigofonte acima apresenta como incio do programa a criao da funo
DegToRadjapresentadacomotransformaodengulospararadianos,poisaslinguagensdeprogramaono
trabalhamdeformadiretacomngulos.Apsadeclaraodafunorealizadaadeclaraodetodasasvariveis
utilizadasnoprograma.Sodeclaradosdoistiposdevariveis,asdotipointquepossuiascaractersticasdeser
aplicadaasomentenmerosinteiroseasdotipodouble,jmencionadanotrabalho.
printf ("\n PROGRAMA PARA O");
printf ("\n DIMENSIONAMENTO DE VASOS DE PRESSAO");
printf ("\n");
printf ("\n Programa para dimensionamento de vasos de pressao");
printf ("\n com costado cilindrico e tampos retos, conicos ou");
printf ("\n torrisfericos e pressao externa.");
printf ("\n\n");
printf ("\n 1o. passo - Dimensionamento do costado.");
printf ("\n --> Determinacao da espessura da chapa.");
printf ("\n\n Entre com o raio interno do cilindro (mm):");
scanf ("%lf",&R);
getchar ();
printf ("\n Entre com a pressao interna de projeto (Pa):");
scanf ("%lf",&P);
getchar ();
printf ("\n Entre com sobreespessura para corrosao (mm):");
scanf ("%lf",&C);
getchar ();
O trecho de cdigofonte apresentado acima, apenas se refere insero de alguns dados de
entrada,comoapressointernadeprojeto,raiointernodocascoeasobreespessuraparacorroso.
Temperatura:
printf ("\n Entre com a temperatura de trabalho entre -30 e 500 (oC):");
scanf ("%lf",&Temp);
44
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
getchar ();
Ainserodatemperaturadetrabalhodovasodepressodeveserentre30Ce500C.Alinha
que est declarada a operao Temperatura: servir como local de reinicializao para o usurio digitar,
novamente,atemperaturadetrabalhocasotenhasidodigitadaforadointervalo.
Classe:
printf ("\n Escolha a classe do material:");
printf ("\n");
printf ("\n [1] - (A-285-C)----------->Aco carbono");
printf ("\n [2] - (A-387-11 c 11)----->Aco-liga 1.1/4 Cr -1/2 Mo");
printf ("\n [3] - (A-387-5 c 11)------>Aco-liga 5 Cr - 1/2 Mo");
printf ("\n A escolha e:");
scanf ("%d",&MC);
getchar ();
if (MC>=4)
{printf ("\n Escolha a opcao correta!");
goto Classe;}
if (MC<=0)
{printf ("\n Escolha a opcao correta!");
goto Classe;}
Notrechoacima, realizadaadeclarao daoperao Classe:indicaqueser apresentada o
loopingdereincioquandofordeclaraemumalinhaocomandogotoClasse;.Vejaqueoprogramafazperguntas
dequalclassedeveseromaterialaserutilizadoparaoprojetodovasodepresso.Oprogramatambmdtrs
opesecasonenhumadelassejadigitada,elereiniciaarotinaapartirdalinhaquecontmClasse:.
//Definicao da tensao admissivel do material pela temperatura de trabalho.
switch (MC)
{case 1:
if (Temp<=350)
{S = 969;}
else if (Temp<=375)
{S = 928;}
else if (Temp<=400)
{S = 847;}
..................
.............
........
else if (Temp<=475)
{S = 469;}
else if (Temp<=500)
{S = 357;}
else if (Temp>500)
{printf ("\n Nao aplicavel. Entre com outra temperatura!");
goto Temperatura;}
break;}
Otrechoapresentadonessemomentoapresentaarotinadeescolhaswitchcasebreakeifelse
ifaninhadas.Otrechonoapresentatodososcaseporquenointeressantedesermostradonessemomento,
poistodoocdigofonteseencontranoApndiceB.Valesalientarnessemomentoqueparacadaifelseifnoseu
case,aofinalapresentadaafunogotoTemperatura;.Assim,oprogramareiniciarnalinhaquecontmoa
localizaodeTemperatura:,poisparacadacaseoprogramaefetuaumabuscainterna.
//Definicao do coeficiente de eficiencia de solda.
Grau_inspecao:
printf ("\n Escolha o grau de inspecao de soldagem:");
printf ("\n");
printf ("\n [1] - Radiografia Total");
printf ("\n [2] - Radiografia Parcial");
printf ("\n [3] - Nao Radiografada");
45
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
printf ("\n A escolha e:");
scanf ("%d",&Grau);
getchar ();
if (Grau>=4)
{printf ("\n Escolha a opcao correta!");
goto Grau_inspecao;}
if (Grau<=0)
{printf ("\n Escolha a opcao correta!");
goto Grau_inspecao;}
Foiapresentadaagoraumasimplesrotinaderepetioparaaescolhadograudeinspeodasolda.
Casoaopoescolhidanosejanenhumadaslistadas,oprogramaficarquestionandoatquesejadefinidauma
opovlida.
Apsadefiniodograudeinspeodesolda,oprogramaentraemmaisumarotinadeescolhaj
apresentada.OswitchcasebreakaplicadoparaatribuiodovalordeEqueocoeficientedeeficinciada
solda,masaoescolherograudeinspeoecairnarotinadoswitchcasebreakumanovaperguntaexecutada
dentrodecadacase.questionadootipodesoldagemaplicadanovasodepresso.fcilperceberqueesse
problemaresolvidopelaaplicaodarotinaifelseif.utilizadonessetrechoabaixoafunogotoparacada
case,essaaplicaosedeveaaplicabilidadederepetiodoquestionamentodoprogramacasoaopoescolhida
nosejavlida.Observe:
switch (Grau)
{case 1:
Radiografada:
printf ("\n Qual o tipo de solda?");
printf ("\n");
printf ("\n [1] - Solda de topo, feita por ambos os lados, ou procedimento
equivalente,");
printf ("\n de forma a obter penetracao e fusao totais. (Excluem-se as soldas
com");
printf ("\n mata-junta permanente).");
printf ("\n [2] - Solda de topo, feita por um so lado, com mata-junta permanente.");
printf ("\n A escolha e:");
scanf ("%d",&Tipo);
getchar ();
..................
.............
........
if (Tipo==1)
{E = 0.7;}
else if (Tipo==2)
{E = 0.65;}
else if (Tipo!=1&&2)
{printf ("\n Escolha o tipo de solda!");
goto Nao_Radiografada;}
break;}
realizadonessemomentopelotrechodecdigofonteabaixo,oclculodaespessuradeprojeto
dachapa,aespessuramnimaestruturaldachapaeapressomximadetrabalhoadmissvelaplicadanocasco.
//Calculo do casco cilindrico.
e = ((P*R)/((S*E)-(0.6*P)))+C;
es = 2.5+(0.002*R)+C;
PMTA = ((S*E*e)/(R+(0.6*e)));
printf ("\n A espessura do costado e: %lf mm",e);
printf ("\n A espessura para estabilidade estrutural: %lf mm",es);
printf ("\n Pressao maxima de trabalho admissivel: %lf Pa",PMTA);
Oprocedimentoseguintearealizaodosclculosparaespessuradechapaaserutilizadanos
tamposdovasodepressoeapressomximadetrabalhoadmissvelsuportadapelostampos.Osprocedimentos
apresentadosjforamaplicadosalgumasvezesesodefcilpercepo.Assim:
46
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
//Agora e iniciado a escolha e o calculo da espessura dos tampos
printf ("\n");
printf ("\n Escolha o tipo de tampo:");
printf ("\n\n [1] - Torrisferico");
printf ("\n [2] - Conico");
printf ("\n [3] - Plano");
printf ("\n A escolha e:");
scanf ("%d",&Tampo);
getchar ();
switch (Tampo)
{case 1:
e_Torri = ((P*R)/((S*E)-(0.1*P)))+C;
e_Torri_PMTA = ((S*E*e_Torri)/(R+(0.1*e_Torri)));
printf ("\n A espessura do tampo torrisferico e: %lf mm",e_Torri);
printf ("\n Pressao maxima de trabalho admissivel no tampo: %lf Pa",e_Torri_PMTA);
break;
case 2:
printf ("\n Defina o semi-angulo do vertice do cone:");
scanf ("%lf",&alpha);
getchar ();
e_Cone = ((P*R)/(cos(DegToRad(alpha))*(S*E-(0.6*P))))+C;
e_Cone_PMTA = ((S*E*e_Cone*cos(DegToRad(alpha)))/(R+(0.6*e_Cone*cos(DegToRad(alpha)))))
+C;
printf ("\n A espessura do tampo conico e: %lf mm",e_Cone);
printf ("\n Pressao maxima de trabalho admissivel no tampo: %lf Pa",e_Cone_PMTA);
break;
case 3:
e_Reto = (sqrt((0.33*P)/(S*E)))+C;
e_Reto_PMTA = ((127*S)/(2*R));
printf ("\n A espessura do tampo plano e: %lf mm",e_Reto);
printf ("\n Pressao maxima de trabalho admissivel no tampo: %lf Pa",e_Reto_PMTA);
break;}
O ltimo passo se trata da gerao e impresso de um relatrio com tudo que foi calculado e
apresentado.Veja:
//Agora basta gerar o relatrio de resultados.
printf ("\n");
printf
("\n=============================================================================");
printf ("\n RELATORIO DE RESULTADOS - '' VASOS DE PRESSAO ''");
printf
("\n=============================================================================");
printf ("\n---->> DADOS SOBRE O COSTADO: <<----");
printf ("\n Raio interno em (m): %lf",R);
printf ("\n Pressao interna de projeto (Pa): %lf",P);
printf ("\n Sobreespesura para corrosao (mm): %lf",C);
printf ("\n Temperatura de trabalho (oC): %lf",Temp);
printf ("\n Tensao admissivel do material (kgf/cm2): %lf",S);
printf ("\n Coeficiente de eficiencia de solda: %lf",E);
printf ("\n A espessura do costado e (mm): %lf",e);
printf ("\n A espessura para estabilidade estrutural (mm): %lf",es);
printf ("\n Pressao maxima de trabalho admissivel (Pa): %lf",PMTA);
printf
("\n=============================================================================");
printf ("\n---->> DADOS SOBRE OS TAMPOS: <<----");
if (Tampo==1)
{printf ("\n Tipo de tampo: Torrisferico");
printf ("\n A espessura do tampo torrisferico e (mm): %lf",e_Torri);
printf ("\n Pressao maxima de trabalho admissivel no tampo (Pa): %lf",e_Torri_PMTA);}
else if (Tampo==2)
{printf ("\n Tipo de tampo: Conico");
printf ("\n A espessura do tampo conico e (mm): %lf",e_Cone);
printf ("\n Pressao maxima de trabalho admissivel no tampo (Pa): %lf",e_Cone_PMTA);}
else if (Tampo==3)
{printf ("\n Tipo de tampo: Plano");
printf ("\n A espessura do tampo plano e (mm): %lf",e_Reto);
printf ("\n Pressao maxima de trabalho admissivel no tampo (Pa): %lf",e_Reto_PMTA);}
47
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
printf
("\n=============================================================================");
printf ("\n---->> DADOS GERAIS <<----");
if (MC==1)
{printf ("\n Classe do material: A-285-C (Aco carbono)");}
if (MC==2)
{printf ("\n Classe do material: A-387-11 c 11 (Aco-liga 1.1/4 Cr - 1/2 Mo)");}
if (MC==3)
{printf ("\n Classe do material: A-387-5 c 11 (Aco-liga 5 Cr - 1/2 Mo)");}
if (Grau==1)
{printf ("\n Grau da inspecao de soldagem: Radiografia Total");}
if (Grau==2)
{printf ("\n Grau de inspecao de soldagem: Radiografia Parcial");}
if (Grau==3)
{printf ("\n Grau de inspecao de soldagem: Nao Radiografada");}
if (Tipo==1)
{printf ("\n OBSERVACAO:");
printf ("\n Solda de topo, feita por ambos os lados, ou procedimento equivalente,");
printf ("\n de forma a obter penetracao e fusao totais. (Excluem-se as soldas com");
printf ("\n mata-junta permanente).\n\n");}
if (Tipo==2)
{printf ("\n OBSERVACAO");
printf ("\n Solda de topo, feita por um so lado, com mata-junta permanente.\n\n");}
getchar ();
return 0;
}
48
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
REFERNCIAS
AMERICANSOCIETYofMECHANICALENGINEERS.ASMESEC.VIIIDiv.I:BoilerandPressureVessel
Code.NewYork:648p.2004.
ARAJO,E.C.C.TrocadoresdeCalor,1ed.,EdUFSCAR,SoCarlos,2002.
CARVALHO,C.deO.FILHO. TrabalhoIndividualNo.1(OBRIGATRIO)ProjetodeDimensionamento
de Trocadores de Calor. Proposta de Trabalho Acadmico (Graduao em Engenharia Mecnica) Centro de
Tecnologia,UniversidadeFederaldoCear,Fortaleza,2007.
CARVALHO,C.deO.FILHO. TrabalhoIndividualNo.2(OPCIONAL)ProjetodeIsolamentoTrmicode
LinhasdeVapor.PropostadeTrabalhoAcadmico(GraduaoemEngenhariaMecnica)CentrodeTecnologia,
UniversidadeFederaldoCear,Fortaleza,2007.
CMARA,S.L..ProjetodeVigasBiapoiadasPROVIG.2006.Monografia(GraduaoemEngenhariaMecnica)
CentrodeTecnologia,UniversidadeFederaldoCear,Fortaleza,2006.
GONSALES, D. JR.. Software para dimensionamento de vasos de presso DIVAP. 2006. Monografia
(GraduaoemEngenhariaMecnica)CentrodeTecnologia,UniversidadeFederaldoCear,Fortaleza,2006.
HERBERT,S..CCompletoeTotal.3ed.rev.,SoPaulo,SP:MakronBooksEd.,1997.
HIBBELER,R.C.ResistnciadosMateriais.3ed.(Traduzida),RiodeJaneiro,RJ:LivrosTcnicoseCientficos
Ed.,2000.cap.11e12.
INCROPERA,F.P.eDEWITT,D.P.FundamentosdeTransfernciadeCaloredeMassa,5ed.(Traduzida),
LTC,RiodeJaneiro,2003.cap.6,7,8,9,10.
KERNIGHAN,B.W.,RITCHIE,D.M.,TheCProgrammingLanguage.PrenticeHall,Inc.,1988.
KREITH,F.eBOEHM,R.F.HeatandMassTransferMechanicalEngineeringHandbook,Ed.FrankKreith,
1999.
MORAN, M.J., DEWITT, D.P., MUNSON, B.R. e SHAPIRO, H.N. Introduo a Engenharia dos Sistemas
Trmicos,1ed.,LTC,RiodeJaneiro,2005.
SANTOS,H.J..CursodeLinguagemC.2000.Santos,SP:UNISANTOS.
TELLES,PedroCarlosdaSilva.Vasosdepresso.RiodeJaneiro,RJ:LivrosTcnicoseCientficosEd.,1991.
49
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
APNDICEAFontesdeinformaoparainstalaodoUbuntu
http://img01.link.estadao.com.br/multimidia/infografico/InstalarLinux.pdf
http://brlinux.org/linux/tutorial_de_instalao_do_ubuntu_6.06
http://www.gnx.com.br/apostilas/apostilaUbuntuInstalacaoGPL.pdf
http://www.guiaubuntupt.org/wiki/index.php?title=Como_instalar_tudo_em_Ubuntu
http://glua.ua.pt/Suporte/Ubuntu?action=AttachFile&do=get&target=iuni.pdf
http://www.guiadohardware.net/comunidade/ubuntuparticoes/272726/
http://www.forumpcs.com.br/viewtopic.php?t=128477
http://wiki.meyer.eti.br/_media/howto/ubuntufeistyinstall.pdf
http://ubuntuforumbr.org/
http://ubuntuforums.org/
http://www.linuxforums.org/forum/ubuntuhelp/
50
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
APNDICEBCdigosfontedosprogramasabordados
ExemploreferenteaFigura3.1.1
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//-----------------------------------
main ()
{
printf ("Nao faz nada!\n");
return 0;
}
ExemploreferenteaFigura3.2.1
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//-----------------------------------
main ()
{
double x, y, z;
printf ("\nVamos somar dois numeros.");
printf ("\n\nDigite o valor de x:");
scanf ("%lf",&x);
getchar ();
printf ("Digite o valor de y:");
scanf ("%lf",&y);
getchar ();
z=x+y;
printf ("z e igual a: %lf\n",z);
getchar ();
return 0;
}
ExemploreferenteaFigura3.3.1
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//-----------------------------------
main ()
{
double x, y;
printf("\nEntre com o ngulo para calcularmos o seno:");
scanf("%lf",&x);
getchar();
y = sin((x*M_PI)/180);
printf ("\nO valor do seno e: %lf\n",y);
getchar();
return 0;
}
ExemploreferenteaFigura3.3.2
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//-----------------------------------
double DegToRad (double x)
{return (x*M_PI/180);}
//-----------------------------------
main ()
51
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
{
double x, y;
printf("\nEntre com o ngulo para calcularmos o seno:");
scanf("%lf",&x);
getchar();
y = sin(DegToRad(x));
printf ("\nO valor do seno e: %lf\n",y);
getchar();
return 0;
}
Dimensionamentodeisolamentotrmicoemlinhadevapor
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//------------------------------------------------------------------------------
main ()
{
inicio:
printf ("\n DIMENSIONAMENTO DE ISOLAMENTO TERMICO EM LINHA DE VAPOR");
printf ("\n\n\n 1 - Determina a espessura do isolamento a partir da queda de
temperatura.");
printf ("\n 2 - Determina a queda de temperatura a partir da espessura do isolamento.");
printf ("\n 3 - Finalizar o programa.");
printf ("\n\n\n Escolha a Situacao:");
int x;
scanf ("%d",&x);
if (x==1)
{
double R1, R2, R3, KI, KT, H, L, VAZAO, Cp, e, vazao,
C0, C1, C2, C3, Teta, TI, TA, Tsi, RC, Funcao, T_int, T_ext,
PESO, Qr, dT, Ro, G, Eiso, dTporL, L1, L2, T1, T2;
printf ("\n Espeficique a diametro externo do tubo (m): ");
scanf ("%lf",&R2);
printf (" Especifique a espessura da parede do tubo (m): ");
scanf ("%lf",&e);
R1 = R2-e;
printf ("\n Escolha o material do tubo:\n");
printf (" 1 - Tubo de aco carbono ANSI 1010.\n");
printf (" 2 - Tubo de aco INOX ANSI 304.\n");
printf (" 3 - Tudo de bronze comercial.\n");
printf (" Escolha: ");
int KTubo;
scanf ("%d",&KTubo);
if (KTubo == 1)
{KT = 63.9;} //Tubo de ao carbono ANSI 1010.
if (KTubo == 2)
{KT = 14.9;} //Tubo de ao INOX ANSI 304.
if (KTubo == 3)
{KT = 52;} //Tubo de bronze comercial.
printf ("\n Escolha o material do isolamento termico:\n");
printf (" 1 - Manta de la de vidro.\n");
printf (" 2 - Tubo bi-partido de la de rocha.\n");
printf (" 3 - Flocos de la de rocha.\n");
printf (" Escolha: ");
int KIsolamento;
scanf ("%d",&KIsolamento);
if (KIsolamento == 1)
{KI = 0.025;
Ro = 40;}
if (KIsolamento == 2)
{KI = 0.046;
Ro = 130;}
if (KIsolamento == 3)
{KI = 0.037;
Ro = 60;}
H = 30; //Coeficiente de conveco externa.
printf ("\n Informe o comprimento da tubulacao (m): ");
scanf ("%lf",&L);
52
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
printf (" Informe a vazao massica do vapor (kg/s): ");
scanf ("%lf",&vazao);
VAZAO = vazao/3600;
printf (" Informe a temperatura do vapor (oC): ");
scanf ("%lf",&T_int);
printf (" Informe a temperatura do ambiente (oC): ");
scanf ("%lf",&T_ext);
TI = T_int+273.15;
TA = T_ext+273.15;
Teta = TI/1000;
C0 = 1.79;
C1 = 0.107*Teta;
C2 = 0.586*Teta*Teta;
C3 = -0.2*Teta*Teta*Teta;
G = 9.81;
Cp = (C0+C1+C2+C3)*1000;
R3 = R2;
printf (" Informe a queda de temperatura na linha (oC/m):");
scanf ("%lf",&dTporL);
Funcao = ((TI-TA)/((((log(R2/R1)))/(2*M_PI*KT*L))+(((log(R3/R2)))/
(2*M_PI*KI*L))+(1/(H*2*M_PI*R3*L))))/(VAZAO*Cp);
while (((dTporL*L)/Funcao)<1)
{
R3 = R3+0.0000001;
Funcao = ((TI-TA)/((((log(R2/R1)))/(2*M_PI*KT*L))+(((log(R3/R2)))/
(2*M_PI*KI*L))+(1/(H*2*M_PI*R3*L))))/(VAZAO*Cp);
}
Eiso = R3-R2;
printf ("\n Espessura do isolamento recomendada ========================>
%5.4lf (m)", Eiso);
L1 = log(R2/R1);
L2 = log(R3/R2);
T1 = (L1*H*R3)/KT;
T2 = (L2*H*R3)/KI;
Tsi = ((TI/(T1+T2))+TA)/((1/(T1+T2))+1)-273.15;
printf ("\n Temperatura da superficie externa do isolamento ============>
%5.2lf oC", Tsi);
PESO = G*Ro*(R3*R3-R2*R2)*M_PI;
RC = (KI/H);
printf ("\n O peso do isolamento em kgf/m ==============================>
%5.3lf N/m", PESO);
printf ("\n O raio critico do isolamento ===============================>
%5.5lf m", RC);
if (RC<R1)
{
printf ("\n\n Como o raio do tubo e maior do que o raio critico, qualquer
adicao de");
printf ("\n camadas de isolamento ira aumentar a resistencia total e
portanto");
printf ("\n diminuindo a perda de calor.");
}
else
{
printf ("\n\n Como o raio do tubo e menor que o raio critico, a resistencia
total");
printf ("\n diminui e, portanto, a taxa de calor aumenta com a adicao de
camadas");
printf ("\n de isolamento.");
}
printf ("\n\n\n Pressione a tecla ENTER para reiniciar.");
getchar();
getchar();
goto inicio;
}
if (x==2)
{
double R1, R2, R3, KI, KT, H, L, VAZAO, Cp, T1, T2, T_int, T_ext,
C0, C1, C2, C3, Teta, TI, TA, Tsi, RC, L1, L2, e, vazao,
D1, D2, PESO, Qr, dT, Ro, G, Eiso, dTporL, Q1, Q2, Q3;
printf ("\n Espeficique a diametro externo do tubo (m): ");
scanf ("%lf",&R2);
printf (" Especifique a espessura da parede do tubo (m): ");
scanf ("%lf",&e);
R1 = R2-e;
printf ("\n Escolha o material do tubo:\n");
53
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
printf (" 1 - Tubo de aco carbono ANSI 1010.\n");
printf (" 2 - Tubo de aco INOX ANSI 304.\n");
printf (" 3 - Tudo de bronze comercial.\n");
printf (" Escolha: ");
int KTubo;
scanf ("%d",&KTubo);
if (KTubo == 1)
{KT = 63.9;} //Tubo de ao carbono ANSI 1010.
if (KTubo == 2)
{KT = 14.9;} //Tubo de ao INOX ANSI 304.
if (KTubo == 3)
{KT = 52;} //Tubo de bronze comercial.
printf ("\n Escolha o material do isolamento termico:\n");
printf (" 1 - Manta de la de vidro.\n");
printf (" 2 - Tubo bi-partido de la de rocha.\n");
printf (" 3 - Flocos de la de rocha.\n");
printf (" Escolha: ");
int KIsolamento;
scanf ("%d",&KIsolamento);
if (KIsolamento == 1)
{KI = 0.025;
Ro = 40;}
if (KIsolamento == 2)
{KI = 0.046;
Ro = 130;}
if (KIsolamento == 3)
{KI = 0.037;
Ro = 60;}
H = 30;
printf ("\n Informe o comprimento da tubulacao (m): ");
scanf ("%lf",&L);
printf (" Informe a vazao massica do vapor (kg/s): ");
scanf ("%lf",&vazao);
VAZAO = vazao/3600;
printf (" Informe a temperatura do vapor (oC): ");
scanf ("%lf",&T_int);
printf (" Informe a temperatura do ambiente (oC): ");
scanf ("%lf",&T_ext);
TI = T_int+273.15;
TA = T_ext+273.15;
Teta = TI/1000;
C0 = 1.79;
C1 = 0.107*Teta;
C2 = 0.586*Teta*Teta;
C3 = -0.2*Teta*Teta*Teta;
G = 9.81;
Cp = (C0+C1+C2+C3)*1000;
printf (" Espessura do isolamento desejado (m):");
scanf ("%lf",&Eiso);
R3 = R2+Eiso;
L1 = log(R2/R1);
L2 = log(R3/R2);
D1 = 2*M_PI*KT*L;
D2 = 2*M_PI*KI*L;
Q1 = L1/D1;
Q2 = L2/D2;
Q3 = 1/(2*M_PI*R3*H*L);
Qr = (TI-TA)/(Q1+Q2+Q3);
dT = (Qr)/(VAZAO*Cp);
dTporL = dT/L;
T1 = (L1*H*R3)/KT;
T2 = (L2*H*R3)/KI;
Tsi = ((TI/(T1+T2))+TA)/((1/(T1+T2))+1)-273.15;
PESO = G*Ro*(R3*R3-R2*R2)*M_PI;
RC = (KI/H);
printf ("\n A queda de temperatura na linha por unidade de comprimento =>
%5.9lf oC/m", dTporL);
printf ("\n Temperatura da superficie externa do isolamento ============>
%5.2lf oC", Tsi);
printf ("\n O peso do isolamento em kgf/m ==============================>
%5.3lf N/m", PESO);
printf ("\n O raio critico do isolamento ===============================>
%5.5lf m", RC);
if (RC<R1)
{
54
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
printf ("\n\n Como o raio do tubo e maior do que o raio critico, qualquer
adicao de");
printf ("\n camadas de isolamento ira aumentar a resistencia total e
portanto");
printf ("\n diminuindo a perda de calor.");
}
else
{
printf ("\n\n Como o raio do tubo e menor que o raio critico, a resistencia
total");
printf ("\n diminui e, portanto, a taxa de calor aumenta com a adicao de
camadas");
printf ("\n de isolamento.");
}
printf ("\n\n\n Pressione a tecla ENTER para reiniciar.");
getchar();
getchar();
goto inicio;
}
if (x==3)
{
return 0;
}
getchar();
return 0;
}
Projetodeumtrocadordecalordotipocascoetubos(gualeo)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//---------------------------------------------------------------------------
main ()
{
//Declarao de algumas constantes e variveis.
int x, y, w;
double TempHE, dHE, cpHE, uHE, vHE, kHE, aHE, PrHE, TempHM, PI, TempHEntrada,
TempHSaida, TempHS, dHS, cpHS, uHS, vHS, kHS, aHS, PrHS, mH, U, dTempC,
mc, RedTubo, f, factor001, factor002, NudTubo, ht, R, S, F, factor003,
factor004, factor005, factor006, factor007, L, DeltaTempLM, Atroca,
DcascoIN, Razao, VolH2O, NudCasco, hc, mh, q, Dtubo, Dcasco, N, dTempH,
Bocal, P, Nf, C, Passo, m, n, Abocal, Q, V, Vmax, RedCasco, vHM, kHM,
aHM, PrHM, dHM, cpHM, uHM, TempCE, TempCS, TempCM, dCE, cpCE, uCE, kCE,
PrCE, dCS, cpCS, uCS, kCS, PrCS, TempCEntrada, TempCSaida, dCM, cpCM,
uCM, kCM, PrCM, Acalculada, Excesso;
//Mensagem de informao do programa.
printf ("\n\n SOFTWARE PARA DIMENSIONAMENTO DE");
printf ("\n TROCADOR DE CALOR DO TIPO CASCO E TUBO");
printf ("\n\n ===== \n");
printf (" | | \n");
printf (" |---|----------------------|---| \n");
printf (" | ||====================|| | \n");
printf (" || | ||====================|| | ||\n");
printf (" ||--- ||====================|| ---||\n");
printf (" ||--- ||====================|| ---||\n");
printf (" || | ||====================|| | ||\n");
printf (" | ||====================|| | \n");
printf (" |---|----------------------|---| \n");
printf (" | | \n");
printf (" ===== \n");
//Entrada dos valores da temperatura de entrada e sada do leo.
printf ("\n OBSERVACOES:");
printf ("\n 1 - A temperatura do oleo deve estar na faixa de (-0.15 <-> 156.85) oC,");
printf ("\n pois corresponde a tabela encotrada em literatura.");
printf ("\n 2 - A temperatura da agua deve estar na faixa de (0 <-> 91.85) oC,");
printf ("\n pois corresponde a tabela encotrada em literatura.");
printf ("\n 3 - A agua entra pelo feixe de tubos e o oleo pelo casco, isso se deve,");
55
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
printf ("\n a literatura recomenda que o fluido quente passe pelo casco.");
printf ("\n 4 - O trocador e do tipo 'contra corrente' pois trocadores desse tipo,");
printf ("\n apresentam melhor troca termica.");
printf ("\n\n Entre com o valor da temperatura de entrada (quente) do oleo (oC): ");
scanf ("%lf",&TempHEntrada);
getchar ();
printf (" Entre com o valor da temperatura de saida (fria) do oleo (oC): ");
scanf ("%lf",&TempHSaida);
getchar ();
//Busca de TempHM pelos valores menores e maiores.
TempHM = (TempHEntrada+TempHSaida)/2;
//1a. parte da interpolao.
if (TempHM<=-0.15)
{TempHE = -0.15;
dHE = 889.1;
cpHE = 1796;
uHE = 3.85;
vHE = 0.004280;
kHE = 0.147;
aHE = 0.0000000910;
PrHE = 47000;
goto fimTempHE;}
if (TempHM<=6.85)
{TempHE = 6.85;
dHE = 895.3;
cpHE = 1827;
uHE = 2.17;
vHE = 0.002430;
kHE = 0.144;
aHE = 0.0000000880;
PrHE = 27500;
goto fimTempHE;}
if (TempHM<=16.85)
{TempHE = 16.85;
dHE = 890.0;
cpHE = 1868;
uHE = 0.999;
vHE = 0.001120;
kHE = 0.145;
aHE = 0.0000000872;
PrHE = 12900;
goto fimTempHE;}
if (TempHM<=26.85)
{TempHE = 26.85;
dHE = 884.1;
cpHE = 1909;
uHE = 0.486;
vHE = 0.000550;
kHE = 0.145;
aHE = 0.0000000859;
PrHE = 6400;
goto fimTempHE;}
if (TempHM<=36.85)
{TempHE = 36.85;
dHE = 877.9;
cpHE = 1951;
uHE = 0.253;
vHE = 0.000288;
kHE = 0.145;
aHE = 0.0000000847;
PrHE = 3400;
goto fimTempHE;}
if (TempHM<=46.85)
{TempHE = 46.85;
dHE = 871.8;
cpHE = 1993;
uHE = 0.141;
vHE = 0.000161;
kHE = 0.143;
aHE = 0.0000000823;
PrHE = 1965;
56
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
goto fimTempHE;}
if (TempHM<=56.85)
{TempHE = 56.85;
dHE = 865.8;
cpHE = 2035;
uHE = 0.0836;
vHE = 0.0000966;
kHE = 0.141;
aHE = 0.0000000800;
PrHE = 1205;
goto fimTempHE;}
if (TempHM<=66.85)
{TempHE = 66.85;
dHE = 859.9;
cpHE = 2076;
uHE = 0.0531;
vHE = 0.0000617;
kHE = 0.139;
aHE = 0.0000000779;
PrHE = 793;
goto fimTempHE;}
if (TempHM<=76.85)
{TempHE = 76.85;
dHE = 853.9;
cpHE = 2118;
uHE = 0.0356;
vHE = 0.0000417;
kHE = 0.138;
aHE = 0.0000000763;
PrHE = 546;
goto fimTempHE;}
if (TempHM<=86.85)
{TempHE = 86.85;
dHE = 847.8;
cpHE = 2161;
uHE = 0.0252;
vHE = 0.0000297;
kHE = 0.138;
aHE = 0.0000000753;
PrHE = 395;
goto fimTempHE;}
if (TempHM<=96.85)
{TempHE = 96.85;
dHE = 841.8;
cpHE = 2206;
uHE = 0.0186;
vHE = 0.0000220;
kHE = 0.137;
aHE = 0.0000000738;
PrHE = 300;
goto fimTempHE;}
if (TempHM<=106.85)
{TempHE = 106.85;
dHE = 836.0;
cpHE = 2250;
uHE = 0.0141;
vHE = 0.0000169;
kHE = 0.136;
aHE = 0.0000000723;
PrHE = 233;
goto fimTempHE;}
if (TempHM<=116.85)
{TempHE = 116.85;
dHE = 830.6;
cpHE = 2294;
uHE = 0.0110;
vHE = 0.0000133;
kHE = 0.135;
aHE = 0.0000000709;
PrHE = 187;
goto fimTempHE;}
if (TempHM<=126.85)
{TempHE = 126.85;
dHE = 825.1;
cpHE = 2337;
57
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
uHE = 0.00874;
vHE = 0.0000106;
kHE = 0.134;
aHE = 0.0000000695;
PrHE = 152;
goto fimTempHE;}
if (TempHM<=136.85)
{TempHE = 136.85;
dHE = 818.9;
cpHE = 2381;
uHE = 0.00698;
vHE = 0.00000852;
kHE = 0.133;
aHE = 0.0000000682;
PrHE = 125;
goto fimTempHE;}
if (TempHM<=146.85)
{TempHE = 146.85;
dHE = 812.1;
cpHE = 2427;
uHE = 0.00564;
vHE = 0.00000694;
kHE = 0.133;
aHE = 0.0000000675;
PrHE = 103;
goto fimTempHE;}
if (TempHM<=156.85)
{TempHE = 156.85;
dHE = 806.5;
cpHE = 2471;
uHE = 0.00470;
vHE = 0.00000583;
kHE = 0.132;
aHE = 0.0000000662;
PrHE = 88;}
fimTempHE:
//Continuao da 2a. parte para interpolao.
if (TempHM>=156.85)
{TempHS = 156.85;
dHS = 806.5;
cpHS = 2471;
uHS = 0.00470;
vHS = 0.00000583;
kHS = 0.132;
aHS = 0.0000000662;
PrHS = 88;
goto fimTempHS;}
if (TempHM>=146.85)
{TempHS = 146.85;
dHS = 812.1;
cpHS = 2427;
uHS = 0.00564;
vHS = 0.00000694;
kHS = 0.133;
aHS = 0.0000000675;
PrHS = 103;
goto fimTempHS;}
if (TempHM>=136.85)
{TempHS = 136.85;
dHS = 818.9;
cpHS = 0.00698;
vHS = 0.00000852;
kHS = 0.133;
aHS = 0.0000000682;
PrHS = 125;
goto fimTempHS;}
if (TempHM>=126.85)
{TempHS = 126.85;
dHS = 825.1;
cpHS = 2337;
uHS = 0.00874;
vHS = 0.0000106;
kHS = 0.134;
58
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
aHS = 0.0000000695;
PrHS = 152;
goto fimTempHS;}
if (TempHM>=116.85)
{TempHS = 116.85;
dHS = 830.6;
cpHS = 2294;
uHS = 0.0110;
vHS = 0.0000133;
kHS = 0.135;
aHS = 0.0000000709;
PrHS = 187;
goto fimTempHS;}
if (TempHM>=106.85)
{TempHS = 106.85;
dHS = 836.0;
cpHS = 2250;
uHS = 0.0141;
vHS = 0.0000169;
kHS = 0.136;
aHS = 0.0000000723;
PrHS = 233;
goto fimTempHS;}
if (TempHM>=96.85)
{TempHS = 96.85;
dHS = 841.8;
cpHS = 2206;
uHS = 0.0186;
vHS = 0.0000220;
kHS = 0.137;
aHS = 0.0000000738;
PrHS = 300;
goto fimTempHS;}
if (TempHM>=86.85)
{TempHS = 86.85;
dHS = 847.8;
cpHS = 2161;
uHS = 0.0252;
vHS = 0.0000297;
kHS = 0.138;
aHS = 0.0000000753;
PrHS = 395;
goto fimTempHS;}
if (TempHM>=76.85)
{TempHS = 76.85;
dHS = 853.9;
cpHS = 2118;
uHS = 0.0356;
vHS = 0.0000417;
kHS = 0.138;
aHS = 0.0000000763;
PrHS = 546;
goto fimTempHS;}
if (TempHM>=66.85)
{TempHS = 66.85;
dHS = 859.9;
cpHS = 2076;
uHS = 0.0531;
vHS = 0.0000617;
kHS = 0.139;
aHS = 0.0000000779;
PrHS = 793;
goto fimTempHS;}
if (TempHM>=56.85)
{TempHS = 56.85;
dHS = 865.8;
cpHS = 2035;
uHS = 0.0836;
vHS = 0.0000966;
kHS = 0.141;
aHS = 0.0000000800;
PrHS = 1205;
goto fimTempHS;}
if (TempHM>=46.85)
{TempHS = 46.85;
59
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
dHS = 871.8;
cpHS = 1993;
uHS = 0.141;
vHS = 0.000161;
kHS = 0.143;
aHS = 0.0000000823;
PrHS = 1965;
goto fimTempHS;}
if (TempHM>=36.85)
{TempHS = 36.85;
dHS = 877.9;
cpHS = 1951;
uHS = 0.253;
vHS = 0.000288;
kHS = 0.145;
aHS = 0.0000000847;
PrHS = 3400;
goto fimTempHS;}
if (TempHM>=26.85)
{TempHS = 26.85;
dHS = 884.1;
cpHS = 1909;
uHS = 0.486;
vHS = 0.000550;
kHS = 0.145;
aHS = 0.0000000859;
PrHS = 6400;
goto fimTempHS;}
if (TempHM>=16.85)
{TempHS = 16.85;
dHS = 890.0;
cpHS = 1868;
uHS = 0.999;
vHS = 0.001120;
kHS = 0.145;
aHS = 0.0000000872;
PrHS = 12900;
goto fimTempHS;}
if (TempHM>=6.85)
{TempHS = 6.85;
dHS = 895.3;
cpHS = 1827;
uHS = 2.17;
vHS = 0.002430;
kHS = 0.144;
aHS = 0.0000000880;
PrHS = 27500;
goto fimTempHS;}
if (TempHM>=-0.15)
{TempHS = -0.15;
dHS = 889.1;
cpHS = 1796;
uHS = 3.85;
vHS = 0.004280;
kHS = 0.147;
aHS = 0.0000000910;
PrHS = 47000;}
fimTempHS:


//Clculos de interpolaes.
vHM = (((TempHM-TempHE)*(vHS-vHE))/(TempHS-TempHE))+vHE;
kHM = (((TempHM-TempHE)*(kHS-kHE))/(TempHS-TempHE))+kHE;
aHM = (((TempHM-TempHE)*(aHS-aHE))/(TempHS-TempHE))+aHE;
PrHM = (((TempHM-TempHE)*(PrHS-PrHE))/(TempHS-TempHE))+PrHE;
dHM = (((TempHM-TempHE)*(dHS-dHE))/(TempHS-TempHE))+dHE;
cpHM = (((TempHM-TempHE)*(cpHS-cpHE))/(TempHS-TempHE))+cpHE;
uHM = (((TempHM-TempHE)*(uHS-uHE))/(TempHS-TempHE))+uHE;
//Entrada do valor da vazo do leo.
printf ("\n Entre com a vazao do oleo (L/min): ");
scanf ("%lf",&mH);
getchar ();
60
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
//Clculos a partir da vazo do leo fornecida.
P = 0.01905;
mh = (mH/60)*(dHM/1000);
dTempH = TempHEntrada-TempHSaida;
q = mh*cpHM*dTempH;
//Escolha do dimetro do tubo.
printf ("\n Escolha o diametro do tubo do feixe: ");
printf ("\n 1 - Tubo de 3/8 in.");
printf ("\n 2 - Tubo de 1/2 in.");
printf ("\n 3 - Tubo de 5/8 in.");
printf ("\n A escolha e: ");
scanf ("%d",&x);
getchar ();
if (x==1)
{Dtubo = 0.009525;}
if (x==2)
{Dtubo = 0.0127;}
if (x==3)
{Dtubo = 0.015875;}
//Escolha a configurao do trocador nos parmetros abaixo.
printf ("\n Escolha a configuracao do trocador de calor: ");
printf ("\n 1 - 12 tubos, 1 passo, 3 in de casco");
printf ("\n 2 - 16 tubos, 1 passo, 3.5 in de casco");
printf ("\n 3 - 16 tubos, 1 passo, 4 in de casco");
printf ("\n 4 - 36 tubos, 1 passo, 5 in de casco");
printf ("\n 5 - 52 tubos, 1 passo, 6 in de casco");
printf ("\n 6 - 88 tubos, 1 passo, 8 in de casco");
printf ("\n 7 - 148 tubos, 1 passo, 10 in de casco");
printf ("\n 8 - 208 tubos, 1 passo, 12 in de casco");
printf ("\n 9 - 6 tubos, 2 passos, 3 in de casco");
printf ("\n 10 - 8 tubos, 2 passos, 3.5 in de casco");
printf ("\n 11 - 8 tubos, 2 passos, 4 in de casco");
printf ("\n 12 - 18 tubos, 2 passos, 5 in de casco");
printf ("\n 13 - 26 tubos, 2 passos, 6 in de casco");
printf ("\n 14 - 44 tubos, 2 passos, 8 in de casco");
printf ("\n 15 - 74 tubos, 2 passos, 10 in de casco");
printf ("\n 16 - 104 tubos, 2 passos, 12 in de casco");
printf ("\n 17 - 3 tubos, 4 passos, 3 in de casco");
printf ("\n 18 - 4 tubos, 4 passos, 3,5 in de casco");
printf ("\n 19 - 4 tubos, 4 passos, 4 in de casco");
printf ("\n 20 - 9 tubos, 4 passos, 5 in de casco");
printf ("\n 21 - 13 tubos, 4 passos, 6 in de casco");
printf ("\n 22 - 22 tubos, 4 passos, 8 in de casco");
printf ("\n 23 - 37 tubos, 4 passos, 10 in de casco");
printf ("\n 24 - 52 tubos, 4 passos, 12 in de casco");
printf ("\n A escolha e: ");
scanf ("%d",&y);
getchar ();
if (y==1)
{N = 12;
Dcasco = 3*0.0254;
Nf = 4;
C = 0.90;
Passo = 1;}
if (y==2)
{N = 16;
Dcasco = 3.5*0.0254;
Nf = 4;
C = 0.90;
Passo = 1;}
if (y==3)
{N = 16;
Dcasco = 4*0.0254;
Nf = 4;
C = 0.90;
Passo = 1;}
if (y==4)
{N = 36;
Dcasco = 5*0.0254;
Nf = 6;
61
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
C = 0.95;
Passo = 1;}
if (y==5)
{N = 52;
Dcasco = 6*0.0254;
Nf = 7;
C = 0.96;
Passo = 1;}
if (y==6)
{N = 88;
Dcasco = 8*0.0254;
Nf = 9;
C = 0.98;
Passo = 1;}
if (y==7)
{N = 148;
Dcasco = 10*0.0254;
Nf = 12;
C = 0.99;
Passo = 1;}
if (y==8)
{N = 208;
Dcasco = 12*0.0254;
Nf = 14;
C = 0.99;
Passo = 1;}
if (y==9)
{N = 6;
Dcasco = 3*0.0254;
Nf = 4;
C = 0.90;
Passo = 2;}
if (y==10)
{N = 8;
Dcasco = 3.5*0.0254;
Nf = 4;
C = 0.90;
Passo = 2;}
if (y==11)
{N = 8;
Dcasco = 4*0.0254;
Nf = 4;
C = 0.90;
Passo = 2;}
if (y==12)
{N = 18;
Dcasco = 5*0.0254;
Nf = 6;
C = 0.95;
Passo = 2;}
if (y==13)
{N = 26;
Dcasco = 6*0.0254;
Nf = 7;
C = 0.96;
Passo = 2;}
if (y==14)
{N = 44;
Dcasco = 8*0.0254;
Nf = 9;
C = 0.98;
Passo = 2;}
if (y==15)
{N = 74;
Dcasco = 10*0.0254;
Nf = 12;
C = 0.99;
Passo = 2;}
if (y==16)
{N = 104;
Dcasco = 12*0.0254;
Nf = 14;
C = 0.99;
Passo = 2;}
if (y==17)
62
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
{N = 3;
Dcasco = 3*0.0254;
Nf = 4;
C = 0.90;
Passo = 4;}
if (y==18)
{N = 4;
Dcasco = 3.5*0.0254;
Nf = 4;
C = 0.90;
Passo = 4;}
if (y==19)
{N = 4;
Dcasco = 4*0.0254;
Nf = 4;
C = 0.90;
Passo = 4;}
if (y==20)
{N = 9;
Dcasco = 5*0.0254;
Nf = 6;
C = 0.95;
Passo = 4;}
if (y==21)
{N = 13;
Dcasco = 6*0.0254;
Nf = 7;
C = 0.96;
Passo = 4;}
if (y==22)
{N = 22;
Dcasco = 8*0.0254;
Nf = 9;
C = 0.98;
Passo = 4;}
if (y==23)
{N = 37;
Dcasco = 10*0.0254;
Nf = 12;
C = 0.99;
Passo = 4;}
if (y==24)
{N = 52;
Dcasco = 12*0.0254;
Nf = 14;
C = 0.99;
Passo = 4;}
//Escolha o bocal de entrada do leo.
printf ("\n Escolha o diametro do tubo do bocal de entrada do oleo:");
printf ("\n 1 - Bocal de 1 in");
printf ("\n 2 - Bocal de 1.5 in");
printf ("\n 3 - Bocal de 2 in");
printf ("\n A escolha e: ");
scanf ("%d",&w);
if (w==1)
{Bocal = 0.0254;}
if (w==2)
{Bocal = 0.0381;}
if (w==3)
{Bocal = 0.0508;}

//Calculos complementares como: No. de Reynolds, rea da seco do bocal e etc.
Abocal = M_PI*(Bocal/2)*(Bocal/2);
Q = (mH*0.001)/60;
V = Q/Abocal;
Vmax = (P*V)/(P-Dtubo);
RedCasco = (dHM*Vmax*Dtubo)/uHM;
if (RedCasco<=100)
{m = 0.4;
n = 0.36;}
else if (RedCasco<=1000)
{m = 0.5;
63
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
n = 0.36;}
else if (RedCasco<=200000)
{m = 0.63;
n = 0.36;}
else if(RedCasco<=2000000)
{m = 0.8;
n = 0.4;}
//Dados de temperatura da gua de entrada e sada desejadas.
printf ("\n Entre com o valor da temperatura de entrada (fria) da agua (oC): ");
scanf ("%lf",&TempCEntrada);
getchar ();
printf (" Entre com o valor da temperatura de saida (quente) da agua (oC): ");
scanf ("%lf",&TempCSaida);
getchar ();
//Busca de TempCM pelos valores menores e maiores.
TempCM = (TempCEntrada+TempCSaida)/2;
//1a. parte da interpolao.
if (TempCM<=0)
{TempCE = 0;
dCE = 1;
cpCE = 4217;
uCE = 0.001750;
kCE = 0.569;
PrCE = 12.99;
goto fimTempCE;}
if (TempCM<=1.85)
{TempCE = 1.85;
dCE = 1;
cpCE = 4211;
uCE = 0.001652;
kCE = 0.574;
PrCE = 12.22;
goto fimTempCE;}
if (TempCM<=6.85)
{TempCE = 6.85;
dCE = 1;
cpCE = 4198;
uCE = 0.001422;
kCE = 0.582;
PrCE = 10.26;
goto fimTempCE;}
if (TempCM<=11.85)
{TempCE = 11.85;
dCE = 1;
cpCE = 4189;
uCE = 0.001225;
kCE = 0.590;
PrCE = 8.81;
goto fimTempCE;}
if (TempCM<=16.85)
{TempCE = 16.85;
dCE = 1.001;
cpCE = 4184;
uCE = 0.001080;
kCE = 0.598;
PrCE = 7.56;
goto fimTempCE;}
if (TempCM<=21.85)
{TempCE = 21.85;
dCE = 1.002;
cpCE = 4181;
uCE = 0.000959;
kCE = 0.606;
PrCE = 6.62;
goto fimTempCE;}
if (TempCM<=26.85)
{TempCE = 26.85;
dCE = 1.003;
cpCE = 4179;
64
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
uCE = 0.000855;
kCE = 0.613;
PrCE = 5.83;
goto fimTempCE;}
if (TempCM<=31.85)
{TempCE = 31.85;
dCE = 1.005;
cpCE = 4178;
uCE = 0.000769;
kCE = 0.620;
PrCE = 5.20;
goto fimTempCE;}
if (TempCM<=36.85)
{TempCE = 36.85;
dCE = 1.007;
cpCE = 4178;
uCE = 0.000695;
kCE = 0.628;
PrCE = 4.62;
goto fimTempCE;}
if (TempCM<=41.85)
{TempCE = 41.85;
dCE = 1.009;
cpCE = 4179;
uCE = 0.000631;
kCE = 0.634;
PrCE = 4.16;
goto fimTempCE;}
if (TempCM<=46.85)
{TempCE = 46.85;
dCE = 1.011;
cpCE = 4180;
uCE = 0.000577;
kCE = 0.640;
PrCE = 3.77;
goto fimTempCE;}
if (TempCM<=51.85)
{TempCE = 51.85;
dCE = 1.013;
cpCE = 4182;
uCE = 0.000528;
kCE = 0.645;
PrCE = 3.42;
goto fimTempCE;}
if (TempCM<=56.85)
{TempCE = 56.85;
dCE = 1.016;
cpCE = 4184;
uCE = 0.000489;
kCE = 0.650;
PrCE = 3.15;
goto fimTempCE;}
if (TempCM<=61.85)
{TempCE = 61.85;
dCE = 1.018;
cpCE = 4186;
uCE = 0.000453;
kCE = 0.656;
PrCE = 2.88;
goto fimTempCE;}
if (TempCM<=66.85)
{TempCE = 66.85;
dCE = 1.021;
cpCE = 4188;
uCE = 0.000420;
kCE = 0.660;
PrCE = 2.66;
goto fimTempCE;}
if (TempCM<=71.85)
{TempCE = 71.85;
dCE = 1.024;
cpCE = 4191;
uCE = 0.000389;
kCE = 0.668;
PrCE = 2.45;
65
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
goto fimTempCE;}
if (TempCM<=76.85)
{TempCE = 76.85;
dCE = 1.027;
cpCE = 4195;
uCE = 0.000365;
kCE = 0.668;
PrCE = 2.29;
goto fimTempCE;}
if (TempCM<=81.85)
{TempCE = 81.85;
dCE = 1.030;
cpCE = 4199;
uCE = 0.000343;
kCE = 0.671;
PrCE = 2.14;
goto fimTempCE;}
if (TempCM<=86.85)
{TempCE = 86.85;
dCE = 1.034;
cpCE = 4203;
uCE = 0.000324;
kCE = 0.674;
PrCE = 2.02;
goto fimTempCE;}
if (TempCM<=91.85)
{TempCE = 91.85;
dCE = 1.038;
cpCE = 4209;
uCE = 0.000306;
kCE = 0.677;
PrCE = 1.91;
goto fimTempCE;}
fimTempCE:


//Continuao da 2a. parte para interpolao.
if (TempCM>=91.85)
{TempCS = 91.85;
dCS = 1.038;
cpCS = 4209;
uCS = 0.000306;
kCS = 0.677;
PrCS = 1.91;
goto fimTempCS;}
if (TempCM>=86.85)
{TempCS = 86.85;
dCS = 1.034;
cpCS = 4203;
uCS = 0.000324;
kCS = 0.674;
PrCS = 2.02;
goto fimTempCS;}
if (TempCM>=81.85)
{TempCS = 81.85;
dCS = 1.030;
cpCS = 4199;
uCS = 0.000343;
kCS = 0.671;
PrCS = 2.14;
goto fimTempCS;}
if (TempCM>=76.85)
{TempCS = 76.85;
dCS = 1.027;
cpCS = 4195;
uCS = 0.000365;
kCS = 0.668;
PrCS = 2.29;
goto fimTempCS;}
if (TempCM>=71.85)
{TempCS = 71.85;
dCS = 1.024;
cpCS = 4191;
uCS = 0.000389;
kCS = 0.668;
66
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
PrCS = 2.45;
goto fimTempCS;}
if (TempCM>=66.85)
{TempCS = 66.85;
dCS = 1.021;
cpCS = 4188;
uCS = 0.000420;
kCS = 0.660;
PrCS = 2.66;
goto fimTempCS;}
if (TempCM>=61.85)
{TempCS = 61.85;
dCS = 1.018;
cpCS = 4186;
uCS = 0.000453;
kCS = 0.656;
PrCS = 2.88;
goto fimTempCS;}
if (TempCM>=56.85)
{TempCS = 56.85;
dCS = 1.016;
cpCS = 4184;
uCS = 0.000489;
kCS = 0.650;
PrCS = 3.15;
goto fimTempCS;}
if (TempCM>=51.85)
{TempCS = 51.85;
dCS = 1.013;
cpCS = 4182;
uCS = 0.000528;
kCS = 0.645;
PrCS = 3.42;
goto fimTempCS;}
if (TempCM>=46.85)
{TempCS = 46.85;
dCS = 1.011;
cpCS = 4180;
uCS = 0.000577;
kCS = 0.640;
PrCS = 3.77;
goto fimTempCS;}
if (TempCM>=41.85)
{TempCS = 41.85;
dCS = 1.009;
cpCS = 4179;
uCS = 0.000631;
kCS = 0.634;
PrCS = 4.16;
goto fimTempCS;}
if (TempCM>=36.85)
{TempCS = 36.85;
dCS = 1.007;
cpCS = 4178;
uCS = 0.000695;
kCS = 0.628;
PrCS = 4.62;
goto fimTempCS;}
if (TempCM>=31.85)
{TempCS = 31.85;
dCS = 1.005;
cpCS = 4178;
uCS = 0.000769;
kCS = 0.620;
PrCS = 5.20;
goto fimTempCS;}
if (TempCM>=26.85)
{TempCS = 26.85;
dCS = 1.003;
cpCS = 4179;
uCS = 0.000855;
kCS = 0.613;
PrCS = 5.83;
goto fimTempCS;}
if (TempCM>=21.85)
67
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
{TempCS = 21.85;
dCS = 1.002;
cpCS = 4181;
uCS = 0.000959;
kCS = 0.606;
PrCS = 6.62;
goto fimTempCS;}
if (TempCM>=16.85)
{TempCS = 16.85;
dCS = 1.001;
cpCS = 4184;
uCS = 0.001080;
kCS = 0.598;
PrCS = 7.56;
goto fimTempCS;}
if (TempCM>=11.85)
{TempCS = 11.85;
dCS = 1;
cpCS = 4189;
uCS = 0.001225;
kCS = 0.590;
PrCS = 8.81;
goto fimTempCS;}
if (TempCM>=6.85)
{TempCS = 6.85;
dCS = 1;
cpCS = 4198;
uCS = 0.001422;
kCS = 0.582;
PrCS = 10.26;
goto fimTempCS;}
if (TempCM>=1.85)
{TempCS = 1.85;
dCS = 1;
cpCS = 4211;
uCS = 0.001652;
kCS = 0.574;
PrCS = 12.22;
goto fimTempCS;}
if (TempCM>=0)
{TempCS = 0;
dCS = 1;
cpCS = 4217;
uCS = 0.001750;
kCS = 0.569;
PrCS = 12.99;}
fimTempCS:


//Clculos de interpolaes.
dCM = (((TempCM-TempCE)*(dCS-dCE))/(TempCS-TempCE))+dCE;
cpCM = (((TempCM-TempCE)*(cpCS-cpCE))/(TempCS-TempCE))+cpCE;
uCM = (((TempCM-TempCE)*(uCS-uCE))/(TempCS-TempCE))+uCE;
kCM = (((TempCM-TempCE)*(kCS-kCE))/(TempCS-TempCE))+kCE;
PrCM = (((TempCM-TempCE)*(PrCS-PrCE))/(TempCS-TempCE))+PrCE;
//Continuao de alguns clculos.
dTempC = TempCSaida-TempCEntrada;
mc = q/(cpCM*dTempC);
RedTubo = (4*mc)/(N*M_PI*Dtubo*uCM);
f = 1/(((0.790*log(RedTubo))-1.64)*((0.790*log(RedTubo))-1.64));
factor001 = (f/8)*(RedTubo-1000)*PrCM;
factor002 = 1+12.7*pow(f/8,0.5)*(pow(PrCM,0.666666666667)-1);
//Clculo para o No. de Nussent (tubo) a partir da faixa do No. de Reynolds.
if (RedTubo>=2500)
{NudTubo = factor001/factor002;}
else
{NudTubo = 4.36;}
ht = (kCM*NudTubo)/Dtubo;
//Clculo do No. de Nussent (casco).
68
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
NudCasco = C*(pow(RedCasco,m))*(pow(PrHM,n))*(pow((PrHM/PrCM),0.25));
hc = (kHM*NudCasco)/Dtubo;
//Agora temos o hc e o ht, logo calcularemos o U.
U = 1/((1/ht)+(1/hc));
//Vamos calcular o fator de correo F.
R = (TempHEntrada-TempHSaida)/(TempCSaida-TempCEntrada);
S = (TempCSaida-TempCEntrada)/(TempHEntrada-TempCEntrada);
factor005 = pow(((R*R)+1),0.5);
factor003 = (2-(S*(1+R-factor005)));
factor004 = (2-(S*(1+R+factor005)));
factor006 = log((1-(S*R))/(1-S));
factor007 = (1-R);
F = ((factor005*factor006)/(factor007*log(factor003/factor004)));
//E agora calculando o valor de L que representar o comprimento do casco.
DeltaTempLM = ((TempHEntrada-TempCSaida)-(TempHSaida-TempCEntrada))/
log((TempHEntrada-TempCSaida)/(TempHSaida-TempCEntrada));
L = (q/(U*M_PI*Dtubo*DeltaTempLM*F*N*Passo));
//Clculo de dados como: rea de troca trmica, dimentro do casco e outros.
Atroca = L*N*Passo*(M_PI*2*(Dtubo/2));
DcascoIN = Dcasco/0.0254;
Razao = Atroca/(M_PI*(Dcasco/2)*(Dcasco/2));
VolH2O = (mc)/(dCM*1000);
Acalculada = (q/(U*DeltaTempLM));
Excesso = ((Atroca-Acalculada)/Atroca);

//Resultados.
printf
("\n\n----------------------------------------------------------------------------------")
;
printf ("\n CARACATERISTICAS BASICAS DO TROCADOR DE CALOR");
printf ("\n 1. Comprimento do Casco = %lf m",L);
printf ("\n 2. Diametro do casco = %lf in",DcascoIN);
printf ("\n 3. Diametro do tubo do feixe = %lf m",Dtubo);
printf ("\n 4. Quantidade de tubos = %lf ",N);
printf ("\n 5. Numero de passes = %lf",Passo);
printf ("\n 6. Area de troca termica (calculada) = %lf m2",Acalculada);
printf ("\n 7. Area de troca termica (fisica) = %lf m2",Atroca);
printf ("\n 8. Excesso do trocador de calor = %lf %%",Excesso);
printf ("\n 9. Razao da area de troca termica (fisica) e o volume do trocador =
%lf",Razao);
printf ("\n 10. Coeficiente global de transferencia de calor = %lf W/m2*K",U);
printf ("\n 11. Arranjo dos tubos = Quadrangular");
printf
("\n----------------------------------------------------------------------------------");
printf ("\n RESULTADOS DO OLEO (CASCO)");
printf ("\n 1. Temperatura de entrada = %lf oC",TempHEntrada);
printf ("\n 2. Temperatura de saida = %lf oC",TempHSaida);
printf ("\n 3. Vazao massica = %lf kg/s",mh);
printf ("\n 4. Velocidade do oleo no casco = %lf m/s",V);
printf ("\n 5. Velocidade maxima do oleo no casco = %lf m/s",Vmax);
printf ("\n 6. Taxa de calor extraido do oleo = %lf KJ/segundo",q);
printf ("\n 7. Numero de Reynolds no casco = %lf",RedCasco);
printf ("\n 8. Numero de Nussent no casco = %lf",NudCasco);
printf ("\n 9. Coeficiente de conveccao no casco = %lf W/m2*K",hc);
if (RedCasco>2500)
{printf ("\n O escoamento do oleo no casco e: Turbulento");}
else
{printf ("\n O escoamento do oleo no casco e: Laminar");}
printf
("\n----------------------------------------------------------------------------------");
printf ("\n RESULTADOS DA AGUA (TUBOS)");
printf ("\n 1. Temperatura de entrada = %lf oC",TempCEntrada);
printf ("\n 2. Temperatura de saida = %lf oC",TempCSaida);
printf ("\n 3. Vazao massica = %lf kg/s",mc);
printf ("\n 4. Vazao volumetrica da agua = %lf m3/segundo",VolH2O);
printf ("\n 5. Numero de Reynolds nos tubos = %lf",RedTubo);
69
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
printf ("\n 6. Numero de Nussent nos tubos = %lf",NudTubo);
printf ("\n 7. Coeficiente de conceccao nos tubos = %lf W/m2*K",ht);
if (RedTubo>2500)
{printf ("\n O escoamento da agua nos tubos e: Turbulento");}
else
{printf ("\n O escoamento da agua nos tubos e: Laminar");}
printf
("\n----------------------------------------------------------------------------------\n\n
");
printf ("\n Pressione 'Enter' para finalizar.");
getchar ();
return 0;
}
Projetodevigabiapoiada
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//------------------------------------------------------------------------------
main ()
{
//Programa para projetode vigas biapoiadas.

int pI, m_viga, pC;
double P, L, CS, Mmax, Vmax, E, Ty, Tadm, Snec, Stab;
int x = 1;
printf ("\n PROGRAMA PARA O PROJETO DE VIGA BI-APOIADAS ");
printf ("\n");
printf ("\n");
printf ("\n | carga P");
printf ("\n |");
printf ("\n V");
printf ("\n =====================");
printf ("\n ^ | ^");
printf ("\n |---L/2---|---L/2---|");
printf ("\n\n");
printf ("================================================================");
//Escolha da situao.
switch (x)
{
//Primeira situacao.
case 1:
printf ("\n Informe o valor da carga 'P' (N):");
scanf ("%lf",&P);
printf ("\n Informe o comprimento da viga (m):");
scanf ("%lf",&L);
printf ("\n Informe o coeficiente de seguranca:");
scanf ("%lf",&CS);
//Calculos do momento maximo e da forca cortante.
Mmax = P*L/4;
Vmax = P/2;
//Escolha do material com switch dentro de outro switch.
int material_1;
printf ("\n Escolha o material:");
printf ("\n");
printf ("\n [1] - A-36 [8] - AISI 304");
printf ("\n [2] - AISI-C 1018 [9] - Liga de Aluminio 1100-H12");
printf ("\n [3] - AISI-C 1030 [10] - Liga de Aluminio 2024 T4");
printf ("\n [4] - AISI-C 1040 [11] - Liga de Aluminio 6061 T6");
printf ("\n [5] - AISI-C 1080 [12] - Liga de Aluminio 6063 T6");
printf ("\n [6] - AISI-C 3140 [13] - Liga de Aluminio 2024 T4");
printf ("\n [7] - AISI-C 4340");
70
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
printf ("\n Sua opcao e:");
scanf ("%d",&material_1);
getchar ();
//Escolha do material do perfil atravs do switch, case e break.
//Essa rotina no exerce nenhuma influencia em outra, ele funciona
//como um bloco de comandos que sero utilizados pelo programa.
switch (material_1)
{
case 1: // A-36
m_viga = 1;
E = 200e9;
Ty = 250e6;
Tadm = Ty/CS;
Snec = Mmax*CS/Ty*1E6;
break;
case 2: // AISI-C 1018
m_viga = 2;
E = 200e9;
Ty = 370e6;
Tadm = Ty/CS;
Snec = Mmax*CS/Ty*1E6;
break;
case 3: // AISI-C 1030
m_viga = 3;
E = 200e9;
Ty = 340e6;
Tadm = Ty/CS;
Snec = Mmax*CS/Ty*1E6;
break;
case 4: // AISI-C 1040
m_viga = 4;
E = 200e9;
Ty = 390e6;
Tadm = Ty/CS;
Snec = Mmax*CS/Ty*1E6;
break;
case 5: // AISI-C 1080
m_viga = 5;
E = 200e9;
Ty = 520e6;
Tadm = Ty/CS;
Snec = Mmax*CS/Ty*1E6;
break;
case 6: // AISI-C 3140
m_viga = 6;
E = 200e9;
Ty = 620e6;
Tadm = Ty/CS;
Snec = Mmax*CS/Ty*1E6;
break;
case 7: // AISI-C 4340
m_viga = 7;
E = 200e9;
Ty = 860e6;
Tadm = Ty/CS;
Snec = Mmax*CS/Ty*1E6;
break;
case 8: // AISI 304
m_viga = 8;
E = 193e9;
Ty = 207e6;
Tadm = Ty/CS;
Snec = Mmax*CS/Ty*1E6;
break;
case 9: // Liga de Aluminio 1100-H12
m_viga = 9;
E = 70e9;
Ty = 103e6;
Tadm = Ty/CS;
Snec = Mmax*CS/Ty*1E6;
break;
case 10: // Liga de Aluminio 2024 T4
m_viga = 10;
E = 74.5e9;
Ty = 320e6;
71
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
Tadm = Ty/CS;
Snec = Mmax*CS/Ty*1E6;
break;
case 11: // Liga de Aluminio 6061 T6
m_viga = 11;
E = 69e9;
Ty = 275e6;
Tadm = Ty/CS;
Snec = Mmax*CS/Ty*1E6;
break;
case 12: // Liga de Aluminio 6063 T6
m_viga = 12;
E = 69e9;
Ty = 145e6;
Tadm = Ty/CS;
Snec = Mmax*CS/Ty*1E6;
break;
case 13: // Liga de Aluminio 2024 T4
m_viga = 13;
E = 72e9;
Ty = 500e6;
Tadm = Ty/CS;
Snec = Mmax*CS/Ty*1E6;
break;
}
//Escolha do perfil da viga.
printf ("\n Escolha o perfil para a viga:");
printf ("\n\n [1] - Perfil I");
printf ("\n [2] - Perfil C");
printf ("\n Sua opcao e:");
int perfil;
scanf ("%d",&perfil);
getchar ();
//Mais outro switch, mas agora para a escolha do perfil.
//Em forma de bloco tambm.
switch (perfil)
{case 1: //Procedimento do clculo com o perfil I pra situacao 1.
printf ("\n Escolha o perfil I de acordo com as dimensoes abaixo:");
printf ("\n Lembrando que Altura x Base e a nomeclatura adotada.");
printf ("\n\n [1] - 150x14 [6] - 250x18 [11] - 310x74");
printf ("\n [2] - 150x30 [7] - 250x45 [12] - 310x129");
printf ("\n [3] - 200x22 [8] - 250x80");
printf ("\n [4] - 200x71 [9] - 250x149");
printf ("\n [5] - 200x100 [10] - 310x39");
printf ("\n\n -------------------");
printf ("\n | BASE |");
printf ("\n ------- -------");
printf ("\n | A |");
printf ("\n | L |");
printf ("\n | T |");
printf ("\n | U |");
printf ("\n | R |");
printf ("\n | A |");
printf ("\n ------- -------");
printf ("\n | BASE |");
printf ("\n -------------------");
//Outro switch inserido em switch. bastante til em determinadas
//circunstncia a aplicao de forma composta.
printf ("\n A sua escolha e:");
scanf ("%d",&pI);
getchar ();
switch (pI)
{case 1:
Stab = 91.2;
break;
case 2:
Stab = 218;
break;
case 3:
Stab = 194;
break;
case 4:
Stab = 709;
break;
case 5:
72
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
Stab = 987;
break;
case 6:
Stab = 179;
break;
case 7:
Stab = 535;
break;
case 8:
Stab = 984;
break;
case 9:
Stab = 1840;
break;
case 10:
Stab = 547;
break;
case 11:
Stab = 1060;
break;
case 12:
Stab = 1940;
break;}
// Agora com todos os dados estabelecido e as equaes calculadas
//possivel imprimir os resultados na tela e descobrir se o perfil
//selecionado ir obedecer ao esforo empregado sobre ele.
//-----Resultados-----
printf ("\n=============================================================");
printf ("\n SOLICITACAO E ESPECIFICACAO DA VIGA");
printf ("\n=============================================================");
printf ("\n Carga aplicada 'P': %lf N",P);
printf ("\n Comprimento da Viga: %lf m",L);
printf ("\n Coeficiente de seguranca: %lf",CS);
printf ("\n=============================================================");
printf ("\n RESULTADOS DOS CALCULOS DA RESPECTIVA VIGA");
printf ("\n=============================================================");
printf ("\n Esforco cortane maximo: %lf N",Vmax);
printf ("\n Momento fletor maximo: %lf N.m",Mmax);
printf ("\n Tensao admissivel: %lf Pa",Tadm);
printf ("\n Tensao de escoamento: %lf Pa",Ty);
printf ("\n Modulo de elasticidade do material: %lf Pa",E);
printf ("\n Modulo de resistencia necessario: %lf mm3",Snec);
printf ("\n Modulo de resistencia tabelado: %lf mm3",Stab);
printf ("\n");
if (Snec<Stab)
{printf ("\n O perfil selecionado suportara o carregamento.");
printf ("\n Teste outros perfis para tentar reduzir seus gastos!");}
else
{printf ("\n O perfil selecionado nao duporta o carregamento.");
printf ("\n Escolhe um perfil mais robusto com o Snec superio");
printf ("\n ao desejado.");}
getchar ();
break;
case 2: //Procedimento do clculo com o perfil C pra situacao 1.
printf ("\n Escolha o perfil C de acordo com as dimensoes abaixo:");
printf ("\n Lembrando que Altura x Base e a nomeclatura adotada.");
printf ("\n\n [1] - 75x6 [6] - 230x30");
printf ("\n [2] - 100x11 [7] - 250x45");
printf ("\n [3] - 150x19 [8] - 310x45");
printf ("\n [4] - 180x22 [9] - 380x50");
printf ("\n [5] - 200x28 [10] - 380x74");
printf ("\n\n BASE");
printf ("\n ______________");
printf ("\n | |");
printf ("\n | A __________|");
printf ("\n | L |");
printf ("\n | T |");
printf ("\n | U |");
printf ("\n | R |");
printf ("\n | A |_________");
printf ("\n | |");
printf ("\n |_____________|");
printf ("\n");
//Outro switch inserido em switch. bastante til em determinadas
//circunstncia a aplicao de forma composta.
73
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
printf ("\n A sua escola e:");
scanf ("%d",&pC);
getchar ();
switch (pC)
{case 1:
Stab = 18.1;
break;
case 2:
Stab = 37.5;
break;
case 3:
Stab = 95.3;
break;
case 4:
Stab = 127;
break;
case 5:
Stab = 180;
break;
case 6:
Stab = 221;
break;
case 7:
Stab = 338;
break;
case 8:
Stab = 442;
break;
case 9:
Stab = 688;
break;
case 10:
Stab = 882;
break;}
// Agora com todos os dados estabelecido e as equaes calculadas
//possivel imprimir os resultados na tela e descobrir se o perfil
//selecionado ir obedecer ao esforo empregado sobre ele.
//-----Resultados-----
printf ("\n=============================================================");
printf ("\n SOLICITACAO E ESPECIFICACAO DA VIGA");
printf ("\n=============================================================");
printf ("\n Carga aplicada 'P': %lf N",P);
printf ("\n Comprimento da Viga: %lf m",L);
printf ("\n Coeficiente de seguranca: %lf",CS);
printf ("\n=============================================================");
printf ("\n RESULTADOS DOS CALCULOS DA RESPECTIVA VIGA");
printf ("\n=============================================================");
printf ("\n Esforco cortane maximo: %lf N",Vmax);
printf ("\n Momento fletor maximo: %lf N.m",Mmax);
printf ("\n Tensao admissivel: %lf Pa",Tadm);
printf ("\n Tensao de escoamento: %lf Pa",Ty);
printf ("\n Modulo de resistencia necessario: %lf mm3",Snec);
printf ("\n Modulo de resistencia tabelado: %lf mm3",Stab);
printf ("\n");
if (Snec<Stab)
{printf ("\n O perfil selecionado suportara o carregamento.");
printf ("\n Teste outros perfis para tentar reduzir seus gastos!");
printf ("\n");}
else
{printf ("\n O perfil selecionado nao suporta o carregamento.");
printf ("\n Escolhe um perfil mais robusto com o Snec superio");
printf ("\n ao desejado.");
printf ("\n");}
break;}
break;
}
getchar ();
return 0;
}
Projetodevasosdepresso
74
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//---------------------------------------------------
double DegToRad (double x)
{return (x*M_PI/180);}
//---------------------------------------------------
main ()
{
double R, P, C, Temp, S, E, e, es, PMTA, e_Torri, e_Torri_PMTA, alpha,
e_Cone, e_Cone_PMTA, e_Reto, e_Reto_PMTA;
int MC, Grau, Tipo, Tampo;
printf ("\n PROGRAMA PARA O");
printf ("\n DIMENSIONAMENTO DE VASOS DE PRESSAO");
printf ("\n");
printf ("\n Programa para dimensionamento de vasos de pressao");
printf ("\n com costado cilindrico e tampos retos, conicos ou");
printf ("\n torrisfericos e pressao externa.");
printf ("\n\n");
printf ("\n 1o. passo - Dimensionamento do costado.");
printf ("\n --> Determinacao da espessura da chapa.");
printf ("\n\n Entre com o raio interno do cilindro (mm):");
scanf ("%lf",&R);
getchar ();
printf ("\n Entre com a pressao interna de projeto (Pa):");
scanf ("%lf",&P);
getchar ();
printf ("\n Entre com sobreespessura para corrosao (mm):");
scanf ("%lf",&C);
getchar ();
Temperatura:
printf ("\n Entre com a temperatura de trabalho entre -30 e 500 (oC):");
scanf ("%lf",&Temp);
getchar ();
Classe:
printf ("\n Escolha a classe do material:");
printf ("\n");
printf ("\n [1] - (A-285-C)----------->Aco carbono");
printf ("\n [2] - (A-387-11 c 11)----->Aco-liga 1.1/4 Cr -1/2 Mo");
printf ("\n [3] - (A-387-5 c 11)------>Aco-liga 5 Cr - 1/2 Mo");
printf ("\n A escolha e:");
scanf ("%d",&MC);
getchar ();
if (MC>=4)
{printf ("\n Escolha a opcao correta!");
goto Classe;}
if (MC<=0)
{printf ("\n Escolha a opcao correta!");
goto Classe;}
//Definicao da tensao admissivel do material pela temperatura de trabalho.
switch (MC)
{case 1:
if (Temp<=350)
{S = 969;}
else if (Temp<=375)
{S = 928;}
else if (Temp<=400)
{S = 847;}
else if (Temp<=425)
{S = 724;}
else if (Temp<=450)
{S = 612;}
else if (Temp<=475)
{S = 490;}
else if (Temp>=476)
{printf ("\n Nao aplicavel. Entre com outra temperatura!");
goto Temperatura;}
75
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
break;
case 2:
if (Temp<=425)
{S = 1051;}
else if (Temp<=450)
{S = 1030;}
else if (Temp<=475)
{S = 1000;}
else if (Temp<=500)
{S = 867;}
else if (Temp>500)
{printf ("\n Nao aplicavel. Entre com outra temperatura!");
goto Temperatura;}
break;
case 3:
if (Temp<=325)
{S = 959;}
else if (Temp<=350)
{S = 928;}
else if (Temp<=375)
{S = 908;}
else if (Temp<=400)
{S = 857;}
else if (Temp<=425)
{S = 796;}
else if (Temp<=450)
{S = 643;}
else if (Temp<=475)
{S = 469;}
else if (Temp<=500)
{S = 357;}
else if (Temp>500)
{printf ("\n Nao aplicavel. Entre com outra temperatura!");
goto Temperatura;}
break;}
//Definicao do coeficiente de eficiencia de solda.
Grau_inspecao:
printf ("\n Escolha o grau de inspecao de soldagem:");
printf ("\n");
printf ("\n [1] - Radiografia Total");
printf ("\n [2] - Radiografia Parcial");
printf ("\n [3] - Nao Radiografada");
printf ("\n A escolha e:");
scanf ("%d",&Grau);
getchar ();
if (Grau>=4)
{printf ("\n Escolha a opcao correta!");
goto Grau_inspecao;}
if (Grau<=0)
{printf ("\n Escolha a opcao correta!");
goto Grau_inspecao;}
switch (Grau)
{case 1:
Radiografada:
printf ("\n Qual o tipo de solda?");
printf ("\n");
printf ("\n [1] - Solda de topo, feita por ambos os lados, ou procedimento
equivalente,");
printf ("\n de forma a obter penetracao e fusao totais. (Excluem-se as soldas
com");
printf ("\n mata-junta permanente).");
printf ("\n [2] - Solda de topo, feita por um so lado, com mata-junta permanente.");
printf ("\n A escolha e:");
scanf ("%d",&Tipo);
getchar ();
if (Tipo==1)
{E = 1;}
else if (Tipo==2)
{E = 0.9;}
else if (Tipo!=1&&2)
{printf ("\n Escolha o tipo de solda!");
goto Radiografada;}
break;
76
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
case 2:
Parcial:
printf ("\n Qual o tipo de solda?");
printf ("\n");
printf ("\n [1] - Solda de topo, feita por ambos os lados, ou procedimento
equivalente,");
printf ("\n de forma a obter penetracao e fusao totais. (Excluem-se as soldas
com");
printf ("\n mata-junta permanente).");
printf ("\n [2] - Solda de topo, feita por um so lado, com mata-junta permanente.");
printf ("\n A escolha e:");
scanf ("%d",&Tipo);
getchar ();
if (Tipo==1)
{E = 0.85;}
else if (Tipo==2)
{E = 0.80;}
else if (Tipo!=1&&2)
{printf ("\n Escolha o tipo de solda!");
goto Parcial;}
break;
case 3:
Nao_Radiografada:
printf ("\n Qual o tipo de solda?");
printf ("\n");
printf ("\n [1] - Solda de topo, feita por ambos os lados, ou procedimento
equivalente,");
printf ("\n de forma a obter penetracao e fusao totais. (Excluem-se as soldas
com");
printf ("\n mata-junta permanente).");
printf ("\n [2] - Solda de topo, feita por um so lado, com mata-junta permanente.");
printf ("\n A escolha e:");
scanf ("%d",&Tipo);
getchar ();
if (Tipo==1)
{E = 0.7;}
else if (Tipo==2)
{E = 0.65;}
else if (Tipo!=1&&2)
{printf ("\n Escolha o tipo de solda!");
goto Nao_Radiografada;}
break;}
//Clculo do casco cilindrico.
e = ((P*R)/((S*E)-(0.6*P)))+C;
es = 2.5+(0.002*R)+C;
PMTA = ((S*E*e)/(R+(0.6*e)));
printf ("\n A espessura do costado e: %lf mm",e);
printf ("\n A espessura para estabilidade estrutural: %lf mm",es);
printf ("\n Pressao maxima de trabalho admissivel: %lf Pa",PMTA);
//Agora e iniciado a escolha e o calculo da espessura dos tampos
printf ("\n");
printf ("\n Escolha o tipo de tampo:");
printf ("\n\n [1] - Torrisferico");
printf ("\n [2] - Conico");
printf ("\n [3] - Plano");
printf ("\n A escolha e:");
scanf ("%d",&Tampo);
getchar ();
switch (Tampo)
{case 1:
e_Torri = ((P*R)/((S*E)-(0.1*P)))+C;
e_Torri_PMTA = ((S*E*e_Torri)/(R+(0.1*e_Torri)));
printf ("\n A espessura do tampo torrisferico e: %lf mm",e_Torri);
printf ("\n Pressao maxima de trabalho admissivel no tampo: %lf Pa",e_Torri_PMTA);
break;
case 2:
printf ("\n Defina o semi-angulo do vertice do cone:");
scanf ("%lf",&alpha);
getchar ();
e_Cone = ((P*R)/(cos(DegToRad(alpha))*(S*E-(0.6*P))))+C;
e_Cone_PMTA = ((S*E*e_Cone*cos(DegToRad(alpha)))/(R+(0.6*e_Cone*cos(DegToRad(alpha)))))
77
Programaoparaengenhariasutilizandosoftwareslivres Vr.1.0[2008.2]g
+C;
printf ("\n A espessura do tampo conico e: %lf mm",e_Cone);
printf ("\n Pressao maxima de trabalho admissivel no tampo: %lf Pa",e_Cone_PMTA);
break;
case 3:
e_Reto = (sqrt((0.33*P)/(S*E)))+C;
e_Reto_PMTA = ((127*S)/(2*R));
printf ("\n A espessura do tampo plano e: %lf mm",e_Reto);
printf ("\n Pressao maxima de trabalho admissivel no tampo: %lf Pa",e_Reto_PMTA);
break;}

//Agora basta gerar o relatrio de resultados.
printf ("\n");
printf ("\n=============================================================================");
printf ("\n RELATORIO DE RESULTADOS - '' VASOS DE PRESSAO ''");
printf ("\n=============================================================================");
printf ("\n---->> DADOS SOBRE O COSTADO: <<----");
printf ("\n Raio interno em (m): %lf",R);
printf ("\n Pressao interna de projeto (Pa): %lf",P);
printf ("\n Sobreespesura para corrosao (mm): %lf",C);
printf ("\n Temperatura de trabalho (oC): %lf",Temp);
printf ("\n Tensao admissivel do material (kgf/cm2): %lf",S);
printf ("\n Coeficiente de eficiencia de solda: %lf",E);
printf ("\n A espessura do costado e (mm): %lf",e);
printf ("\n A espessura para estabilidade estrutural (mm): %lf",es);
printf ("\n Pressao maxima de trabalho admissivel (Pa): %lf",PMTA);
printf ("\n=============================================================================");
printf ("\n---->> DADOS SOBRE OS TAMPOS: <<----");
if (Tampo==1)
{printf ("\n Tipo de tampo: Torrisferico");
printf ("\n A espessura do tampo torrisferico e (mm): %lf",e_Torri);
printf ("\n Pressao maxima de trabalho admissivel no tampo (Pa): %lf",e_Torri_PMTA);}
else if (Tampo==2)
{printf ("\n Tipo de tampo: Conico");
printf ("\n A espessura do tampo conico e (mm): %lf",e_Cone);
printf ("\n Pressao maxima de trabalho admissivel no tampo (Pa): %lf",e_Cone_PMTA);}
else if (Tampo==3)
{printf ("\n Tipo de tampo: Plano");
printf ("\n A espessura do tampo plano e (mm): %lf",e_Reto);
printf ("\n Pressao maxima de trabalho admissivel no tampo (Pa): %lf",e_Reto_PMTA);}
printf ("\n=============================================================================");
printf ("\n---->> DADOS GERAIS <<----");
if (MC==1)
{printf ("\n Classe do material: A-285-C (Aco carbono)");}
if (MC==2)
{printf ("\n Classe do material: A-387-11 c 11 (Aco-liga 1.1/4 Cr - 1/2 Mo)");}
if (MC==3)
{printf ("\n Classe do material: A-387-5 c 11 (Aco-liga 5 Cr - 1/2 Mo)");}
if (Grau==1)
{printf ("\n Grau da inspecao de soldagem: Radiografia Total");}
if (Grau==2)
{printf ("\n Grau de inspecao de soldagem: Radiografia Parcial");}
if (Grau==3)
{printf ("\n Grau de inspecao de soldagem: Nao Radiografada");}
if (Tipo==1)
{printf ("\n OBSERVACAO:");
printf ("\n Solda de topo, feita por ambos os lados, ou procedimento equivalente,");
printf ("\n de forma a obter penetracao e fusao totais. (Excluem-se as soldas com");
printf ("\n mata-junta permanente).\n\n");}
if (Tipo==2)
{printf ("\n OBSERVACAO");
printf ("\n Solda de topo, feita por um so lado, com mata-junta permanente.\n\n");}
getchar ();
return 0;
}
78

Das könnte Ihnen auch gefallen