First, let’s describe what we want to build. Organ pallet is placed inside large box with under long rectangular hole. Pallet’s rotation axis is near hole’s end. Wind chest hole length varies between stops and organs, so let’s take length 300mm and width 12mm. The pallet itself will be 318mm in length and 30mm width, placed below the hole.
Obviously, our case is symmetric along the pallet’s vertical middle plane. It allows using symmetry plane boundary conditions in the case. Also pallet’s bottom surface and space below it can be excluded, if we assume pressure inside the wind chest to be zero.
The case is just a 3x4x6 array of boxes with some ones excluded. The top blocks line is a hole (strictly, the half of hole) in the chest. Three other “floors” are chest internal area. It has 2x1x4 (in blocks) cut that is pallet surface.
The whole mesh is 35mm width and 358mm long. The top blocks are 6mm wide, corresponding to 12mm chest hole. The bottom cut is 15mm wide. As about heights, they vary with the pallet descend value, labelled as
d1 on the draw. Rear block height
d2 is about 0.1 of
All blocks have non-uniform grading. Cell sizes are smaller near walls and larger in free air.
There are four boundaries:
walls – pallet and chest surfaces
inlet – air inside chest
outlet – atmosphere
symmPl – symmetry plane through pallet’s middle
Air flow is pressure-driven, so inlet and outlet BC have the fixed pressure and zeroGradient velocity. As for other fields, they are token from OpenFOAM tutorials. I am not sure they are absolutely right, but I hope…
Here is the whole boundary condition table:
|U||fixedValue (0 0 0)||zeroGradient||symmetryPlane|
|nut||nutkWallFunction||calculated 0||calculated 0||symmetryPlane|
Our case should be run multiple times with different pallet descend values. OpenFOAM has a family of dynamic mesh solvers, but it is too hard to learn it. Instead, lets create new folder
result with standard OpenFOAM case structure. Then just run the solver multiple times. After each run, copy all fields to the folder
[d] means pallet’s descend value. Also copy
constant/polyMesh/points file to the
result/[d]/polyMesh folder. ParaView will read these points and update scene for each time step.
These steps is done with the next script
#!/bin/bash # Pallet descend values for d in '0.0125' '0.025' '0.05' '0.075' '0.1' do b=$(echo "scale=3;$d/10.0" | bc) # Generate mesh m4 -D dFront=$d -D dBack=$b constant/polyMesh/blockMeshDict.m4 > constant/polyMesh/blockMeshDict blockMesh >blockMesh.log if [ "$?" -ne "0" ]; then echo 'Error in blockMesh' $? break fi # Remove iteration folders except '0' ls | grep -P '^[0-9]*[1-9][0-9]*$' | xargs rm -r -d simpleFoam >log if [ $? -ne 0 ]; then echo 'Error in simpleFoam' $? break fi # Create resulting folder. # -p key created all parent folders if need mkdir -p result/$d/polyMesh # Find directory of the last iteration lastdir=$(ls | grep -P '^[0-9]+' | xargs printf '%05d\n' | sort | tail -n 1) # Remove trailing spaces ld=$(echo $lastdir | sed 's/^0*//') echo "Diameter $d processed with $ld iterations" # Copy fields and points cp -r $ld/* result/$d cp -r constant/polyMesh/points result/$d/polyMesh/ done cp -r constant result echo >result/case.foam
Resulting torque is shown on the plot. Red line represents computation results, green line shows predicted values near pallet closed state. Right axis shows a force in kilograms that is created at the pallet’s free end.
As you can see, the maximum torque 0.46 Nm is achieved at 1mm pallet descend. During further pallet descending, the torque decreases to 0.225 Nm.
As for pallet closing, the simulation is stable only to 0.125mm. But we can find torques for less values by hands.
When pallet is totally closed, the atmosphere pressure is uniformly distributed at the chest hole. The torque is found as
When pallet is almost, but not fully, closed, pressure remains uniformly distributed at the hole, and changes linearly from -700 to 0 between pallet and chest board, as shown on the figure. The torque created can be found as
To get the force in kg at the pallet’s end, lets divide the torque on the pallet length and gravity acceleration. Also don’t forget to double the result, because we simulated only the half of the pallet:
Now we can describe the force at the pallet’s end in different positions:
- closed: 128g
- touched: 224g
- 1mm: 312g
- open: 152g
Hmm… too large… The only reason I can see is pipe hole influence. Maybe, the pressure above the pallet is not equal to atmosphere, but larger, because pipe holes resists to air escape from the chest.