From 2bfa25cb86603d46c9f6223d658efce3083375b3 Mon Sep 17 00:00:00 2001 From: Colin Caprani Date: Wed, 6 Mar 2024 22:58:15 +1100 Subject: [PATCH 1/2] Updates to ospv & diagram formats --- src/ospgrid/grid.py | 65 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 57 insertions(+), 8 deletions(-) diff --git a/src/ospgrid/grid.py b/src/ospgrid/grid.py index 99d7e04..e4d53d1 100644 --- a/src/ospgrid/grid.py +++ b/src/ospgrid/grid.py @@ -10,6 +10,7 @@ import itertools from typing import Union, Tuple, List import matplotlib.pyplot as plt +from mpl_toolkits.mplot3d import Axes3D import openseespy.opensees as osp import opsvis as ospv import numpy as np @@ -224,6 +225,14 @@ def __init__(self): """ self.clear() + + # Set color preferences + ospv.fmt_undefo["color"] = "black" + ospv.fmt_defo["color"] = "red" + ospv.fmt_model["color"] = "black" + ospv.fmt_secforce1["color"] = "red" + ospv.fmt_secforce2["color"] = "red" + pass def clear(self): @@ -784,7 +793,8 @@ def plot_grid( if figsize is None: figsize = self.FIGSIZE - ospv.plot_model(fig_wi_he=figsize) + ospv.plot_model(fig_wi_he=figsize, + node_supports=False) fig = plt.gcf() fig.set_figwidth(figsize[0]) fig.set_figheight(figsize[1]) @@ -795,6 +805,19 @@ def plot_grid( plt.gca().set_axis_off() fig.tight_layout() + + def _plot_model(self, ax): + """ + Plots the background model for the section force diagrams. + """ + + ospv.plot_model(ax=ax, + node_labels=False, + element_labels=False, + node_supports=False, + #fmt_model={"color":"k"}, + local_axes=False) + def plot_dsd( self, @@ -834,7 +857,7 @@ def plot_dsd( grid_size = max(max(x) - min(x), max(y) - min(y)) # in case of very small nodal values - max_disp = ospv.max_u_abs_from_beam_defo_interp_3d(max_disp,nep=17) + max_disp = ospv.max_u_abs_from_beam_defo_interp_3d(max_disp,nep=21) # target about 1/4 the dimension of the grid sf = 0.25 * grid_size / max_disp @@ -842,7 +865,17 @@ def plot_dsd( mag = 10 ** int(np.ceil(np.log10(sf))) scale_factor = round(10 * sf / mag) * mag / 10 - ospv.plot_defo(sfac=scale_factor, endDispFlag=1) + + + fig = plt.figure() + ax = fig.add_subplot(111, projection=Axes3D.name) + self._plot_model(ax) + ospv.plot_defo(sfac=scale_factor, + unDefoFlag=False, + ax=ax, + endDispFlag=False, + node_supports=False + ) fig = plt.gcf() fig.set_figwidth(figsize[0]) fig.set_figheight(figsize[1]) @@ -885,7 +918,12 @@ def plot_bmd( if figsize is None: figsize = self.FIGSIZE - ospv.section_force_diagram_3d("My", sfac=scale_factor, end_max_values=values) + _,_,ax = ospv.section_force_diagram_3d("My", + sfac=scale_factor, + end_max_values=values, + node_supports=False, + alt_model_plot=2) + self._plot_model(ax) fig = plt.gcf() fig.set_figwidth(figsize[0]) fig.set_figheight(figsize[1]) @@ -931,7 +969,12 @@ def plot_sfd( if figsize is None: figsize = self.FIGSIZE - ospv.section_force_diagram_3d("Vz", sfac=-scale_factor, end_max_values=values) + _,_,ax = ospv.section_force_diagram_3d("Vz", + sfac=-scale_factor, + end_max_values=values, + node_supports=False, + alt_model_plot=2) + self._plot_model(ax) fig = plt.gcf() fig.set_figwidth(figsize[0]) fig.set_figheight(figsize[1]) @@ -977,9 +1020,15 @@ def plot_tmd( if figsize is None: figsize = self.FIGSIZE - ospv.section_force_diagram_3d( - "T", sfac=-scale_factor, dir_plt=2, end_max_values=values - ) + _,_,ax = ospv.section_force_diagram_3d("T", + sfac=-scale_factor, + dir_plt=2, + end_max_values=values, + node_supports=False, + #fmt_secforce1={"color":"r"}, + #fmt_secforce2={"color":"r"}, + alt_model_plot=2) + self._plot_model(ax) fig = plt.gcf() fig.set_figwidth(figsize[0]) fig.set_figheight(figsize[1]) From ccd53abca01ad12ddd7dca5697f0a79b6dec897b Mon Sep 17 00:00:00 2001 From: Colin Caprani Date: Wed, 6 Mar 2024 23:00:23 +1100 Subject: [PATCH 2/2] Version bump --- src/ospgrid/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ospgrid/__init__.py b/src/ospgrid/__init__.py index 87be26f..c215650 100644 --- a/src/ospgrid/__init__.py +++ b/src/ospgrid/__init__.py @@ -2,7 +2,7 @@ ospgrid - A plane grid elastic analysis wrapper for OpenSeesPy """ -__version__ = "0.5.2" +__version__ = "0.5.3" from .grid import * from .utils import *