WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Vorgefertigtes Skript: Durchfluss berechnen - Viele Fehler

 

Sebi911
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 13.02.17
Wohnort: Edmonton
Version: ---
     Beitrag Verfasst am: 13.02.2017, 20:02     Titel: Vorgefertigtes Skript: Durchfluss berechnen - Viele Fehler
  Antworten mit Zitat      
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 for any 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 2002 1 2010 12 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 save memory
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.nc 2>/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

# remove temporary folder
if [ ${isDebug} -eq 0 ]; then
   [ -e mask.nc ] && unlink mask.nc
   [ -e mesh_zgr.nc ] && unlink mesh_zgr.nc
   [ -e mesh_hgr.nc ] && unlink mesh_hgr.nc
   [ -e ${sectionfile} ] && unlink ${sectionfile}
   cd .. && rmdir ${mytmpfolder}
fi
 
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.02.2017, 22:37     Titel:
  Antworten mit Zitat      
Hallo,

ich weiß nicht genau, um was es sich hier handelt, aber nicht um MATLAB-Code. Ich würde auf ein Shell Script oder sowas tippen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
Verschoben: 14.02.2017, 11:26 Uhr von Jan S
Von Programmierung nach Off Topic
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 14.02.2017, 11:28     Titel: Re: Vorgefertigtes Skript: Durchfluss berechnen - Viele Fehl
  Antworten mit Zitat      
Hallo Sebi911,

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
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.