U #g$@sdZdgZddlmZmZddlZddlZddddd d d d d g Zdddddddddddddddddddddddddddddddd dddd!d"dd#dd$d%dddd& Z ddddd d d d ddd dd'd( Z d)d*gZ d+d,d-d.d/d0gZ d5d2dZ d6d3d4ZdS)7z Written By Biju Thomas, GSO, University of Rhode Island on 26/3/15. This function selects sMPIPOM domain based on TCVital file(tmpvit) and storm Basin. choose_domain)existsgetsizeNtransatleastpacwestpacnorthindsouthindswpacsepacwncpacgXp@g33333u@g$@gG@)lon_beglon_endlat_beglat_endgh@g33333;q@g@g@E@gfffff&X@gyf@gfffff&@@g\@g@gD@gDggffffff@gfffffvp@gf@gu@gF@g`@gfffffFk@) rrrrr r r r r Zsouthatl) LEWASPXCOBUTQrrrrrrrrTc Cs|dkrtd}|dddkr*d}|S|j}|jdkr@|jn|jd}|j}|jr^|j}nd}|d kr|jdkrz|jn|jd} |j} d }|d ks|sd} d} |d krd }ql|d krd}ql|dkrd}qlt ||ddt ddt dd| | rd}nt ||t dddt ddt dd| | r8d}nt ||t dddt ddt dd| | rnd}nt ||t ddt ddt ddt dd| | rd}nTt ||t ddt ddt ddt dd| | rd}nd} | | t |}nhd} d} |d krd }nN|d kr0d}n<|dkrBd}n*t ||ddt ddt dd| | rt | | ddt ddt dd| | rd}nt ||t dddt ddt dd| | rt | | t dddt ddt dd| | rd}njt ||t dddt ddt dd| | rjt | | t dddt ddt dd| | rjd}nt ||t ddt ddt ddt dd| | rt | | t ddt ddt ddt dd| | rd}nt ||t ddt ddt ddt dd| | rVt | | t ddt ddt ddt dd| | rVd}nd} | | t |}|t krz|SdSdS)Npomconfigrun_multistormyesr ggv@irnonerrrrrr gX@g@f@rrrrrr r rr z!Domain Selection based on StormID)logging getLoggersyndatlonlat havefcstlocfhrflonflatbelongs domain_bdwarningdomain_ddomains)ZbasidconfZusefcstloggerZ domain_id storminfor'r(r*r+r,dlondlatmsgr88/lfs/h1/ops/prod/packages/hwrf.v13.2.9/ush/pom/domain.pyrsB                                             c Cst|dkrtd}||ks"||kr<|d||||fdS|||krp|||krp|||krp|||krpdSdS)Nrz) Incorrect domain boundaries %s %s %s %sTF)r$r%error) r'r(rrrrr5r6r3r8r8r9r-s r-)TN)N)__doc____all__os.pathrr hwrf.launcherhwrfr$r1r.r0ZshbasidZnhbasidrr-r8r8r8r9sL