Abaqus batch jobs

Η υποβολή εργασιών επίλυσης που χρησιμοποιούν το λογισμικό Abaqus προϋποθέτει ότι υπάρχει ήδη ένα διαμορφωμένο μοντέλο στον τοπικό σας υπολογιστή και ενδεχομένως μια υπορουτίνα σε Fortran. Στο παράδειγμα παρακάτω το μοντέλο είναι το αρχείο plate_impact.inp και η υπορουτίνα της Fortran είναι το αρχείο uniFiber.for. Πρέπει λοιπόν να διαμορφώσετε ένα αρχείο με κάποιο όνομα, π.χ. abaqus-multi.sh και να το προσαρμόσετε στα δεδομένα που αφορούν στο πρόβλημά σας.

  • Αλλάξτε τη γραμμή #$ -M chfrag ΑΤ central.ntua.gr βάζοντας το δικό σας email για να λαμβάνετε ειδοποιήσεις σχετικά με την πορεία της επίλυσης.
  • Αλλάξτε τη γραμμή WDIR=/mnt/home/chfrag/sge-tests/abaqus-multiprocessor με τον κατάλογο εργασίας όπου θα βρίσκονται το μοντέλο, η υπορουτίνα και το αρχείο abaqus-multi.sh.
  • Αλλάξτε τη γραμμή INPUT_FILENAME=$WDIR/plate_impact.inp αντικαθιστώντας το plate_impact.inp με το δικό σας μοντέλο.
  • Αλλάξτε τη γραμμή SUBROUTINE=uniFiber.for με τη δική σας υπορουτίνα Fortran.
  • Αλλάξτε τη γραμμή JOBNAME=abaqus-test_${JOB_ID} αντικαθιστώντας το abaqus-test_ με ένα άλλο όνομα που έχει νόημα για την επεξεργασία σας.
  • Αλλάξτε τη γραμμή CPUS=24 με τον αριθμό των επεξεργαστών που θα θέλατε να απασχοληθούν με την επίλυση. Προς το παρόν ο μέγιστος αριθμός είναι το 24, όμως για να μπορέσει αυτό να ισχύσει πρέπει υπάρχουν διαθέσιμες οι απαραίτητες άδειες (19 analysis tokens). Λιγότεροι επεξεργαστές χρειάζονται λιγότερα tokens αδειοδότησης (1 επεξεργαστής χρειάζεται 5 tokens). Ένημέρωση για τον τρέχοντα αριθμό των διαθέσιμων tokens υπάρχει εδώ. Ο τύπος που υπολογίζει τα απαραίτητα tokens \(t\) για \(n\) επεξεργαστές είναι \(t = \lfloor 5 \cdot n^{0.422} \rfloor \).
#!/bin/bash
#
#$ -cwd
#$ -M chfrag ΑΤ central.ntua.gr
#$ -m bae
#$ -S /bin/bash
#$ -o out.txt
#$ -e err.txt
#$ -notify

source /usr/local/INTEL/composer_xe_2011_sp1.6.233/bin/compilervars.sh intel64
export LD_LIBRARY_PATH=/usr/local/INTEL/composer_xe_2011_sp1.6.233/composer_xe_2011_sp1.6.233/compiler/lib/intel64

PATH=/usr/local/ABAQUS/Commands/:$PATH
WDIR=/mnt/home/chfrag/sge-tests/abaqus-multiprocessor
INPUT_FILENAME=$WDIR/plate_impact.inp
JOBNAME=abaqus-test_${JOB_ID}
SUBROUTINE=uniFiber.for
CPUS=24
ABAQUS_ARGS=""
SCRATCH_DIR=/tmp

exit_gracefully() {
abaqus terminate job=$JOBNAME
echo Abaqus job $JOBNAME terminated
exit
}

trap exit_gracefully SIGUSR2

cd $WDIR

abaqus job=$JOBNAME input=$INPUT_FILENAME user=$SUBROUTINE cpus=$CPUS scratch=$SCRATCH_DIR $ABAQUS_ARGS

/bin/uname \-a

sleep 60
while [ -f ${JOBNAME}.lck ]; do
sleep 5
done