import sys import shutil import snake from snake.openfoam.simulation import OpenFOAMSimulation print('\nPython version:\n{}'.format(sys.version)) print('\nsnake version: {}\n'.format(snake.__version__)) directory = os.path.join(os.environ['HOME'], 'snakeReproducibilityPackages', 'openfoam', 'gmsh', 'Re2000AoA35') simulation = OpenFOAMSimulation(directory=directory) simulation.plot_field_contours_paraview('vorticity', field_range=(-5.0, 5.0), view=(-5.0, -8.0, 10.0, 2.0), times=(52.0, 52.0, 1.0), width=600, colormap='RdBu_r') images_directory = os.path.join(directory, 'images', 'vorticity_-5.00_-8.00_10.00_2.00') file_name_source = 'vorticity052.00.png' file_name_destination = 'openfoam_vorticity52Re2000AoA35_gmshZeroGradient.pdf' # copy the .png file shutil.copy(os.path.join(images_directory, file_name_source),
aoa = [25, 30, 35, 40] # compute mean coefficients of each OpenFOAM simulations cd, cl = [], [] directory = os.path.join(os.environ['HOME'], 'simulations_OpenFOAM', 'flyingSnake2d', 'snappyHexMesh', 'surfaceFeatureExtract') folders = [ 'flyingSnake2dRe1000AoA25_20151103', 'flyingSnake2dRe1000AoA30_20151103', 'flyingSnake2dRe1000AoA35_20151030', 'flyingSnake2dRe1000AoA40_20151110', 'flyingSnake2dRe2000AoA25_20151103', 'flyingSnake2dRe2000AoA30_20151103', 'flyingSnake2dRe2000AoA35_20151030', 'flyingSnake2dRe2000AoA40_20151110' ] for folder in folders: simulation = OpenFOAMSimulation(directory=os.path.join(directory, folder)) simulation.read_forces(display_coefficients=True) simulation.get_mean_forces(limits=[32.0, 64.0]) cd.append(simulation.forces[0].mean['value']) cl.append(simulation.forces[1].mean['value']) # compute mean coefficients of each simulations from Krishnan et al. (2014) cd_krishnan, cl_krishnan = [], [] for Re in [1000, 2000]: for a in aoa: directory = os.path.join(os.environ['SNAKE'], 'resources', 'flyingSnake2d_cuibm_anush', 'flyingSnake2dRe{}AoA{}'.format(Re, a)) krishnan = CuIBMSimulation(directory=directory) krishnan.read_forces() krishnan.get_mean_forces(limits=[32.0, 64.0])
from matplotlib import pyplot import snake from snake.openfoam.simulation import OpenFOAMSimulation if snake.__version__ != '0.1.2': warnings.warn('The figures were originally created with snake-0.1.2, '+ 'you are using snake-{}'.format(snake.__version__)) # Reads the instantaneous forces from the simulation that uses more demanding # exit criterion for the iterative solvers (tol=1.0E-08). # The force coefficients are averaged between 32 and 64 time-units. directory = os.path.join(os.path.dirname(__file__), 'tol1.0E-08') simulation = OpenFOAMSimulation(description='tol=1.0E-08', directory=directory) simulation.read_forces(display_coefficients=True) simulation.get_mean_forces(limits=[32.0, 64.0]) # Reads the instantaneous forces from the simulation that uses less demanding # exit criterion for the iterative solvers (tol=1.0E-06). # The force coefficients are averaged between 32 and 64 time-units. directory = os.path.join(os.path.dirname(__file__), 'tol1.0E-06') other = OpenFOAMSimulation(description='tol=1.0E-06', directory=directory) other.read_forces(display_coefficients=True) other.get_mean_forces(limits=[32.0, 64.0]) # Displays the time-averaged force coefficients into a table. dataframe = simulation.create_dataframe_forces(display_coefficients=True)
# file: plotForceCoefficientsCompareKrishnanEtAl2014.py # author: Olivier Mesnard ([email protected]) # description: Plots the instantaneous force coefficients # and compare to results from Krishnan et al. (2014). # Run this script from the simulation directory. import os from snake.openfoam.simulation import OpenFOAMSimulation from snake.cuibm.simulation import CuIBMSimulation simulation = OpenFOAMSimulation(description='IcoFOAM') simulation.read_forces(display_coefficients=True) simulation.get_mean_forces(limits=[32.0, 64.0]) simulation.get_strouhal(limits=[32.0, 64.0], order=200) krishnan = CuIBMSimulation(description='Krishnan et al. (2014)') krishnan.read_forces(file_path='{}/resources/flyingSnake2d_cuibm_anush/' 'flyingSnake2dRe2000AoA35/forces' ''.format(os.environ['SNAKE'])) krishnan.get_mean_forces(limits=[32.0, 64.0]) krishnan.get_strouhal(limits=[32.0, 64.0], order=200) simulation.plot_forces(display_coefficients=True, display_extrema=True, order=200, limits=(0.0, 80.0, 0.0, 3.0), other_simulations=krishnan, other_coefficients=2.0, save_name='forceCoefficientsCompareKrishnanEtAl2014') dataframe = simulation.create_dataframe_forces(display_strouhal=True,
# file: plotMaximumCFL.py # author: Olivier Mesnard ([email protected]) # description: Plot the instantaneous maximum CFL number. # Run this script from the simulation directory. from snake.openfoam.simulation import OpenFOAMSimulation simulation = OpenFOAMSimulation() simulation.read_maximum_cfl('log.run/log.icoFoam') simulation.get_mean_maximum_cfl(limits=(60.0, 80.0)) simulation.plot_maximum_cfl(display_extrema=True, order=200, limits=(0.0, 100.0, 0.5, 2.0), save_name='maximumCFL')
# file: plotForceCoefficientsRe2000AoA35.py # author: Olivier Mesnard ([email protected]) # description: Plots the instantaneous force coefficients # and compares to results from Krishnan et al. (2014). import os from matplotlib import pyplot from snake.openfoam.simulation import OpenFOAMSimulation from snake.cuibm.simulation import CuIBMSimulation simulation = OpenFOAMSimulation(description='IcoFOAM', directory=os.path.join( os.environ['HOME'], 'simulations_OpenFOAM', 'flyingSnake2d', 'snappyHexMesh', 'surfaceFeatureExtract', 'flyingSnake2dRe2000AoA30_20151103')) simulation.read_forces(display_coefficients=True) simulation.get_mean_forces(limits=[32.0, 64.0]) simulation.get_strouhal(limits=[32.0, 64.0], order=200) krishnan = CuIBMSimulation(description='Krishnan et al. (2014)') krishnan.read_forces(file_path='{}/resources/flyingSnake2d_cuibm_anush/' 'flyingSnake2dRe2000AoA30/forces' ''.format(os.environ['SNAKE'])) krishnan.get_mean_forces(limits=[32.0, 64.0]) krishnan.get_strouhal(limits=[32.0, 64.0], order=200) dataframe = simulation.create_dataframe_forces(display_strouhal=True, display_coefficients=True)
# file: plotForceCoefficientsCompareOther.py # author: Olivier Mesnard ([email protected]) # description: Plots the instantaneous force coefficients # and compare to results from previous simulation. # Run this script from the simulation directory. from snake.openfoam.simulation import OpenFOAMSimulation simulation = OpenFOAMSimulation(description='present') simulation.read_forces(display_coefficients=True) simulation.get_mean_forces(limits=[32.0, 64.0]) simulation.get_strouhal(limits=[32.0, 64.0], order=200) other = OpenFOAMSimulation(description='other', directory='') other.read_forces(display_coefficients=True) other.get_mean_forces(limits=[32.0, 64.0]) other.get_strouhal(limits=[32.0, 64.0], order=200) simulation.plot_forces(display_coefficients=True, display_extrema=True, order=200, limits=(0.0, 80.0, 0.0, 3.0), other_simulations=other, other_coefficients=1.0, save_name='forceCoefficientsCompareOther') dataframe = simulation.create_dataframe_forces(display_strouhal=True, display_coefficients=True) dataframe2 = other.create_dataframe_forces(display_strouhal=True, display_coefficients=True) dataframe = dataframe.append(dataframe2) print(dataframe)
import os import warnings from matplotlib import pyplot import snake from snake.openfoam.simulation import OpenFOAMSimulation if snake.__version__ != '0.1.2': warnings.warn('The figures were originally created with snake-0.1.2, ' + 'you are using snake-{}'.format(snake.__version__)) # Reads the instantaneous forces from the simulation on the fine grid. # The force coefficients are averaged between 32 and 64 time-units. directory = os.path.join(os.path.dirname(__file__), 'h0.002') simulation = OpenFOAMSimulation(description='fine (5.3M cells)', directory=directory) simulation.read_forces(display_coefficients=True) simulation.get_mean_forces(limits=[32.0, 64.0]) # Reads the instantaneous forces from the simulation on the coarse grid. # The force coefficients are averaged between 32 and 64 time-units. directory = os.path.join(os.path.dirname(__file__), 'h0.004') other = OpenFOAMSimulation(description='coarse (3.4M cells)', directory=directory) other.read_forces(display_coefficients=True) other.get_mean_forces(limits=[32.0, 64.0]) # Displays the time-averaged force coefficients into a table. dataframe = simulation.create_dataframe_forces(display_coefficients=True) dataframe2 = other.create_dataframe_forces(display_coefficients=True) dataframe = dataframe.append(dataframe2)
# and compares to results from Krishnan et al. (2014). import os import sys from matplotlib import pyplot import snake from snake.openfoam.simulation import OpenFOAMSimulation from snake.cuibm.simulation import CuIBMSimulation print('\nPython version:\n{}'.format(sys.version)) print('\nsnake version: {}\n'.format(snake.__version__)) simulation = OpenFOAMSimulation( description='IcoFOAM', directory=os.path.join(os.environ['HOME'], 'snakeReproducibilityPackages', 'openfoam', 'snappyHexMesh', 'Re2000AoA30')) simulation.read_forces(display_coefficients=True) simulation.get_mean_forces(limits=[32.0, 64.0]) simulation.get_strouhal(limits=[32.0, 64.0], order=200) krishnan = CuIBMSimulation(description='Krishnan et al. (2014)') krishnan.read_forces(file_path=os.path.join( os.environ['SNAKE'], 'resources', 'flyingSnake2d_cuibm_anush', 'flyingSnake2dRe2000AoA30', 'forces')) krishnan.get_mean_forces(limits=[32.0, 64.0]) krishnan.get_strouhal(limits=[32.0, 64.0], order=200) dataframe = simulation.create_dataframe_forces(display_strouhal=True, display_coefficients=True) dataframe2 = krishnan.create_dataframe_forces(display_strouhal=True,
type=str, default=os.path.join(script_directory, 'map.yaml'), help='file containing the list of simulation directories') parser.add_argument('--save-dir', dest='save_directory', type=str, default=script_directory, help='directory where to save the figures') args = parser.parse_args() with open(args.map, 'r') as infile: dirs = yaml.load(infile) # Plots the force coefficients at Re=2000 and AoA=30deg # and compares to the results reported in Krishnan et al. (2014). simulation_directory = dirs['openfoam_forceCoefficientsRe2000']['Re2000AoA30'] simulation = OpenFOAMSimulation(description='IcoFOAM', directory=simulation_directory) simulation.read_forces(display_coefficients=True) simulation.get_mean_forces(limits=[32.0, 64.0]) simulation.get_strouhal(limits=[32.0, 64.0], order=200) krishnan = CuIBMSimulation(description='Krishnan et al. (2014)') krishnan.read_forces(file_path=os.path.join( os.environ['SNAKE'], 'resources', 'flyingSnake2d_cuibm_anush', 'flyingSnake2dRe2000AoA30', 'forces')) krishnan.get_mean_forces(limits=[32.0, 64.0]) krishnan.get_strouhal(limits=[32.0, 64.0], order=200) dataframe = simulation.create_dataframe_forces(display_strouhal=True, display_coefficients=True) dataframe2 = krishnan.create_dataframe_forces(display_strouhal=True, display_coefficients=True,
""" Post-processes the force coefficients from a OpenFOAM simulation and compare them to another simulation. This script reads the forces, computes the mean forces within a given range, computes the Strouhal number within a range, plots the force coefficients, saves the figure, and prints a data-frame that contains the mean values. """ from snake.simulation import Simulation from snake.openfoam.simulation import OpenFOAMSimulation simulation = OpenFOAMSimulation(description='present') simulation.read_forces(display_coefficients=True) time_limits = (32.0, 64.0) simulation.get_mean_forces(limits=time_limits) simulation.get_strouhal(limits=time_limits, order=200) other = Simulation(description='', directory='', software='') other.read_forces() other.get_mean_forces(limits=time_limits) other.get_strouhal(limits=time_limits, order=200) simulation.plot_forces(display_coefficients=True, display_extrema=True, order=200, limits=(0.0, 80.0, 0.0, 3.0), other_simulations=other, other_coefficients=1.0, save_name='forceCoefficientsCompareOther', style='mesnardo',