Hallo,
mit dem folgenden fertigen Skript muss ich eine Berechnung zum Durchfluss in einem definierten Bereich durchfuehren. Leider habe ich meine Matlab-Kenntnisse ueberschaetzt und obwohl ich nur Daten und Quellverzeichnisse eintragen muss, kann ich die auftretenden Fehler nicht selbst beheben. Kann mir jemand helfen dieses Skript so abzuaendern, damit es idiotensicher laeuft? Wo muss ich Aenderungen vornehmen?
Vielen Dank,
Sebi911
Code:
#!/bin/bash
# compute the transport through sections, defined by ${sectionfile}
# June 17, 2011 xhu
# Dec 30, 2011 xhu
# Sep 12, 2012 xhu: should work forany frequency output
# Jul 5, 2015 xhu: modified for ANHA simulation
# Jan 28, 2016 xhu: added the data folder for CREG025-EAHlim2
# usage:
# GetSectionOceanFlux_ANHA.sh CaseTag YearStart MonStart YearEnd MonEnd section-file
# e.g.,
# GetSectionOceanFlux_ANHA.sh ANHA4-EXH001 20021201012 section_extra.dat
if[ $# -eq 5]; then
[ ! -e section.dat] && echo "using default section file: section.dat but NOT found in current folder" && exit
sectionfile="section.dat" && echo "using default section file: section.dat"
elif [ $# -eq 6]; then
sectionfile=$6 else
sed -n '7,10p' `which GetSectionOceanFlux_ANHA.sh`
exit
fi
CaseTag=$1
YearS=$2; MonS=$3
YearE=$4; MonE=$5
cPWD=`pwd`
saveFolder="${cPWD}/trpIASP"
isSectionTrpSave=1
isCLIP=1 # use clipped version cdftransportiz (cdftransportizClip)
# to savememory
isDebug=0
# check cdftool command
cdfP="/mnt/storage1/xhu/PROGRAM/CDFTOOLS/"
if[ $isCLIP -eq 1]; then
[ ! -e ${cdfP}/cdftransportizClip ] && echo "cdftransportizFinalSP is not found in ${cdfP}" && exit else [ ! -e ${cdfP}/cdftransportizFinalSP ] && echo "cdftransportizFinalSP is not found in ${cdfP}" && exit
fi
# set the mask/mesh files and data folder
maskfile="/mnt/storage1/xhu/ANHA4-I/ANHA4_mask.nc"
meshzgr="/mnt/storage1/xhu/ANHA4-I/ANHA4_mesh_zgr.nc"
meshhgr="/mnt/storage1/xhu/ANHA4-I/ANHA4_mesh_hgr.nc"
if[ ${CaseTag} == "ANHA4-EXH001" ]; then
dataSRC="/mnt/storage2/xhu/NEMO/ANHA4-EXH001"
elif [ ${CaseTag} == "ANHA4-ETestR" ]; then
dataSRC="/mnt/storage1/clark/ANHA4-ETestR"
elif [ ${CaseTag} == "ANHA4-EAHlim2" -o ${CaseTag} == "CREG025-EAHlim2" ]; then
dataSRC="/mnt/storage1/amber/ANHA4/ANHA4-EAHlim2/links"
CaseTag="CREG025-EAHlim2"
echo "CaseTag changed to CREG025-EAHlim2"
elif [ ${CaseTag} == "ANHA12-EXH003" ]; then
dataSRC="/mnt/storage1/xhu/NEMO/ANHA12-EXH003"
maskfile="/mnt/storage1/xhu/ANHA12-I/ANHA12_mask.nc"
meshzgr="/mnt/storage1/xhu/ANHA12-I/ANHA12_mesh_zgr.nc"
meshhgr="/mnt/storage1/xhu/ANHA12-I/ANHA12_mesh_hgr.nc"
else
dataSRC="/mnt/storage1/xhu/NEMO/${CaseTag}"
[ ! -d ${dataSRC}] && echo "${dataSRC} does not exist" && exit
fi
# temporary work folder
mytmpfolder="mytmp_`date +%Y%m%d%H%M%S`"
[ ! -d ${mytmpfolder}] && mkdir ${mytmpfolder} cd ${mytmpfolder}
# link the mask/mesh files
ln -fs ${maskfile} mask.nc
ln -fs ${meshzgr} mesh_zgr.nc
ln -fs ${meshhgr} mesh_hgr.nc if[ ! -e ../${sectionfile}]; then
echo "${sectionfile} cannot be found!!!"
exit else
ln -s ../${sectionfile} .
fi
# check the path to save the output files
[ ! -d ${saveFolder}] && mkdir -p ${saveFolder} && echo "results are saved to ${saveFolder}"
# start the time loop
for myyear in `seq ${YearS} ${YearE}`
do
if[ ${YearS} -eq ${YearE}]; then
nm1=${MonS}
nm2=${MonE} else if[ $myyear -eq ${YearS}]; then
nm1=${MonS}
nm2=12
elif [ $myyear -eq ${YearE}]; then
nm1=1
nm2=${MonE} else
nm1=1
nm2=12
fi
fi
yearstr=`echo ${myyear} | awk '{printf "%04d",$1}'`
echo " year: $myyear nm1=$nm1 nm2=$nm2"
for nmon in `seq ${nm1} ${nm2}`
do
monstr=`echo ${nmon} | awk '{printf "%02d",$1}'`
eval "timeTag=( `ls ${dataSRC}/${CaseTag}_y${yearstr}m${monstr}d*_gridT.nc2>/dev/null | awk -F\/ '{print $NF}' | awk -F\_ '{print $2}'`)"
if[ ${#timeTag} -eq 3]; then
timeTag=`echo ${timeTag} | sed -e 's/\(//g' -e 's/\)//g' -e 's/\ //g' 2>/dev/null`
fi
if[ ${#timeTag} -gt 0]; then
for yymmdd in ${timeTag[*]}
do
mytfile="${dataSRC}/${CaseTag}_${yymmdd}_gridT.nc"
myvfile="${dataSRC}/${CaseTag}_${yymmdd}_gridV.nc"
myufile="${dataSRC}/${CaseTag}_${yymmdd}_gridU.nc"
if[ ! -e $mytfile ]; then
echo "$mytfile cannot be found!!!"
exit
fi
if[ ! -e $myufile ]; then
echo "$myufile cannot be found!!!"
exit
fi
if[ ! -e $myvfile ]; then
echo "$myvfile cannot be found!!!"
exit
fi
if[ ${isDebug} -eq 1]; then
if[ $isCLIP -eq 1]; then
echo "${cdfP}/cdftransportizClip -short ${dataSRC}/${CaseTag}_${yymmdd} -Quiet < ${sectionfile}"
else echo "${cdfP}/cdftransportizFinalSP -short ${dataSRC}/${CaseTag}_${yymmdd} -Quiet < ${sectionfile}"
fi
exit else if[ $isCLIP -eq 1]; then
${cdfP}/cdftransportizClip -short ${dataSRC}/${CaseTag}_${yymmdd} -Quiet < ${sectionfile} else
${cdfP}/cdftransportizFinalSP -short ${dataSRC}/${CaseTag}_${yymmdd} -Quiet < ${sectionfile}
fi
mv htrp.txt ${saveFolder}/${CaseTag}_${yymmdd}_h_trp.txt
mv strp.txt ${saveFolder}/${CaseTag}_${yymmdd}_s_trp.txt
mv vtrp.txt ${saveFolder}/${CaseTag}_${yymmdd}_v_trp.txt if[ ${isSectionTrpSave} -eq 1]; then
mv section_trp.dat ${saveFolder}/${CaseTag}_${yymmdd}_section_trp.dat else
rm -f section_trp.dat
fi
fi
done
fi
done # done loop of month
done # done loop of year
Das ist ein Unix/bash shell Script und hat mit Matlab nichts zu tun. Ich habe den Thread deshalb in die Kategorie Off-Topic verschoben.
Zitat:
obwohl ich nur Daten und Quellverzeichnisse eintragen muss, kann ich die auftretenden Fehler nicht selbst beheben.
Damit Dir jemand helfen kann, müsstest Du noch die auftretenden Fehler erwähnen.
Gruß, Jan
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.