
    Gg                        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mZ d dlmZ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 ej        d           d dlmZ d dl 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/m0Z0 ddl1m2Z2m3Z3m4Z4 ddl5m6Z6 ddl7m8Z8m9Z9m:Z:m;Z; ddl<m=Z=m>Z>m?Z? ddl@mAZAmBZBmCZCmDZDmEZEmFZFmGZG g dZHg dZId ZJd ZKd$d!ZLd" ZMed#             ZNdS )%    N)datetime)settings)messages)login_required)
connection)HttpResponseHttpResponseForbidden)renderget_object_or_404)Document)InchesPt)WD_ALIGN_PARAGRAPH)WD_ROW_HEIGHT_RULE)
WD_SECTIONAgg)Ambiente)Parede)PortaMadeira
PortaVidro)Projeto)Telhado)DadosTermicos)Vidro   )calcular_carga_termica_paredecalcular_carga_insolacao_paredecarregar_temperaturas_projeto2)calcular_cargas_vidros)$calcular_carga_termica_porta_madeira&calcular_carga_insolacao_porta_madeira"calcular_carga_termica_porta_vidro$calcular_carga_insolacao_porta_vidro)calcular_cargas_telhados calcular_carga_insolacao_telhadocalcular_carga_termica_telhado)!calcular_cargas_termicas_ambiente#calcular_calor_sensivel_ar_exterior"calcular_calor_latente_ar_exteriorcalcular_vazao_ar_infiltracaocalcular_vazao_ar_renovacao calcular_vazao_total_ar_exteriorcalcular_densidade_ar)nortesullesteoeste)z06:00z07:00z08:00z09:00z10:00z11:00z12:00z13:00z14:00z15:00z16:00z17:00z18:00c           	      H   d |D             }t           j                            d           t          j        d           t          j        | |dd           t          j        dd	
           t          j        d           t          j        d           t          j        d           t          j	        d           t          |          D ]<\  }}t          j        |t          |          t          |          dddd           =t          j        |          }||         }| |         }t          j        ddd|dd| dddd           t          j        g d           t"          j                            |d          }	t          j        |	d d!"           t          j                     t          j        d           t          j        | |d#d           t          j        d$d	
           t          j        d           t          j        d%           t          j        d           t          j	        d           t          |          D ]"\  }}t          j        |||dd&dd           #t          j        |          }
||
         }| |
         }t          j        ddd|dd'| dddd           t          j        g d           t"          j                            |d(          }t          j        |d d!"           t          j                     |	|fS ))u5   
    Cria gráficos de carga térmica em W e TR.
    c                     g | ]}|d z  S )   ).0ws     6/var/www/html/cag/calculotermica/relatorio_completo.py
<listcomp>z&create_load_graphs.<locals>.<listcomp>2   s    ===1$===    default)      )figsizezb-o   )	linewidthu&   Variação da Carga Térmica Total (W)   )padu   Horáriou   Carga Térmica (W)T-   )rotationz.0fWcenterbottom)havag      ?g{Gz?u\   O gráfico demonstra a variação da carga térmica ao longo do dia, com o valor máximo de .2fu    W atingido às .r<   )rH   fontsizewrap)r   gQ?r   r   )rectzgraph_w.pngi,  tight)dpibbox_incheszr-ou'   Variação da Carga Térmica Total (TR)u   Carga Térmica (TR)TRu    TR atingido às zgraph_tr.png)pltstyleusefigureplottitlexlabelylabelgridxticks	enumeratetextfloatnpargmaxfigtexttight_layoutospathjoinsavefigclose)horarioscarga_termica_total_ambiente
output_dircarga_trivmax_index_wmax_value_w
max_hour_wgraph_w_pathmax_index_trmax_value_trmax_hour_trgraph_tr_paths                 r8   create_load_graphsrw   -   sz   
 >= <===H IMM) JwHX3UaHHHHI6B????JzJ#$$$HTNNNJ 677 L L1E!HHq0000X(KKKKK)899K.{;K+&J KT ^oz  ^  ^  ^  Q[  ^  ^  ^bt5 5 5 5 ///****7<<
