Περιγραφή¶
DualSPHysics is an open-source computational fluid dynamics (CFD) software package designed for the simulation of fluid and solid dynamics using Smoothed Particle Hydrodynamics (SPH). SPH is a mesh-free, Lagrangian method ideal for simulating complex free-surface flows and interactions between fluids and structures.
DualSPHysics 5.4.323¶
Παράδειγμα χρήσης¶
Το script υποβολής της εργασίας θα πρέπει να έχει την ακόλουθη μορφή:
SLURM submission script
#!/bin/bash
#SBATCH --partition=ampere # Submit to queue/partition namedbatch
#SBATCH --job-name=yourJobName
#SBATCH --nodes=1
#SBATCH --gres=gpu:1
#SBATCH --time 0-00:20:00 # Run time ([days-hh:mm:ss|days-hh:mm:ss]) - (max 7days)
# Paths and settings
name="CaseTest"
dirout="${name}_out"
diroutdata="${dirout}/data"
module load DualSPHysics
# Function to run the simulation
run() {
# Create initial files for simulation
GenCase_linux64 "${name}_Def" "$dirout/$name" -save:all
if [ $? -ne 0 ]; then fail; fi
# Simulation
DualSPHysics5.4_linux64 -gpu "$dirout/$name" "$dirout"
if [ $? -ne 0 ]; then fail; fi
}
run
Σημείωση
Το πρότυπο script υποβολής που φαίνεται παραπάνω, κάνει χρήση της gpu. Για να γίνει χρήση της cpu αρκεί να αλλαχθεί η γραμμή:
DualSPHysics5.4_linux64 -gpu "$dirout/$name" "$dirout"
και να γίνει ισοδύναμα:
DualSPHysics5.4CPU_linux64 -cpu "$dirout/$name" "$dirout"
Το script υποβολής για χρήση cpu μπορεί να βρεθεί παρακάτω:
SLURM submission script
#!/bin/bash
#SBATCH --partition=batch # Submit to queue/partition namedbatch
#SBATCH --job-name=yourJobName
#SBATCH --nodes=1
#SBATCH --cpus-per-task=10
#SBATCH --time 0-00:20:00 # Run time ([days-hh:mm:ss|days-hh:mm:ss]) - (max 7days)
# Paths and settings
name="CaseTest"
dirout="${name}_out"
diroutdata="${dirout}/data"
module load DualSPHysics
# Function to run the simulation
run() {
# Create initial files for simulation
GenCase_linux64 "${name}_Def" "$dirout/$name" -save:all
if [ $? -ne 0 ]; then fail; fi
# Simulation
DualSPHysics5.4CPU_linux64 -cpu "$dirout/$name" "$dirout"
if [ $? -ne 0 ]; then fail; fi
}
run
Στο $HOME
μας στο login node, δημιουργούμε ένα νέο φάκελο όπου τοποθετούμε τα αρχεία εισόδου (για παράδεγειμα το xml input file) και το script υποβολής της εργασίας, έστω dualsphysics-5.4.323.sh για χρήση gpu ή dualsphysics_cpu-5.4.323.sh για χρήση cpu.
# mkdir dualsphysics
# cd dualsphysics
Μέσα στο φάκελο τοποθετούμε τα αρχεία εισόδου (για παράδειγμα CaseTest_Def.xml). Προσοχή! Εφόσον το αρχείο xml δημιουργείται μέσω Windows λογισμικού, θα πρέπει να μήν περιέχει CRLF line terminators. Για να αποφευχθεί αυτό αρκέι να τρέξει η εντολή:
# dos2unix CaseTest_Def.xml
Η υποβολή της εργασίας γίνεται με την εντολή sbatch <filename.sh>
ως εξής:
# sbatch dualsphysics-5.4.323.sh
Παρακολουθούμε με την εντολή squeue
την εξέλιξη της εργασίας.
Eφόσον η εργασία έχει εκκινήσει μπορούμε να ελέγχουμε την πρόοδο της επίλυσης μέσω των αρχείων εξόδου. Π.χ.:
# tail -f slurm-*.out
Τα αρχεία εξόδου της προσομοίωσης είναι διαθέσιμα κάτω από το path που ορίστηκε στο script υποβολής, πιο συγκεκριμένα $HOME/dualsphysics/CaseTest_out
.
Post-Process Διαδικασία¶
Αναφορικά με το post-process μέρος, μπορεί να τρέξει το ακόλουθο scipt:
Post-process script
# Paths and settings
name="CaseTest"
dirout="${name}_out"
diroutdata="${dirout}/data"
diroutparticles="${dirout}/particles"
module load DualSPHysics
# Function for post-processing
postprocessing() {
# Create VTK files with particles
PartVTK_linux64 -dirdata "$diroutdata" -savevtk "$diroutparticles/PartFluid" -onlytype:-all,+fluid
if [ $? -ne 0 ]; then fail; fi
PartVTK_linux64 -dirdata "$diroutdata" -savevtk "$diroutparticles/PartPiston" -onlytype:-all,+moving
if [ $? -ne 0 ]; then fail; fi
# Create VTK files with excluded particles
PartVTKOut_linux64 -dirdata "$diroutdata" -savevtk "$diroutparticles/PartFluidOut" -SaveResume "$diroutparticles/_ResumeFluidOut"
if [ $? -ne 0 ]; then fail; fi
}
# Post-processing
postprocessing
Το script μπορούμε να το κατεβάσουμε από εδώ: dualsphysics-post-process.sh και να το τοποθετήσουμε στο path $HOME/dualsphysics
.
Έπειτα, πρέπει να το κάνουμε εκτελέσιμο με την ακόλουθη εντολή:
# chmod +x dualsphysics-post-process.sh
Στην συνέχεια μπορούμε να τρέξουμε το post processing script με την εντολή:
# ./dualsphysics-post-process.sh
Αξίζει να σημειωθεί ότι το post-process κομμάτι τρέχει σε login node και όχι σε computing node της συστοιχίας και επιπλέον μπορεί να τρέξει adhoc μετά από οποιαδήποτε προσομοίωση.
Περισσότερες λεπτομέρειες και πληροφορίες αναφορικά με τη post-process διαδικασία μπορούν να βρεθούν μέσω του help page, εάν φορτώσουμε ad-hoc το module και εν συνεχεία καλέσουμε το αντίστοιχο εκτελέσιμο, για παράδειγμα:
# module load DualSPHysics
# PartVTK_linux64
# PartVTKOut_linux64
Τέλος, το ίδιο ισχύει και για τα εκτελέσιμα αρχεία που χρησιμοποιούνται κατά την προσομοίωση (DualSPHysics5.4_linux64 και DualSPHysics5.4CPU_linux64).