Você está na página 1de 78

Programaoparaengenhariasutilizandosoftwareslivres

Vr.1.0[2008.2]g


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 socapazes de serem realizados em planilhas eletrnicas, mas deforma
bastantemanual.
Aslinguagensdeprogramaovemenvolvendocadavezmaisomundotecnolgico.Java,PHP,
MySQL,C#,Delphi,Ruby,C,Pythonemuitasoutrasestopresentesemnossoscomputadores,telefonescelulares,
TVdigitais,automveiseetc.Oengenheirodomundoatualnecessitaentenderpelomenosdeumaformabsica
sobreprogramaoetiposdelinguagens,damesmaformaquenecessitafalartrslinguas.
AapostilabuscafacilitarousodalinguagemdeprogramaoCparaaplicaesemengenhariae
assimoestudantedaroprimeiropasso.Damesmaformaqueestematerialdisponibilizadodeformagratuita,se
esperaointeresseporpartedeoutrosestudantes,professoreseprofissionaisparacolaborarcomaexpansodo
mesmo.
Voudeixardebl,bl,bleesperoquegostem!

RafaeldeC.Farias
www.engemec.com


Programaoparaengenhariasutilizandosoftwareslivres

Vr.1.0[2008.2]g

NDICE
1INTRODUO...........................................................................................................................................

1.1Programaoparaengenharias?........................................................................................................

1.2GPL,livre,gratuito,aberto,customizao,trabalhocolaborativo.................................................

1.3Porqueequaissoftwaresutilizar........................................................................................................

2PREPARANDOOCOMPUTADOREESCOLHENDOALINGUAGEM...........................................

2.1Configurandoocompilador................................................................................................................

2.2AlinguagemdeprogramaoC.........................................................................................................

3PRIMEIROSPASSOSPARAAPROGRAMAOEMC...................................................................

3.1EstruturadeumprogramaemCeo1programa.......................................................................

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


Programaoparaengenhariasutilizandosoftwareslivres

Vr.1.0[2008.2]g

1INTRODUO
1.1ProgramaoparaEngenharias?
OensinodaprogramaoparaoscursosdeEngenhariaso,atualmente,falhosemsuamaioriadas
vezes.EmmuitasUniversidadecomoaUFCUniversidadeFederaldoCear,asdisciplinasvoltadasparaareada
programaoseencontramcomdificuldadesparaseremlecionadas.Asdificuldadesmaisinsistentesso:afaltade
laboratrioscomumaestruturaparatalatividade,trocaconstantedeprofessores,materialdidticovoltadoparaa
Engenhariaeacontinuidadedoensinocomutilizaodaprogramaoaolongodocurso.
Existemoutrasdificuldades,comoafaltadeinformaosobre softwares livresquepodemser
utilizadosseminfringirleisdedireitosautoraisecombaixocusto.Autilizaodesoftwaresproprietriodeforma
ilegal nopascomoosistemaoperacionalWindows,ferramentas deescritrioMicrosoftOffice,desenhos
tcnicoscomooAutoCADeatmesmoparaaprogramaoemcertaslinguagenscomousodossoftwaresda
Borlandsoumarealidadeinfeliz.
Essetrabalhotemcomoobjetivoservirdematerialdidtico,sepossvel,paraosestudantesde
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
maiscomunsenaaprendizagemdaprogramaoparaEngenharia.Todoestetrabalhofoiescritocomousode
softwareslivres.
Valeressaltarnestemomentosobreostermoslivre,abertoegrtis.Otermolivreindicaquetodos
podemusardeformagratuita,geralmente,masnonecessariamente.Otermoabertoindicaapossibilidadede
customizarmosaferramentaqueestamosutilizando.Otermogrtisomaisclaroparatodos,usadoporum
determinadoperodoouportempoindeterminadodeacordocomaversoescolhida.Quandomencionadoos
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
rodamdiretamentedoCD)quepodeserinstaladonocomputadorouno.OUbuntu7.10almdeserbastante
difundidoedefcilacesso,temoutrasvantagenscomoasuafacilidadedemanuseio,ferramentasembarcadas,
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.
OcompiladorutilizadoerecomendadooGCC.Compiladoraferramentaresponsvelpara
transformarotextoquefoiescritonalinguagemdeprogramaoescolhidanoarquivoexecutveldoprograma
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 nomundo Linux/GNU. Alguns termos mais
tcnicos soabordados nos prximos captulos,e aexplicaode cadatermoser apresentadada forma mais
detalhadapossvel.
importanteressaltarumaltimaobservaosobre software livre,otermolivresedifereno
sentidodegratuito,masgeralmenteelessogratuitoseoscriadoresdeprogramaslivresganhamcomosuportepara
clientesqueapresentemdificuldadesemseuuso.Otermogratuitonotemsignificadolivreouaberto,elesse
refereautilizaogratuitadeumadeterminadaversooudeterminadoperodo.Jotermoabertonosereferea
livreenemgratuito,esimapossibilidadedeseadquirirocdigofontedoprograma.


Programaoparaengenhariasutilizandosoftwareslivres

Vr.1.0[2008.2]g