M::LK#7;;;;IKKK JwHXx!4444I7R@@@@JzJ$%%%HTNNNJ (## ? ?1A!||||X>>>>>9X&&LL)L<(K KT ao{  a  a  a  S^  a  a  abt5 5 5 5 ///****GLL^<<MK3G<<<<IKKK&&r:   c                    | j         D ]G}t          d          |j        d         _        |j        dd         D ]}t          d          |_        H| j         D ]}|j        D ]~}|j        d         }|j        }t          d          |_        t          d          |_        t          j
        |_        |j        D ]'}t          d          |j        _        d|j        _        (| j         d         j        D ];}|j        D ]1}|j        D ]'}d	|j        _        t          d          |j        _        (2<| j         D ]'}t          d
          |_        t$          j        |_        (dS )z%
    Formata uma tabela do Word.
    g      @r   r   Ng      ?r?      ArialTg333333?)rowsr   cellswidth
paragraphsparagraph_formatr   space_beforespace_afterr   CENTER	alignmentrunsfontsizenameboldheightr   AT_LEASTheight_rule)tablerowcell	paragraphr   runs         r8   format_tabler   o   s   
 z % %#C[[	!IabbM 	% 	%DDJJ	% z ( (I 	( 	(D*I(9,.qEE)+-a55("4";I ~ ( ( "1 '(	( 
1# & & 	& 	&I ~ & & $ "1&	& z 6 6C[[
,56 6r:   Fc                 D   |D ]}|                                  j        }|d         |d         _        t          |d                   D ]X\  }}t	          |t
          t          j        f          r|dd||dz            _        ;t          |          ||dz            _        YdS )zE
    Adiciona linhas a uma tabela com base nos dados fornecidos.
    r   r   rJ    WN)	add_rowr|   r^   r]   
