
    Cg<                        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#dS )    N)render)settings)Projeto)Ambiente)combinations_with_replacement   )FANCOLETES_MODELOS)
connection)login_requiredc                     t          t          d           }d }t          d          }t          dd          D ]C}t	          ||          D ]0}t          d |D                       }|| z
  }|| k    r
||k     r|}|}1D|rt          |          ndS )Nc                     | d         dz  S )Ncalor_total_resfriamento_btu_h+ެ? )xs    %/var/www/html/cag/calculocag/views.py<lambda>z'determinar_fancoletes.<locals>.<lambda>   s    ;[9\_g9g     )keyinfr      c              3   ,   K   | ]}|d          dz  V  dS )r   r   Nr   ).0aparelhos     r   	<genexpr>z(determinar_fancoletes.<locals>.<genexpr>   s/      "n"n]e8,L#MPX#X"n"n"n"n"n"nr   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/ghhhIK%LLM1b\\ ( (1)Q?? 	( 	(D""n"nim"n"n"nnn&);;G#555'M:Q:Q" '	( !,`41``r   c                    | j         j        r/| j         j        r#t          j        | j         j        j                   t          j                                        }g }|D ]X}t          j        
                    |          }g }|D ]}	 t          j                            t          j        d|j                   }t          j                            ||j         d          }t          j                            |          sd}	d}
nMt'          j        |d          }d|j        v r*|d                                         }	t/          |	          }
nd	}	d}
n# t0          $ r}d
| }	d}
Y d }~nd }~ww xY w|                    |j        |	|
d           |                    |j        |j        |d           Zd|i}t7          | d|          S )N)projeto3/var/www/html/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:    |$ ?)< ?gl1=>>>""$$HN ! !$++G+<<	! 	 	H7!w||H,=  @Lu|  vJ  @L  @L   M   M"$',,|@V=q=q=q"r"rw~~o66 
?(A%(:%%zJJJB6"*DD,./N,O,S,S,U,U),ABS,T,T)),D),>) 7 7 7$E!$E$E!$6!!!!!!7 ## .%6%6% %     	#0!*)
 
 	 	 	 	 	.H '8(CCCs   	CE
E0E++E0c                    | j         j        r/| j         j        r#t          j        | j         j        j                   t          j                            |          }t          j                            |          }	 t          j                            t          j        d|j                   }t          j                            ||j         d          }t          j                            |          sd }d}nMt%          j        |d          }	d|	j        v r*|	d                                         }t-          |          }nd }d}n# t.          $ r}
d }d	|
 }Y d }
~
nd }
~
ww xY wd
}d
}d
}t1          |t2                    r&|D ]#}||d         z  }||d         z  }||d         z  }$||||||d}t5          | d|          S )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.   |$ ?)< ?gl1=>>>o!!Z!00G##{#33HDw||H$5  8Dmt  nB  8D  8D  E  E',,|8N5i5i5ijjw~~o.. 
	C $&?##zBBBB."*<<$&'F$G$K$K$M$M!*?@Q*R*R''$(!*B' D D D "C"C"CD
 +,(!" )400 M1 	M 	MJ!Z0A%BB!0J?_4``0&*5K*LL&& #:!60T&@ H '@(KKKs   =CE	 	
E$EE$)r   get_object_or_404)BytesIO)
sjFriction)messagesc                 $   | j         j        r#t          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	        
                    d
d                    }t          | j	        
                    dd                    }t          | j	        
                    dd                    }t          | j	        
                    dd                    }t          | j	        
                    dd                    }t          | j	        
                    dd                    }t          | j	        
                    dd                    }t          | j	        
                    dd                    }t          | j	        
                    dd                    }t          | j	        
                    d|                    dz  }t          | j	        
                    d|                    }t          | j	        
                    d|                    }t          | j	        
                    d|                    } |dk    rt          d          |dk    s|dk    rt          d          |dk    rt          d          nB# t          $ r5}!t          j        | d |!            t          | d!d"|i          cY d }!~!S d }!~!ww xY wt          |d#z  d$z  dz  d%          }
||z   }"t!          j        d&d'|	          }#|#D ]V}$	 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|                    |$d0|%d0|&d0|'d1|(d0|)d0|-d0|.d0|/d0|0d0d2
           |                    |$           |                    |0           $# t,          $ r'}1t          j        | d3|$d0d4|1            Y d }1~1Pd }1~1ww xY w|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          |                                          }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 )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           |	                    d           t          j        |                                                              d          }|                                 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    JLLLHQ((((JvJvIfHTNNNYYFKu----KKNNN#-foo.?.?@@GGPPNLLNNNIKKK!!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      s   | ?gl1=>>>J777G 
B	B #	B 9=b"b8H5Iz=+^bdhjlnrtxz~^~[FK!35GI[~	aw|''b1122Bw|''b1122B!',"2"2?A"F"FGGM"7<#3#34Da#H#HIIN$W\%5%56H!%L%LMM#()9)9:PRS)T)T#U#U !&w|'7'78La'P'P!Q!Q',W\-=-=>XZ[-\-\']']$ 0 0 D DEEK$W\%5%56HJb%c%cddgjj!',"2"2?DY"Z"Z[[Mgl..{<MNNOOIgl..{<MNNOOI !! !LMMM1$$(81(<(< !STTTa !LMMM    	a 	a 	aN7$E!$E$EFFF'#ClT^E_````````	a
 MD0Z@DH!LL	"W [c2&& .	[ .	[A-[Wa)md2q25yABBTI2I1fT	*b0 r1%% 2d+,Q(0CD Y-.3=M8MN !e)^uq27!2a 78R$Y'$.6 !9n #m 3i ?&1M&AN&RUe&e# !!%&**#%#%-.**&(;;),ll$&+6(<(<)6&<&<.A+G+G# #    ""1%%%$$%89999 [ [ [w(YA(Y(Y(YUW(Y(YZZZZZZZZ[  	/&(i&>&>#)*AB+J788F !5u=MN^=_7`7` `!3}{7R!S$<ru$DRV[\H\$]`a$adf$f"0$4"'(89I(J"K"K F fmmoo..K	" 	" 	" +];G]_q  tF  G  GYj 	& 	{	
 	& 	7 	0 	0 	0 	DFHH$$bb" 	DFHH$$bb" 	/VXX*E*E1 	,<,H,H..a 	0Bfhh0N0N,,TU  	8NRXRZRZ8Z8Z 4 4`a!" 	4HFHH4T4T00Z[#$ 	#@Z^d^f^f@f@f$<$<lm%& '4vxx&?&?{{S"-"9"9YYx6HFHH6T6T,s22Z\*9VXX*E*E4"-"9"9YYr 1  H4 ';XFFFs8   ;IK 
L*L LLDQ((
R2RR)$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 3 3 3 3 3 * * * * * *             9 9 9 9 9 9a a a$ -D -D -Dd .L .L .L` 7 6 6 6 6 6 6 6 " " " " " "                              6 6 6 6 6 6 6 6 " " " " " "                              # # # # # # : 9 9 9 9 9 6 6 6 6 6 6 6 6 # # # # # #                             
 cG cG cG cG cGr   