
    ch=                        d dl Z d dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ ddlmZ d d	lmZ d d
lmZ d Zed        Zed        Zd dlmZmZ d dlmZ d dlZd dlmZ d dlmZ d dlZd dlm Z  d dlmZmZ d dlmZ d dlZd dlmZ d dlmZ d dlZd dlm Z  d dl!m"Z" d d
lmZ d dlmZmZ d dl!m"Z" d d	lmZ d dlmZ d dlZd dlZd dlmZ ed        Z#y)    N)render)settings)Projeto)Ambiente)combinations_with_replacement   )FANCOLETES_MODELOS)
connection)login_requiredc                     t        t        d       }d }t        d      }t        dd      D ]:  }t	        ||      D ])  }t        d |D              }|| z
  }|| k\  s ||k  s&|}|}+ < |rt        |      S dS )Nc                     | d   dz  S )Ncalor_total_resfriamento_btu_h+ެ? )xs    0/var/www/html/cagpublico/cag/calculocag/views.py<lambda>z'determinar_fancoletes.<locals>.<lambda>   s    ;[9\_g9g     )keyinfr      c              3   ,   K   | ]  }|d    dz    yw)r   r   Nr   ).0aparelhos     r   	<genexpr>z(determinar_fancoletes.<locals>.<genexpr>   s     "n]e8,L#MPX#X"ns   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)Q? 	(D""nim"nn&);;G#55'M:Q" '	(( !,4`1``r   c                    | j                   j                  rI| j                   j                  r3t        j                  | j                   j                  j
                         t        j                  j                         }g }|D ]I  }t        j                  j                  |      }g }|D ]  }	 t        j                  j                  t        j                  d|j                          }t        j                  j                  ||j"                   d      }t        j                  j%                  |      sd}	d}
nHt'        j(                  |d      }d|j*                  v r|d   j-                         }	t/        |	      }
nd	}	d}
|j3                  |j"                  |	|
d        |j3                  |j                   |j4                  |d       L d|i}t7        | d|      S # t0        $ r}d
| }	d}
Y d }~sd }~ww xY w)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_arquivor6   r7   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(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   .CG  	G:)G55G:c                    | j                   j                  rI| j                   j                  r3t        j                  | j                   j                  j
                         t        j                  j                  |      }t        j                  j                  |      }	 t        j                  j                  t        j                  d|j                         }t        j                  j                  ||j                    d      }t        j                  j#                  |      sd }d}nHt%        j&                  |d      }	d|	j(                  v r|	d   j+                         }t-        |      }nd }d}d
}d
}d
}t1        |t2              r|D ]  }||d   z  }||d   z  }||d   z  } ||||||d}t5        | d|      S # t.        $ r}
d }d	|
 }Y d }