isinstancer_   r`   float64str)r   dataheaderrow_data	row_cellsrm   values          r8   add_table_rowsr      s      1 1MMOO)	$QK	!!(1+.. 	1 	1HAu%%!455 1).&6&6&6&6	!A###&)%jj	!A###		11 1r:   c                     t          | t          t          j        f          rt          |           g|z  S t          | t          j                  r|                                 S | S )zH
    Garante que um valor seja um array de determinado comprimento.
    )r   r_   r`   r   ndarraytolist)r   lengths     r8   ensure_arrayr      sW     %%,-- e~&&	E2:	&	& ||~~Lr:   c                 9   	 | j         j        r| j         j        st          d          S t	          j        | j         j        j                   t          t          |          }t          t          ||          }t          t          |          }t          j                            |          }t          j                            |          }t          j                            |          }t           j                            |          }	t"          j                            |          }
	 t%          |          \  }}}nN# t&          $ rA}t)          j        | t-          |                     t/          | d||dd          cY d }~S d }~ww xY w|j        }|j        |j        nd}t5          |          }t7          |j        |j                  }t=          |j        |j                   }tC          |j        |j        |j        |j                   }tE          ||||          }tG          ||||j$        |	          }i }i }tK          j&        tO          tP                              }tK          j&        tO          tP                              }|D ]h}tR          D ]^}tU          ||||          }tW          ||          }|tK          j,        |          z  }|tK          j,        |          z  }||| <   ||| <   _i||z   }|||d
} t[          |||          \  }!}"tK          j&        tO          tP                              }#tK          j&        tO          tP                              }$|!.                                D ]\  }}|#tK          j,        |          z  }#|".                                D ]\  }}|$tK          j,        |          z  }$|#|$z   }%|#|$|%d}&i }'i }(tK          j&        tO          tP                              })tK          j&        tO          tP                              }*|D ]h}+tR          D ]^}t_          ||+||          }ta          |+|          }||'| <   ||(| <   |)tK          j,        |          z  })|*tK          j,        |          z  }*_i|)|*z   },|)|*|,d}-i }.i }/tK          j&        tO          tP                              }0tK          j&        tO          tP                              }1|	D ]h}2tR          D ]^}tc          ||2||          }te          |2|          }||.| <   ||/| <   |0tK          j,        |          z  }0|1tK          j,        |          z  }1_i|0|1z   }3|0|1|3d}4i }5i }6tK          j&        tO          tP                              }7tK          j&        tO          tP                              }8|
D ]l}9tg          ||9|          }ti          ||9|          }||5d|9j5         <   ||6d|9j5         <   |7tK          j,        |          z  }7|8tK          j,        |          z  }8m|7|8z   }:|7|8|:d};tm          |          }<d|<vr&tK          j&        tO          tP                              n|<d         d|<vr&tK          j&        tO          tP                              n|<d         d|<vr&tK          j&        tO          tP                              n|<d         d|<vr&tK          j&        tO          tP                              n|<d         d}=||%z   |,z   |3z   |:z   tK          j,        |=d                   z   |z   tK          j,        |=d                   z   tK          j,        |=d                   z   }>tK          j,        |=d                   |z   }?|?|>z   }@to          |@          }Ai d|d|d| d|&d|-d|4d|;d|=d|d|d|!d |"d!|'d"|(d#|.d$|/d%|5|6|<|||||tP          |||>|?|@|Ad&}Btq                      }C|Cj9        d         }Dtu          d'          |D_;        tu          d'          |D_<        tu          d(          |D_=        tu          d)          |D_>        d*}Et~          j@        A                    |E          rB|CB                    |Etu          d+          ,           |CjC        d-         }Ft          jE        |F_F        |Cj9        d         }D|DjG        }G|GjC        d         }Ht          jE        |H_F        |HH                                }I|IB                    |Etu          d.          ,           |CI                    d/          }Jt          jE        |J_F        |CJ                    d0|jK                    |CJ                    d1|jL                    |CJ                    d2t          jN                    O                    d3                      |CI                    d4d56           |CJ                                }Kd|KH                    d7          _P        |KH                    | d8           |CJ                                }Kd|KH                    d9          _P        |KH                    |d:d;           |CI                    d<d56           |CQ                    d5tO          tP                    d5z   =          }Ld>|L_R        |LjS        d         jT        }Md?|Md         _U        t          tP                    D ]\  }N}O|O|M|Nd5z            _U        t          |tO          tP                              }t          |tO          tP                              }t          |tO          tP                              }d@|fdA|fdB|fg}Pt          |L|P           t          |L           |CI                    dCd56           |CQ                    d5tO          tP                    d5z   =          }Ld>|L_R        |LjS        d         jT        }MdD|Md         _U        t          tP                    D ]\  }N}O|O|M|Nd5z            _U        t          |L|.                                           t          |L           |CI                    dEd56           |CQ                    d5tO          tP                    d5z   =          }Ld>|L_R        |LjS        d         jT        }MdD|Md         _U        t          tP                    D ]\  }N}O|O|M|Nd5z            _U        t          |L|.                                           t          |L           |CI                    dFdG6           |CQ                    d5tO          tP                    d5z   =          }Ld>|L_R        |LjS        d         jT        }MdH|Md         _U        t          tP                    D ]\  }N}O|O|M|Nd5z            _U        dI| dJ         fdK| dL         fdM| dN         fg}Qt          |L|Q           t          |L           |CI                    dOd56           |CQ                    d5tO          tP                    d5z   =          }Ld>|L_R        |LjS        d         jT        }MdD|Md         _U        t          tP                    D ]\  }N}O|O|M|Nd5z            _U        t          |L|!.                                           t          |L           |CI                    dPd56           |CQ                    d5tO          tP                    d5z   =          }Ld>|L_R        |LjS        d         jT        }MdD|Md         _U        t          tP                    D ]\  }N}O|O|M|Nd5z            _U        t          |L|".                                           t          |L           |CI                    dQdG6           |CQ                    d5tO          tP                    d5z   =          }Ld>|L_R        |LjS        d         jT        }MdD|Md         _U        t          tP                    D ]\  }N}O|O|M|Nd5z            _U        dI|&dJ         fdK|&dL         fdM|&dR         fg}Rt          |L|R           t          |L           |CI                    dSd56           |CQ                    d5tO          tP                    d5z   =          }Ld>|L_R        |LjS        d         jT        }MdD|Md         _U        t          tP                    D ]\  }N}O|O|M|Nd5z            _U        t          |L|'.                                           t          |L           |CI                    dTd56           |CQ                    d5tO          tP                    d5z   =          }Ld>|L_R        |LjS        d         jT        }MdD|Md         _U        t          tP                    D ]\  }N}O|O|M|Nd5z            _U        t          |L|(.                                           t          |L           |CI                    dUdG6           |CQ                    d5tO          tP                    d5z   =          }Ld>|L_R        |LjS        d         jT        }MdD|Md         _U        t          tP                    D ]\  }N}O|O|M|Nd5z            _U        dI|-dJ         fdK|-dL         fdM|-dV         fg}St          |L|S           t          |L           |CI                    dWd56           |CQ                    d5tO          tP                    d5z   =          }Ld>|L_R        |LjS        d         jT        }MdD|Md         _U        t          tP                    D ]\  }N}O|O|M|Nd5z            _U        t          |L|..                                           t          |L           |CI                    dXd56           |CQ                    d5tO          tP                    d5z   =          }Ld>|L_R        t          |L|/.                                           t          |L           |CI                    dYdG6           |CQ                    d5tO          tP                    d5z   =          }Ld>|L_R        |LjS        d         jT        }MdD|Md         _U        t          tP                    D ]\  }N}O|O|M|Nd5z            _U        dI|4dJ         fdK|4dL         fdM|4dZ         fg}Tt          |L|T           t          |L           |CI                    d[d56           |CQ                    d5tO          tP                    d5z   =          }Ld>|L_R        |LjS        d         jT        }MdD|Md         _U        t          tP                    D ]\  }N}O|O|M|Nd5z            _U        t          |L|5.                                           t          |L           |CI                    d\d56           |CQ                    d5tO          tP                    d5z   =          }Ld>|L_R        |LjS        d         jT        }MdD|Md         _U        t          tP                    D ]\  }N}O|O|M|Nd5z            _U        t          |L|6.                                           t          |L           |CI                    d]dG6           |CQ                    d5tO          tP                    d5z   =          }Ld>|L_R        |LjS        d         jT        }MdD|Md         _U        t          tP                    D ]\  }N}O|O|M|Nd5z            _U        dI|;dJ         fdK|;dL         fdM|;d^         fg}Ut          |L|U           t          |L           |CI                    d_d56           |CQ                    d5tO          tP                    d5z   =          }Ld>|L_R        |LjS        d         jT        }Md`|Md         _U        t          tP                    D ]\  }N}O|O|M|Nd5z            _U        t          |=d         tO          tP                              }Vt          |=d         tO          tP                              }Wt          |=d         tO          tP                              }Xt          |=d         tO          tP                              }Yda|Vfdb|Wfdc|Xfdd|Yfg}Zt          |L|Z           t          |L           |CI                    ded56           |CQ                    d5tO          tP                    d5z   =          }Ld>|L_R        |LjS        d         jT        }Mdf|Md         _U        t          tP                    D ]\  }N}O|O|M|Nd5z            _U        t          |tO          tP                              }[t          |tO          tP                              }\dg|[fdh|\fg}]t          |L|]           t          |L           |CI                    did56           |CQ                    d5tO          tP                    d5z   =          }Ld>|L_R        |LjS        d         jT        }Md`|Md         _U        t          tP                    D ]\  }N}O|O|M|Nd5z            _U        dj|>fdk|?fdl|@fg}^t          |L|^           t          |L           |CI                    dmd56           |CJ                                }Kd|KH                    dn          _P        |KH                    |Adodp           |Adqz  }_|CJ                                }Kd|KH                    dr          _P        |KH                    |_dods           |CI                    dtd56           t~          j@        Z                    t          j\        du          }`t          j]        |`dv           t          tP          |@|`          \  }a}b|CJ                    dw           |CB                    |atu          dx          ,           |CjC        d-         }Ft          jE        |F_F        |CB                    |btu          dx          ,           |CjC        d-         }Ft          jE        |F_F        t~          j@        Z                    t          j\        dydz|jK         d{|jL         d|          }ct          j]        t~          j@        _                    |c          dv           |C`                    |c           t          |cd}          5 }dt          |dc                                d~          }ed|jK         d{|jL         d||ed<   |ecd d d            S # 1 swxY w Y   d S # t          $ rJ}t          dt-          |                      t          dt-          |           d          cY d }~S d }~ww xY w)Nu'   Usuário não autenticado ou sem tenant)id)r   projeto)ambientez+calculotermica/resultados_cargatermica.htmlT)r   r   error   )hlv)total_carga_termicatotal_carga_insolacaototal_parede_calculo)r   r   total_vidro_calculo)r   r   total_porta_madeira_calculo)r   r   total_porta_vidro_calculotelhado_)r   r   total_telhado_calculocarga_sensivel_pessoascarga_latente_pessoascarga_iluminacaocarga_equipamentos)r   r   r   r   r   r   cargas_totais_paredescargas_totais_vidroscargas_totais_portas_madeiracargas_totais_portas_vidrocargas_totais_telhadoscargas_totais_ambientecargas_termocargas_insolacaocargas_termo_vidroscargas_insolacao_vidroscargas_termo_portas_madeiracargas_insolacao_portas_madeiracargas_termo_portas_vidrocargas_insolacao_portas_vidrocargas_termo_telhados)cargas_insolacao_telhadoscargas_ambientevazao_infiltracaovazao_renovacaovazao_total_ar_exteriorcalor_sensivel_ar_exteriorcalor_latente_ar_exteriorri   altitudedensidade_arsomatorio_carga_sensivel_totalsomatorio_carga_latente_totalrj    carga_termica_total_ambiente_maxgffffff?gzGa'@g
ףp= @z5/var/www/html/cag/static/relatorio/grf_graph_logo.png   )r}   g      ?u(   Relatório de Cálculo de Carga Térmicaz	Projeto: z
Ambiente: zData: z%d/%m/%Yu   Informações Básicasr   )levelz
Altitude: z mzDensidade do Ar: z.4fu    kg/m³u   Vazões de Ar)r{   colsz
Table Gridu   Tipo de Vazãou   Vazão de Infiltraçãou   Vazão de Renovaçãou   Vazão Total de Ar Exterioru-   Cargas Térmicas das Paredes por Orientaçãou   Orientaçãou2   Cargas de Insolação das Paredes por OrientaçãozTotais das Cargas das Paredesr?   Tipou   Total Carga Térmicar   u   Total Carga Insolaçãor   zTotal Geralr   u,   Cargas Térmicas dos Vidros por Orientaçãou1   Cargas de Insolação dos Vidros por OrientaçãozTotais das Cargas dos Vidrosr   u7   Cargas Térmicas das Portas de Madeira por Orientaçãou<   Cargas de Insolação das Portas de Madeira por Orientaçãoz'Totais das Cargas das Portas de Madeirar   u5   Cargas Térmicas das Portas de Vidro por Orientaçãou:   Cargas de Insolação das Portas de Vidro por Orientaçãoz%Totais das Cargas das Portas de Vidror   u   Cargas Térmicas dos Telhadosu"   Cargas de Insolação dos TelhadoszTotais das Cargas dos Telhadosr   zCargas do AmbientezTipo de Cargau   Carga Sensível PessoaszCarga Latente Pessoasu   Carga IluminaçãozCarga EquipamentoszCalor do Ar ExteriorzTipo de Caloru   Calor SensívelzCalor Latenteu   Somatório das Cargas Térmicasu   Somatório Carga Sensívelu   Somatório Carga Latenteu   Carga Térmica Totalu   Carga Térmica Total Máximau   Valor Máximo: rJ   r   r4   u   Valor Máximo em TR: z TRu)   Gráficos de Variação da Carga Térmicatemp_graphs)exist_oku   Os gráficos abaixo mostram a variação da carga térmica total ao longo do dia. O primeiro gráfico apresenta os valores em Watts (W) e o segundo em Toneladas de Refrigeração (TR). Observe os picos de carga e a variação ao longo das horas do dia.
   
relatoriosrelatorio_calculo__z.docxrbzGapplication/vnd.openxmlformats-officedocument.wordprocessingml.document)content_typez'attachment; filename=relatorio_calculo_zContent-DispositionzErro detalhado: u   Erro ao gerar relatório: i  )status)fuseris_authenticatedtenantr	   r   
set_schemaschema_namer   r   r   r   r   objectsfilterr   r   r   r   r   FileNotFoundErrorr   errorr   r
   temperatura_internar   r-   r*   	area_piso
