Note
Go to the end to download the full example code
3D 声学分析#
本例演示了如何使用 PyMAPDL 和 FLUID
单元进行声学分析。
Launch PyMAPDL#
Launch PyMAPDL and load matplotlib
.
from matplotlib import pyplot as plt
from ansys.mapdl.core import launch_mapdl
mapdl = launch_mapdl()
mapdl.clear()
mapdl.prep7()
mapdl.units("SI") # SI - International system (m, kg, s, K).
SI UNITS SPECIFIED FOR INTERNAL
LENGTH (l) = METER (M)
MASS (M) = KILOGRAM (KG)
TIME (t) = SECOND (SEC)
TEMPERATURE (T) = KELVIN (K)
TOFFSET = 0.0 KELVIN
CHARGE (Q) = COULOMB
FORCE (f) = NEWTON (N) (KG-M/SEC2)
HEAT = JOULE (N-M)
PRESSURE = PASCAL (NEWTON/M**2)
ENERGY (W) = JOULE (N-M)
POWER (P) = WATT (N-M/SEC)
CURRENT (i) = AMPERE (COULOMBS/SEC)
CAPACITANCE (C) = FARAD
INDUCTANCE (L) = HENRY
MAGNETIC FLUX = WEBER
RESISTANCE (R) = OHM
ELECTRIC POTENTIAL = VOLT
INPUT UNITS ARE ALSO SET TO SI
Element and Material Properties#
定义 FLUID30
和 FLUID130
单元类型。
mapdl.et(1, "FLUID30", kop1=2)
# 定义材料属性
mapdl.mp("SONC", 1, 1500) # sonc in m/s
mapdl.mp("DENS", 1, 1000) # Density in kg/m3
print(mapdl.mplist())
# 定义实常数
mapdl.r("1", "1e-6") # Reference pressure for R set 1
print(mapdl.rlist())
LIST MATERIALS 1 TO 1 BY 1
PROPERTY= ALL
MATERIAL NUMBER 1
TEMP DENS
1000.000
TEMP SONC
1500.000
*** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2023 R1 23.1 ***
Ansys Mechanical Enterprise
20120530 VERSION=WINDOWS x64 22:17:12 JAN 21, 2024 CP= 13.344
LIST REAL SETS 1 TO 1 BY 1
REAL CONSTANT SET 1 ITEMS 1 TO 6
0.10000E-05 0.0000 0.0000 0.0000 0.0000 0.0000
Geometry Definition#
Create a simple sphere.
vnum = mapdl.sphere(rad1=0.5, rad2=1.0)
mapdl.vsbw("all")
mapdl.vplot(show_area_numbering=True)
Geometry Meshing#
First select the material and elements.
mapdl.type(itype=1)
mapdl.real(nset=1)
mapdl.mat(mat=1)
mapdl.mshape(1, "3D")
PRODUCE ALL TETRAHEDRAL ELEMENTS IN 3D.
*** WARNING *** CP = 13.641 TIME= 22:17:13
Structural elements without mid nodes usually produce much more
accurate results in quad or brick shape.
Then choose the element size and perform the mesh.
mapdl.esize(0.25)
mapdl.vmesh("all")
mapdl.eplot(show_node_numbering=False)

