WARNING: these notes contain configuration settings that are specif to the DTU Wind Energy cluster Jess. Only follow this guide in another environment if you know what you are doing!
For the auto generation of load cases and the corresponding execution on the cluster, the following events will take place:
- Create an htc master file, and define the various tags in the exchange files (spreadsheets).
- Generate the htc files for all the corresponding load cases based on the master file and the tags defined in the exchange files. Besides the HAWC2 htc input file, a corresponding pbs script is created that includes the instructions to execute the relevant HAWC2 simulation on a cluster node. This includes copying the model to the node scratch disc, executing HAWC2, copying the results from the node scratch disc back to the network drive.
- Submit all the load cases (or the pbs launch scripts) to the cluster queueing system. This is also referred to as launching the jobs.
Important note regarding file names. On Linux, file names and paths are case
sensitive, but on Windows they are not. Additionally, HAWC2 will always generate
result and log files with lower case file names, regardless of the user input.
Hence, in order to avoid possible ambiguities at all times, make sure that there
are no upper case symbols defined in the value of the following tags (as defined
in the Excel spreadsheets): [Case folder]
, [Case id.]
, and
[turb_base_name]
.
The system will always force the values of the tags to be lower case anyway, and when working on Windows, this might cause some confusing and unexpected behavior. The tags themselves can have lower and upper case characters as can be seen in the example above.
Notice that throughout the document $USER
refers the your user name. You can
either let the system fill that in for you (by using the variable $USER
),
or explicitly user your user name instead. This user name is the same as your
DTU account name (or student account/number).
This document refers to commands to be entered in the terminal on Jess when the
line starts with j-000 $
. The command that needs to be entered starts
after the $
.
You can also use the Pdap for post-processing, which includes a MS Word report generator based on a full DLB, a GUI for easy plotting of HAWC2 result files, and a Python scripting interface:
We provide here an overview of how to connect to the cluster, but general, up-to-date information can be found in the HPC documentation.
You connect to the cluster via an SSH terminal, and there are different SSH terminals based on your operating system (see the platform-specific instructions in the next subsections). The cluster can only be reached when on the DTU network (wired, or only from a DTU computer when using a wireless connection), when connected to the DTU VPN, or from one of the DTU databars.
Windows users are advised to use PuTTY, which can be downloaded from this link.
Once you have installed PuTTY and placed the executable somewhere convenient (e.g., the Desktop), double click on the executable. In the window that opens up, enter/verify the following settings:
- Session > Host Name: jess.dtu.dk
- Session > Port: 22
- Session > Connection type: SSH
- Session > Saved Sessions: Jess
- Connection > Data > Auto-login username: your DTU username
- Connection > Data > When username is not specified: Use system username
- Window > Colours > Select a colour to adjust > ANSI Blue: RGB = 85, 85, 255
- Window > Colours > Select a colour to adjust > ANSI Bold Blue: RGB = 128, 128, 255
Note that these last two options are optional. We've found that the default color for comments, ANSI Blue, is too dark to be seen on the black background. The last two options in the list set ANSI Blue and ANSI Blue Bold to be lighter and therefore easier to read when working in the terminal. Once you have entered these options, click "Save" on the "Session" tab and close the window.
With PuTTY configured, you can connect to Jess by double-clicking the PuTTY executable; then, in the window that opens select "Jess" in "Saved Sessions", click the "Load" button, and finally click the "Open" button. A terminal window will open up. Type your DTU password in this new window when prompted (your text will not appear in the window) and then hit the Enter key. You should now be logged into Jess.
To close the PuTTY window, you can either hit the red "X" in the upper-right corner of the window or type "exit" in the terminal and hit enter.
More information on using PuTTY and how it works can be found in this PuTTY tutorial or in the online documentation. You are also welcome to use Google and read the many online resources.
Unlike Windows, SSH is supported out of the box for Linux and Mac OSX terminals. To connect to the cluster, enter the following command into the terminal:
Enter your DTU password when prompted. This will give you terminal access to the Jess cluster.
When doing the HAWC2 simulations, you will interact regularly with the cluster file system and discs. Thus, it can be very useful to have two discs mounted locally so you can easily access them: 1) your home directory on Jess and 2) the HAWC2 simulation folder on Mimer.
You need to be connected to the DTU network (either directly or via VPN) for the following instructions to work.
On Windows, we recommend mapping the two drives to local network drives, which means that you can navigate/copy/paste to/from them in Windows Explorer just as you would do with normal folders on your computer. You may also use WinSCP to interact with the cluster discs if you are more familiar with that option.
Here we provide instructions for mapping network drives in Windows 7. If these instructions don't work for you, you can always find directions for your version of Windows by Googling "map network drive windows $WIN_VERSION", where $WIN_VERSION is your version number.
In Windows 7, you can map a network drive in the following steps:
- Open a Windows Explorer window
- Right-click on "Computer" and select "Map network drive"
- Select any unused drive and type
\\Jess.dtu.dk\$USER
into the folder field, replacing "$USER" with your DTU username (e.g., DTU user "ABCD" has a Jess home drive of\\Jess.dtu.dk\abcd
) - Check the "Reconnect at logon" box if you want to connect to this drive every time you log into your computer (recommended)
- Click the Finish button
- Repeat Steps 1 through 5, replacing the Jess home address in Step 3 with the
HAWC2 simulation folder address:
\\mimer.risoe.dk\hawc2sim
Note that by default Windows Explorer will hide some of the files you will need edit. In order to show all files on your Jess home drive, you need to un-hide system files: Explorer > Organize > Folder and search options > "View" tab > Hidden files and folders > "Show hidden files, folders, and drives".
From Linux/Mac, you should be able to mount using either of the following addresses:
//mimer.risoe.dk/hawc2sim
//jess.dtu.dk/$USER
You can use either sshfs
or mount -t cifs
to mount the discs.
Add the cluster-tools script to your system's PATH of you Jess environment,
by editing the file .bash_profile
file in your Jess’s home directory
(/home/$USER/.bash_profile
), and add the following lines (add at the end,
or create a new file with this file name in case it doesn't exist):
export PATH=$PATH:/home/MET/repositories/toolbox/pbsutils/
(The corresponding open repository is on the DTU Wind Energy Gitlab server: pbsutils. Please considering reporting bugs and/or suggest improvements there. You're contributions are much appreciated!)
If you have been using an old version of this how-to, you might be pointing to an earlier version of these tools/utils and any references containing
cluster-tools
orprepost
should be removed from your.bash_profile
and/or.bashrc
file on your Jess home drive.
After modifying .bash_profile
, save and close it. Then, in the terminal,
run the command (or logout and in again to be safe):
j-000 $ source ~/.bash_profile
j-000 $ source ~/.bashrc
You will also need to configure wine and place the HAWC2 executables in your
local wine directory, which by default is assumed to be ~/.wine32
, and
pbsutils
contains and automatic configuration script you can run:
j-000 $ /home/MET/repositories/toolbox/pbsutils/config-wine-hawc2.sh
If you need more information on what is going on, you can read a more detailed description [here] (https://gitlab.windenergy.dtu.dk/toolbox/WindEnergyToolbox/blob/master/docs/configure-wine.md).
All your HAWC2 executables and DLL's are now located
at /home/$USER/wine_exe/win32
.
Notice that the HAWC2 executable names are hawc2-latest.exe
,
hawc2-118.exe
, etc. By default the latest version will be used and the user
does not need to specify this. However, when you need to compare different version
you can easily do so by specifying which case should be run with which
executable.
Alternatively you can also include all the DLL's and executables in the root of
your HAWC2 model folder. Executables and DLL's placed in the root folder take
precedence over the ones placed in /home/$USER/wine_exe/win32
.
IMPORTANT: log out and in again from the cluster (close and restart PuTTY) before trying to see if you can run HAWC2.
At this stage you can run HAWC2 as follows:
j-000 $ wine32 hawc2-latest htc/some-intput-file.htc
When there is a new version of HAWC2, or when a new license manager is released, you can update your local wine directory as follows:
j-000 $ rsync -au /home/MET/hawc2exe/win32 /home/$USER/wine_exe/win32 --progress
The file hawc2-latest.exe
will always be the latest HAWC2
version at /home/MET/hawc2exe/
. When a new HAWC2 is released you can
simply copy all the files from there again to update.
See [house rules on mimer/hawc2sim] (https://gitlab.windenergy.dtu.dk/toolbox/WindEnergyToolbox/blob/master/docs/houserules-mimerhawc2sim.md) for a more detailed description.
Use ssh (Linux, Mac) or putty (MS Windows) to connect to the cluster.
In order to simplify things, we're using qsub-wrap.py
from pbsutils
(which we added under the [preparation]/(#preparation) section) in order to
generate the htc files. It will execute, on a compute node, any given Python
script in a pre-installed Python environment that has the Wind Energy Toolbox
installed.
For the current implementation of the DLB the following template is available:
/home/MET/repositories/toolbox/WindEnergyToolbox/wetb/prepost/dlctemplate.py
And the corresponding definitions of all the different load cases can be copied from here (valid for the DTU10MW):
/mnt/mimer/hawc2sim/DTU10MW/C0020/htc/DLCs
Note that dlctemplate.py
does not require any changes or modifications
if you are only interested in running the standard DLB as explained here.
For example, in order to generate all the HAWC2 htc input files and the
corresponding *.p
cluster launch files using this default DLB setup with:
j-000 $ cd /mnt/mimer/hawc2sim/demo/A0001 # folder where the hawc2 model is located
j-000 $ qsub-wrap.py -f /home/MET/repositories/toolbox/WindEnergyToolbox/wetb/prepost/dlctemplate.py --prep
You could consider adding dlctemplate.py
into the turbine folder or in
the simulation set id folder for your convenience:
j-000 $ cd /mnt/mimer/hawc2sim/demo/
# copy the dlctemplate to your turbine model folder and rename to myturbine.py
j-000 $ cp /home/MET/repositories/toolbox/WindEnergyToolbox/wetb/prepost/dlctemplate.py ./myturbine.py
j-000 $ cd A0001
j-000 $ qsub-wrap.py -f ../myturbine.py --prep
Use ssh (Linux, Mac) or putty (MS Windows) to connect to the cluster.
This approach gives you more flexibility, but requires more commands, and is hence considered more difficult compared to method A.
First activate the Anaconda Python environment by typing:
# add the Anaconda Python environment paths to the system PATH
j-000 $ export PATH=/home/python/miniconda3/bin:$PATH
# activate the custom python environment:
j-000 $ source activate py36-wetb
For example, launch the auto-generation of DLCs input files:
# folder where the HAWC2 model is located
j-000 $ cd /mnt/mimer/hawc2sim/demo/AA0001
# assuming myturbine.py is copy of dlctemplate.py and is placed one level up
j-000 $ python ../myturbine.py --prep
Or start an interactive IPython shell:
j-000 $ ipython
Users should be aware that running computational heavy loads on the login node is strictly discouraged. By overloading the login node other users will experience slow login procedures, and the whole cluster could potentially be jammed.
This approach gives you more flexibility and room for custimizations, but you will need to install a Python environment with all its dependencies locally. Additionally, you need access to the cluster discs from your local workstation.
The installation procedure for wetb is outlined in the simple user or the developer/contributor installation manual.
Optional tags that can be set in the Excel spreadsheet and their corresponding default values are given below. Beside a replacement value in the master htc file, there are also special actions connected to these values. Consequently, these tags have to be present. When removed, the system will stop working properly.
Relevant for the generation of the PBS launch scripts (*.p
files):
[walltime] = '04:00:00' (format: HH:MM:SS)
[hawc2_exe] = 'hawc2-latest'
Following directories have to be defined, and their default values are used when they are not set explicitly in the spreadsheets.
[animation_dir] = 'animation/'
[control_dir] = 'control/'
, all files and sub-folders copied to node[data_dir] = 'data/'
, all files and sub-folders copied to node[eigenfreq_dir] = False
[htc_dir] = 'htc/'
[log_dir] = 'logfiles/'
[res_dir] = 'res/'
[turb_dir] = 'turb/'
[turb_db_dir] = '../turb/'
[turb_base_name] = 'turb_'
Required, and used for the PBS output and post-processing
[pbs_out_dir] = 'pbs_out/'
[iter_dir] = 'iter/'
Optional
[turb_db_dir] = '../turb/'
[micro_dir] = False
[micro_db_dir] = False
[micro_base_name] = 'turb_'
[meander_dir] = False
[meander_db_dir] = False
[meander_base_name] = 'turb_'
[mooring_dir] = False
, all files and sub-folders copied to node[hydro_dir] = False
, all files and sub-folders copied to node
The mooring line dll has a fixed name init file that has to be in the root of the HAWC2 folder. When you have to use various init files (e.g. when the water depth is varying for different load cases) it would be convienent to be able to control which init file is used for which case (e.g. water depth).
When running a load case for which the mooring lines will run in init mode:
[copyback_f1] = 'ESYSMooring_init.dat'
[copyback_f1_rename] = 'mooringinits/ESYSMooring_init_vXYZ.dat'
When using an a priory cacluated init file for the mooring lines:
[copyto_f1] = 'mooringinits/ESYSMooring_init_vXYZ.dat'
[copyto_generic_f1] = 'ESYSMooring_init.dat'
Replace vXYZ
with an appropriate identifier for your case.
A zip file will be created which contains all files in the model root directory,
and all the contents (files and folders) of the following directories:
[control_dir], [mooring_dir], [hydro_dir], 'externalforce/', [data_dir]
.
This zip file will be extracted into the execution directory ([run_dir]
).
After the model has ran on the node, only the files that have been created
during simulation time in the [log_dir]
, [res_dir]
,
[animation_dir]
, and [eigenfreq_dir]
will be copied back.
Note that not all features are documented yet...
Special tags: copy special result files from the compute node back to the HAWC2 working directory on the network drive, and optionally rename the file in case it would otherwise be overwritten by other cases in your DLB:
[copyback_files] = ['ESYSMooring_init.dat']
[copyback_frename] = ['path/to/ESYSMooring_init_vXYZ.dat']
, optionally specify a different file path/name
Copy files from the HAWC2 working directory with a special name to the compute node for which the a fixed file name is assumed
[copyto_files] = ['path/to/ESYSMooring_init_vXYZ.dat']
[copyto_generic] = ['ESYSMooring_init.dat']
dlctemplate.py
has a flag named --pbs_turb
, which when activated
generates PBS input files containing the instructions to generate all required
turbulence boxes using the 64-bit version of the stand alone Mann turbulence
box generator. The appropriate input parameters are taken from the following
tags:
-
Atmospheric turbulence:
[tu_model] = 1
[turb_base_name]
[MannAlfaEpsilon]
[MannL]
[MannGamma]
[seed]
[turb_nr_u]
: number of grid points in the u direction[turb_nr_v]
: number of grid points in the v direction[turb_nr_w]
: number of grid points in the w direction[turb_dx]
: grid spacing in meters in the u direction[turb_dy]
: grid spacing in meters in the v direction[turb_dz]
: grid spacing in meters in the w direction[high_freq_comp]
-
Micro turbulence for DWM:
[micro_base_name]
[MannAlfaEpsilon_micro]
[MannL_micro]
[MannGamma_micro]
[seed_micro]
[turb_nr_u_micro]
: number of grid points in the u direction[turb_nr_v_micro]
: number of grid points in the v direction[turb_nr_w_micro]
: number of grid points in the w direction[turb_dx_micro]
: grid spacing in meters in the u direction[turb_dy_micro]
: grid spacing in meters in the v direction[turb_dz_micro]
: grid spacing in meters in the w direction[high_freq_comp_micro]
-
Meander turbulence for DWM
[meander_base_name]
[MannAlfaEpsilon_meander]
[MannL_meander]
[MannGamma_meander]
[seed_meander]
[turb_nr_u_meander]
: number of grid points in the u direction[turb_nr_v_meander]
: number of grid points in the v direction[turb_nr_w_meander]
: number of grid points in the w direction[turb_dx_meander]
: grid spacing in meters in the u direction[turb_dy_meander]
: grid spacing in meters in the v direction[turb_dz_meander]
: grid spacing in meters in the w direction[high_freq_comp_meander]
[hydro_dir]
[hydro input name]
[wave_type]
: see HAWC2 manual for options[wave_spectrum]
: see HAWC2 manual for options[wdepth]
[Hs]
: see HAWC2 manual for options[Tp]
: see HAWC2 manual for options[wave_seed]
: see HAWC2 manual for options[wave_gamma]
: see HAWC2 manual for options[wave_coef]
: see HAWC2 manual for options[stretching]
: see HAWC2 manual for options[embed_sf]
: see HAWC2 manual for options, and look for how it is implemented in prepost.dlcsdefs.vartag_excel_stabcon(master).
And the corresponding section the htc master file:
begin hydro;
begin water_properties;
rho 1027 ; kg/m^3
gravity 9.81 ; m/s^2
mwl 0.0;
mudlevel [wdepth];
wave_direction [wave_dir];
water_kinematics_dll ./wkin_dll.dll ./[hydro_dir][hydro input name].inp;
end water_properties;
end hydro;
Use ssh (Linux, Mac) or putty (MS Windows) to connect to the cluster.
The launch.py
is a generic tool that helps with launching an arbitrary
number of pbs launch script on a PBS Torque cluster. Launch scripts here
are defined as files with a .p
extension. The script will look for any
.p
files in a specified folder (pbs_in/
by default, which the user
can change using the -p
or --path_pbs
flag) and save them in a
file list called pbs_in_file_cache.txt
. When using the option -c
or
--cache
, the script will not look for pbs files, but instead read them
directly from the pbs_in_file_cache.txt
file.
The launch script has a simple build in scheduler that has been successfully
used to launch 50.000 jobs. This scheduler is configured by two parameters:
number of cpu's requested (using -c
or --nr_cpus
) and minimum
of required free cpu's on the cluster (using --cpu_free
, 48 by default).
Jobs will be launched after a predefined sleep time (as set by the
--tsleep
option, and set to 5 seconds by default). After the initial sleep
time a new job will be launched every 0.5 second. If the launch condition is not
met:
nr_cpus > cpu's used by user
AND cpu's free on cluster > cpu_free
AND jobs queued by user < cpu_user_queue
the program will sleep 5 seconds before trying to launch a new job again.
Depending on the amount of jobs and the required computation time, it could
take a while before all jobs are launched. When running the launch script from
the login node, this might be a problem when you have to close your ssh/putty
session before all jobs are launched. In that case the user can use the
--crontab
argument: it will trigger the launch.py
script every 5
minutes to check if more jobs can be launched until all jobs have been
executed. The user does not need to have an active ssh/putty session for this to
work. You can follow the progress and configuration of launch.py
in
crontab mode in the following files:
launch_scheduler_log.txt
launch_scheduler_config.txt
: you can change your launch settings on the flylaunch_scheduler_state.txt
launch_pbs_filelist.txt
: remaining jobs, when a job is launched it is removed from this list
You can check if launch.py
is actually active as a crontab job with:
crontab -l
launch.py
will clean-up the crontab after all jobs are launched, but if
you need to prevent it from launching new jobs before that, you can clean up your
crontab with:
crontab -r
The launch.py
script has various different options, and you can read about
them by using the help function (the output is included for your convenience):
j-000 $ launch.py --help
Usage:
launch.py -n nr_cpus
launch.py --crontab when running a single iteration of launch.py as a crontab job every 5 minutes.
File list is read from "launch_pbs_filelist.txt", and the configuration can be changed on the fly
by editing the file "launch_scheduler_config.txt".
Options:
-h, --help show this help message and exit
--depend Switch on for launch depend method
-n NR_CPUS, --nr_cpus=NR_CPUS
number of cpus to be used
-p PATH_PBS_FILES, --path_pbs_files=PATH_PBS_FILES
optionally specify location of pbs files
--re=SEARCH_CRIT_RE regular expression search criterium applied on the
full pbs file path. Escape backslashes! By default it
will select all *.p files in pbs_in/.
--dry dry run: do not alter pbs files, do not launch
--tsleep=TSLEEP Sleep time [s] when cluster is too bussy to launch new
jobs. Default=5 seconds
--tsleep_short=TSLEEP_SHORT
Sleep time [s] between between successive job
launches. Default=0.5 seconds.
--logfile=LOGFILE Save output to file.
-c, --cache If on, files are read from cache
--cpu_free=CPU_FREE No more jobs will be launched when the cluster does
not have the specified amount of cpus free. This will
make sure there is room for others on the cluster, but
might mean less cpus available for you. Default=48
--cpu_user_queue=CPU_USER_QUEUE
No more jobs will be launched after having
cpu_user_queue number of jobs in the queue. This
prevents users from filling the queue, while still
allowing to aim for a high cpu_free target. Default=5
--qsub_cmd=QSUB_CMD Is set automatically by --node flag
--node If executed on dedicated node. Although this works,
consider using --crontab instead. Default=False
--sort Sort pbs file list. Default=False
--crontab Crontab mode: %prog will check every 5 (default)
minutes if more jobs can be launched. Not compatible
with --node. When all jobs are done, crontab -r will
remove all existing crontab jobs of the current user.
Use crontab -l to inspect current crontab jobs, and
edit them with crontab -e. Default=False
--every_min=EVERY_MIN
Crontab update interval in minutes. Default=5
--debug Debug print statements. Default=False
Then launch the actual jobs (each job is a *.p
file in pbs_in
) using
100 cpu's:
j-000 $ cd /mnt/mimer/hawc2sim/demo/A0001
j-000 $ launch.py -n 100 -p pbs_in/
If the launching process requires hours, and you have to close you SHH/PuTTY
session before it reaches the end, you can either use the --node
or the
--crontab
argument. When using --node
, launch.py
will run on
a dedicated cluster node, submitted as a PBS job. When using --crontab
,
launch.py
will be run once every 5 minutes as a crontab
job on the
login node. This is preferred since you are not occupying a node with a very
simple and light job. launch.py
will remove all the users crontab jobs
at the end with crontab -r
.
j-000 $ cd /mnt/mimer/hawc2sim/demo/A0001
j-000 $ launch.py -n 100 -p pbs_in/ --crontab
There are a few tools you can use from the command line to see what is going on the cluster. How many nodes are free, how many nodes do I use as a user, etc.
cluster-status.py
overview dashboard of the cluster: nodes free, running, length of the queue, etcqstat -u $USER
list all the running and queued jobs of the usernnsqdel $USER all
delete all the jobs that from the userqdel_range JOBID_FROM JOBID_TIL
delete a range of job id's
Notice that the pbs output files in pbs_out
are only created when the job
has ended (or failed). When you want to inspect a running job, you can ssh from
the Jess login node to node that runs the job. First, find the job id by listing
all your current jobs (qstat -u $USER
). The job id can be found in the
first column, and you only need to consider the number, not the domain name
attached to it. Now find the on which node it runs with (replace 123546 with the
relevant job id):
j-000 $ qstat -f 123456 | grep exec_host
From here you login into the node as follows (replace j-078 with the relevant node):
j-000 $ ssh j-078
And browse to the scratch directory which lands you in the root directory of your running HAWC2 model (replace 123456 with the relevant job id):
j-000 $ cd /scratch/$USER/123456.j-000.risoe.dk
You can find what HAWC2 (or whatever other executable you are running) is outputting to the command line in the file:
/var/lib/torque/spool/JOBID.jess.dtu.dk.OU
Or when watch what is happening at the end in real time
# on Jess:
tail -f /var/lib/torque/spool/JOBID.jess.dtu.dk.OU
In case you want to re-launch only a subset of a previously generated set of load cases, there are several methods:
- Copy the PBS launch scripts (they have the
*.p
extension and can be found in thepbs_in
folder) of the failed cases to a new folder (for examplepbs_in_failed
). Now runlaunch.py
again, but instead point to the folder that contains the*.p
files of the failed cases, for example:
j-000 $ launch.py -n 100 --node -p pbs_in_failed
-
Use the
--cache
option, and edit the PBS file list in the filelaunch_pbs_filelist.txt
so that only the simulations remain that have to be run again.launch_pbs_filelist.txt
is created every time you runlaunch.py
. You can use the option--dry
to make a practice launch run, and that will create alaunch_pbs_filelist.txt
file, but not a single job will be launched. -
Each pbs file can be launched manually as follows:
j-000 $ qsub path/to/pbs_file.p
Alternatively, one can use the following options in launch.py
:
-p some/other/folder
: specify from which folder the pbs files should be taken--re=SEARCH_CRIT_RE
: advanced filtering based on the pbs file names. It requires some notion of regular expressions (some random tutorials: 1, 2)launch.py -n 10 --re=.SOMENAME.
will launch all pbs file that containsSOMENAME
. Notice the leading and trailing colon, which is in bash environments is equivalent to the wild card (*).
The post-processing happens through the same script as used for generating the htc files, but now we set different flags. For example, for checking the log files, calculating the statistics, the AEP and the life time equivalent loads:
# myturbine.py (copy of dlctemplate.py) is assumed to be located one folder up
j-000 $ qsub-wrap.py -f ../myturbine.py --years=25 --neq=1e7 --stats --check_logs --fatigue
Other options for the original dlctemplate.py
script:
(py36-wetb) [dave@jess]$ python dlctemplate.py --help
usage: dlctemplate.py [-h] [--prep] [--check_logs]
[--pbs_failed_path PBS_FAILED_PATH] [--stats]
[--fatigue] [--AEP] [--csv] [--years YEARS]
[--no_bins NO_BINS] [--neq NEQ] [--rotarea ROTAREA]
[--save_new_sigs] [--dlcplot] [--envelopeblade]
[--envelopeturbine] [--zipchunks] [--pbs_turb]
[--walltime WALLTIME]
pre- or post-processes DLC's
optional arguments:
-h, --help show this help message and exit
--prep create htc, pbs, files
--check_logs check the log files
--pbs_failed_path PBS_FAILED_PATH
Copy pbs launch files of the failed cases to a new
directory in order to prepare a re-run. Default value:
pbs_in_failed.
--stats calculate statistics and 1Hz equivalent loads
--fatigue calculate Leq for a full DLC
--AEP calculate AEP, requires htc/DLCs/dlc_config.xlsx
--csv Save data also as csv file
--years YEARS Total life time in years
--no_bins NO_BINS Number of bins for fatigue loads
--neq NEQ Equivalent cycles Neq used for Leq fatigue lifetime
calculations.
--rotarea ROTAREA Rotor area for C_T, C_P
--save_new_sigs Save post-processed sigs
--dlcplot Plot DLC load basis results
--envelopeblade Compute envelopeblade
--envelopeturbine Compute envelopeturbine
--zipchunks Create PBS launch files forrunning in zip-chunk
find+xargs mode.
--pbs_turb Create PBS launch files to create the turbulence boxes
in stand alone mode using the 64-bit Mann turbulence
box generator. This can be usefull if your turbulence
boxes are too big for running in HAWC2 32-bit mode.
Only works on Jess.
--walltime WALLTIME Queue walltime for each case/pbs file, format:
HH:MM:SS Default: 04:00:00
The load envelopes are computed for sensors specified in the
myturbine.py
file. The sensors are specified in a list of lists. The
inner list contains the sensors at one location. The envelope is computed for
the first two sensors of the inner list and the other sensors are used to
retrieve the remaining loads defining the load state occurring at the same
instant. The outer list is used to specify sensors at different locations.
The default values for the blade envelopes are used to compute the Mx-My
envelopes and retrieve the Mz-Fx-Fy-Fz loads occurring at the same moment.
Any output (everything that involves print statements) generated during the
post-processing of the simulations using myturbine.py
is captured in
the pbs_out/qsub-wrap_myturbine.py.out
file, while exceptions and errors
are redirected to the pbs_out/qsub-wrap_myturbine.py.err
text file.
The output and errors of HAWC2 simulations can also be found in the pbs_out
directory. The .err
and .out
files will be named exactly the same
as the .htc
input files, and the .sel
/.dat
output files.