~
`d }
~
ww xY w)NrQ   r,   r-   r.   r/   r0   r2   r3   r4   r   vazao_agua_m3_hr   calor_sensivel_btu_h)r+   rU   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
   r?   r@   r   rA   getr   rD   rE   rF   r   rG   rH   rI   rJ   rK   rL   rM   rN   r)   rO   
isinstancer    r   )rR   r9   ambiente_idr+   rU   rV   rW   r6   r`   rX   rY   ra   rb   rc   
fancoletesrZ   s                   r   detalhes_fancoletesrh   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1 	MJ!Z0A%BB!0J?_4``0&*5K*LL&	M #:!60T&@H '@(KK3  D $?s"CDs   !CG   	G	GG)r   get_object_or_404)BytesIO)
sjFriction)messagesc                 $   | j                   j                  r3t        j                  | j                   j                  j                         t        t        |      }d}d}d}d}d}d}d}	d g g g f\  }
}}}d d i d d d f\  }}}}}}| j                  d	k(  r		 t        | j                  j                  d
d            }t        | j                  j                  dd            }t        | j                  j                  dd            }t        | j                  j                  dd            }t        | j                  j                  dd            }t        | j                  j                  dd            }t        | j                  j                  dd            }t        | j                  j                  dd            }t        | j                  j                  dd            }t        | j                  j                  d|            dz  }t        | j                  j                  d|            }t        | j                  j                  d|            }t        | j                  j                  d|            } |dk  rt        d      |dk  s|dkD  rt        d      |dk  rt        d      	 t        |d#z  d$z  dz  d%      }
||z   }"t!        j"                  d&d'|	      }#|#D ]  }$	 t!        j$                  d(|
z  dz  |$t         j&                  z  z        d)z  }%d*|%z  }!||$z  |%d)z  z  |z  }&t)        |&|!      }'|'|"|%d)z  z  z  |$d%z  d+z  z  }(||
dz  z  |(z  d,|z  z  })d-}*|%d%|*z  z   }+t         j&                  |+d%z  |%d%z  z
  d(z  z  },|,|"d)z  z  d.z  d/z  }-|-|z  }.|)|z  | z  }/|.|/z   |z   |z   }0|j+                  |$d0|%d0|&d0|'d1|(d0|)d0|-d0|.d0|/d0|0d0d2
       |j+                  |$       |j+                  |0        |rt!        j.                  |      }2||2   }3t        |3d5         }|t        |3d6         z  |||z  z  |t         j&                  z  |d)z  d%z  z  d(z  |"z  ||t        |3d7         d8}t1        |j3                               }d9 }4 |4||d:d;d<      }i d=|
d>|d?|d@|dA|dB|dC|dD|dE|d
d
t5               v rndddt5               v rndddt5               v rndddt5               v rndddt5               v rndddt5               v rndddt5               v rndddt5               v rnddt5               v rnddt5               v r nddt5               v rdz  ndFdt5               v rnddt5               v rnd|dG}5t        | d!|5      S # t        $ r2}!t        j                  | d |!        t        | d!d"|i      cY d }!~!S d }!~!ww xY w# t,        $ r(}1t        j                  | d3|$d0d4|1        Y d }1~1)d }1~1ww xY w)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.htmlr9   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_tubulacoesrv   rw   r   c                    t        j                          t        j                  | ||       t        j                  |       t        j                  |       t        j
                  |       t        j                  d       t               }t        j                  |d       |j                  d       t        j                  |j                               j                  d      }|j                          t        j                          |S )N)labelTpng)formatr   zutf-8)pltfigureplotxlabelylabeltitlegridrj   savefigseekbase64	b64encodegetvaluedecodeclose)r   ytitulor   r   buffergrafico_base64s          r   gerar_graficoz#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   r9   )r<   r>   r
   r?   r@   ri   r   methodr   rp   rd   
ValueErrorrl   errorr   roundnplinspacesqrtpirk   rP   rO   argminr   valueslocals)6rR   r9   r+      μ   ρcusto_aco_defaultcusto_energia_defaultrendimento_bomba_defaulthoras_uso_defaultnvr   r   custos_totaisvelocidadesr   r   r   r   r   r   rq   rs   ru   rv   rw   rx   ry   rz   r{   r|   r~   r   r   rY   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   rZ   s6                                                         r   calcular_cagr      sF   ||gll11==>J7G 
B	B #	B 9=b"b8H5Iz=+^bdhjlnrtxz~^~[FK!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 Y-.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V  &DW 	W)'WWW	X'X

X)$rD   pandasrK   django.shortcutsr   django.confr   projeto.modelsr   ctermica.modelsr   	itertoolsr   rg   r	   	django.dbr
   django.contrib.auth.decoratorsr   r)   r[   rh   ri   numpyr   matplotlib.pyplotpyplotr   iorj   r   	colebrookrk   django.contribrl   r   r   r   r   <module>r      s    	  #   " $ 3 *   9a$ -D -Dd .L .L` 7 "       6 "       # : 6 #      
 cG cGr   