Boundary Conditions#
Add surface boundary condition to the nodes using Mapdl.sf()
and the option SHLD
for Surface normal velocity or acceleration.
mapdl.csys(2)
mapdl.asel("s", "loc", "x", 0.5)
mapdl.csys(0)
mapdl.nsla("S", 1)
mapdl.sf("all", "SHLD", 5)
mapdl.allsel()
SELECT ALL ENTITIES OF TYPE= ALL AND BELOW
Solve the model#
Using Mapdl.solve()
mapdl.allsel()
mapdl.run("/SOLU")
mapdl.antype(3)
mapdl.harfrq(freqb=200, freqe=1000)
mapdl.autots("off")
mapdl.nsubst(40)
mapdl.kbc(0)
mapdl.outres("erase") # Save less data in order to reduce the size of .rst file
mapdl.outres("all", "none") # NOTE that other output like stresses is not saved
mapdl.outres("nsol", "all") # Save pressure and displacement
mapdl.outres("fgrad", "all") # Save velocities
mapdl.outres("misc", "all") # For post processing calculations
mapdl.solve()
*** NOTE *** CP = 13.828 TIME= 22:17:14
The automatic domain decomposition logic has selected the FREQ domain
decomposition method with 1 processes per frequency solution.
***** MAPDL SOLVE COMMAND *****
D I S T R I B U T E D D O M A I N D E C O M P O S E R
...Number of frequency solutions: 40
...Decompose to 2 frequency domains (with 1 processes per domain)
*** NOTE *** CP = 13.891 TIME= 22:17:14
There is no title defined for this analysis.
*** MAPDL - ENGINEERING ANALYSIS SYSTEM RELEASE 2023 R1 23.1 ***
Ansys Mechanical Enterprise
20120530 VERSION=WINDOWS x64 22:17:14 JAN 21, 2024 CP= 13.891
S O L U T I O N O P T I O N S
PROBLEM DIMENSIONALITY. . . . . . . . . . . . .3-D
DEGREES OF FREEDOM. . . . . . UX UY UZ PRES
ANALYSIS TYPE . . . . . . . . . . . . . . . . .HARMONIC
SOLUTION METHOD. . . . . . . . . . . . . . .AUTO
COMPLEX DISPLACEMENT PRINT OPTION . . . . . . .REAL AND IMAGINARY
GLOBALLY ASSEMBLED MATRIX . . . . . . . . . . .SYMMETRIC
*** WARNING *** CP = 13.891 TIME= 22:17:14
No constraints have been defined using the D command.
*** WARNING *** CP = 13.891 TIME= 22:17:14
Load amplitudes will be ramped over the frequency range. Use the KBC,1
command to use a step change.
*** NOTE *** CP = 13.891 TIME= 22:17:14
The step data was checked and warning messages were found.
Please review output or errors file (
C:\Users\ff\AppData\Local\Temp\ansys_yjvmmhtote\file0.err ) for these
warning messages.
*** NOTE *** CP = 13.891 TIME= 22:17:14
The Solution Control Option is only valid for single field structural,
single field thermal, single field diffusion, coupled
thermal-diffusion analyses and coupled-field analyses with structural
degrees of freedom. The SOLCONTROL,ON command (if present) has been
de-activated.
L O A D S T E P O P T I O N S
LOAD STEP NUMBER. . . . . . . . . . . . . . . . 1
FREQUENCY RANGE . . . . . . . . . . . . . . . . 200.00 TO 1000.0
NUMBER OF SUBSTEPS. . . . . . . . . . . . . . . 40
STEP CHANGE BOUNDARY CONDITIONS . . . . . . . . YES
PRINT OUTPUT CONTROLS . . . . . . . . . . . . .NO PRINTOUT
DATABASE OUTPUT CONTROLS
ITEM FREQUENCY COMPONENT
ALL NONE
NSOL ALL
FGRA ALL
MISC ALL
AUTO SELECTION OF VT FOR FREQUENCY SWEEP. . . .YES
*** WARNING *** CP = 13.906 TIME= 22:17:14
No constraints have been defined using the D command.
*** WARNING *** CP = 13.906 TIME= 22:17:14
Load amplitudes will be ramped over the frequency range. Use the KBC,1
command to use a step change.
**** CENTER OF MASS, MASS, AND MASS MOMENTS OF INERTIA ****
CALCULATIONS ASSUME ELEMENT MASS AT ELEMENT CENTROID
TOTAL MASS = 3583.5
MOM. OF INERTIA MOM. OF INERTIA
CENTER OF MASS ABOUT ORIGIN ABOUT CENTER OF MASS
XC = -0.47950E-03 IXX = 1529. IXX = 1529.
YC = -0.24211E-03 IYY = 1535. IYY = 1535.
ZC = -0.56960E-04 IZZ = 1525. IZZ = 1525.
IXY = -0.3008 IXY = -0.3004
IYZ = 0.3845 IYZ = 0.3846
IZX = 0.5993 IZX = 0.5994
*** MASS SUMMARY BY ELEMENT TYPE ***
TYPE MASS
1 3583.54
Range of element maximum matrix coefficients in global coordinates
Maximum = 0.306193123 at element 340.
Minimum = 3.717766728E-02 at element 569.
*** ELEMENT MATRIX FORMULATION TIMES
TYPE NUMBER ENAME TOTAL CP AVE CP
1 1573 FLUID30 0.062 0.000040
Time at end of element matrix formulation CP = 13.96875.
*** ELEMENT RESULT CALCULATION TIMES
TYPE NUMBER ENAME TOTAL CP AVE CP
1 1573 FLUID30 0.031 0.000020
*** NODAL LOAD CALCULATION TIMES
TYPE NUMBER ENAME TOTAL CP AVE CP
1 1573 FLUID30 0.000 0.000000
*** LOAD STEP 1 SUBSTEP 1 COMPLETED. FREQUENCY= 220.000
*** LOAD STEP 1 SUBSTEP 2 COMPLETED. FREQUENCY= 240.000
*** LOAD STEP 1 SUBSTEP 3 COMPLETED. FREQUENCY= 260.000
*** LOAD STEP 1 SUBSTEP 4 COMPLETED. FREQUENCY= 280.000
*** LOAD STEP 1 SUBSTEP 5 COMPLETED. FREQUENCY= 300.000
*** LOAD STEP 1 SUBSTEP 6 COMPLETED. FREQUENCY= 320.000
*** LOAD STEP 1 SUBSTEP 7 COMPLETED. FREQUENCY= 340.000
*** LOAD STEP 1 SUBSTEP 8 COMPLETED. FREQUENCY= 360.000
*** LOAD STEP 1 SUBSTEP 9 COMPLETED. FREQUENCY= 380.000
*** LOAD STEP 1 SUBSTEP 10 COMPLETED. FREQUENCY= 400.000
*** LOAD STEP 1 SUBSTEP 11 COMPLETED. FREQUENCY= 420.000
*** LOAD STEP 1 SUBSTEP 12 COMPLETED. FREQUENCY= 440.000
*** LOAD STEP 1 SUBSTEP 13 COMPLETED. FREQUENCY= 460.000
*** LOAD STEP 1 SUBSTEP 14 COMPLETED. FREQUENCY= 480.000
*** LOAD STEP 1 SUBSTEP 15 COMPLETED. FREQUENCY= 500.000
*** LOAD STEP 1 SUBSTEP 16 COMPLETED. FREQUENCY= 520.000
*** LOAD STEP 1 SUBSTEP 17 COMPLETED. FREQUENCY= 540.000
*** LOAD STEP 1 SUBSTEP 18 COMPLETED. FREQUENCY= 560.000
*** LOAD STEP 1 SUBSTEP 19 COMPLETED. FREQUENCY= 580.000
*** LOAD STEP 1 SUBSTEP 20 COMPLETED. FREQUENCY= 600.000
*** LOAD STEP 1 SUBSTEP 21 COMPLETED. FREQUENCY= 620.000
*** LOAD STEP 1 SUBSTEP 22 COMPLETED. FREQUENCY= 640.000
*** LOAD STEP 1 SUBSTEP 23 COMPLETED. FREQUENCY= 660.000
*** LOAD STEP 1 SUBSTEP 24 COMPLETED. FREQUENCY= 680.000
*** LOAD STEP 1 SUBSTEP 25 COMPLETED. FREQUENCY= 700.000
*** LOAD STEP 1 SUBSTEP 26 COMPLETED. FREQUENCY= 720.000
*** LOAD STEP 1 SUBSTEP 27 COMPLETED. FREQUENCY= 740.000
*** LOAD STEP 1 SUBSTEP 28 COMPLETED. FREQUENCY= 760.000
*** LOAD STEP 1 SUBSTEP 29 COMPLETED. FREQUENCY= 780.000
*** LOAD STEP 1 SUBSTEP 30 COMPLETED. FREQUENCY= 800.000
*** LOAD STEP 1 SUBSTEP 31 COMPLETED. FREQUENCY= 820.000
*** LOAD STEP 1 SUBSTEP 32 COMPLETED. FREQUENCY= 840.000
*** LOAD STEP 1 SUBSTEP 33 COMPLETED. FREQUENCY= 860.000
*** LOAD STEP 1 SUBSTEP 34 COMPLETED. FREQUENCY= 880.000
*** LOAD STEP 1 SUBSTEP 35 COMPLETED. FREQUENCY= 900.000
*** LOAD STEP 1 SUBSTEP 36 COMPLETED. FREQUENCY= 920.000
*** LOAD STEP 1 SUBSTEP 37 COMPLETED. FREQUENCY= 940.000
*** LOAD STEP 1 SUBSTEP 38 COMPLETED. FREQUENCY= 960.000
*** LOAD STEP 1 SUBSTEP 39 COMPLETED. FREQUENCY= 980.000
*** LOAD STEP 1 SUBSTEP 40 COMPLETED. FREQUENCY= 1000.00
*** MAPDL BINARY FILE STATISTICS
BUFFER SIZE USED= 16384
20.188 MB WRITTEN ON ELEMENT MATRIX FILE: file0.emat
1.125 MB WRITTEN ON ELEMENT SAVED DATA FILE: file0.esav
0.312 MB WRITTEN ON ASSEMBLED MATRIX FILE: file0.full
18.250 MB WRITTEN ON RESULTS FILE: file0.rst
Post1: Time step results#
Listing the results
mapdl.post1()
print(mapdl.set("LIST"))
***** INDEX OF DATA SETS ON RESULTS FILE *****
SET TIME/FREQ LOAD STEP SUBSTEP CUMULATIVE
1 220.00 1 1 1
2 220.00 1 1 1
3 240.00 1 2 2
4 240.00 1 2 2
5 260.00 1 3 3
6 260.00 1 3 3
7 280.00 1 4 4
8 280.00 1 4 4
9 300.00 1 5 5
10 300.00 1 5 5
11 320.00 1 6 6
12 320.00 1 6 6
13 340.00 1 7 7
14 340.00 1 7 7
15 360.00 1 8 8
16 360.00 1 8 8
17 380.00 1 9 9
18 380.00 1 9 9
19 400.00 1 10 10
20 400.00 1 10 10
21 420.00 1 11 11
22 420.00 1 11 11
23 440.00 1 12 12
24 440.00 1 12 12
25 460.00 1 13 13
26 460.00 1 13 13
27 480.00 1 14 14
28 480.00 1 14 14
29 500.00 1 15 15
30 500.00 1 15 15
31 520.00 1 16 16
32 520.00 1 16 16
33 540.00 1 17 17
34 540.00 1 17 17
35 560.00 1 18 18
36 560.00 1 18 18
37 580.00 1 19 19
38 580.00 1 19 19
39 600.00 1 20 20
40 600.00 1 20 20
41 620.00 1 21 21
42 620.00 1 21 21
43 640.00 1 22 22
44 640.00 1 22 22
45 660.00 1 23 23
46 660.00 1 23 23
47 680.00 1 24 24
48 680.00 1 24 24
49 700.00 1 25 25
50 700.00 1 25 25
51 720.00 1 26 26
52 720.00 1 26 26
53 740.00 1 27 27
54 740.00 1 27 27
55 760.00 1 28 28
56 760.00 1 28 28
57 780.00 1 29 29
58 780.00 1 29 29
59 800.00 1 30 30
60 800.00 1 30 30
61 820.00 1 31 31
62 820.00 1 31 31
63 840.00 1 32 32
64 840.00 1 32 32
65 860.00 1 33 33
66 860.00 1 33 33
67 880.00 1 34 34
68 880.00 1 34 34
69 900.00 1 35 35
70 900.00 1 35 35
71 920.00 1 36 36
72 920.00 1 36 36
73 940.00 1 37 37
74 940.00 1 37 37
75 960.00 1 38 38
76 960.00 1 38 38
77 980.00 1 39 39
78 980.00 1 39 39
79 1000.0 1 40 40
80 1000.0 1 40 40
Post26: Time dependent results#
Getting results for specific nodes
mapdl.post26()
freqs = mapdl.post_processing.time_values[::2]
node = 276
# Getting results
node_pressure = mapdl.nsol(3, node, "spl")
node_sound_pressure_level = mapdl.nsol(4, node, "SPLA")
# Plotting
fig, ax = plt.subplots(1, 2)
ax[0].plot(freqs, node_pressure)
ax[0].set_xlabel("Frequencies (Hz)")
ax[0].set_ylabel("Sound pressure level (Pa)")
ax[1].plot(freqs, node_sound_pressure_level, label="Nodal Sound Pressure")
ax[1].set_xlabel("Frequencies (Hz)")
ax[1].set_ylabel("A-weighted sound\npressure level (dBA)")
fig.suptitle(f"Node {node} Results")
fig.tight_layout()
fig.show()

Stop MAPDL
mapdl.exit()
Total running time of the script: (0 minutes 5.114 seconds)