2PREPARANDOOCOMPUTADOREESCOLHENDOALINGUAGEM
2.1Configurandoocompilador
Quandoseescrevealgumprograma,deveseusarcomumeditordetexto(nocasooGedit)eem
seguidasalvlo,paraqueelesejatransformadonoprograma.Oprograma exatamenteonossocdigofonte
funcional.Aferramentaresponsvelemtransformarasaesetarefasqueseescrevenoeditordetextoparaaforma
deprogramaocompilador.
OGCC(GNUCompilerCollection)ocompiladorgratuito,livreeabertoqueserapresentado
nestaliteraturaparatransformaroscdigosfonteparaaformadeprograma.Aversoatualmenteinstaladapelo
Ubuntu7.10a4.1.3.Elebemsimplesdeserutilizadoeatendetodasasnecessidadesdosprogramasapresentados.
NomenuAplicaes>Acessrios>Terminal,abrirumajanelachamadaTERMINALquese
tratadalinhadecomandodoLinux.possveltervriasjanelasdeterminalabertas,masolimitemximoso64
terminaisaproximadamente.Paraainstalaodenovosprogramas,oterminalaindaamelhorsoluodoqueas
ferramentasassistidasdoUbuntu7.10eoutrasdistribuiesLinux/GNU.
DuranteainstalaodoUbuntu7.10,criadaacontadeumusurioparaacesslo.Esseusurio
queprovavelmentetemonomedocriadorouseuapelidonoumsupersurio.Osuperusuriooadministrador
detudonoSO,eleresponsvelportodasasconfiguraes,instalaes,remoeseoutros.Asenhadeveser
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.
ComaaberturadoterminalcomoROOT,interessanteainstalaodopacoteessencialdo
GCCparaosclculosmatemticoseprogramaoavanada.Ocomandoquedeveserdigitadonoterminalo:
#aptgetinstallbuildessential
Essecomandofarcomqueseucomputadorentreemcontatocomosservidoresresponsveispela
atualizaoeinstalaoremotadoSO,eassim,essepacoteserinstaladonocomputador.Provavelmenteser
necessrioaconfirmaoparaainstalaodopacoteeparaissobastaquesejarespondidoSIM.
importantelembrarqueocomputadordeveestarconectadocomainternetparaqueainstalao
6


Programaoparaengenhariasutilizandosoftwareslivres

Vr.1.0[2008.2]g

dopacotesejarealizadacomsucesso.SeocomputadornopossuidisponvelumaconexocomaInternet,ento
necessriaainstalaodopacoteemquestoapartirdosDVDsdadistribuioDebianLinux/GNU.OUbuntu
umadistribuiobaseadanoDebian,entonoseroapresentados problemas deincompatibilidade.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(atualmenteSolaris),BSDeoutros.Porserumalinguagemportvel,elapodeserutilizadaemdiferentes
plataformas.OCfoidesenvolvidobaseadonoSOUnixporvoltade1969e1973,masaproximadamente10anos
apsasuacriao,apresentavaumacertaausnciadepadronizaonoscompiladores.Osprogramaseramescritos
comdiversasferramentasquenemtodososcompiladoresconseguiamentender.Parasolucionaressaproblema,a
ANSI(InstitutoNacionalAmericanodePadronizao),implantouumanormaparaalinguagemC.Assim,os
compiladoresdesenvolvidosatualmentebuscamatendertodososprogramasdesenvolvidoscom basenopadro
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.


Programaoparaengenhariasutilizandosoftwareslivres

Vr.1.0[2008.2]g

3PRIMEIROSPASSOSPARAPROGRAMAOEMC
3.1EstruturadeumprogramaemCeo1programa
Umprogramaescritoemqualquerlinguagemdeprogramaosegueumaordemlgicanasua
criao.AdivisoexistentenoscdigosfontenagrandemaioriadaslinguagensseguecomoCABEALHOe
DESENVOLVIMENTO.
O CABEALHO composto pelas bibliotecas. As bibliotecas so arquivos que contm as
explicaesefuncionalidadesdasfunesquesoempregadasnocdigofonte.Asomade2nmeros,oclculodo
cossenodeumdeterminadongulo,constantescomoosoexemplosdeelementosquenonecessriaa
explicaodecomofuncionam.Ouseja,noseprecisacriarofuncionamentodefunescomoascitadas,poiselas
jsodescritasnopadroANSIC.
Asbibliotecascitadas,nosprogramasabordadosnestetrabalhoso:stdio.h,stdlib.hemath.h.Elas
possuemumsignificadoespecficocomoStandartInput/Output parastdio.h,StandartLibraryparastdlib.he
Mathematic para math.h. Elas possuem as informaes necessrias para a execuo de todos os problemas
abordados. AbibliotecadopadroANSICpossui 15 arquivosdebibliotecas,jalgunscompiladorespossuem
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>
#include <math.h>

|
| Parte 1
|

//--------------------------- | Parte 2
main ()
{
printf ("Nao faz nada!\n");
return 0;
}