pe_direitor+   numero_pessoastaxa_renovacaor,   r(   r)   umidade_absoluta_internar`   zeroslenHORARIOSORIENTACOESr   r   arrayr   itemsr    r!   r"   r#   r&   r%   r   r'   maxr   sectionsr   left_marginright_margin
page_widthpage_heightrd   re   existsadd_picturer~   r   r   r   footeradd_runadd_headingadd_paragraphnome_projetonome_ambienter   nowstrftimer   	add_tablerT   r{   r|   r^   r]   r   r   r   rf   r   
MEDIA_ROOTmakedirsrw   dirnamesaveopenr   read	Exceptionprint)frequest
projeto_idambiente_idr   r   termicosparedesvidrosportas_madeiraportas_vidrotelhadostemperaturas_externasumidade_absoluta_externacalor_latente_aguaer   r   r   r   r   r   r   r   r   r   total_carga_termica_paredestotal_carga_insolacao_paredesparede
orientacaocarga_termicacarga_insolacaor   r   r   r   total_carga_termica_vidrostotal_carga_insolacao_vidrosr   r   r   r   "total_carga_termica_portas_madeira$total_carga_insolacao_portas_madeiraporta_madeirar   r   r   r    total_carga_termica_portas_vidro"total_carga_insolacao_portas_vidroporta_vidror   r   r   r   total_carga_termica_telhadostotal_carga_insolacao_telhadostelhador   r   r   r   r   r   rj   r   contextodocsection	logo_pathlast_paragraphr   footer_parar   rX   pr   header_cellsrm   horavazoestotais_paredetotais_vidrototais_porta_madeiratotais_porta_vidrototais_telhadocarga_sensivelcarga_latenter   r   
cargas_ambcalor_sensivel_valorescalor_latente_valores
calores_ar
somatoriostr_maxtemp_dirrr   rv   output_pathdoc_fileresponsesf                                                                                                         r8   gerar_relatorio_completorE     s   @
O|, 	TGL4G 	T()RSSSgl1=>>>#G
;;;$X+wOOO$]XFFF.'''::%%x%88%-44h4GG!)00(0CC?))8)<<	Rpq{R|R|O!#;=O=O  	 	 	N7CFF+++'#P"$S S        	 ':'.'7'C7##,X66 :(:LhNabb5h6MxOfgg"B 3X5LhNe#
 #
 &I+-@BY&
 &
" %G#$-"%
 %
 %
!  ')hs8}}&=&=#(*X(?(?% 		D 		DF) D D
 =j&RZ\f g g"A&*"U"U+rx/F/FF+-/1J1JJ-0=
_-4C J11D  ;=ZZ#>%B$8!
 !
 8NjZ`bj7k7k44%'Xc(mm%<%<"')xH'>'>$)<)B)B)D)D 	B 	B%J&"(=*A*AA&&+B+H+H+J+J 	F 	F'J(BH_,E,EE((8;WW#=%A#6 
  
 ')#*,'-/Xc(mm-D-D*/1xH/F/F,+ 		R 		RM) R R
 DZQ^`hjt u u"HXb"c"c?L+zO<CR/:@2bh}6M6MM248Q8QQ44R 'IKo&o##E%I+F(
 (
$ %'!(*%+-8CMM+B+B(-/Xc(mm-D-D*' 		P 		PK) P P
 B:{\dfp q q"F{T^"_"_=J)Z/:AP-o>0BH]4K4KK02bh6O6OO22P %EGi$i!#C%G)B&
 &
" !#$&!')xH'>'>$)+#h--)@)@& 	H 	HG::wPXYYM>z7T\]]O=J!"9WZ"9"9:AP%&=&=&=>(BH],C,CC(*bh.G.GG** <?] ]#?%C%:"
 "
 <HEEAYapApApbhs8}}&=&=&=  wF  G_  w`@W_n@n@nRXc(mm%<%<%<  uD  E\  u];MUd;d;dX 7 7 7jy  {M  kN=QYh=h=h"(3x=="9"9"9n}  S  oT	"
 "
 ! '( && "	"
 H+,DEFFG '' H+,>?@@A H+,@ABBC 	' H+,CDEE%& 	&
 (EGe'e$+./K+L+L( 
w 
 
 $%: 
 #$8	 

 +,H 
 )*D 
 %&< 
 %&< 
 L 
  0 
 "#6 
 &'> 
 *+F 
 ./N 
 ()B 
  ,-J! 
