Excerpt | ||||
---|---|---|---|---|
| ||||
ตัวอย่างการใช้งาน WRF เบื้องต้น |
การใช้งาน Weather Research and Forecasting (WRF) model เบื้องต้นมีขั้นตอนดังนี้
Table of Contents |
---|
...
Tip |
---|
|
1. Prepare global model output
...
สามารถคัดลอกข้อมูล Global model output สำหรับตัวอย่างนี้ ได้โดยใช้คำสั่ง
Code Block | ||
---|---|---|
| ||
cp -r XXX/tarafs/data/project/common/WRF/Example1/GFS/ . # Copy the prepared example data to the current directory |
...
ในการนำเข้าข้อมูล จำเป็นต้องสร้าง Variable table เพื่อใช้ในการจับคู่ชื่อ ประเภทและหน่วยของตัวแปรในชุดข้อมูลนำเข้ากับตัวแปรที่ ประเภทและหน่วยของตัวแปรที่อยู่ในไฟล์ข้อมูลนำเข้ากับตัวแปรที่ WRF model ใช้
WPS มี Variable table สำหรับนำเข้าข้อมูลจาก สำหรับการนำเข้าข้อมูลจากบาง Global model บางตัวอยู่ในโฟลเดอร์ อยู่ในโฟลเดอร์ ./WPS/ungrib/Variable_Tables/
ก่อนการแปลงข้อมูลด้วย ungrib.exe จำเป็นต้องลิ้งค์หรือคัดลอกตารางที่เหมาะสมออกมายังตำแหน่งเดียวกันกับ ungrib.exe โดยใช้ชื่อ Vtable
Code Block | ||
---|---|---|
| ||
cd WPS ln -s ./ungrib/Variable_Tables/Vtable.GFS ./Vtable # For GFS data, link Vtable.GFS to the same location as ungrib.exe, naming it Vtable |
...
สคริปต์ link_grib.csh ทำหน้าที่ลิ้งค์และแปลงชื่อไฟล์ในโฟลเดอร์ที่มึชุดข้อมูลมายังโฟลเดอร์ WPS ให้โดยอัตโนมัติ
Code Block | ||
---|---|---|
| ||
./link_grib.csh Path_to_your_data # Path to the folder containing the GFS data *** {USER INPUTEDIT} *** |
Note |
---|
Common mistake
|
...
2.1 Edit ./WPS/namelist.wps
แก้ไขไฟล์ ไฟล์ namelist.wps ในโฟลเดอร์ WPS เป็นไฟล์ที่ควบคุมการทำงานหลักของ WPS ซึ่งกำหนดวันเวลา ตำแหน่งและขนาดพื้นที่ที่ WRF model จำลอง
Panel | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
See also: WRF namelist.wps |
สำหรับตัวอย่างนี้ ให้แก้ไขไฟล์ namelist.wps ดังนี้
Code Block | ||
---|---|---|
| ||
# Edit namelist.wps # as follows while leave the others unchanged ### Share ### start_date = '2022-05-09_00:00:00', '2022-05-09_00:00:00', end_date = '2022-05-09_12:00:00', '2022-05-09_12:00:00', ### Geogrid ### i_parent_start = 1, 43, j_parent_start = 1, 53, e_we = 120, 121, e_sn = 150, 151, dx = 36000, dy = 36000, map_proj = 'mercator', ref_lat = 13.208, ref_lon = 101, truelat1 = 13.208, truelat2 = 0, stand_lon = 100.861, geog_data_path = '../WPS_GEOG' # *** {USER INPUTEDIT} *** |
Info |
---|
สำหรับการตั้งค่า geog_data_path ในบรรทัดที่ 17 ดู Geography data --- for WPS geogrid.exe |
Panel | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
See also: https://www2.mmm.ucar.edu/wrf/users/namelist_best_prac_wps.html |
2.2 Check domains (Optional, require
...
NCL6.2 or later)
สามารถตรวจสอบ Domain ที่ถูกตั้งค่าไว้ใน namelist.wps ได้โดยใช้ plotgrids_new.ncl ซึ่งอยู่ในโฟลเดอร์ ./WPS/util/ โดยมีขั้นตอนดังนี้
...
สัญลักษณ์ ; คือ การ comment ใน NCL
Code Block | ||
---|---|---|
| ||
cp ./util/plotgrids_new.ncl . # Copy the script to the same directory as namelist.wps nano plotgrids_new.ncl # Comment/uncomment the variable "type" # For X11 (default), X11 Forwarding must be enabled. ncl plotgrids_new.ncl # Run the script |
...
2.3 WPS job submission script
ในการเตรียมข้อมูลนำเข้า WRF model ด้วย WPS จะต้องรัน geogrid.exe และ ungrid.exe ก่อน แล้วจึงจะสามารถรัน metgrid.exe ได้
Example WPS script ด้านล่างนี้ คือตัวอย่างที่ใช้ในการ Submit job บน TARA devel node (5 CPU cores) โดยสามารถคัดลอกสคริปต์นี้ได้โดยใช้คำสั่งด้านล่าง แล้วแก้ไข Project account
Code Block | ||
---|---|---|
| ||
cp -r /tarafs/data/project/common/WRF/Example1/submitWPS.sh . # Copy the script to WPS directory nano submitWPS.sh # Specify your project account *** {USER EDIT} ** |
Example WPS script
Code Block | ||
---|---|---|
| ||
#!/bin/bash #SBATCH -p devel # Partition or machine type [devel/compute/memory] #SBATCH -N 1 --ntasks-per-node=54 # Number of nodes and Number of core per node #SBATCH -t 02:00:00 # Total run time limit (hour:minute:second) #SBATCH -J WPS_Ex1 # Job name (short) #SBATCH -A thaisc projxxxx # Your project account *** {USER EDIT} *** module purge module load HDF5netCDF-Fortran/14.105.52-iimpi-2019b module load JasPerlibpng/1.9006.137-intel-2019bGCCcore-8.3.0 module load libpngJasPer/1.6900.371-GCCcore-10.3.0intel-2019b export JASPERINC=$EBROOTJASPER/include export JASPERLIB=$EBROOTJASPER/lib export NETCDF=/tarafs/data/project/thaisc/skanoksi/Libraries/NET$ export LD_LIBRARY_PATH=${NETCDF}/lib:${LD_LIBRARY_PATH} export PATH=${NETCDF}/bin:${PATH} ulimit -s unlimitedulimit -s unlimited # MUST have otherwise ERROR srun -n4 ./geogrid.exe # Run geogrid.exe using 4 CPU cores (--exclusiven4) srun -n1 ./geogridungrib.exe # ungrib.exe & srun -n1 --exclusive ./ungrib.exe & wait srun -n4 --exclusive ./metgrid.exe |
...
MUST run in serial (-n1)
srun -n4 ./metgrid.exe # Run metgrid.exe using 4 CPU cores (-n4)
# It is more efficient to run geogrid.exe, metgrid.exe and real.exe using a few CPU cores and enough memory. |
Note |
---|
ungrid.exe ต้องรันแบบ Single processor/Serial execution เท่านั้น |
สามารถปรับให้ Submit WPS และ WRF พร้อมกันได้ (See Single WRF Job Submission)
2.4 Submit WPS job
สามารถ Submit job ได้โดยใช้คำสั่ง sbatch แล้วติดตามด้วยคำสั่ง sacct หรือ squeue -u USERNAME (ใช้เวลาประมาณ 1 นาที เมื่อได้รันบน Devel node)
Code Block | ||
---|---|---|
| ||
sbatch submitWPS.sh |
3. Run WRF
3.1 Edit ./em_real/namelist.input
ไฟล์ namelist.input ในโฟลเดอร์ em_real เป็นไฟล์ที่ควบคุมการทำงานทั้งหมดของ WRF ซึ่งต้องกำหนดวันเวลา ตำแหน่งและขนาดพื้นที่ ให้สอดคล้องกับไฟล์ ./WPS/namelist.wps พร้อมระบุ Dynamics/Physics schemes ที่ต้องการใช้งาน
Panel | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
See also: https://www2.mmm.ucar.edu/wrf/users/namelist_best_prac_wrf.html |
3.2 WRF job submission script
...
สำหรับตัวอย่างนี้ ให้แก้ไขไฟล์ namelist.input ดังนี้
Code Block | ||
---|---|---|
| ||
# Edit namelist.input
# in ./WRF/test/em_real or your duplicated em_real folder
# as follows while leave the others unchanged
### Time_control ###
run_days = 0,
run_hours = 12,
run_minutes = 0,
run_seconds = 0,
start_year = 2022, 2022,
start_month = 05, 05,
start_day = 19, 19,
start_hour = 00, 00,
end_year = 2022, 2022,
end_month = 05, 05,
end_day = 19, 19,
end_hour = 12, 12,
frames_per_outfile = 6, 6,
### Domains ###
time_step = 80,
e_we = 120, 121,
e_sn = 150, 151,
e_vert = 50, 50,
dx = 36000,
dy = 36000,
grid_id = 1, 2,
parent_id = 0, 1,
i_parent_start = 1, 43,
j_parent_start = 1, 53,
### Physics ###
physics_suite = 'tropical'
### Bdy_control ###
specified = .true., .false.,
nested = .false., .true., |
3.2 Link met_em* from WPS
ทำการลิ้งหรือคัดลอกไฟล์ที่เตรียมจาก WPS มายังโฟลเดอร์ em_real
Code Block | ||
---|---|---|
| ||
ln -s Path_to_WPS/met_em* . # Path to WPS folder containing met_em files *** {USER EDIT} ***
# Link ./WPS/met_em* to ./WRF/test/em_real/ or your duplicated em_real folder |
3.3 WRF job submission script
ในการรัน WRF model จะต้องรัน real.exe ก่อน wrf.exe
Example WRF script ด้านล่างนี้ คือตัวอย่างที่ใช้ในการ Submit job บน TARA compute node (40 CPU cores) โดยสามารถคัดลอกสคริปต์นี้ได้โดยใช้คำสั่งด้านล่าง แล้วแก้ไข Project account
Code Block | ||
---|---|---|
| ||
cp -r /tarafs/data/project/common/WRF/Example1/submitWRF.sh . # Copy the script to your em_real directory
nano submitWRF.sh # Specify your project account *** {USER EDIT} ** |
Example WRF script
Code Block | ||
---|---|---|
| ||
#!/bin/bash
|
...
#SBATCH -p compute # Partition or machine type [devel/compute/memory] #SBATCH -N 1 # Number of nodes #SBATCH --ntasks-per-node=40 # Number of MPI processes per node #SBATCH --cpus-per- |
...
task=1 # Number of OpenMP threads per MPI process #SBATCH -t 24:00:00 # Total run time limit (hour:minute:second) #SBATCH -J WRF_Ex1 # Job name (short) #SBATCH -A |
...
projxxxx # Your project account *** {USER EDIT} *** module purge |
...
module load |
...
netCDF-Fortran/ |
...
4. |
...
5. |
...
2-iimpi-2019b module load |
...
libpng/1. |
...
6. |
...
37- |
...
GCCcore-8.3.0 module load |
...
JasPer/1. |
...
900. |
...
1- |
...
intel-2019b export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK} export JASPERINC=$EBROOTJASPER/include export JASPERLIB=$EBROOTJASPER/lib |
...
ulimit -s unlimited # MUST have otherwise ERROR
srun -n8 ./real.exe # Run real.exe using 8 CPU cores (-n8)
srun -n${SLURM_NTASKS} -c${SLURM_CPUS_PER_TASK} ./wrf.exe
# It is more efficient to run geogrid.exe, metgrid.exe and real.exe using a few CPU cores (but enough memory). |
สามารถปรับให้ Submit WPS และ WRF พร้อมกันได้ (See Single WRF Job Submission)
3.4 Submit WRF job
สามารถ Submit job ได้โดยใช้คำสั่ง sbatch แล้วติดตามการทำงานด้วยการอ่านไฟล์ rsl.out.xxxx หรือใช้คำสั่ง sacct และ squeue -u USERNAME ตามปกติ (ใช้เวลาประมาณ 10 นาที เมื่อได้รันบน Compute node)
Code Block | ||
---|---|---|
| ||
sbatch submitWRF.sh
tail -F rsl.out.0000 # (Optional) see the progress |
RETURN: WRF model
...
Contact Us
ThaiSC support service : thaisc-support@nstda.or.th