|
|
| Parte 3
|
|

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.
Asegundapartedocdigofonteserefereaformadeinclusodecomentrios.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 $gedit epressionarateclaEnter.
Apsaexecuodealgumdessesprocedimentosoeditordetextoabrirsemproblemas.Agora,bastadigitaro
cdigofonteabaixo:


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
deprosseguir,necessrioexplicarafuncionalidadedomesmo.Apsadeclaraodasbibliotecas(Parte1da
FIGURA3.1.1)eainserodocomentrio(Parte2daFIGURA3.1.1)oprogramaseiniciacomapalavramain.
AsfunesdalinguagemCseroexplicadasmaisadiante,masparadarcontinuidadenecessrioabordaro
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.
Paracompilaroprimeiroprograma,bastaabriroterminaleacessarapastaqueseencontrao
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
nmeroaumaletraoupalavra,sedevedeclarlasnocdigofonte.Vejaatabelaabaixoparaentenderalguns
padresquealinguagemCutiliza:
TABELA3.2.1(pgina18ApostilaCursodeLinguagemCUFMG)

Tipo

Formatoparaleituracom
scanf

Intervalo(Incio)

Intervalo(Fim)

char

%c

128

127

unsignedchar

%c

255

signedchar

%c

128

127

int

%i

32.768

32.767

unsignedint

%u

65.535

signedint

%i

32.768

32.767

shortint

%hi

32.768

32.767

unsignedshortint

%hu

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

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
lfseriaigualalongfloat.Masotermolongfloatomesmoquedouble.AlinguagemCfazessas
diferenasqueseropercebidasaolongodosexemplosapresentadosnoscaptulossubseqentes.Otermo&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,serimpressonatelaafrasezeiguala:comovalordezsendodotipo
doubleechamadoparaaposioemque%lfseencontra.Apsavrguladigitamosotermosqueserchamado
paraaposio,esepercebequeovalordez.Umdetalheimportantesoasaspasutilizadasnoincioefimda
frasequesedesejaimprimirnatela.
Depoisdetodosessespassosexplicados,deveseinserirafunogetchar()maisumavezpara
pausaraexecuo.Alinhaseguinte,serveparaencerraroprogramaapresentado,poisafunoreturn0apresenta
osignificadodeexitnessasituao.Maselasermelhorabordadanosexemplosdoscaptulosposteriores.O
return0pararetornarovalordezeroparaafunomainquelogoentenderqueparaovalorzerosedeve
encerraroprograma.
Aoperaodesomaapresentadapodesersubstitudapelasoutras3operaesdaMatemtica,
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.
Oprimeiroexemplotrsosimplesclculodosenodeumnmero,masalinguagemCno
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);}
declaradoqueaafunoDegToRaddotipodoubleeretornarumvalorxdotipo
double.Emseucorpo,foiinformadoqueovalorderetornodeveserovalorx,massendomultiplicadopor
edivididopor180.Issoresulta,exatamente,natransformaodovalordexemradianos.Ouseja,vejaaaplicao
dafuno:
12


Programaoparaengenhariasutilizandosoftwareslivres

Vr.1.0[2008.2]g

y=sin(DegToRad(x));
Ovalordexinseridonafunomainsofreatransformaopararadianosdevidoafuno
DegToRadedessaforma,ovalordosenopodesercalculadodeformacorreta.Apsaescritadoprogramaesua
explicaodefuncionamento,bastacompillo.AcompilaopossuiumdetalhequandoutilizadooSOUbuntu
7.10. Na utilizao do e das funes trigonomtricas necessria a insero do termo lm no final do
comandodecompilaodoGCC.Essaexpressodeveserusadaparaforarocompiladorausarabiblioteca
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
qualqueroutrasubstncia,deveserrealizadodeformaanoapresentarumaperdaconsiderveldematerialde
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.
2.

Elaborararotinacomputacionalparaodimensionamentodeumalinhadevaporapartirdaquedade
temperaturadalinha;
Poderinverteroprocedimentoecalcularaquedadetemperaturadeumalinhadevaporapartirda
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
Arotinacomputacionalapresentaduaspossibilidadesdeclculodeespessuradeisolamentoe
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:

qr = k (2 L)

dT

dr

(4.3.1)

Asresistnciastrmicasdasecocircularquedevemserconsideradasso:

FIGURA4.3.2Desenhoesquemticodeumcorteumtrechodetubulaocomisolamentotrmico.

Alminadealumnioque,geralmente,envolveoisolamentoparaproteglodaumidadepodeser
desconsiderada,poisaespessuradalminadeaproximadamente0,3mm.Logo,ovalordataxadeconduo
trmicapodeserescritacomo:

qr =

Ti T

ln(r 2 / r1) ln(r 3 / r 2)


1
+
+
2 L kt 2 L ki 2 L h r 3

(4.3.2)

Eigualandocomumaoutraformadeescreverataxadeconduotrmica:

Ti T
= m cp T

ln(r 2 / r1) ln(r 3 / r 2)


1
+
+
2 L kt 2 L ki 2 L h r 3

(4.3.3)

