mabuseif commited on
Commit
93a24e5
·
verified ·
1 Parent(s): 5ad760b

Update app/main.py

Browse files
Files changed (1) hide show
  1. app/main.py +19 -6
app/main.py CHANGED
@@ -279,6 +279,19 @@ class HVACCalculator:
279
 
280
  return True, "Valid load."
281
 
 
 
 
 
 
 
 
 
 
 
 
 
 
282
  def display_internal_loads(self):
283
  st.title("Internal Loads")
284
 
@@ -775,7 +788,7 @@ class HVACCalculator:
775
  group=wall.wall_group,
776
  orientation=wall.orientation.value,
777
  hour=design_loads['design_hour'],
778
- latitude=float(outdoor_conditions['latitude'].replace('N', '')),
779
  solar_absorptivity=wall.solar_absorptivity,
780
  month=outdoor_conditions['month'].lower()
781
  ),
@@ -803,7 +816,7 @@ class HVACCalculator:
803
  group=roof.roof_group,
804
  orientation=roof.orientation.value,
805
  hour=design_loads['design_hour'],
806
- latitude=float(outdoor_conditions['latitude'].replace('N', '')),
807
  solar_absorptivity=roof.solar_absorptivity,
808
  month=outdoor_conditions['month'].lower()
809
  ),
@@ -847,11 +860,11 @@ class HVACCalculator:
847
  'shading_device': window.shading_device,
848
  'shading_coefficient': window.shading_coefficient,
849
  'scl': self.cooling_calculator.ashrae_tables.get_scl(
850
- latitude=float(outdoor_conditions['latitude'].replace('N', '')),
851
  month=outdoor_conditions['month'].lower(),
852
  orientation=window.orientation.value,
853
  hour=design_loads['design_hour']
854
- ),
855
  'load': load_dict['total'] / 1000
856
  })
857
 
@@ -905,11 +918,11 @@ class HVACCalculator:
905
  'drapery_type': skylight.drapery_type if hasattr(skylight, 'drapery_type') else 'None',
906
  'shading_coefficient': skylight.shading_coefficient,
907
  'scl': self.cooling_calculator.ashrae_tables.get_scl(
908
- latitude=float(outdoor_conditions['latitude'].replace('N', '')),
909
  month=outdoor_conditions['month'].lower(),
910
  orientation='Horizontal',
911
  hour=design_loads['design_hour']
912
- ),
913
  'load': load_dict['total'] / 1000
914
  })
915
 
 
279
 
280
  return True, "Valid load."
281
 
282
+ def parse_latitude(self, latitude: Any) -> float:
283
+ """Parse latitude from string or float to float value."""
284
+ try:
285
+ if isinstance(latitude, (int, float)):
286
+ return float(latitude)
287
+ if isinstance(latitude, str):
288
+ lat_str = latitude.strip().upper().replace('N', '').replace('S', '')
289
+ return float(lat_str)
290
+ raise ValueError("Invalid latitude format")
291
+ except (ValueError, AttributeError) as e:
292
+ st.error(f"Invalid latitude: {latitude}. Using default 32.0.")
293
+ return 32.0 # Default to 32N
294
+
295
  def display_internal_loads(self):
296
  st.title("Internal Loads")
297
 
 
788
  group=wall.wall_group,
789
  orientation=wall.orientation.value,
790
  hour=design_loads['design_hour'],
791
+ latitude=self.parse_latitude(outdoor_conditions['latitude']),
792
  solar_absorptivity=wall.solar_absorptivity,
793
  month=outdoor_conditions['month'].lower()
794
  ),
 
816
  group=roof.roof_group,
817
  orientation=roof.orientation.value,
818
  hour=design_loads['design_hour'],
819
+ latitude=self.parse_latitude(outdoor_conditions['latitude']),
820
  solar_absorptivity=roof.solar_absorptivity,
821
  month=outdoor_conditions['month'].lower()
822
  ),
 
860
  'shading_device': window.shading_device,
861
  'shading_coefficient': window.shading_coefficient,
862
  'scl': self.cooling_calculator.ashrae_tables.get_scl(
863
+ latitude=self.parse_latitude(outdoor_conditions['latitude']),
864
  month=outdoor_conditions['month'].lower(),
865
  orientation=window.orientation.value,
866
  hour=design_loads['design_hour']
867
+ ) * 3.15459, # Convert Btu/h-ft² to W/m²
868
  'load': load_dict['total'] / 1000
869
  })
870
 
 
918
  'drapery_type': skylight.drapery_type if hasattr(skylight, 'drapery_type') else 'None',
919
  'shading_coefficient': skylight.shading_coefficient,
920
  'scl': self.cooling_calculator.ashrae_tables.get_scl(
921
+ latitude=self.parse_latitude(outdoor_conditions['latitude']),
922
  month=outdoor_conditions['month'].lower(),
923
  orientation='Horizontal',
924
  hour=design_loads['design_hour']
925
+ ) * 3.15459, # Convert Btu/h-ft² to W/m²
926
  'load': load_dict['total'] / 1000
927
  })
928