" $%:# 
$ *C.!2.'>*D)B  (.L-J,H0P? 
  
  
F jj ,q/$Skk%c{{#E]]$Tll L	7>>)$$ 	AOOIVAYYO777 ^B/N'9'@N$ ,q/'* 2 9!!##	555  JKK,3 	<g&:<<===?x'=??@@@H8<>>#:#::#F#FHHIII 	0:::'+		,$			X///""".2		%&&+			\..../// 	q11113x==1+<=="z!}*/Q ** 	* 	*GAt%)L1"" )):CMMJJ&HFF"./FH"V"V '(9:$o6*,CD
 	uf%%%U 	GqQQQ 13x==1+<=="z!}*-Q ** 	* 	*GAt%)L1""ul0022333U 	LTUVVV13x==1+<=="z!}*-Q ** 	* 	*GAt%)L1""u.4466777U 	7qAAA13x==1+<=="z!}*%Q ** 	* 	*GAt%)L1"" $%:;P%QR&(=>U(VW12HIJ
 	um,,,U 	FaPPP13x==1+<=="z!}*-Q ** 	* 	*GAt%)L1""u17799:::U 	KSTUUU13x==1+<=="z!}*-Q ** 	* 	*GAt%)L1""u5;;==>>>U 	6a@@@13x==1+<=="z!}*-Q ** 	* 	*GAt%)L1"" $%9:O%PQ&(<=T(UV01FGH
 	ul+++U 	QYZ[[[13x==1+<=="z!}*-Q ** 	* 	*GAt%)L1""u9??AABBBU 	V^_```13x==1+<=="z!}*-Q ** 	* 	*GAt%)L1""u=CCEEFFFU 	AKKK13x==1+<=="z!}*-Q ** 	* 	*GAt%)L1"" $%ABW%XY&(DE\(]^89VWX 
 	u2333U 	OWXYYY13x==1+<=="z!}*-Q ** 	* 	*GAt%)L1"" 	u7==??@@@U 	T\]^^^13x==1+<=="u;AACCDDDU 	?qIII13x==1+<=="z!}*-Q ** 	* 	*GAt%)L1"" $%?@U%VW&(BCZ([\67RST
 	u0111U 	7qAAA13x==1+<=="z!}*-Q ** 	* 	*GAt%)L1""u399;;<<<U 	<AFFF13x==1+<=="z!}*-Q ** 	* 	*GAt%)L1""u7==??@@@U 	8BBB13x==1+<=="z!}*-Q ** 	* 	*GAt%)L1"" $%;<Q%RS&(>?V(WX23JKL
 	un---U 	,A66613x==1+<=="z!}*.Q ** 	* 	*GAt%)L1"" &&<=U&VX[\dXeXeff$%;<S%TVYZbVcVcdd'(>?Q(RTWX`TaTabb)*@AU*VX[\dXeXeff '7$m4!#34!#56	

 	uj)))U 	.a88813x==1+<=="z!}*.Q ** 	* 	*GAt%)L1"" "..H#h--!X!X ,-FH V V  6734


 	uj)))U 	9CCC13x==1+<=="z!}*.Q ** 	* 	*GAt%)L1"" *+IJ')FG#%AB

 	uj)))U 	6a@@@,0		#$$)			5====>>> 2D826		)**/			V$$$$%%% 	C1MMM 7<< 3]CC
