Commit d5e44fb6 authored by Le Roux Erwan's avatar Le Roux Erwan
Browse files

add eurocode plot for the paper 1

parent d27d6673
No related merge requests found
Showing with 59 additions and 22 deletions
+59 -22
from experiment.eurocode_data.utils import LAST_YEAR_FOR_EUROCODE from experiment.eurocode_data.utils import LAST_YEAR_FOR_EUROCODE
from root_utils import classproperty
class AbstractEurocodeRegion(object): class AbstractEurocodeRegion(object):
...@@ -43,11 +44,13 @@ class AbstractEurocodeRegion(object): ...@@ -43,11 +44,13 @@ class AbstractEurocodeRegion(object):
def lois_de_variation_1000_and_2000(self): def lois_de_variation_1000_and_2000(self):
return 3.5, -2.45 return 3.5, -2.45
def plot_max_loading(self, ax, altitudes): def plot_max_loading(self, ax, altitudes, label='Eurocode standards'):
# old_label = 'Eurocode computed in {}'.format(LAST_YEAR_FOR_EUROCODE)
new_label = 'Eurocode standards'
ax.plot(altitudes, [self.eurocode_max_loading(altitude) for altitude in altitudes], ax.plot(altitudes, [self.eurocode_max_loading(altitude) for altitude in altitudes],
label=new_label, color='k') label=label, color=self.eurocode_color, linewidth=5)
@classproperty
def eurocode_color(self):
raise NotImplementedError
class C1(AbstractEurocodeRegion): class C1(AbstractEurocodeRegion):
...@@ -55,12 +58,20 @@ class C1(AbstractEurocodeRegion): ...@@ -55,12 +58,20 @@ class C1(AbstractEurocodeRegion):
def __init__(self) -> None: def __init__(self) -> None:
super().__init__(0.65, None) super().__init__(0.65, None)
@classproperty
def eurocode_color(self):
return 'gold'
class C2(AbstractEurocodeRegion): class C2(AbstractEurocodeRegion):
def __init__(self) -> None: def __init__(self) -> None:
super().__init__(0.65, 1.35) super().__init__(0.65, 1.35)
@classproperty
def eurocode_color(self):
return 'orange'
class E(AbstractEurocodeRegion): class E(AbstractEurocodeRegion):
...@@ -78,3 +89,9 @@ class E(AbstractEurocodeRegion): ...@@ -78,3 +89,9 @@ class E(AbstractEurocodeRegion):
@property @property
def lois_de_variation_1000_and_2000(self): def lois_de_variation_1000_and_2000(self):
return 7, -4.80 return 7, -4.80
@classproperty
def eurocode_color(self):
return 'mediumvioletred'
import matplotlib.pyplot as plt
import numpy as np
from experiment.eurocode_data.eurocode_region import C2, E
from root_utils import get_display_name_from_object_type
if __name__ == '__main__':
ax = plt.gca()
altitudes = np.linspace(200, 2000)
for region_class in [C2, E][1:]:
region_object = region_class()
region_object.plot_max_loading(ax, altitudes)
# ax.set_title(get_display_name_from_object_type(region_object) + ' Eurocodes region')
ax.set_ylabel('50-year return level (kN $m^-2$)')
ax.set_xlabel('Altitude (m)')
ax.set_ylim([0.0, 11.0])
ax.grid()
plt.show()
\ No newline at end of file
import matplotlib.pyplot as plt
import numpy as np
from experiment.eurocode_data.eurocode_region import C2, E, C1
from experiment.eurocode_data.massif_name_to_departement import massif_name_to_eurocode_region
from experiment.meteo_france_data.scm_models_data.abstract_study import AbstractStudy
from root_utils import get_display_name_from_object_type
def main_eurocode_norms(ax=None):
if ax is None:
ax = plt.gca()
altitudes = np.linspace(200, 2000)
for region_class in [C1, C2, E][:]:
region_object = region_class()
label = get_display_name_from_object_type(region_class) + ' Eurocode region'
region_object.plot_max_loading(ax, altitudes, label=label)
if region_class == E:
ax.legend()
ax.xaxis.set_ticks([250 * i for i in range(1, 9)])
ax.tick_params(axis='both', which='major', labelsize=13)
ax.set_ylabel('50-year return level (kN $m^-2$)')
ax.set_xlabel('Altitude (m)')
ax.set_ylim([0.0, 11.0])
ax.grid()
plt.show()
def main_eurocode_map(ax=None):
if ax is None:
ax = plt.gca()
massif_name_to_color = {m: r.eurocode_color for m, r in massif_name_to_eurocode_region.items()}
AbstractStudy.visualize_study(ax, massif_name_to_color=massif_name_to_color, scaled=True)
if __name__ == '__main__':
# main_eurocode_norms()
main_eurocode_map()
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment