#!/bin/sh
# $Id: ct2continuous 64650 2012-09-15 04:19:34Z cxh $
# Script to convert models from the ct domain to the continuous domain
tmpfile=/tmp/ct2continuous.$$
tmpfile2=/tmp/ct2continuous2.$$
scriptfile=/tmp/ct2continuous.sh.$$
for file in $@
do
sed 's@domains.fsm@domains.modal@g' $file |
sed 's@domains.ct.kernel.CTCaseDirector@domains.continuous.kernel.ContinuousDirector@' |
sed 's@domains.ct.kernel.CTDirector@domains.continuous.kernel.ContinuousDirector@' |
sed 's@domains.ct.kernel.CTEmbeddedDirector@domains.continuous.kernel.ContinuousDirector@' |
sed 's@domains.ct.kernel.CTGeneralDirector@domains.continuous.kernel.ContinuousDirector@' |
sed 's@domains.ct.kernel.CTMixedSignalDirector@domains.continuous.kernel.ContinuousDirector@' |
sed 's@domains.ct.kernel.CTMultiSolverDirector@domains.continuous.kernel.ContinuousDirector@' |
sed 's@domains.ct.kernel.CTTransparentDirector@domains.continuous.kernel.ContinuousDirector@' |
sed 's@domains.ct.kernel.HSFSMDirector@domains.continuous.kernel.HybridModalDirector@' |
sed 's@domains.ct.kernel.HSModalDirector@domains.continuous.kernel.HybridModalDirector@' |
sed 's@CTCaseDirector@ContinuousDirector@g' |
sed 's@CTDirector@ContinuousDirector@g' |
sed 's@CTEmbeddedDirector@ContinuousDirector@g' |
sed 's@CTGeneralDirector@ContinuousDirector@g' |
sed 's@CTMixedSignalDirector@ContinuousDirector@g' |
sed 's@CTMultiSolverDirector@ContinuousDirector@g' |
sed 's@CTTransparentDirector@ContinuousDirector@g' |
sed 's@HSFSMDirector@HybridModalDirector@g' |
sed 's@HSModalDirector@HybridModalDirector@g' |
sed 's@CT Director@Continuous Director@g' |
sed 's@CTMixedSignalDirector@ContinuousDirector@g' |
sed 's@Continuous Time (CT) Solver@Continuous Director@' |
sed 's@CTEmbedded Director@Continuous Director@' |
sed 's@Refinement Solver@Continuous Director@' |
sed 's@domains.ct.lib.ContinuousClock@domains.continuous.lib.ContinuousClock@' |
sed 's@domains.ct.lib.ContinuousSinewave@domains.continuous.lib.ContinuousSinewave@' |
sed 's@domains.ct.lib.ContinuousTransferFunction@domains.continuous.lib.ContinuousTransferFunction@' |
sed 's@domains.ct.lib.CTPeriodicSampler@domains.continuous.lib.PeriodicSampler@' |
sed 's@domains.ct.lib.DiscreteClock@domains.continuous.lib.DiscreteClock@' |
sed 's@domains.ct.lib.EventSource@domains.continuous.lib.EventSource@' |
sed 's@domains.ct.lib.Integrator@domains.continuous.lib.Integrator@' |
sed 's@domains.ct.lib.LevelCrossingDetector@domains.continuous.lib.LevelCrossingDetector@' |
sed 's@domains.ct.lib.ZeroCrossingDetector@domains.continuous.lib.LevelCrossingDetector@' |
sed 's@domains.ct.lib.ZeroOrderHold@domains.continuous.lib.ZeroOrderHold@' |
sed 's@ContinuousClock@ContinuousClock@g' |
sed 's@ContinuousSinewave@ContinuousSinewave@g' |
sed 's@CTPeriodicSampler@PeriodicSampler@g' |
sed 's@DiscreteClock@DiscreteClock@g' |
sed 's@EventSource@EventSource@g' |
sed 's@Integrator@Integrator@g' |
sed 's@LevelCrossingDetector@LevelCrossingDetector@g' |
sed 's@ZeroCrossingDetector@LevelCrossingDetector@g' |
sed 's@ZeroOrderHold@ZeroOrderHold@g' |
sed 's@ptolemy/domains/ct@ptolemy/domains/continuous@g' |
sed 's@ptolemy.vergil.fsm@ptolemy.vergil.modal@g' |
cat > $tmpfile
# Now, handle the Integrator Port Name change
echo "cat $tmpfile | " > $scriptfile
cat $tmpfile |
awk '$0 ~ /class="ptolemy.domains.continuous.lib.Integrator"/ {
split($0, f, "\"")
print "sed \"s@\\\"" f[2]".input@\\\"" f[2] ".derivative@\" |"
print "sed \"s@\\\"" f[2]".output@\\\"" f[2] ".state@\" |"
}' >> $scriptfile
echo "cat > $tmpfile2" >> $scriptfile
sh $scriptfile
# Now, remove the ODESolvers. We look for a match for ODESolver
# and then toss input until we find that has the same
# indent as the ODESolver line
cat $tmpfile2 |
awk '{
if ($0 ~ /" && index($0, "") == indentLength) {
noPrint = 0
}
}
}' > $tmpfile
# Now, remove the IntegratorIcons.
cat $tmpfile |
awk '{
if ($0 ~ /" && index($0, "") == indentLength) {
noPrint = 0
}
}
}' > $tmpfile2
# Now, remove the input and output ports for Integrator
cat $tmpfile2 |
awk '{
if ($0 ~ /class="ptolemy.domains.continuous.lib.Integrator"/) {
inIntegrator = 1
indentLength = index($0, "" && index($0, "" && index($0, " $tmpfile
diff $tmpfile $file
mv $tmpfile $file
done
rm -f $tmpfile $tmpfile2 $scriptfile