mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
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
|
|
|
|
function log()
|
|
{
|
|
echo "External: $@"
|
|
}
|
|
|
|
function 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 += waitSec))
|
|
if [ $totalWait -gt $timeOut ]; then
|
|
log "timeout"
|
|
break
|
|
else
|
|
sleep $waitSec
|
|
fi
|
|
else
|
|
totalWait=0
|
|
((step++))
|
|
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"
|
|
|
|
|
|
# ----------------------------------------------------------------- end-of-file
|