Comessaequaoacima,possveldeterminaraquedadetemperaturaisolandooToua
espessuradoisolamentotrmicopelasubtraodaexpressomatemticar3 r2.Ocdigofontedescritona
sessoabaixo,apresentatodooprocedimentodasequaesapresentadaspossvelousuriodeterminardurantea
execuodoprogramadiversasvariveisdeprojeto.Aescolhadomaterialdotubo,otipodeisolamento,vazo
mssicadovapor,temperaturadeentradadovaporeoutrasinformaessoexemplosdevariveisquepodemser
inseridas.
4.4Cdigofontecomentadopassoapasso
Ocdigofonteapresentadoporpartes,poisoseucontedonantegraseencontranoApndice
B.Seroapresentadostrechos queexplicamafuncionalidadedoprograma,eas partesdecomplementaodo
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
seemportugus.Comosvalores de1at3deacordocom asopes mencionadas noinciodoprograma.
Observe:
int x;
scanf ("%d",&x);
if (x==1)
{

Oinciodacondiocasosejaescolhidaaprimeiraopodeexecuodoprograma,coma
declaraodevariveisdaEquao4.3.3.Notequetodososvaloressodotipodouble,assim,possvelse
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;

Oprximopassodentrodaprimeiracondioaescolhadomaterialdotuboquecompea
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
externodoisolamentotrmicoassumido,inicialmente,exatamenteigualaoraioexternodotuboselecionado.
Dessaforma,acondiowhile,quepossuiosignificadodeenquantoemportugus,aplicadaparaqueocorra
oincrementode0,0000001novalordoraioexternodoisolamento.Assim,ocorreumloopingdentrodacondio
whileatqueovalordoraioexternodoisolamentopermitaaveracidadedaigualdadedaEquao4.3.3.Ento,
encontradoovalordoraioexternodoisolamento,fcildeencontrarovalordaespessuradoisolamentopela

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 ========================>
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 ============>
Tsi);
PESO = G*Ro*(R3*R3-R2*R2)*M_PI;
RC = (KI/H);
printf ("\n O peso do isolamento em kgf/m ==============================>
PESO);
printf ("\n O raio critico do isolamento ===============================>

%5.4lf (m)",

%5.2lf oC",

%5.3lf N/m",
%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)
{

Adeclaraodetodasasvariveisnecessria,poisacondioiftrataocdigofontecom
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.Percebaquesorecalculadostodos ositens daprimeiracondio,novamente,mas com ovalorda
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 i , c T o , c
2

(5.3.1)

T i ,t T o , t
2

(5.3.2)

T m ,c =

T m ,t =

AEquao5.3.1representaatemperaturamdiadaguaqueseraquecidaeaEquao5.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
pT i , c T o ,c

(5.3.3)

OndeoprimeirotermoaquantidadedecalorextradaemKJ/s,osegundotratasedavazo
mssicaemkg/s,oterceiroocalorespecficoemKJ/kg.K,eoquartotermorepresentaadiferenadetemperatura
dasubstncia.Notequeadiferenadetemperaturaexatamenteovalordeentrada,subtradodovalordesadada
substnciaemquesto.Fazendooclculoparaoleoqueentranocascodotrocadordecalor,seobtmovalordo
calorextradoemKJ/squeserutilizadomaisadiante.
Oprximopassooclculodavelocidadedoleonocasco.Veja:

v c=

w
Ab

(5.3.4)

Oprimeirotermodaequaoavelocidadedoleonocascoemm/s,oterceirotermoquea
23


Programaoparaengenhariasutilizandosoftwareslivres

Vr.1.0[2008.2]g

vazovolumtricaemm/squeestsecomportandocomonumeradoreoquartotermosetratareadaseo
transversaldobocaldeentradadoleoemm.
Apsoclculodavelocidadedoleonocasco,necessriooclculodavelocidademximado
leonocascoparaseprosseguircomodesenvolvimento.Veja:

v max =

P
v
PD t 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.
Comosdadoscalculadosatomomento,sepodecalcularovalordonmerodeReynoldsno
cascopelaequao:

R e D ,c =

cv maxD t
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:
n

0,25

Pr
Nu D , c =C R e D Pr
Pr s
m

(5.3.7)

VejaqueostermosmensoencontradosapartirdovalordonmerodeRaynoldscalculado
anteriormente.Vejaatabela:
TABELA5.3.1(TransmissodeCaloredeMassaIncroperaeDeWitt)

ReD
1100
1001000
1032x105
2x1052x106

m
0,40
0,50
0,63
0,80

n
0,36
0,36
0,36
0,40

OtermoCapresentadonaEquao5.3.7deveserescolhidodeacordocomatabelaabaixo:
TABELA5.3.2(TransfernciadeCaloredeMassaIncroperaeDeWitt)

Nf
C

1
0,7

2
0,8

3
0,86

4
0,9

5
0,93

6
0,95

7
0,96

8
0,96

9
0,98

10
0,98

11
0,98

12
0,98

13
0,99

14
0,99

15
0,99

Todasastabelasapresentadasatomomentosereferemaresoluodoproblemapropostono
inciodocaptulo.Paraoutrassituaesnecessriotodaumamudananomtododeclculoaplicado,talmudana
podeseraplicadacomoexpansodoprograma.
ApsocalculodonmerodeNusselt,possveldeterminarovalordocoeficientedeconveco
dentrodotrocadordecalorpelocasco.Veja:
24


Programaoparaengenhariasutilizandosoftwareslivres

Vr.1.0[2008.2]g

h c=

NuDk c
Dt

(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 ,tT oT i t

(5.3.9)

Valeressaltarqueovalordeqjfoicalculadoanteriormenteparaocascoeesseomesmo
aplicadoparaofeixedetubos.Ovalordocalorespecficoparaofluidodostubosadquiridodamesmaformaque
ofluidodocasco,atravsdetabelaseporinterpolaoquandonecessriaeapresentadonasmesmasunidadesj
mencionadas. O termo (To Ti)t exatamente a diferena de temperatura de entrada e sada do fluido que
desejamos.
AgoranecessriooclculodonmerodeReynoldspelaequaoabaixo.Veja:

R e D ,t =

4m t
N tD t

(5.3.10)

OstermosqueaindanoforammencionadossoNtquerepresentaonmerodetubosdofeixe,
eoquetabeladodeacordocomofluidoe,geralmente,encontradonasunidadesN.s/m.Agoracomovalordo
nmerodeReynolds,necessriocalcularonmerodeNusseltpelafrmulaabaixo.Observe:

Nu D ,t =

f
R e D ,t 1000Pr t
8

f
112,7
8

1 /2

Pr

2 /3
t

(5.3.11)

Sendoovalordefcalculadopelafrmula:
2

f =0,790ln R e D ,t 1,64

(5.3.12)

OvalordePronmerodePrandtldofluidoequepodeserobtidoportabelasdepropriedades
dofluidoatravsdeinterpolaosimples.Apsosclculosrealizados,possvelrealizaroclculodocoeficientede
convecodostubosatravsdaequaoabaixo:

ht=

Nu D ,tk t
Dt

(5.3.13)

Agorapossvel secalcularocoeficienteglobal detransfernciadecalorqueservirparao


clculodocomprimentofeixedetubos.Vejaafrmulaabaixodocoeficienteglobal:

1 1
U=
hc ht

(5.3.14)

Osclculosapartirdeagora,sovisadosparaencontrarovalordocomprimentodofeixetubular
quepodeserconsideradocomooprpriocomprimentodotrocadordecalor.Apartirdovalordocomprimentodo
feixe,umaanlisepodeserrealizadaparaadmissoourecusadotrocadordecalorcalculadopeloprograma.Vejao
procedimentodoclculodocomprimentodofeixedetubos:
25


Programaoparaengenhariasutilizandosoftwareslivres

Vr.1.0[2008.2]g

L t=

q
PassoN tUDtF cr T lm ,CF

(5.3.15)

OndeoFcrcalculadopelaequao:

1SR
1S
F cr =
2S R1 R210,5
1Rln
2S R1 R210,5
R 210,5ln

(5.3.16)

EosvaloresdeReSpodemserencontradospor:

S=

T o , tT i ,t
T i ,c T i ,t

(5.3.17)

T i , cT o ,c
T o , tT i ,t

(5.3.18)

R=

Agora,faltaapenasencontrarovalordatemperaturalogartmicapelaequao:

T lm , CF =

T i ,c T o ,t T o , c T i , t

ln

T i , cT 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 ();

Apsadeclaraodas temperaturas deentradaesadadoleodemotor, necessrioqueo


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

fimTempHS:

uHS
vHS
kHS
aHS
PrHS

=
=
=
=
=

3.85;
0.004280;
0.147;
0.0000000910;
47000;}

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. Ovalorde 0,01905metros uma tima considerao, pois tal admisso foi realizada devidoao
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
repetidoparaagua.Ovalordatemperaturadeentradaesadadaguasoinseridos.Efetuaseoclculoda
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

fimTempCE:

uCE
kCE
PrCE
goto

= 0.000306;
= 0.677;
= 1.91;
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;

Oclculodemaisalgumasvariveisnecessrio.Notrechoabaixooclculodadiferenade
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);

