Μετάβαση στο περιεχόμενο

Περιγραφή

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).