Changeset 2036 in lmdz_wrf for trunk/tools
- Timestamp:
- Aug 7, 2018, 3:28:36 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tools/get_WRFsounding-surface_data.bash
r2023 r2036 9 9 echo "************************************" 10 10 echo "get_WRFsounding-surface_data.bash [scratch] [odir] [expl] \ 11 [sndid],[sndlon],[sndlat] [sfcid],[sfclon],[sfclat] [infilen] [wrfsnddiags]\12 [wrfs fcdiags] [wrfsfcnodiags]"11 [sndid],[sndlon],[sndlat] [sfcid],[sfclon],[sfclat] [infilen] \ 12 [wrfsnddiags],[wrfsfcdiags],[wrfsfcnodiags],[wrfcdxdiags],[wrfcdxnodiags]" 13 13 else 14 14 … … 35 35 36 36 infilen=$6 37 wrfsnddiags=$7 38 wrfsfcdiags=$8 39 wrfsfcnodiags=$9 37 38 if test ! $7 = 'None'; then 39 wrfsnddiags=`echo $7 | tr ',' ' ' | awk '{print $1}'` 40 wrfsfcdiags=`echo $7 | tr ',' ' ' | awk '{print $2}'` 41 wrfsfcnodiags=`echo $7 | tr ',' ' ' | awk '{print $3}'` 42 wrfcdxdiags=`echo $7 | tr ',' ' ' | awk '{print $4}'` 43 wrfcdxnodiags=`echo $7 | tr ',' ' ' | awk '{print $5}'` 44 fi 40 45 41 46 function isin_list() { … … 430 435 } 431 436 437 function get_WRFCDXsurface_data(){ 438 # Function to get the WRFCDX data to compute analysis in a surface point 439 # stlon= longitude value of the station 440 # stlat= latitude value of the station 441 # filen= name of the file 442 # lonvarn= name of the longitude variable 443 # latvarn= name of the latitude variable 444 # sfcdiagnames= diagnostics to compute (as ':' separated list) 445 # nondiagvs= ':' list of variables which are not from a diagnostics ('None' for 446 # without) 447 448 funcvals=$1 449 450 stlon=`echo ${funcvals} | tr '#' ' ' | awk '{print $1}'` 451 stlat=`echo ${funcvals} | tr '#' ' ' | awk '{print $2}'` 452 filen=`echo ${funcvals} | tr '#' ' ' | awk '{print $3}'` 453 lonvarn=`echo ${funcvals} | tr '#' ' ' | awk '{print $4}'` 454 latvarn=`echo ${funcvals} | tr '#' ' ' | awk '{print $5}'` 455 sfcdiagnames=`echo ${funcvals} | tr '#' ' ' | awk '{print $6}'` 456 nondiagvs=`echo ${funcvals} | tr '#' ' ' | awk '{print $7}'` 457 458 vals=${lonvarn}':'${latvarn}':Time|0' 459 gridsndv=`python ${pyHOME}/nc_var.py -o get_point -f ${filen} -S ${vals} \ 460 -v ${stlon},${stlat} | tr ' ' '!'` 461 echo "* get grid point: "${stlon}", "${stlat} >> ${ofileins} 462 echo python ${pyHOME}/nc_var.py -o get_point -f ${filen} -S "'"${vals}"'" \ 463 -v ${stlon},${stlat} >> ${ofileins} 464 echo " " >> ${ofileins} 465 xsnd=`echo ${gridsndv} | tr '!' ' ' | awk '{print $1}' | tr ',' ' ' | \ 466 awk '{print $1}'` 467 ysnd=`echo ${gridsndv} | tr '!' ' ' | awk '{print $1}' | tr ',' ' ' | \ 468 awk '{print $2}'` 469 dsnd=`echo ${gridsndv} | tr '!' ' ' | awk '{print $2}'` 470 471 xsnd1=`expr ${xsnd} + 1` 472 ysnd1=`expr ${ysnd} + 1` 473 474 # Getting values 475 if ${fscratch}; then rm ${simsfcptf} >& /dev/null; fi 476 if test ! -f ${simsfcptf}; then 477 values='Time,0,-1,1@south_north,'${ysnd}','${ysnd}',1@' 478 values=${values}'west_east,'${xsnd}','${xsnd}',1:False' 479 python ${pyHOME}/nc_var.py -o DataSetSection_multidims -f ${filen} \ 480 -S ${values} -v all 481 if test $? -ne 0; then 482 echo ${errmsg} 483 echo " python failed!!" 484 echo python ${pyHOME}/nc_var.py -o DataSetSection_multidims -f ${filen} \ 485 -S "'"${values}"'" -v all 486 exit 487 fi 488 echo "* get values at sfc point: "${stlon}", "${stlat} >> ${ofileins} 489 echo python ${pyHOME}/nc_var.py -o DataSetSection_multidims -f ${filen} \ 490 -S "'"${values}"'" -v all >> ${ofileins} 491 echo " " >> ${ofileins} 492 493 ofilen='newfile_multidims.nc' 494 mv ${ofilen} ${simsfcptf} 495 fi 496 497 # Computing sfc diagnostics 498 sfcdiagd='Time@WRFtime' 499 diagns=`echo ${sfcdiagnames} | tr ':' ' '` 500 501 idiag=1 502 for diagn in ${diagns}; do 503 diagv=`cat $pyHOME/diagnostics.inf | grep WRF | grep ${diagn}',' | tr ',' ' ' | \ 504 awk '{print $2"|"$3}'` 505 if test ${idiag} -eq 1; then 506 sfcdiagvals=${diagv} 507 else 508 sfcdiagvals=${sfcdiagvals}','${diagv} 509 fi 510 idiag=`expr ${idiag} + 1` 511 done 512 513 if ${fscratch}; then rm ${simsfcdiagsf}; fi 514 if test ! -f ${simsfcdiagsf}; then 515 python ${pyHOME}/diagnostics.py -f ${simsfcptf} -d ${sfcdiagd} -v ${sfcdiagvals} 516 if test $? -ne 0; then 517 echo ${errmsg} 518 echo " python failed!!" 519 echo python ${pyHOME}/diagnostics.py -f ${simsfcptf} -d "'"${sfcdiagd}"'" \ 520 -v "'"${sfcdiagvals}"'" 521 exit 522 fi 523 echo "* diagnostics at sfc point: "${stlon}", "${stlat} >> ${ofileins} 524 echo python ${pyHOME}/diagnostics.py -f ${simsfcptf} -d "'"${sfcdiagd}"'" \ 525 -v "'"${sfcdiagvals}"'" >> ${ofileins} 526 echo " " >> ${ofileins} 527 mv diagnostics.nc ${simsfcdiagsf} 528 fi 529 530 #Adding non-diagnostic variables 531 if test ! ${nondiagvs} = 'None'; then 532 varsadd=`echo ${nondiagvs} | tr ':' ' '` 533 for vadd in ${varsadd}; do 534 python ${pyHOME}/nc_var.py -o fvaradd -S ${simsfcptf},${vadd} -f ${simsfcdiagsf} 535 if test $? -ne 0; then 536 echo ${errmsg} 537 echo " python failed!!" 538 echo python ${pyHOME}/nc_var.py -o fvaradd -S "'"${simsfcptf},${vadd}"'" \ 539 -f ${simsfcdiagsf} 540 exit 541 rm ${simsfcdiagsf} 542 fi 543 echo "* adding variable '"${vadd}"' at sfc point: "${stlon}", "${stlat} >> ${ofileins} 544 echo python ${pyHOME}/nc_var.py -o fvaradd -S "'"${simsfcptf},${vadd}"'" \ 545 -f ${simsfcdiagsf} >> ${ofileins} 546 echo " " >> ${ofileins} 547 # CF varname 548 CFvarn=`python $pyHOME/generic.py -o variables_values -S ${vadd} | tr ':' ' ' |\ 549 awk '{print $1}'` 550 if test $? -ne 0; then 551 echo ${errmsg} 552 echo " python failed!!" 553 echo python $pyHOME/generic.py -o variables_values -S ${vadd} 554 exit 555 rm ${simsfcdiagsf} 556 fi 557 python $pyHOME/nc_var.py -o chvarname -S ${CFvarn} -f ${simsfcdiagsf} -v ${vadd} 558 if test $? -ne 0; then 559 echo ${errmsg} 560 echo " python failed!!" 561 echo python ${pyHOME}/nc_var.py -o chvarname -S ${CFvarn} -f ${simsfcdiagsf} \ 562 -v ${vadd} 563 exit 564 rm ${simsfcdiagsf} 565 fi 566 done 567 fi 568 } 569 570 function get_WRFCDXsfc2D_data(){ 571 # Function to get the data from WRFCDX to compute analysis in a surface map 572 # filen= name of the file 573 # sfcdiagnames= diagnostics to compute (as ':' separated list) 574 # nondiagvs= ':' list of variables which are not from a diagnostics ('None' for 575 # without) 576 # sfcmapdiagd= name of the dimensions and dimension variables to use for diagnostics 577 578 funcvals=$1 579 580 filen=`echo ${funcvals} | tr '#' ' ' | awk '{print $1}'` 581 sfcdiagnames=`echo ${funcvals} | tr '#' ' ' | awk '{print $2}'` 582 nondiagvs=`echo ${funcvals} | tr '#' ' ' | awk '{print $3}'` 583 sfcmapdiagd=`echo ${funcvals} | tr '#' ' ' | awk '{print $4}'` 584 585 # Computing sfc diagnostics 586 diagns=`echo ${sfcdiagnames} | tr ':' ' '` 587 588 # getting that variables only required for the diagnostics 589 vardiags='' 590 idiag=1 591 for diagn in ${diagns}; do 592 diagv=`cat $pyHOME/diagnostics.inf | grep WRF | grep ${diagn}',' | tr ',' ' ' | \ 593 awk '{print $2"|"$3}'` 594 if test ${idiag} -eq 1; then 595 sfcdiagvals=${diagv} 596 vardiags=`echo ${diagv} | tr '|' ' ' | awk '{print $2}' | tr '@' ':'` 597 else 598 sfcdiagvals=${sfcdiagvals}','${diagv} 599 vardiag=`echo ${diagv} | tr '|' ' ' | awk '{print $2}' | tr '@' ' '` 600 for vd in ${vardiag}; do 601 if ! $(isin_list ${vardiags} ${vd}); then vardiags=${vardiags}':'${vd}; fi 602 done 603 fi 604 idiag=`expr ${idiag} + 1` 605 done 606 607 # Inlcuding non-diagnostics 608 if test ! ${nondiagvs} = 'None'; then 609 nvns=`echo ${nondiagvs} | tr ':' ' '` 610 for vn in ${nvns}; do 611 if ! $(isin_list ${vardiags} ${vn}); then vardiags=${vardiags}':'${vn}; fi 612 done 613 if ! $(isin_list ${vardiags} 'time'); then vardiags=${vardiags}':time'; fi 614 fi 615 vardiag=`echo ${vardiags} | tr ':' ','` 616 617 # Getting values 618 if ${fscratch}; then rm ${simsfcmapf} >& /dev/null; fi 619 if test ! -f ${simsfcmapf}; then 620 values='Time,0,-1,1@south_north,0,-1,1@west_east,0,-1,1:False' 621 python ${pyHOME}/nc_var.py -o DataSetSection_multidims -f ${filen} \ 622 -S ${values} -v ${vardiag} 623 if test $? -ne 0; then 624 echo ${errmsg} 625 echo " python failed!!" 626 echo python ${pyHOME}/nc_var.py -o DataSetSection_multidims -f ${filen} \ 627 -S "'"${values}"'" -v ${vardiag} 628 exit 629 fi 630 echo "* get values for 2D map diagnostics: " >> ${ofileins} 631 echo python ${pyHOME}/nc_var.py -o DataSetSection_multidims -f ${filen} \ 632 -S "'"${values}"'" -v ${vardiag} >> ${ofileins} 633 echo " " >> ${ofileins} 634 635 ofilen='newfile_multidims.nc' 636 mv ${ofilen} ${simsfcmapf} 637 fi 638 639 if ${fscratch}; then rm ${simsfcmapdiagsf}; fi 640 if test ! -f ${simsfcmapdiagsf}; then 641 python ${pyHOME}/diagnostics.py -f ${simsfcmapf} -d ${sfcmapdiagd} \ 642 -v ${sfcdiagvals} 643 if test $? -ne 0; then 644 echo ${errmsg} 645 echo " python failed!!" 646 echo python ${pyHOME}/diagnostics.py -f ${simsfcmapf} -d "'"${sfcmapdiagd}"'" \ 647 -v "'"${sfcdiagvals}"'" 648 exit 649 fi 650 echo "* diagnostics for sfc 2D map: " >> ${ofileins} 651 echo python ${pyHOME}/diagnostics.py -f ${simsfcmapf} -d "'"${sfcmapdiagd}"'" \ 652 -v "'"${sfcdiagvals}"'" >> ${ofileins} 653 echo " " >> ${ofileins} 654 mv diagnostics.nc ${simsfcmapdiagsf} 655 656 #Adding non-diagnostic variables 657 if test ! ${nondiagvs} = 'None'; then 658 varsadd=`echo ${nondiagvs} | tr ':' ' '` 659 for vadd in ${varsadd}; do 660 python ${pyHOME}/nc_var.py -o fvaradd -S ${simsfcmapf},${vadd} \ 661 -f ${simsfcmapdiagsf} 662 if test $? -ne 0; then 663 echo ${errmsg} 664 echo " python failed!!" 665 echo python ${pyHOME}/nc_var.py -o fvaradd -S "'"${simsfcmapf},${vadd}"'" \ 666 -f ${simsfcmapdiagsf} 667 exit 668 rm ${simsfcmapdiagsf} 669 fi 670 echo "* adding variable '"${vadd}"' at sfc map: " >> ${ofileins} 671 echo python ${pyHOME}/nc_var.py -o fvaradd -S "'"${simsfcmapf},${vadd}"'" \ 672 -f ${simsfcmapdiagsf} >> ${ofileins} 673 echo " " >> ${ofileins} 674 # CF varname 675 CFvarn=`python $pyHOME/generic.py -o variables_values -S ${vadd} | \ 676 tr ':' ' ' | awk '{print $1}'` 677 if test $? -ne 0; then 678 echo ${errmsg} 679 echo " python failed!!" 680 echo python $pyHOME/generic.py -o variables_values -S ${vadd} 681 exit 682 rm ${simsfcmapdiagsf} 683 fi 684 python $pyHOME/nc_var.py -o chvarname -S ${CFvarn} -f ${simsfcmapdiagsf} \ 685 -v ${vadd} 686 if test $? -ne 0; then 687 echo ${errmsg} 688 echo " python failed!!" 689 echo python ${pyHOME}/nc_var.py -o chvarname -S ${CFvarn} \ 690 -f ${simsfcmapdiagsf} -v ${vadd} 691 exit 692 rm ${simsfcmapdiagsf} 693 fi 694 done 695 fi 696 fi 697 } 698 699 432 700 ####### ####### 433 701 ## MAIN … … 468 736 469 737 # Surface maps 470 if test ! ${sfcmapid} = 'None'; then 471 simsfcmapf=${odir}'/simout_vars_sfcmap_'${stid}'_'${expl}'_'${fdate}'.nc' 472 simsfcmapdiagsf=${odir}'/simout_sfcmapdiags_'${stid}'_'${expl}'_'${fdate}'.nc' 473 474 fvals=${infilen}'#'${wrfsfcdiags}'#'${wrfsfcnodiags} 475 get_WRFsfc2D_data ${fvals} 738 simsfcmapf=${odir}'/simout_vars_sfcmap_'${expl}'_'${fdate}'.nc' 739 simsfcmapdiagsf=${odir}'/simout_sfcmapdiags_'${expl}'_'${fdate}'.nc' 740 741 fvals=${infilen}'#'${wrfsfcdiags}'#'${wrfsfcnodiags} 742 get_WRFsfc2D_data ${fvals} 743 744 # cdx snd 745 if test ! ${sndid} = 'None'; then 746 stid=${sndid} 747 simsfcptf=${odir}'/simcdx_vars_sfcpt_'${stid}'_'${expl}'_'${fdate}'.nc' 748 simsfcdiagsf=${odir}'/simcdx_sfcdiags_'${stid}'_'${expl}'_'${fdate}'.nc' 749 750 fvals=${sndlon}'#'${sndlat}'#'${infilen}'#LON#LAT#'${wrfcdxdiags}'#' 751 fvals=${fvals}${wrfcdxnodiags} 752 get_WRFsurface_data ${fvals} 753 fi 754 755 # cdx Surface 756 if test ! ${sfcid} = 'None'; then 757 stid=${sfcid} 758 simsfcptf=${odir}'/simcdx_vars_sfcpt_'${stid}'_'${expl}'_'${fdate}'.nc' 759 simsfcdiagsf=${odir}'/simcdx_sfcdiags_'${stid}'_'${expl}'_'${fdate}'.nc' 760 761 fvals=${sfclon}'#'${sfclat}'#'${infilen}'#LON#LAT#'${wrfcdxdiags}'#' 762 fvals=${fvals}${wrfcdxnodiags} 763 get_WRFCDXsurface_data ${fvals} 764 fi 765 766 # cdx Surface maps 767 simsfcmapf=${odir}'/simcdx_vars_sfcmap_'${expl}'_'${fdate}'.nc' 768 simsfcmapdiagsf=${odir}'/simcdx_sfcmapdiags_'${expl}'_'${fdate}'.nc' 769 770 fvals=${infilen}'#'${wrfcdxdiags}'#'${wrfcdxnodiags} 771 get_WRFCDXsfc2D_data ${fvals} 476 772 477 773 fi
Note: See TracChangeset
for help on using the changeset viewer.