mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
148 lines
3.5 KiB
Bash
148 lines
3.5 KiB
Bash
#---------------------------------*- sh -*-------------------------------------
|
|
# ========= |
|
|
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
|
# \\ / O peration |
|
|
# \\ / A nd | www.openfoam.com
|
|
# \\/ M anipulation |
|
|
#------------------------------------------------------------------------------
|
|
# Copyright (C) 2020 OpenCFD Ltd.
|
|
#------------------------------------------------------------------------------
|
|
# License
|
|
# This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
|
|
#
|
|
# Script
|
|
# RunFunctions
|
|
#
|
|
# Description
|
|
# Additional functions for copy/linking FSI cases
|
|
#
|
|
#------------------------------------------------------------------------------
|
|
|
|
#
|
|
# copyParallelPointDisplacement caseDir timeName
|
|
#
|
|
# Copy pointDisplacement from caseDir/0/ to caseDir/timeName/
|
|
#
|
|
copyParallelPointDisplacement()
|
|
{
|
|
local src="$1"
|
|
local dstTime="$2"
|
|
local file=pointDisplacement
|
|
|
|
[ -d "$src" ] || {
|
|
echo "Error: no directory: $src"
|
|
return 1
|
|
}
|
|
|
|
# Copy select directories
|
|
echo " copy processor '$file' from 0/ -> $dstTime"
|
|
if [ -n "$dstTime" ]
|
|
then
|
|
(
|
|
cd "$src" || exit
|
|
|
|
for proc in processor*
|
|
do
|
|
if [ -d "$proc/0" ] && [ -d "$proc/$dstTime" ]
|
|
then
|
|
cp "$proc/0/$file" "$proc/$dstTime/$file"
|
|
if [ -d "$proc/0/include" ]
|
|
then
|
|
cp -r "$proc/0/include" "$proc/$dstTime"
|
|
fi
|
|
fi
|
|
done
|
|
)
|
|
else
|
|
echo " no destination time"
|
|
fi
|
|
|
|
# Restart from latestTime
|
|
foamDictionary "$src"/system/controlDict \
|
|
-entry startFrom -set latestTime
|
|
|
|
deltaT=$(foamDictionary "$src"/system/controlDict -entry deltaT -value)
|
|
latestTime=$(foamListTimes -case "$src" -noZero -latestTime -processor)
|
|
|
|
# Restart using steady results as first deltaT interval
|
|
echo "deltaT=$deltaT latestTime=$latestTime"
|
|
if [ -n "$latestTime" ] && [ "$deltaT" != "$latestTime" ]
|
|
then
|
|
(
|
|
cd "$src" || exit
|
|
|
|
for proc in processor*
|
|
do
|
|
if [ -d "$proc/$latestTime" ] && [ ! -d "$proc/$deltaT" ]
|
|
then
|
|
mv "$proc/$latestTime" "$proc/$deltaT"
|
|
rm -rf "$proc/$deltaT/uniform"
|
|
fi
|
|
done
|
|
)
|
|
fi
|
|
|
|
return 0
|
|
}
|
|
|
|
#
|
|
# linkParallelCase srcDir dstDir
|
|
#
|
|
linkParallelCase()
|
|
{
|
|
local src="$1"
|
|
local dst="$2"
|
|
shift 2
|
|
|
|
if [ -e "$dst" ]
|
|
then
|
|
echo "Case already linked: remove case directory $dst prior to linking"
|
|
return 1
|
|
elif [ ! -d "$src" ]
|
|
then
|
|
echo "Error: no directory to link: $src"
|
|
return 1
|
|
fi
|
|
|
|
echo "Linking $dst parallel case from $src"
|
|
mkdir -p "$dst"
|
|
|
|
# Copy system - may wish to change things
|
|
for i in system 0
|
|
do
|
|
echo " copy $i/"
|
|
( cd "$dst" && cp -r "../$src/$i" . )
|
|
done
|
|
|
|
echo " link constant/"
|
|
( cd "$dst" && ln -sf "../$src/constant" . )
|
|
|
|
echo " link processor*/ with $# times: $@"
|
|
for proc in $(cd "$src" && \ls -d processor*)
|
|
do
|
|
( cd "$dst" && ln -sf "../$src/$proc" . )
|
|
done
|
|
|
|
return 0
|
|
}
|
|
|
|
#
|
|
# linkFiles srcDir dstDir
|
|
#
|
|
linkFiles()
|
|
{
|
|
local src="$1"
|
|
local dst="$2"
|
|
shift
|
|
|
|
echo "Linking $dst control files from $src"
|
|
mkdir -p "$dst"
|
|
|
|
( cd "$dst" && ln -sf ../"$src"/* . )
|
|
|
|
return 0
|
|
}
|
|
|
|
|
|
#------------------------------------------------------------------------------
|