Antesdeprosseguir,necessriofalarsobreafunopownotrechoacima.Essafuno
responsvelpelasoperaesqueenvolvempotncia.Afunopowutilizadadaseguinteforma:
pow(x,y)

omesmoque

xy

ApartirdetodososclculosdadospossveldeterminaronmerodeReynoldseonmerode
Nusseltdaguaqueescoapelostubos.Dessaforma,encontradoovalordehtdaEquao5.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,podesercalculadotambmohcdaEquao5.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;

Depoisdoclculodohceht,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
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

e outros.


Programaoparaengenhariasutilizandosoftwareslivres

Vr.1.0[2008.2]g

Acalculada
Excesso

= (q/(U*DeltaTempLM));
= ((Atroca-Acalculada)/Atroca);

Agora,aimpressonateladosresultadoscomoacondioifaplicadaparainformarseos
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
trmicacalculadaeareadetrocatrmicafsica.Oprogramaseencontracomdcimosdeexcesso,ouseja,o
dimensionamentodotrocadorpraticamenteexatoaonecessrio.

34


Programaoparaengenhariasutilizandosoftwareslivres

Vr.1.0[2008.2]g

6PROJETODEVIGABIAPOIADA
6.1Introduo
Asvigassoelementosestruturaisbastanteusadosnaconstruocivil,nareadeedificaoeem
estruturasmetlicas.Omtododeclculoparaseprojetaroperfilcorretodeumavigatemograudecomplexidade
proporcionalformadaestruturametlicaouedificao.Ummtododeseiniciaraescolhadomaterialdavigae
dimensionamentodoperfilpodeserrealizadopelaanlisedomaioresforonomaiorvolivre.
Omtodocomentadonopargrafoacimaumaformadeiniciaroclculocombaseemum
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.

