
    ch=                        S SK r S SKrS SKJr  S SKJr  S SKJr  S SK	J
r
  S SKJr  SSKJr  S S	KJr  S S
KJr  S r\S 5       r\S 5       rS SKJrJr  S SKJr  S SKrS SKJr  S SKJr  S SKrS SKJ r   S SKJrJr  S SKJr  S SKrS SKJr  S SKJr  S SKrS SKJ r   S SK!J"r"  S S
KJr  S SKJrJr  S SK!J"r"  S S	KJr  S SKJr  S SKrS SKrS SKJr  \S 5       r#g)    N)render)settings)Projeto)Ambiente)combinations_with_replacement   )FANCOLETES_MODELOS)
connection)login_requiredc                     [        [        S S9nS n[        S5      n[        SS5       H=  n[	        X5       H+  n[        S U 5       5      nX`-
  nX`:  d  M   Xs:  d  M'  UnUnM-     M?     U(       a  [        U5      $ S$ )Nc                     U S   S-  $ )Ncalor_total_resfriamento_btu_h+ެ? )xs    2/var/www/html/cagpublico_m/cag/calculocag/views.py<lambda>'determinar_fancoletes.<locals>.<lambda>   s    ;[9\_g9g    )keyinfr      c              3   0   #    U  H  oS    S-  v   M     g7f)r   r   Nr   ).0aparelhos     r   	<genexpr>(determinar_fancoletes.<locals>.<genexpr>   s     "nim]e,L#MPX#Xims   u-   Não há combinação adequada de fancoletes.)sortedr	   floatranger   sumlist)carga_maxima_watts	aparelhosmelhor_combmenor_excessorcombcapacidade_totalexcessos           r   determinar_fancoletesr+      s    )/ghIK%LM1b\1)?D""nim"nn&;G5':Q" ' @  !,4`1``r   c                    U R                   R                  (       aO  U R                   R                  (       a4  [        R                  " U R                   R                  R
                  5        [        R                  R                  5       n/ nU GHN  n[        R                  R                  US9n/ nU H  n [        R                  R                  [        R                  SUR                    35      n[        R                  R                  XvR"                   S35      n[        R                  R%                  U5      (       d  Sn	Sn
OI[&        R(                  " USS9nSUR*                  ;   a  US   R-                  5       n	[/        U	5      n
OS	n	Sn
 UR3                  UR"                  U	U
S.5        M     UR3                  UR                   UR4                  US.5        GMQ     SU0n[7        U SU5      $ ! [0         a  nS
U 3n	Sn
 S nANxS nAff = f)N)projeto>/var/www/html/cagpublico/cag/arquivos_cargas_termicas/projeto__resultados_termicos.xlsx   Arquivo não encontradou   Não disponívelopenpyxlengine   Carga Térmica Total Ambiente   Coluna não encontradaErro ao processar arquivo: )nomecarga_termica_maxaparelho_detalhes)projeto_nome
projeto_id	ambienteslista_projetoszcalculocag/calculo_cag.html)useris_authenticatedtenantr
   
set_schemaschema_namer   objectsallr   filterospathjoinr   BASE_DIRnome_projetonome_ambienteexistspd
read_excelcolumnsmaxr+   	Exceptionappendidr   )requestprojetosr=   r-   r<   resumo_ambientesambientecaminho_basecaminho_arquivor8   r9   dfecontextos                 r   lista_projetos_aguar]       s    ||$$)<)<gll11==>""$HN$$++G+<	!H7!ww||H,=,=A  AH  AU  AU  @V  @W   X"$'',,|@V@V?WWp=q"rww~~o66(A%(:%zJB6"**D,./N,O,S,S,U),ABS,T),D),>)
 ## ..%6%6% ' "2 	#00!**)
 	; H 	.H '8(CC'  7&A!$E!$6!7s&   6BG1AG1
G11
H;HHc                    U R                   R                  (       aO  U R                   R                  (       a4  [        R                  " U R                   R                  R
                  5        [        R                  R                  US9n[        R                  R                  US9n [        R                  R                  [        R                  SUR                   35      n[        R                  R                  XTR                    S35      n[        R                  R#                  U5      (       d  S nSnOI[$        R&                  " USS9n	SU	R(                  ;   a  U	S   R+                  5       n[-        U5      nOS nSn S
nS
nS
n[1        U[2        5      (       a  U H  nXS   -  nXS   -  nXS   -  nM     UUUUUUS.n[5        U SU5      $ ! [.         a  n
S nS	U
 3n S n
A
NeS n
A
ff = f)NrS   r.   r/   r0   r1   r2   r4   r5   r6   r   vazao_agua_m3_hr   calor_sensivel_btu_h)r-   rW   fancoletes_selecionadostotal_vazao_agua_m3_h$total_calor_total_resfriamento_btu_htotal_calor_sensivel_btu_hz#calculocag/detalhes_fancoletes.html)r>   r?   r@   r
   rA   rB   r   rC   getr   rF   rG   rH   r   rI   rJ   rK   rL   rM   rN   rO   rP   r+   rQ   
isinstancer"   r   )rT   r;   ambiente_idr-   rW   rX   rY   r8   rb   rZ   r[   rc   rd   re   
fancoletesr\   s                   r   detalhes_fancoletesrj   S   s   ||$$)<)<gll11==>oo!!Z!0G##{#3HDww||H$5$59wx  yM  yM  xN  8O  P'',,|8N8N7OOh5ijww~~o.. $&?#zBB."**<$&'F$G$K$K$M!*?@Q*R'$(!*B' +,(!" )4001J!0A%BB!0?_4``0&5K*LL& 2 #:!60T&@H '@(KK3  D $?s"CDs&   &BG 6AG :G 
G)G$$G))r   get_object_or_404)BytesIO)
sjFriction)messagesc                 |   U R                   R                  (       a4  [        R                  " U R                   R                  R                  5        [        [        US9nSnSnSnSnSnSnSn	S / / / 4u  ppS S 0 S S S 4u  pnnnnU R                  S	:X  Ga   [        U R                  R                  S
S5      5      n[        U R                  R                  SS5      5      n[        U R                  R                  SS5      5      n[        U R                  R                  SS5      5      n[        U R                  R                  SS5      5      n[        U R                  R                  SS5      5      n[        U R                  R                  SS5      5      n[        U R                  R                  SS5      5      n[        U R                  R                  SS5      5      n[        U R                  R                  SU5      5      S-  n[        U R                  R                  SU5      5      n[        U R                  R                  SU5      5      n[        U R                  R                  SU5      5      n US::  a  [        S5      eUS::  d  US:  a  [        S5      eUS::  a  [        S5      e [        US#-  S$-  S-  S%5      n
UU-   n"[         R"                  " S&S'U	5      n#U# GH  n$ [         R$                  " S(U
-  S-  U$[         R&                  -  -  5      S)-  n%S*U%-  n!UU$-  U%S)-  -  U-  n&[)        U&U!5      n'U'U"U%S)-  -  -  U$S%-  S+-  -  n(XJS-  -  U(-  S,U-  -  n)S-n*U%S%U*-  -   n+[         R&                  U+S%-  U%S%-  -
  S(-  -  n,U,U"S)-  -  S.-  S/-  n-U-U-  n.U)U-  U -  n/U.U/-   U-   U-   n0UR+                  U$S0 U%S0 U&S0 U'S1 U(S0 U)S0 U-S0 U.S0 U/S0 U0S0 S2.
5        UR+                  U$5        UR+                  U05        GM     U(       a  [         R.                  " U5      n2UU2   n3[        U3S5   5      nU[        U3S6   5      -  UUU-  -  U[         R&                  -  US)-  S%-  -  S(-  U"-  UU[        U3S7   5      S8.n[1        UR3                  5       5      nS9 n4U4" XS:S;S<5      n0 S=U
_S>U_S?U_S@U_SAU_SBU_SCU_SDU_SEU_S
S
[5        5       ;   a  WOS_SS[5        5       ;   a  WOS_SS[5        5       ;   a  WOS_SS[5        5       ;   a  WOS_SS[5        5       ;   a  WOS_SS[5        5       ;   a  WOS_SS[5        5       ;   a  WOS_SS[5        5       ;   a  WOS_S[5        5       ;   a  WOSS[5        5       ;   a  W OSS[5        5       ;   a  WS-  OSFS[5        5       ;   a  WOSS[5        5       ;   a  WOSUSG.En5[        U S!U55      $ ! [         a3  n![        R                  " U S U! 35        [        U S!S"U05      s S n!A!$ S n!A!ff = f! [,         a*  n1[        R                  " U S3U$S0 S4U1 35         S n1A1GMO  S n1A1ff = f)HNr_   g=\r)M?gfffff(@   gffffff?g?i  
   POSTLp   Ls0   carga_termicar   custo_valvulascusto_acessorioscusto_bomba_unitariacusto_chiller_unitcusto_tubulacao_unitariacop_chillerg      @rendimento_bombad   custo_energia	custo_aco	horas_usou)   A carga térmica deve ser maior que zero.r   z0O rendimento da bomba deve estar entre 0 e 100%.z)O COP do chiller deve ser maior que zero.zErro nos dados de entrada: zcalculocag/resultados_cag.htmlr;   gGz@g    s@   g      ?g      @   i  g333333?gQ3@K   gQ@i  i ʚ;z.2fz.4f)

velocidadediametroreynoldscoeficiente_atritoperda_cargapotencia_bomba	peso_tubocusto_instalacaocusto_operacaocusto_total_parcialu!   Erro no cálculo para velocidade z: r   r   r   )custo_bombascusto_chillercusto_tubulacoesrx   ry   r   c                    [         R                  " 5         [         R                  " XUS9  [         R                  " U5        [         R                  " U5        [         R
                  " U5        [         R                  " S5        [        5       n[         R                  " USS9  UR                  S5        [        R                  " UR                  5       5      R                  S5      nUR                  5         [         R                  " 5         U$ )N)labelTpng)formatr   zutf-8)pltfigureplotxlabelylabeltitlegridrl   savefigseekbase64	b64encodegetvaluedecodeclose)r   ytitulor   r   buffergrafico_base64s          r   gerar_grafico#calcular_cag.<locals>.gerar_grafico  s    JJLHHQ(JJvJJvIIfHHTNYFKKu-KKN#--foo.?@GGPNLLNIIK!!r   zCurva de Custo TotalzVelocidade (m/s)zCusto Total (R$)	vazao_max
resultadosdi_mincusto_totalcustosr-   curva_bomba_base64perda_carga_base64custo_total_base64A   )r}   r   r~   r   r   r;   )r>   r@   r
   rA   rB   rk   r   methodr   rr   rf   
ValueErrorrn   errorr   roundnplinspacesqrtpirm   rR   rQ   argminr!   valueslocals)6rT   r;   r-      μ   ρcusto_aco_defaultcusto_energia_defaultrendimento_bomba_defaulthoras_uso_defaultnvr   r   custos_totaisvelocidadesr   r   r   r   r   r   rs   ru   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r[   LtvivdiRefPcP_besp_tdeA_stPef_custoinstf_custo_bombar   exindice_melhor_resultadomelhor_resultador   r\   s6                                                         r   calcular_cagr      s5   ||gll11==>J7G 
B	B #	B 9=b"b8H5I=^bdhjlnrtxz~^~[F!35GI[~~	aw||''b12Bw||''b12B!',,"2"2?A"FGM"7<<#3#34Da#HIN$W\\%5%56H!%LM#()9)9:PRS)T#U !&w||'7'78La'P!Q',W\\-=-=>XZ[-\']$ 0 0 DEK$W\\%5%56HJb%cdgjj!',,"2"2?DY"Z[Mgll..{<MNOIgll..{<MNOI ! !LMM1$(81(< !STTa !LMM   MD0Z@DH!L	"W [[c2&A-[WWa)md2q255yABTI2I1fT	*b0 r1% 2d+,Q(0CD -.3=M8MN !e)^uuq27!2a 78R$Y'$.6 !9n #m 3i ?&1M&AN&RUe&e# !!%&sG#%c(#%c(-.sG&(X),S	$&s8+6s*;)6s(;.A#-F#  ""1%$$%89W b &(ii&>#)*AB+J78F !5u=MN^=_7` `!3}{7R!S$<ruu$DRV[\H\$]`a$adf$f"0$4"'(89I(J"KF fmmo.K	" +;G]_q  tF  GYj 	& 	{	
 	& 	7 	0 	0 	0 	DFH$b" 	DFH$b" 	/VX*E1 	,<,H.a 	0Bfh0N,TU  	8NRXRZ8Z 4`a!" 	4HFH4T0Z[#$ 	#@Z^d^f@f$<lm%& '4vx&?{S"-"9Yx6HFH6T,s2Z\*9VX*E4"-"9Yr 1H4 ';XFFo  	aNN7&A!$EF'#ClT^E_``	an  [w*KAc7RTUWTX(YZZ[s8   HW ,DX
X(W?9X?X
X;X66X;)$rF   pandasrM   django.shortcutsr   django.confr   projeto.modelsr   ctermica.modelsr   	itertoolsr   ri   r	   	django.dbr
   django.contrib.auth.decoratorsr   r+   r]   rj   rk   numpyr   matplotlib.pyplotpyplotr   iorl   r   	colebrookrm   django.contribrn   r   r   r   r   <module>r      s    	  #   " $ 3 *   9a$ -D -Dd .L .L` 7 "       6 "       # : 6 #      
 cG cGr   