Various minor changes to tutorial scripts. In particular, ensuring that they all change to the containing directory so that batches of tutorials can be run easily from the root of the installation.
86 lines
1.8 KiB
Bash
Executable File
86 lines
1.8 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# Dummy external solver to communicate with OpenFOAM via externalCoupled
|
|
# boundary conditions
|
|
#
|
|
# Functionality is hard-coded for this particular test case
|
|
# - patch temperatures increased by 1K on each step
|
|
#
|
|
cd ${0%/*} || exit 1 # Run from this directory
|
|
|
|
echo "Executing dummy external solver"
|
|
|
|
commsDir="comms"
|
|
lockFile="${commsDir}/OpenFOAM.lock"
|
|
dataFile="${commsDir}/data"
|
|
waitSec=1
|
|
timeOut=10
|
|
refGrad=0
|
|
valueFraction=1
|
|
|
|
log()
|
|
{
|
|
echo "External: $@"
|
|
}
|
|
|
|
init()
|
|
{
|
|
log "initialisation: creating ${dataFile}.in"
|
|
|
|
# Hard-coded for 2 patches of size 2250
|
|
n=2250
|
|
refCold=283
|
|
refHot=303
|
|
touch "${dataFile}.in"
|
|
for i in $(seq 1 $n); do
|
|
echo "$refHot $refGrad $valueFraction" >> "${dataFile}.in"
|
|
done
|
|
for i in $(seq 1 $n); do
|
|
echo "$refCold $refGrad $valueFraction" >> "${dataFile}.in"
|
|
done
|
|
|
|
# create lock file to pass control to OF
|
|
touch ${lockFile}
|
|
}
|
|
|
|
|
|
# tutorial case employs the 'initByExternalOption', so we need to provide
|
|
# the initial values
|
|
init
|
|
|
|
|
|
totalWait=0
|
|
step=0
|
|
while [ 1 ]; do
|
|
if [ -f $lockFile ]; then
|
|
log "found lock file ${lockFile} - waiting"
|
|
totalWait=$(expr $totalWait + $waitSec)
|
|
if [ $totalWait -gt $timeOut ]; then
|
|
log "timeout"
|
|
break
|
|
else
|
|
sleep $waitSec
|
|
fi
|
|
else
|
|
totalWait=0
|
|
step=$(expr $step + 1)
|
|
log "step $step"
|
|
log "lock not present - taking control"
|
|
|
|
log "sleeping for $waitSec secs to simulate external process"
|
|
sleep $waitSec
|
|
|
|
log "creating ${dataFile}.in"
|
|
|
|
awk '{if( $1 != "#" ){print $2+1 " 0 1"}}' ${dataFile}.out > ${dataFile}.in
|
|
|
|
log "creating lock file ${lockFile}"
|
|
touch ${lockFile}
|
|
fi
|
|
done
|
|
|
|
log "done"
|
|
|
|
|
|
#------------------------------------------------------------------------------
|