Um software paraoclculodeumavigasimplescomoaapresentadanaFigura6.2.1podeter
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)

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:

Mc
I

(6.3.4)

Agora,realizandoasdevidassubstituiesseobtm:

Snec=

seobtm:

M
adm

(6.3.5)

Comoofatordeseguranaarelaodatensodeescoamentodomaterialeatensoadmissvel,

fs=

mat
adm

(6.3.6)

Logo,ovalordeSnecdoperfilselecionadodeveserdeacordocomaequao:

Snec=

Mfs
mat

(6.3.7)

AEquao6.3.7forneceovalordomduloderesistnciadavigadeacordocomomaterial
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
printf
printf
printf
printf
printf
printf
printf
printf
printf
printf

("\n
PROGRAMA PARA O PROJETO DE VIGA BI-APOIADAS ");
("\n");
("\n");
("\n
| carga P");
("\n
|");
("\n
V");
("\n
=====================");
("\n
^
|
^");
("\n
|---L/2---|---L/2---|");
("\n\n");
("================================================================");

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
int material_1;
printf ("\n Escolha o material:");
printf ("\n");
printf ("\n [1] - A-36
[8] printf ("\n [2] - AISI-C 1018
[9] printf ("\n [3] - AISI-C 1030
[10] printf ("\n [4] - AISI-C 1040
[11] printf ("\n [5] - AISI-C 1080
[12] printf ("\n [6] - AISI-C 3140
[13] printf ("\n [7] - AISI-C 4340");
printf ("\n Sua opcao e:");
scanf ("%d",&material_1);
getchar ();

de outro switch.

AISI
Liga
Liga
Liga
Liga
Liga

304");
de Aluminio
de Aluminio
de Aluminio
de Aluminio
de Aluminio

1100-H12");
2024 T4");
6061 T6");
6063 T6");
2024 T4");

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
oswitchcasebreakmaisdireta.Quandoovalordaescolhainseridonoswitchocaseimediatamente
executaoblocodecomandosdesuaresponsabilidade.Asvariveisso:Ecomoomdulodeelasticidadedo
material,Tycomosendoatensoadmissveldomaterialdecompresso,Tamdsendoatensoadmissvel
calculadaparaofatordeseguranaadotadoeSneccomoomduloderesistnciadavigarequerido.
Aps recarregar os valores das variveis na memria, o procedimento pode ser seguido.
apresentadaaaplicaodeoutroswitchdentrodoprimeiroapresentadonoinciodocdigofonte.Valeressaltar
queaofinal dos comentrios docdigofonteteraestruturadoprogramadeformasimplificada.Oblocode
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;
}

Paraumamaiorcompreensodocdigofontecomoumtodo,necessrioveradescriodo
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 ;}
getchar (
) ;
return 0 ;
}

break ;}

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
setordeEngenhariaQumicadeProcessodeumaindstriaqumicaporexemplo.OsEngenheirosdeProcesso
fornecemosdadoscomopressoefluidodetrabalho.Apartirdestemomentonecessrioseguiralgumasnormas
comoaASMEAmericanSocietyofMechanicalEngineer.AASMEapresentaprocedimentosqueserviramde
baseparaoutrasnormascomoaABNT,porexemplo.
Oprocedimentodeprojetoparaumvasodepressoseiniciacomadeterminaoeentradade
algunsdadosparaoclculodocascocomo:raiointernodocasco,pressodeprojeto,sobreespessuradecorroso
quandoaplicada,temperaturadetrabalhoeaclassedomaterialdocasco.Apartirdessesdados,jpossvela
determinaodatensoadmissveldecadamaterialSportabelasencontradasemlivrosenaprprianorma
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
C
SE 0,6P

(7.3.1)

OndeasvariveisPdotadaapressointernadeprojeto,Roraiomnimointernodocostado,
Satensoadmissvelbsicadomaterial,Eocoeficientedeeficinciadasolda,Csobreespessuradecorroso
eaespessuramnimaparaachapadocostado.
AsobreespessuradecorrosoCdeacordocomofluidodetrabalhoeotempodevidado
equipamento.Aespessuradachapadefabricaodoequipamentonopodesermenorqueaespessuramnimade
resistnciaestrutural.Ecasoissoocorra,sedeveusaraequaodaespessuramnimaderesistnciaestrutural.
Observe:

e s= 2 , 50 , 0 0 2RC

42

(7.3.2)


Programaoparaengenhariasutilizandosoftwareslivres

Vr.1.0[2008.2]g

Outrainformaodeextremaimportnciaapressomximadetrabalhoadmissvelconhecida
comoPMTA.Elacalculadapelaequao:

PMTA=

SEe
R0,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
C
SE0,1P

(7.3.4)

PMTAte=

SEe te
R0,1ete

(7.3.5)

Vejaaformadeumtamposemielptico:

FIGURA7.3.1Tamposemielptico.

Asequaesparaotampocnicoso:

e tc=

PR
C
cos SE0,6P

(7.3.6)

SEetccos
PMTAtc=
C
R0 , 6e tccos

(7.3.7)

Ondeotermorepresentaongulodotetodotampocomalinhasdecentro.
Observeaformadeumtampocnico:

FIGURA7.3.2Tampocnico.

Asequaesparaotampoplanoso:

e tp =

NP
C
SE

(7.3.8)

127S
2R

(7.3.9)

PMTAtp=
43


Programaoparaengenhariasutilizandosoftwareslivres

Vr.1.0[2008.2]g

Observeaformadeumtampoplano:

FIGURA7.3.3Tampoplano.

7.4Cdigofontecomentadopassoapasso
Ocdigofonteabaixoseapresentadeformaresumida,poismuitosdetalhesderepetioforam
substitudosporlinhaspontilhadas.Dessaforma,ocdigofonteparaentendimentonoficacomprometidoenem
extensodemais.
Ocdigofontedoprogramadestecaptulobastantericoeminformaes,poiseleapresenta
diversostrechosemsuarotina,docontedojdiscutidoatomomento.Rotinasdeescolhacomoswitchcase
break, ifelseif,criaode funes eoutras bastante interessantes. Ocabealho 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,realizadaadeclaraodaoperaoClasse:indicaqueserapresentadao
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;}

Oltimopassosetratadageraoeimpressodeumrelatriocomtudoquefoicalculadoe
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
deTrocadoresdeCalor. PropostadeTrabalhoAcadmico(GraduaoemEngenhariaMecnica)Centrode
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.eSHAPIRO,H.N. IntroduoaEngenhariadosSistemas
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

%5.9lf
%5.2lf
%5.3lf
%5.5lf

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 =>
oC/m", dTporL);
printf ("\n Temperatura da superficie externa do isolamento ============>
oC", Tsi);
printf ("\n O peso do isolamento em kgf/m ==============================>
N/m", PESO);
printf ("\n O raio critico do isolamento ===============================>
m", RC);
if (RC<R1)
{

54


Programaoparaengenhariasutilizandosoftwareslivres

Vr.1.0[2008.2]g

adicao de");
portanto");

total");
camadas");

printf ("\n\n Como o raio do tubo e maior do que o raio critico, qualquer
printf ("\n camadas de isolamento ira aumentar a resistencia total e
printf ("\n diminuindo a perda de calor.");
}
else
{
printf ("\n\n Como o raio do tubo e menor que o raio critico, a resistencia
printf ("\n diminui e, portanto, a taxa de calor aumenta com a adicao de
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

if

if

if

if

if

if

if

if

aHS = 0.0000000695;
PrHS = 152;
goto fimTempHS;}
(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;}
(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;}
(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;}
(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;}
(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;}
(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;}
(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;}
(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

if

if

if

if

if

if

if

if

if

if

if

if

if

C = 0.95;
Passo = 1;}
(y==5)
{N = 52;
Dcasco = 6*0.0254;
Nf = 7;
C = 0.96;
Passo = 1;}
(y==6)
{N = 88;
Dcasco = 8*0.0254;
Nf = 9;
C = 0.98;
Passo = 1;}
(y==7)
{N = 148;
Dcasco = 10*0.0254;
Nf = 12;
C = 0.99;
Passo = 1;}
(y==8)
{N = 208;
Dcasco = 12*0.0254;
Nf = 14;
C = 0.99;
Passo = 1;}
(y==9)
{N = 6;
Dcasco = 3*0.0254;
Nf = 4;
C = 0.90;
Passo = 2;}
(y==10)
{N = 8;
Dcasco = 3.5*0.0254;
Nf = 4;
C = 0.90;
Passo = 2;}
(y==11)
{N = 8;
Dcasco = 4*0.0254;
Nf = 4;
C = 0.90;
Passo = 2;}
(y==12)
{N = 18;
Dcasco = 5*0.0254;
Nf = 6;
C = 0.95;
Passo = 2;}
(y==13)
{N = 26;
Dcasco = 6*0.0254;
Nf = 7;
C = 0.96;
Passo = 2;}
(y==14)
{N = 44;
Dcasco = 8*0.0254;
Nf = 9;
C = 0.98;
Passo = 2;}
(y==15)
{N = 74;
Dcasco = 10*0.0254;
Nf = 12;
C = 0.99;
Passo = 2;}
(y==16)
{N = 104;
Dcasco = 12*0.0254;
Nf = 14;
C = 0.99;
Passo = 2;}
(y==17)

62


Programaoparaengenhariasutilizandosoftwareslivres

Vr.1.0[2008.2]g

if

if

if

if

if

if

if

{N = 3;
Dcasco = 3*0.0254;
Nf = 4;
C = 0.90;
Passo = 4;}
(y==18)
{N = 4;
Dcasco = 3.5*0.0254;
Nf = 4;
C = 0.90;
Passo = 4;}
(y==19)
{N = 4;
Dcasco = 4*0.0254;
Nf = 4;
C = 0.90;
Passo = 4;}
(y==20)
{N = 9;
Dcasco = 5*0.0254;
Nf = 6;
C = 0.95;
Passo = 4;}
(y==21)
{N = 13;
Dcasco = 6*0.0254;
Nf = 7;
C = 0.96;
Passo = 4;}
(y==22)
{N = 22;
Dcasco = 8*0.0254;
Nf = 9;
C = 0.98;
Passo = 4;}
(y==23)
{N = 37;
Dcasco = 10*0.0254;
Nf = 12;
C = 0.99;
Passo = 4;}
(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

if

if

if

if

if

if

if

if

if

uCE = 0.000855;
kCE = 0.613;
PrCE = 5.83;
goto fimTempCE;}
(TempCM<=31.85)
{TempCE = 31.85;
dCE = 1.005;
cpCE = 4178;
uCE = 0.000769;
kCE = 0.620;
PrCE = 5.20;
goto fimTempCE;}
(TempCM<=36.85)
{TempCE = 36.85;
dCE = 1.007;
cpCE = 4178;
uCE = 0.000695;
kCE = 0.628;
PrCE = 4.62;
goto fimTempCE;}
(TempCM<=41.85)
{TempCE = 41.85;
dCE = 1.009;
cpCE = 4179;
uCE = 0.000631;
kCE = 0.634;
PrCE = 4.16;
goto fimTempCE;}
(TempCM<=46.85)
{TempCE = 46.85;
dCE = 1.011;
cpCE = 4180;
uCE = 0.000577;
kCE = 0.640;
PrCE = 3.77;
goto fimTempCE;}
(TempCM<=51.85)
{TempCE = 51.85;
dCE = 1.013;
cpCE = 4182;
uCE = 0.000528;
kCE = 0.645;
PrCE = 3.42;
goto fimTempCE;}
(TempCM<=56.85)
{TempCE = 56.85;
dCE = 1.016;
cpCE = 4184;
uCE = 0.000489;
kCE = 0.650;
PrCE = 3.15;
goto fimTempCE;}
(TempCM<=61.85)
{TempCE = 61.85;
dCE = 1.018;
cpCE = 4186;
uCE = 0.000453;
kCE = 0.656;
PrCE = 2.88;
goto fimTempCE;}
(TempCM<=66.85)
{TempCE = 66.85;
dCE = 1.021;
cpCE = 4188;
uCE = 0.000420;
kCE = 0.660;
PrCE = 2.66;
goto fimTempCE;}
(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

if

if

if

if

if

if

if

if

if

if

PrCS = 2.45;
goto fimTempCS;}
(TempCM>=66.85)
{TempCS = 66.85;
dCS = 1.021;
cpCS = 4188;
uCS = 0.000420;
kCS = 0.660;
PrCS = 2.66;
goto fimTempCS;}
(TempCM>=61.85)
{TempCS = 61.85;
dCS = 1.018;
cpCS = 4186;
uCS = 0.000453;
kCS = 0.656;
PrCS = 2.88;
goto fimTempCS;}
(TempCM>=56.85)
{TempCS = 56.85;
dCS = 1.016;
cpCS = 4184;
uCS = 0.000489;
kCS = 0.650;
PrCS = 3.15;
goto fimTempCS;}
(TempCM>=51.85)
{TempCS = 51.85;
dCS = 1.013;
cpCS = 4182;
uCS = 0.000528;
kCS = 0.645;
PrCS = 3.42;
goto fimTempCS;}
(TempCM>=46.85)
{TempCS = 46.85;
dCS = 1.011;
cpCS = 4180;
uCS = 0.000577;
kCS = 0.640;
PrCS = 3.77;
goto fimTempCS;}
(TempCM>=41.85)
{TempCS = 41.85;
dCS = 1.009;
cpCS = 4179;
uCS = 0.000631;
kCS = 0.634;
PrCS = 4.16;
goto fimTempCS;}
(TempCM>=36.85)
{TempCS = 36.85;
dCS = 1.007;
cpCS = 4178;
uCS = 0.000695;
kCS = 0.628;
PrCS = 4.62;
goto fimTempCS;}
(TempCM>=31.85)
{TempCS = 31.85;
dCS = 1.005;
cpCS = 4178;
uCS = 0.000769;
kCS = 0.620;
PrCS = 5.20;
goto fimTempCS;}
(TempCM>=26.85)
{TempCS = 26.85;
dCS = 1.003;
cpCS = 4179;
uCS = 0.000855;
kCS = 0.613;
PrCS = 5.83;
goto fimTempCS;}
(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
hc

= C*(pow(RedCasco,m))*(pow(PrHM,n))*(pow((PrHM/PrCM),0.25));
= (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
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);

e outros.

//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
printf
printf
printf
printf
printf
printf
printf
printf
printf
printf

("\n
PROGRAMA PARA O PROJETO DE VIGA BI-APOIADAS ");
("\n");
("\n");
("\n
| carga P");
("\n
|");
("\n
V");
("\n
=====================");
("\n
^
|
^");
("\n
|---L/2---|---L/2---|");
("\n\n");
("================================================================");

//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
printf ("\n [3] - AISI-C 1030
[10] - Liga de Aluminio
printf ("\n [4] - AISI-C 1040
[11] - Liga de Aluminio
printf ("\n [5] - AISI-C 1080
[12] - Liga de Aluminio
printf ("\n [6] - AISI-C 3140
[13] - Liga de Aluminio
printf ("\n [7] - AISI-C 4340");

70

1100-H12");
2024 T4");
6061 T6");
6063 T6");
2024 T4");


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

Você também pode gostar