Ht,,,, '9('
 '
#m 	 s 	t 	t 	t
 	F2JJ777+#5#< VBZZ888+#5#<  gll8#6 iW5I i iHLb i i ik k
BGOOK004@@@@ +t$$ 	#HMMOO-vx x xH /MX_Xl  /M  /Mow  pF  /M  /M  /MH*+		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  O O O)Q))***AQAA#NNNNNNNNNOs   &Ar DAr 0E Ar 
F6F
FAr 
FAj2Ar q;Ar	q<Ar r	ArrAr rArrAr r
As*r ?As%sAs*s%As*)F)Ord   r   django.confr   django.contribr   django.contrib.auth.decoratorsr   	django.dbr   django.httpr   r	   django.shortcutsr
   r   docxr   docx.sharedr   r   docx.enum.textr   docx.enum.tabler   docx.enum.sectionr   
matplotlibrU   matplotlib.pyplotpyplotrS   numpyr`   ctermica.modelsr   paredes.modelsr   portas.modelsr   r   projeto.modelsr   telhados.modelsr   termicos.modelsr   vidros.modelsr   cargasparedesr   r   r   cargasvidrosr   cargasportasr    r!   r"   r#   cargastelhadosr$   r%   r&   cargastermicosr'   r(   r)   r*   r+   r,   r-   r   r   rw   r   r   r   rE  r5   r:   r8   <module>ra     s5   				                   # # # # # # 9 9 9 9 9 9             ; ; ; ; ; ; ; ; 6 6 6 6 6 6 6 6       " " " " " " " " - - - - - - . . . . . . ( ( ( ( ( (     
u              $ $ $ $ $ $ ! ! ! ! ! ! 2 2 2 2 2 2 2 2 " " " " " " # # # # # # ) ) ) ) ) )       y y y y y y y y y y 0 0 0 0 0 0            w v v v v v v v v v                  100B B B@' @' @'D%6 %6 %6N1 1 1 1   A
O A
O A
O A
O A
Or:   