Changeset a676cf7 in flex_extract.git for Source/Python/Classes/EcFlexpart.py
- Timestamp:
- Oct 30, 2022, 1:13:24 AM (18 months ago)
- Branches:
- dev
- Children:
- 7271b6f
- Parents:
- ea754d1
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Source/Python/Classes/EcFlexpart.py
r365c82a ra676cf7 615 615 616 616 617 def retrieve(self, server, dates, public, request, inputdir='.'):617 def retrieve(self, server, dates, public, purefc, request, inputdir='.'): 618 618 '''Finalizing the retrieval information by setting final details 619 619 depending on grid type. … … 634 634 "YYYYMMDD/to/YYYYMMDD" 635 635 636 public : int 637 Switch to select kind of ECMWF Web API access and the possible data sets. 638 Public data sets (1) and Member states data sets (0). 639 640 purefc : int 641 Switch to decide whether the job is a pure forecast retrieval or 642 coupled with analysis data. 643 636 644 request : int 637 645 Selects the mode of retrieval. … … 652 660 self.public = public 653 661 self.inputdir = inputdir 662 self.purefc = purefc 654 663 oro = False 655 664 … … 739 748 print('CHANGED FC start date to ' + 740 749 sdate.strftime("%Y%m%d") + 741 ' to accom odate TIME=' +750 ' to accommodate TIME=' + 742 751 retr_param_dict['time'][0] + 743 752 ', STEP=' + … … 753 762 # if yes eliminate those fields since they may not 754 763 # be accessible with user's credentials 755 764 dates = retr_param_dict['date'].split('/') 756 765 enddate = retr_param_dict['date'].split('/')[-1] 757 elimit = datetime.strptime(enddate + str(self.basetime), 758 '%Y%m%d%H') 766 elimit = datetime.strptime(enddate, '%Y%m%d') 759 767 760 768 if self.basetime == 12: 761 769 # -------------- flux data ---------------------------- 762 if 'acc' in pk: 763 startdate = retr_param_dict['date'].split('/')[0] 764 enddate = datetime.strftime(elimit - t24h, '%Y%m%d') 765 retr_param_dict['date'] = '/'.join([startdate, 766 'to', 767 enddate]) 770 if 'acc' in pk and not self.purefc: 771 772 retr_param_dict['date'] = dates[0] 773 retr_param_dict['time'] = '12' 774 retr_param_dict['target'] = \ 775 self._mk_targetname(ftype, pk, 776 retr_param_dict['date']) 768 777 769 778 # ******* start retrievement 770 779 self._start_retrievement(request, retr_param_dict) 771 780 772 retr_param_dict['date'] = \ 773 datetime.strftime(elimit - t12h, '%Y%m%d') 781 retr_param_dict['date'] = dates[-1] 782 retr_param_dict['time'] = '00/12' 783 retr_param_dict['target'] = \ 784 self._mk_targetname(ftype, pk, 785 retr_param_dict['date']) 786 787 # ******* start retrievement 788 self._start_retrievement(request, retr_param_dict) 789 790 # -------------- non flux data ------------------------ 791 else: 792 # ******* start retrievement 793 self._start_retrievement(request, retr_param_dict) 794 795 elif self.basetime == 0: 796 # -------------- flux data ---------------------------- 797 if 'acc' in pk and not self.purefc: 798 799 retr_param_dict['date'] = dates[0] 800 retr_param_dict['time'] = '00/12' 801 retr_param_dict['target'] = \ 802 self._mk_targetname(ftype, pk, 803 retr_param_dict['date']) 804 805 # ******* start retrievement 806 self._start_retrievement(request, retr_param_dict) 807 808 retr_param_dict['date'] = dates[-1] 774 809 retr_param_dict['time'] = '00' 775 810 retr_param_dict['target'] = \ … … 779 814 # ******* start retrievement 780 815 self._start_retrievement(request, retr_param_dict) 781 782 # -------------- non flux data ------------------------ 783 else: 816 elif 'acc' in pk and self.purefc: 784 817 # ******* start retrievement 785 818 self._start_retrievement(request, retr_param_dict) 786 787 elif self.basetime == 0: 788 789 timesave = ''.join(retr_param_dict['time']) 790 791 if all(['/' in retr_param_dict['time'], 792 pk != 'OG_OROLSM__SL', 793 'acc' not in pk]): 794 times = retr_param_dict['time'].split('/') 795 steps = retr_param_dict['step'].split('/') 796 797 while int(times[0]) + int(steps[0]) <= 12: 798 times = times[1:] 799 if len(times) > 1: 800 retr_param_dict['time'] = '/'.join(times) 801 else: 802 retr_param_dict['time'] = times[0] 803 804 if all([pk != 'OG_OROLSM__SL', 805 int(retr_param_dict['step'].split('/')[0]) == 0, 806 int(timesave.split('/')[0]) == 0]): 807 808 retr_param_dict['date'] = \ 809 datetime.strftime(elimit, '%Y%m%d') 810 retr_param_dict['time'] = '00' 811 retr_param_dict['step'] = '000' 812 retr_param_dict['target'] = \ 813 self._mk_targetname(ftype, pk, 814 retr_param_dict['date']) 815 816 if ftype.upper() == 'FC' and \ 817 'acc' not in retr_param_dict['target']: 818 819 retr_param_dict['date'] = \ 820 datetime.strftime(elimit - t24h, '%Y%m%d') 821 822 # ******* start retrievement 823 self._start_retrievement(request, retr_param_dict) 819 # -------------- non flux data ------------------------ 820 else: # 'acc' not in pk 821 timesave = ''.join(retr_param_dict['time']) 822 823 if all(['/' in retr_param_dict['time'], 824 pk != 'OG_OROLSM__SL']): 825 times = retr_param_dict['time'].split('/') 826 steps = retr_param_dict['step'].split('/') 827 828 while int(times[0]) + int(steps[0]) <= 12: 829 times = times[1:] 830 if len(times) > 1: 831 retr_param_dict['time'] = '/'.join(times) 832 else: 833 retr_param_dict['time'] = times[0] 834 835 if all([pk != 'OG_OROLSM__SL', 836 int(retr_param_dict['step'].split('/')[0]) == 0, 837 int(timesave.split('/')[0]) == 0]): 838 839 retr_param_dict['date'] = \ 840 datetime.strftime(elimit, '%Y%m%d') 841 retr_param_dict['time'] = '00' 842 retr_param_dict['step'] = '000' 843 retr_param_dict['target'] = \ 844 self._mk_targetname(ftype, pk, 845 retr_param_dict['date']) 846 847 if ftype.upper() == 'FC' and not self.purefc: 848 849 retr_param_dict['date'] = \ 850 datetime.strftime(elimit - t24h, '%Y%m%d') 851 852 # ******* start retrievement 853 self._start_retrievement(request, retr_param_dict) 824 854 else: 825 855 raise ValueError('ERROR: Basetime has an invalid value '
Note: See TracChangeset
for help on using the changeset viewer.