Escolar Documentos
Profissional Documentos
Cultura Documentos
Programação para Engenharias
Programação para Engenharias
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.
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
(4.3.2)
Eigualandocomumaoutraformadeescreverataxadeconduotrmica:
Ti T
= m cp T
(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
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;
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;
}
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)
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)
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;
26
Programaoparaengenhariasutilizandosoftwareslivres
Vr.1.0[2008.2]g
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 ();
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;}
30
Programaoparaengenhariasutilizandosoftwareslivres
Vr.1.0[2008.2]g
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;}
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
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)));
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:
(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;
}
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
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;
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
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
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
53
Programaoparaengenhariasutilizandosoftwareslivres
Vr.1.0[2008.2]g
%5.9lf
%5.2lf
%5.3lf
%5.5lf
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
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;}
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;
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
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
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
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;
78