Note
Go to the end to download the full example code.
CFX pressure data mapping to structural blade#
The objective of this test is to demonstrate CFX pressure data mapping to structural 11 blade model in PyMAPDL.
Description#
The 11 blade model along with a fictitious disk is modeled. CFX generated pressure data is used as input.
The test uses a CFX exported pressure data to map. Pressure file correspond to a certain vibrating blade mode (vibrating mode 1 approximately 534 Hz)and to a certain pressure mode (pressure mode 1 also the same 534 Hz mode). However, due to lack of data for another mode this same file will be assumed to represent other mode combinations (vib mode 2 press mode 2) (vib mode 1 press mode 2) (vib mode 2 press mode 1).
from datetime import datetime
from ansys.mapdl.core import launch_mapdl
from ansys.mapdl.core.examples import download_cfx_mapping_example_data
Downloading files#
files_path = download_cfx_mapping_example_data()
db_file_path = files_path["model"]
pressure_file_path = files_path["data"]
Launch MAPDL service#
mapdl = launch_mapdl()
mapdl.title(
"Verify Pressure Data Mapping exported from CFX on Structural 11 Blade Model"
)
TITLE=
Verify Pressure Data Mapping exported from CFX on Structural 11 Blade Model
Upload files to the instance#
Uploading files
mapdl.upload(db_file_path)
mapdl.upload(pressure_file_path)
Uploading ExampleMapping.db: 0%| | 0.00/24.6M [00:00<?, ?B/s]
Uploading ExampleMapping.db: 100%|██████████| 24.6M/24.6M [00:00<00:00, 541MB/s]
Uploading 11_blades_mode_1_ND_0.csv: 0%| | 0.00/828k [00:00<?, ?B/s]
Uploading 11_blades_mode_1_ND_0.csv: 100%|██████████| 828k/828k [00:00<00:00, 277MB/s]
'11_blades_mode_1_ND_0.csv'
Pressure mapping#
Resume the database from the example mapping file
mapdl.resume("ExampleMapping", "db")
mapdl.esel("s", "type", "", 1)
mapdl.cm("BladeElem", "elem")
# Write CDB file
mapdl.allsel()
mapdl.cdwrite("all", "baseModel", "cdb")
mapdl.finish()
# Start the mapping processor and record the start time
start_time = datetime.now()
mapdl.slashmap() # mapdl.slashmap(**kwargs); Enters the mapping processor.
print("Enter the Mapping Processor")
# Specifies the target nodes for mapping pressures onto surface effect elements.
mapdl.run("target,pressure_faces")
# Specifies the file type and pressure type for the subsequent import of source points and pressures.
mapdl.ftype(filetype="cfxtbr", prestype="1")
# Read the CFX exported file containing pressure data Blade 2, Export Surface 1
mapdl.read(fname="11_blades_mode_1_ND_0.csv")
# Perform the pressure mapping from source points to target surface elements.
# Interpolation is done on a surface (default).
print(mapdl.map(kdim="2", kout="1"))
Enter the Mapping Processor
MAP SOURCE DATA TO TARGET NODES
INTERPOLATE ON A SURFACE
MAXIMUM NUMBER OF NEAREST POINTS TO EXAMINE= 20
SET RESULTS OUTSIDE OF REGION TO ZERO
NON-ZERO PRESSURES APPLIED TO 9963 TARGET FACES (OUT OF 10622 DEFINED BY SURF154s)
MIN REAL PRESSURE = -2816. MAX REAL PRESSURE = 4408.
MIN IMAG PRESSURE = -5189. MAX IMAG PRESSURE = 5754.
Plot mapping#
Plot the geometries and mappings
mapdl.show("png,rev")
mapdl.plgeom(item="BOTH") # Plot both target and source geometries (default).
mapdl.plmap(item="target")
mapdl.plmap(item="target", imagkey="1")
mapdl.plmap(item="source")
mapdl.plmap(item="source", imagkey="1")
mapdl.plmap(item="both")
mapdl.plmap(item="both", imagkey="1")
# Close the plot and write the mapped data to a file
mapdl.show("close")
mapdl.writemap("mappedHI.dat")
# Print the mapping completion message and duration
print("Mapping Completed")
end_time = datetime.now()
c = end_time - start_time
seconds = c.total_seconds()
print("\nDuration in seconds for Mapping is : ", seconds)
mapdl.eplot()
Mapping Completed
Duration in seconds for Mapping is : 1.886667
Stop MAPDL
mapdl.finish()
mapdl.exit()
Total running time of the script: (0 minutes 51.663 seconds)