Skip to content
Snippets Groups Projects
Commit 71e01326 authored by Georgiy Faikin's avatar Georgiy Faikin
Browse files

Alternative Rothc wheather calculation and SOCs new part for working with external data

parent fab2c539
Branches
No related tags found
No related merge requests found
Showing
with 1461 additions and 850 deletions
1974-01-31 10:30:00; 0.164459467 ; 8.72917461
1974-03-02 21:00:00; 0.153813764 ; 8.72716999
1974-04-02 07:30:00; 0.145549148 ; 8.72473526
1974-05-02 18:00:00; 0.139130965 ; 8.72196865
1974-06-02 04:30:00; 0.134144634 ; 8.71894741
1974-07-02 15:00:00; 0.130268708 ; 8.71573067
1974-08-02 01:30:00; 0.127253875 ; 8.71236324
1974-09-01 12:00:00; 0.124906793 ; 8.70888042
1974-10-01 22:30:00; 0.123077564 ; 8.70530987
1974-11-01 09:00:00; 0.121649876 ; 8.70167351
1974-12-01 19:30:00; 0.120533556 ; 8.69798756
1975-01-01 06:00:00; 0.119658686 ; 8.69426441
1975-01-31 16:30:00; 0.118971020 ; 8.69051456
1975-03-03 03:00:00; 0.118428528 ; 8.68674564
1975-04-02 13:30:00; 0.117998585 ; 8.68296337
1975-05-03 00:00:00; 0.117655903 ; 8.67917252
1975-06-02 10:30:00; 0.117380887 ; 8.67537689
1975-07-02 21:00:00; 0.117158346 ; 8.67157936
1975-08-02 07:30:00; 0.116976492 ; 8.66778183
1975-09-01 18:00:00; 0.116826206 ; 8.66398621
1975-10-02 04:30:00; 0.116700381 ; 8.66019344
1975-11-01 15:00:00; 0.116593540 ; 8.65640545
1975-12-02 01:30:00; 0.116501428 ; 8.65262222
1976-01-01 12:00:00; 0.116420791 ; 8.64884377
1976-01-31 22:30:00; 0.116349012 ; 8.64507198
1976-03-02 09:00:00; 0.116284147 ; 8.64130592
1976-04-01 19:30:00; 0.116224647 ; 8.63754654
1976-05-02 06:00:00; 0.116169333 ; 8.63379383
1976-06-01 16:30:00; 0.116117299 ; 8.63004875
1976-07-02 03:00:00; 0.116067812 ; 8.62631035
1976-08-01 13:30:00; 0.116020322 ; 8.62257862
1976-09-01 00:00:00; 0.115974382 ; 8.61885452
1976-10-01 10:30:00; 0.115929693 ; 8.61513710
1976-10-31 21:00:00; 0.115885973 ; 8.61142635
1976-12-01 07:30:00; 0.115843028 ; 8.60772324
1976-12-31 18:00:00; 0.115800731 ; 8.60402775
1977-01-31 04:30:00; 0.115758941 ; 8.60033894
1977-03-02 15:00:00; 0.115717545 ; 8.59665775
1977-04-02 01:30:00; 0.115676485 ; 8.59298420
1977-05-02 12:00:00; 0.115635715 ; 8.58931828
1977-06-01 22:30:00; 0.115595192 ; 8.58565807
1977-07-02 09:00:00; 0.115554877 ; 8.58200550
1977-08-01 19:30:00; 0.115514770 ; 8.57836056
1977-09-01 06:00:00; 0.115474790 ; 8.57472324
1977-10-01 16:30:00; 0.115434974 ; 8.57109261
1977-11-01 03:00:00; 0.115395293 ; 8.56746960
1977-12-01 13:30:00; 0.115355730 ; 8.56385326
1978-01-01 00:00:00; 0.115316287 ; 8.56024361
1978-01-31 10:30:00; 0.115276963 ; 8.55664158
1978-03-02 21:00:00; 0.115237758 ; 8.55304718
1978-04-02 07:30:00; 0.115198627 ; 8.54945850
1978-05-02 18:00:00; 0.115159608 ; 8.54587746
1978-06-02 04:30:00; 0.115120701 ; 8.54230404
1978-07-02 15:00:00; 0.115081884 ; 8.53873730
1978-08-02 01:30:00; 0.115043178 ; 8.53517723
1978-09-01 12:00:00; 0.115004554 ; 8.53162479
1978-10-01 22:30:00; 0.114966020 ; 8.52807903
1978-11-01 09:00:00; 0.114927582 ; 8.52454090
1978-12-01 19:30:00; 0.114889242 ; 8.52100849
1979-01-01 06:00:00; 0.114850998 ; 8.51748371
1979-01-31 16:30:00; 0.114812829 ; 8.51396561
1979-03-03 03:00:00; 0.114774764 ; 8.51045418
1979-04-02 13:30:00; 0.114736773 ; 8.50695038
1979-05-03 00:00:00; 0.114698887 ; 8.50345325
1979-06-02 10:30:00; 0.114661083 ; 8.49996281
1979-07-02 21:00:00; 0.114623368 ; 8.49647903
1979-08-02 07:30:00; 0.114585742 ; 8.49300289
1979-09-01 18:00:00; 0.114548206 ; 8.48953247
1979-10-02 04:30:00; 0.114510760 ; 8.48606968
1979-11-01 15:00:00; 0.114473395 ; 8.48261356
1979-12-02 01:30:00; 0.114436135 ; 8.47916412
1980-01-01 12:00:00; 0.114398956 ; 8.47572136
1980-01-31 22:30:00; 0.114361852 ; 8.47228527
1980-03-02 09:00:00; 0.114324830 ; 8.46885586
1980-04-01 19:30:00; 0.114287913 ; 8.46543312
1980-05-02 06:00:00; 0.114251085 ; 8.46201706
1980-06-01 16:30:00; 0.114214338 ; 8.45860767
1980-07-02 03:00:00; 0.114177682 ; 8.45520592
1980-08-01 13:30:00; 0.114141114 ; 8.45180988
1980-09-01 00:00:00; 0.114104621 ; 8.44842052
1980-10-01 10:30:00; 0.114068218 ; 8.44503784
1980-10-31 21:00:00; 0.114031903 ; 8.44166183
1980-12-01 07:30:00; 0.113995671 ; 8.43829155
1980-12-31 18:00:00; 0.113959506 ; 8.43492889
1981-01-31 04:30:00; 0.113923430 ; 8.43157196
1981-03-02 15:00:00; 0.113887444 ; 8.42822170
1981-04-02 01:30:00; 0.113851540 ; 8.42487812
1981-05-02 12:00:00; 0.113815725 ; 8.42154121
1981-06-01 22:30:00; 0.113779992 ; 8.41821003
1981-07-02 09:00:00; 0.113744341 ; 8.41488647
1981-08-01 19:30:00; 0.113708764 ; 8.41156864
1981-09-01 06:00:00; 0.113673285 ; 8.40825748
1981-10-01 16:30:00; 0.113637887 ; 8.40495205
1981-11-01 03:00:00; 0.113602564 ; 8.40165424
1981-12-01 13:30:00; 0.113567300 ; 8.39836216
1982-01-01 00:00:00; 0.113532133 ; 8.39507675
1982-01-31 10:30:00; 0.113497064 ; 8.39179707
1982-03-02 21:00:00; 0.113462053 ; 8.38852501
1982-04-02 07:30:00; 0.113427132 ; 8.38525867
1982-05-02 18:00:00; 0.113392293 ; 8.38199806
1982-06-02 04:30:00; 0.113357522 ; 8.37874413
1982-07-02 15:00:00; 0.113322854 ; 8.37549591
1982-08-02 01:30:00; 0.113288254 ; 8.37225533
1982-09-01 12:00:00; 0.113253735 ; 8.36902046
1982-10-01 22:30:00; 0.113219291 ; 8.36579132
1982-11-01 09:00:00; 0.113184929 ; 8.36256886
1982-12-01 19:30:00; 0.113150656 ; 8.35935211
1983-01-01 06:00:00; 0.113116451 ; 8.35614204
1983-01-31 16:30:00; 0.113082319 ; 8.35293865
1983-03-03 03:00:00; 0.113048270 ; 8.34974098
1983-04-02 13:30:00; 0.113014311 ; 8.34654999
1983-05-03 00:00:00; 0.112980410 ; 8.34336472
1983-06-02 10:30:00; 0.112946600 ; 8.34018517
1983-07-02 21:00:00; 0.112912849 ; 8.33701229
1983-08-02 07:30:00; 0.112879187 ; 8.33384514
1983-09-01 18:00:00; 0.112845607 ; 8.33068371
1983-10-02 04:30:00; 0.112812109 ; 8.32752895
1983-11-01 15:00:00; 0.112778686 ; 8.32437992
1983-12-02 01:30:00; 0.112745345 ; 8.32123661
1984-01-01 12:00:00; 0.112712055 ; 8.31809998
1984-01-31 22:30:00; 0.112678833 ; 8.31496906
1984-03-02 09:00:00; 0.112645708 ; 8.31184387
1984-04-01 19:30:00; 0.112612650 ; 8.30872440
1984-05-02 06:00:00; 0.112579666 ; 8.30561161
1984-06-01 16:30:00; 0.112546764 ; 8.30250454
1984-07-02 03:00:00; 0.112513937 ; 8.29940319
1984-08-01 13:30:00; 0.112481192 ; 8.29630756
1984-09-01 00:00:00; 0.112448499 ; 8.29321861
1984-10-01 10:30:00; 0.112415865 ; 8.29013538
1984-10-31 21:00:00; 0.112383328 ; 8.28705788
1984-12-01 07:30:00; 0.112350866 ; 8.28398609
1984-12-31 18:00:00; 0.112318479 ; 8.28092098
1985-01-31 04:30:00; 0.112286165 ; 8.27786160
1985-03-02 15:00:00; 0.112253927 ; 8.27480793
1985-04-02 01:30:00; 0.112221763 ; 8.27175999
1985-05-02 12:00:00; 0.112189651 ; 8.26871777
1985-06-01 22:30:00; 0.112157613 ; 8.26568222
1985-07-02 09:00:00; 0.112125665 ; 8.26265240
1985-08-01 19:30:00; 0.112093776 ; 8.25962830
1985-09-01 06:00:00; 0.112061970 ; 8.25660896
1985-10-01 16:30:00; 0.112030253 ; 8.25359535
1985-11-01 03:00:00; 0.111998573 ; 8.25058746
1985-12-01 13:30:00; 0.111966982 ; 8.24758625
1986-01-01 00:00:00; 0.111935459 ; 8.24459076
1986-01-31 10:30:00; 0.111904018 ; 8.24160099
1986-03-02 21:00:00; 0.111872643 ; 8.23861694
1986-04-02 07:30:00; 0.111841321 ; 8.23563766
1986-05-02 18:00:00; 0.111810066 ; 8.23266411
1986-06-02 04:30:00; 0.111778900 ; 8.22969627
1986-07-02 15:00:00; 0.111747794 ; 8.22673512
1986-08-02 01:30:00; 0.111716762 ; 8.22377968
1986-09-01 12:00:00; 0.111685783 ; 8.22082901
1986-10-01 22:30:00; 0.111654893 ; 8.21788406
1986-11-01 09:00:00; 0.111624062 ; 8.21494484
1986-12-01 19:30:00; 0.111593314 ; 8.21201134
1987-01-01 06:00:00; 0.111562639 ; 8.20908356
1987-01-31 16:30:00; 0.111532003 ; 8.20616055
1987-03-03 03:00:00; 0.111501440 ; 8.20324326
1987-04-02 13:30:00; 0.111470953 ; 8.20033169
1987-05-03 00:00:00; 0.111440532 ; 8.19742584
1987-06-02 10:30:00; 0.111410193 ; 8.19452477
1987-07-02 21:00:00; 0.111379907 ; 8.19162941
1987-08-02 07:30:00; 0.111349680 ; 8.18873978
1987-09-01 18:00:00; 0.111319534 ; 8.18585491
1987-10-02 04:30:00; 0.111289442 ; 8.18297672
1987-11-01 15:00:00; 0.111259423 ; 8.18010426
1987-12-02 01:30:00; 0.111229479 ; 8.17723751
1988-01-01 12:00:00; 0.111199588 ; 8.17437553
1988-01-31 22:30:00; 0.111169770 ; 8.17151928
1988-03-02 09:00:00; 0.111140013 ; 8.16866875
1988-04-01 19:30:00; 0.111110330 ; 8.16582298
1988-05-02 06:00:00; 0.111080706 ; 8.16298294
1988-06-01 16:30:00; 0.111051165 ; 8.16014767
1988-07-02 03:00:00; 0.111021683 ; 8.15731716
1988-08-01 13:30:00; 0.110992253 ; 8.15449238
1988-09-01 00:00:00; 0.110962898 ; 8.15167236
1988-10-01 10:30:00; 0.110933587 ; 8.14885807
1988-10-31 21:00:00; 0.110904358 ; 8.14604950
1988-12-01 07:30:00; 0.110875189 ; 8.14324570
1988-12-31 18:00:00; 0.110846087 ; 8.14044762
1989-01-31 04:30:00; 0.110817045 ; 8.13765430
1989-03-02 15:00:00; 0.110788070 ; 8.13486671
1989-04-02 01:30:00; 0.110759169 ; 8.13208485
1989-05-02 12:00:00; 0.110730313 ; 8.12930775
1989-06-01 22:30:00; 0.110701539 ; 8.12653637
1989-07-02 09:00:00; 0.110672832 ; 8.12376976
1989-08-01 19:30:00; 0.110644162 ; 8.12100887
1989-09-01 06:00:00; 0.110615559 ; 8.11825275
1989-10-01 16:30:00; 0.110587038 ; 8.11550140
1989-11-01 03:00:00; 0.110558562 ; 8.11275578
1989-12-01 13:30:00; 0.110530153 ; 8.11001492
1990-01-01 00:00:00; 0.110501796 ; 8.10727978
1990-01-31 10:30:00; 0.110473499 ; 8.10454941
1990-03-02 21:00:00; 0.110445261 ; 8.10182476
1990-04-02 07:30:00; 0.110417098 ; 8.09910488
1990-05-02 18:00:00; 0.110388994 ; 8.09638977
1990-06-02 04:30:00; 0.110360950 ; 8.09367943
1990-07-02 15:00:00; 0.110332981 ; 8.09097481
1990-08-02 01:30:00; 0.110305056 ; 8.08827496
1990-09-01 12:00:00; 0.110277206 ; 8.08558083
1990-10-01 22:30:00; 0.110249408 ; 8.08289146
1990-11-01 09:00:00; 0.110221669 ; 8.08020592
1990-12-01 19:30:00; 0.110193975 ; 8.07752609
1991-01-01 06:00:00; 0.110166371 ; 8.07485104
1991-01-31 16:30:00; 0.110138804 ; 8.07218170
1991-03-03 03:00:00; 0.110111296 ; 8.06951714
1991-04-02 13:30:00; 0.110083856 ; 8.06685734
1991-05-03 00:00:00; 0.110056490 ; 8.06420231
1991-06-02 10:30:00; 0.110029161 ; 8.06155300
1991-07-02 21:00:00; 0.110001907 ; 8.05890846
1991-08-02 07:30:00; 0.109974705 ; 8.05626869
1991-09-01 18:00:00; 0.109947562 ; 8.05363369
1991-10-02 04:30:00; 0.109920472 ; 8.05100346
1991-11-01 15:00:00; 0.109893441 ; 8.04837894
1991-12-02 01:30:00; 0.109866485 ; 8.04575920
1992-01-01 12:00:00; 0.109839581 ; 8.04314327
1992-01-31 22:30:00; 0.109812729 ; 8.04053307
1992-03-02 09:00:00; 0.109785929 ; 8.03792763
1992-04-01 19:30:00; 0.109759189 ; 8.03532696
1992-05-02 06:00:00; 0.109732516 ; 8.03273106
1992-06-01 16:30:00; 0.109705895 ; 8.03013992
1992-07-02 03:00:00; 0.109679326 ; 8.02755356
1992-08-01 13:30:00; 0.109652802 ; 8.02497196
1992-09-01 00:00:00; 0.109626345 ; 8.02239513
1992-10-01 10:30:00; 0.109599963 ; 8.01982307
1992-10-31 21:00:00; 0.109573610 ; 8.01725674
1992-12-01 07:30:00; 0.109547332 ; 8.01469421
1992-12-31 18:00:00; 0.109521106 ; 8.01213646
1993-01-31 04:30:00; 0.109494925 ; 8.00958443
1993-03-02 15:00:00; 0.109468803 ; 8.00703621
1993-04-02 01:30:00; 0.109442748 ; 8.00449276
1993-05-02 12:00:00; 0.109416753 ; 8.00195408
1993-06-01 22:30:00; 0.109390803 ; 7.99942064
1993-07-02 09:00:00; 0.109364912 ; 7.99689150
1993-08-01 19:30:00; 0.109339066 ; 7.99436712
1993-09-01 06:00:00; 0.109313287 ; 7.99184752
1993-10-01 16:30:00; 0.109287575 ; 7.98933268
1993-11-01 03:00:00; 0.109261900 ; 7.98682213
1993-12-01 13:30:00; 0.109236285 ; 7.98431635
1994-01-01 00:00:00; 0.109210715 ; 7.98181534
1994-01-31 10:30:00; 0.109185211 ; 7.97931910
1994-03-02 21:00:00; 0.109159760 ; 7.97682714
1994-04-02 07:30:00; 0.109134369 ; 7.97433996
1994-05-02 18:00:00; 0.109109029 ; 7.97185755
1994-06-02 04:30:00; 0.109083727 ; 7.96937943
1994-07-02 15:00:00; 0.109058484 ; 7.96690607
1994-08-02 01:30:00; 0.109033294 ; 7.96443701
1994-09-01 12:00:00; 0.109008156 ; 7.96197271
1994-10-01 22:30:00; 0.108983085 ; 7.95951319
1994-11-01 09:00:00; 0.108958051 ; 7.95705795
1994-12-01 19:30:00; 0.108933076 ; 7.95460749
1995-01-01 06:00:00; 0.108908154 ; 7.95216131
1995-01-31 16:30:00; 0.108883277 ; 7.94971943
1995-03-03 03:00:00; 0.108858466 ; 7.94728231
1995-04-02 13:30:00; 0.108833708 ; 7.94484949
1995-05-03 00:00:00; 0.108809009 ; 7.94242096
1995-06-02 10:30:00; 0.108784348 ; 7.93999767
1995-07-02 21:00:00; 0.108759739 ; 7.93757868
1995-08-02 07:30:00; 0.108735189 ; 7.93516397
1995-09-01 18:00:00; 0.108710676 ; 7.93275404
1995-10-02 04:30:00; 0.108686224 ; 7.93034840
1995-11-01 15:00:00; 0.108661823 ; 7.92794704
1995-12-02 01:30:00; 0.108637482 ; 7.92554998
1996-01-01 12:00:00; 0.108613186 ; 7.92315722
1996-01-31 22:30:00; 0.108588934 ; 7.92076921
1996-03-02 09:00:00; 0.108564749 ; 7.91838551
1996-04-01 19:30:00; 0.108540595 ; 7.91600609
1996-05-02 06:00:00; 0.108516499 ; 7.91363096
1996-06-01 16:30:00; 0.108492464 ; 7.91126013
1996-07-02 03:00:00; 0.108468480 ; 7.90889406
1996-08-01 13:30:00; 0.108444534 ; 7.90653229
1996-09-01 00:00:00; 0.108420640 ; 7.90417480
1996-10-01 10:30:00; 0.108396783 ; 7.90182161
1996-10-31 21:00:00; 0.108372986 ; 7.89947271
1996-12-01 07:30:00; 0.108349256 ; 7.89712811
1996-12-31 18:00:00; 0.108325563 ; 7.89478779
1997-01-31 04:30:00; 0.108301923 ; 7.89245176
1997-03-02 15:00:00; 0.108278319 ; 7.89012003
1997-04-02 01:30:00; 0.108254775 ; 7.88779259
1997-05-02 12:00:00; 0.108231291 ; 7.88546944
1997-06-01 22:30:00; 0.108207852 ; 7.88315058
1997-07-02 09:00:00; 0.108184442 ; 7.88083601
1997-08-01 19:30:00; 0.108161092 ; 7.87852573
1997-09-01 06:00:00; 0.108137794 ; 7.87621975
1997-10-01 16:30:00; 0.108114541 ; 7.87391758
1997-11-01 03:00:00; 0.108091339 ; 7.87161970
1997-12-01 13:30:00; 0.108068176 ; 7.86932611
1998-01-01 00:00:00; 0.108045079 ; 7.86703682
1998-01-31 10:30:00; 0.108022034 ; 7.86475182
1998-03-02 21:00:00; 0.107999034 ; 7.86247063
1998-04-02 07:30:00; 0.107976064 ; 7.86019373
1998-05-02 18:00:00; 0.107953146 ; 7.85792112
1998-06-02 04:30:00; 0.107930273 ; 7.85565281
1998-07-02 15:00:00; 0.107907444 ; 7.85338879
1998-08-02 01:30:00; 0.107884675 ; 7.85112858
1998-09-01 12:00:00; 0.107861936 ; 7.84887266
1998-10-01 22:30:00; 0.107839257 ; 7.84662056
1998-11-01 09:00:00; 0.107816637 ; 7.84437227
1998-12-01 19:30:00; 0.107794054 ; 7.84212828
1999-01-01 06:00:00; 0.107771516 ; 7.83988857
1999-01-31 16:30:00; 0.107749023 ; 7.83765316
1999-03-03 03:00:00; 0.107726581 ; 7.83542156
1999-04-02 13:30:00; 0.107704185 ; 7.83319426
1999-05-03 00:00:00; 0.107681841 ; 7.83097124
1999-06-02 10:30:00; 0.107659534 ; 7.82875156
1999-07-02 21:00:00; 0.107637279 ; 7.82653618
1999-08-02 07:30:00; 0.107615069 ; 7.82432508
1999-09-01 18:00:00; 0.107592903 ; 7.82211781
1999-10-02 04:30:00; 0.107570767 ; 7.81991482
1999-11-01 15:00:00; 0.107548691 ; 7.81771517
1999-12-02 01:30:00; 0.107526660 ; 7.81551981
2000-01-01 12:00:00; 0.107504666 ; 7.81332874
2000-01-31 22:30:00; 0.107482724 ; 7.81114149
2000-03-02 09:00:00; 0.107460819 ; 7.80895853
2000-04-01 19:30:00; 0.107438967 ; 7.80677891
2000-05-02 06:00:00; 0.107417151 ; 7.80460358
2000-06-01 16:30:00; 0.107395381 ; 7.80243254
2000-07-02 03:00:00; 0.107373655 ; 7.80026484
2000-08-01 13:30:00; 0.107351981 ; 7.79810143
2000-09-01 00:00:00; 0.107330352 ; 7.79594183
2000-10-01 10:30:00; 0.107308775 ; 7.79378653
2000-10-31 21:00:00; 0.107287243 ; 7.79163456
2000-12-01 07:30:00; 0.107265748 ; 7.78948689
2000-12-31 18:00:00; 0.107244298 ; 7.78734303
2001-01-31 04:30:00; 0.107222900 ; 7.78520298
2001-03-02 15:00:00; 0.107201532 ; 7.78306675
2001-04-02 01:30:00; 0.107180208 ; 7.78093481
2001-05-02 12:00:00; 0.107158937 ; 7.77880621
2001-06-01 22:30:00; 0.107137695 ; 7.77668190
2001-07-02 09:00:00; 0.107116498 ; 7.77456093
2001-08-01 19:30:00; 0.107095353 ; 7.77244425
2001-09-01 06:00:00; 0.107074238 ; 7.77033138
2001-10-01 16:30:00; 0.107053198 ; 7.76822186
2001-11-01 03:00:00; 0.107032180 ; 7.76611662
2001-12-01 13:30:00; 0.107011199 ; 7.76401472
2002-01-01 00:00:00; 0.106990263 ; 7.76191711
2002-01-31 10:30:00; 0.106969364 ; 7.75982285
2002-03-02 21:00:00; 0.106948525 ; 7.75773239
2002-04-02 07:30:00; 0.106927723 ; 7.75564623
2002-05-02 18:00:00; 0.106906965 ; 7.75356340
2002-06-02 04:30:00; 0.106886245 ; 7.75148487
2002-07-02 15:00:00; 0.106865577 ; 7.74940968
2002-08-02 01:30:00; 0.106844939 ; 7.74733829
2002-09-01 12:00:00; 0.106824346 ; 7.74527073
2002-10-01 22:30:00; 0.106803805 ; 7.74320698
2002-11-01 09:00:00; 0.106783293 ; 7.74114656
2002-12-01 19:30:00; 0.106762826 ; 7.73909044
2003-01-01 06:00:00; 0.106742412 ; 7.73703766
2003-01-31 16:30:00; 0.106722027 ; 7.73498869
2003-03-03 03:00:00; 0.106701672 ; 7.73294353
2003-04-02 13:30:00; 0.106681362 ; 7.73090172
2003-05-03 00:00:00; 0.106661096 ; 7.72886372
2003-06-02 10:30:00; 0.106640868 ; 7.72682905
2003-07-02 21:00:00; 0.106620684 ; 7.72479868
2003-08-02 07:30:00; 0.106600530 ; 7.72277164
2003-09-01 18:00:00; 0.106580429 ; 7.72074842
2003-10-02 04:30:00; 0.106560379 ; 7.71872854
2003-11-01 15:00:00; 0.106540360 ; 7.71671247
2003-12-02 01:30:00; 0.106520385 ; 7.71470022
2004-01-01 12:00:00; 0.106500454 ; 7.71269131
2004-01-31 22:30:00; 0.106480554 ; 7.71068621
2004-03-02 09:00:00; 0.106460683 ; 7.70868492
2004-04-01 19:30:00; 0.106440872 ; 7.70668697
2004-05-02 06:00:00; 0.106421098 ; 7.70469284
2004-06-01 16:30:00; 0.106401354 ; 7.70270205
2004-07-02 03:00:00; 0.106381670 ; 7.70071459
2004-08-01 13:30:00; 0.106362000 ; 7.69873095
2004-09-01 00:00:00; 0.106342375 ; 7.69675112
2004-10-01 10:30:00; 0.106322788 ; 7.69477463
2004-10-31 21:00:00; 0.106303252 ; 7.69280148
2004-12-01 07:30:00; 0.106283754 ; 7.69083214
2004-12-31 18:00:00; 0.106264293 ; 7.68886614
2005-01-31 04:30:00; 0.106244862 ; 7.68690348
2005-03-02 15:00:00; 0.106225483 ; 7.68494463
2005-04-02 01:30:00; 0.106206134 ; 7.68298960
2005-05-02 12:00:00; 0.106186837 ; 7.68103790
2005-06-01 22:30:00; 0.106167577 ; 7.67908955
2005-07-02 09:00:00; 0.106148347 ; 7.67714500
2005-08-01 19:30:00; 0.106129155 ; 7.67520380
2005-09-01 06:00:00; 0.106110007 ; 7.67326593
2005-10-01 16:30:00; 0.106090896 ; 7.67133141
2005-11-01 03:00:00; 0.106071830 ; 7.66940022
2005-12-01 13:30:00; 0.106052786 ; 7.66747284
2006-01-01 00:00:00; 0.106033780 ; 7.66554880
2006-01-31 10:30:00; 0.106014825 ; 7.66362810
2006-03-02 21:00:00; 0.105995901 ; 7.66171074
2006-04-02 07:30:00; 0.105977021 ; 7.65979671
2006-05-02 18:00:00; 0.105958179 ; 7.65788651
2006-06-02 04:30:00; 0.105939366 ; 7.65597963
2006-07-02 15:00:00; 0.105920598 ; 7.65407610
2006-08-02 01:30:00; 0.105901852 ; 7.65217590
2006-09-01 12:00:00; 0.105883159 ; 7.65027905
2006-10-01 22:30:00; 0.105864502 ; 7.64838552
2006-11-01 09:00:00; 0.105845869 ; 7.64649534
2006-12-01 19:30:00; 0.105827294 ; 7.64460897
2007-01-01 06:00:00; 0.105808750 ; 7.64272594
2007-01-31 16:30:00; 0.105790243 ; 7.64084625
2007-03-03 03:00:00; 0.105771750 ; 7.63896990
2007-04-02 13:30:00; 0.105753317 ; 7.63709688
2007-05-03 00:00:00; 0.105734915 ; 7.63522720
2007-06-02 10:30:00; 0.105716534 ; 7.63336086
2007-07-02 21:00:00; 0.105698206 ; 7.63149786
2007-08-02 07:30:00; 0.105679914 ; 7.62963820
2007-09-01 18:00:00; 0.105661646 ; 7.62778139
2007-10-02 04:30:00; 0.105643436 ; 7.62592793
2007-11-01 15:00:00; 0.105625242 ; 7.62407780
2007-12-02 01:30:00; 0.105607092 ; 7.62223101
2008-01-01 12:00:00; 0.105588973 ; 7.62038803
2008-01-31 22:30:00; 0.105570905 ; 7.61854839
2008-03-02 09:00:00; 0.105552875 ; 7.61671209
2008-04-01 19:30:00; 0.105534859 ; 7.61487913
2008-05-02 06:00:00; 0.105516881 ; 7.61304903
2008-06-01 16:30:00; 0.105498947 ; 7.61122227
2008-07-02 03:00:00; 0.105481051 ; 7.60939884
2008-08-01 13:30:00; 0.105463192 ; 7.60757875
2008-09-01 00:00:00; 0.105445363 ; 7.60576200
2008-10-01 10:30:00; 0.105427578 ; 7.60394812
2008-10-31 21:00:00; 0.105409816 ; 7.60213709
2008-12-01 07:30:00; 0.105392091 ; 7.60032940
2008-12-31 18:00:00; 0.105374396 ; 7.59852505
2009-01-31 04:30:00; 0.105356738 ; 7.59672403
2009-03-02 15:00:00; 0.105339125 ; 7.59492636
2009-04-02 01:30:00; 0.105321549 ; 7.59313154
2009-05-02 12:00:00; 0.105304003 ; 7.59134007
2009-06-01 22:30:00; 0.105286486 ; 7.58955193
2009-07-02 09:00:00; 0.105269007 ; 7.58776712
2009-08-01 19:30:00; 0.105251558 ; 7.58598518
2009-09-01 06:00:00; 0.105234146 ; 7.58420658
2009-10-01 16:30:00; 0.105216764 ; 7.58243132
2009-11-01 03:00:00; 0.105199426 ; 7.58065891
2009-12-01 13:30:00; 0.105182111 ; 7.57888937
2010-01-01 00:00:00; 0.105164841 ; 7.57712317
2010-01-31 10:30:00; 0.105147600 ; 7.57536030
2010-03-02 21:00:00; 0.105130389 ; 7.57360029
2010-04-02 07:30:00; 0.105113223 ; 7.57184362
2010-05-02 18:00:00; 0.105096087 ; 7.57009029
2010-06-02 04:30:00; 0.105078980 ; 7.56833982
2010-07-02 15:00:00; 0.105061911 ; 7.56659222
2010-08-02 01:30:00; 0.105044872 ; 7.56484795
2010-09-01 12:00:00; 0.105027854 ; 7.56310654
2010-10-01 22:30:00; 0.105010875 ; 7.56136847
2010-11-01 09:00:00; 0.104993932 ; 7.55963373
2010-12-01 19:30:00; 0.104977034 ; 7.55790138
2011-01-01 06:00:00; 0.104960173 ; 7.55617237
2011-01-31 16:30:00; 0.104943335 ; 7.55444670
2011-03-03 03:00:00; 0.104926519 ; 7.55272388
2011-04-02 13:30:00; 0.104909748 ; 7.55100441
2011-05-03 00:00:00; 0.104892999 ; 7.54928732
2011-06-02 10:30:00; 0.104876295 ; 7.54757357
2011-07-02 21:00:00; 0.104859620 ; 7.54586315
2011-08-02 07:30:00; 0.104842976 ; 7.54415560
2011-09-01 18:00:00; 0.104826376 ; 7.54245090
2011-10-02 04:30:00; 0.104809791 ; 7.54074907
2011-11-01 15:00:00; 0.104793243 ; 7.53905058
2011-12-02 01:30:00; 0.104776733 ; 7.53735495
2012-01-01 12:00:00; 0.104760259 ; 7.53566217
2012-01-31 22:30:00; 0.104743809 ; 7.53397274
2012-03-02 09:00:00; 0.104727387 ; 7.53228617
2012-04-01 19:30:00; 0.104711004 ; 7.53060293
2012-05-02 06:00:00; 0.104694657 ; 7.52892208
2012-06-01 16:30:00; 0.104678333 ; 7.52724457
2012-07-02 03:00:00; 0.104662046 ; 7.52556992
2012-08-01 13:30:00; 0.104645774 ; 7.52389812
2012-09-01 00:00:00; 0.104629546 ; 7.52222919
2012-10-01 10:30:00; 0.104613349 ; 7.52056360
2012-10-31 21:00:00; 0.104597181 ; 7.51890039
2012-12-01 07:30:00; 0.104581043 ; 7.51724052
2012-12-31 18:00:00; 0.104564942 ; 7.51558352
2013-01-31 04:30:00; 0.104548879 ; 7.51392937
2013-03-02 15:00:00; 0.104532845 ; 7.51227808
2013-04-02 01:30:00; 0.104516841 ; 7.51063013
2013-05-02 12:00:00; 0.104500860 ; 7.50898457
2013-06-01 22:30:00; 0.104484908 ; 7.50734234
2013-07-02 09:00:00; 0.104468994 ; 7.50570250
2013-08-01 19:30:00; 0.104453117 ; 7.50406551
2013-09-01 06:00:00; 0.104437262 ; 7.50243187
2013-10-01 16:30:00; 0.104421437 ; 7.50080061
2013-11-01 03:00:00; 0.104405642 ; 7.49917269
2013-12-01 13:30:00; 0.104389884 ; 7.49754715
2014-01-01 00:00:00; 0.104374141 ; 7.49592495
2014-01-31 10:30:00; 0.104358442 ; 7.49430561
2014-03-02 21:00:00; 0.104342774 ; 7.49268866
2014-04-02 07:30:00; 0.104327142 ; 7.49107504
2014-05-02 18:00:00; 0.104311533 ; 7.48946381
2014-06-02 04:30:00; 0.104295954 ; 7.48785543
2014-07-02 15:00:00; 0.104280397 ; 7.48624992
2014-08-02 01:30:00; 0.104264885 ; 7.48464727
2014-09-01 12:00:00; 0.104249388 ; 7.48304796
2014-10-01 22:30:00; 0.104233935 ; 7.48145103
2014-11-01 09:00:00; 0.104218505 ; 7.47985697
2014-12-01 19:30:00; 0.104203105 ; 7.47826576
2015-01-01 06:00:00; 0.104187727 ; 7.47667742
2015-01-31 16:30:00; 0.104172379 ; 7.47509146
2015-03-03 03:00:00; 0.104157075 ; 7.47350883
2015-04-02 13:30:00; 0.104141794 ; 7.47192860
2015-05-03 00:00:00; 0.104126535 ; 7.47035122
2015-06-02 10:30:00; 0.104111314 ; 7.46877670
2015-07-02 21:00:00; 0.104096115 ; 7.46720505
2015-08-02 07:30:00; 0.104080953 ; 7.46563578
2015-09-01 18:00:00; 0.104065813 ; 7.46406937
2015-10-02 04:30:00; 0.104050711 ; 7.46250582
2015-11-01 15:00:00; 0.104035631 ; 7.46094513
2015-12-02 01:30:00; 0.104020596 ; 7.45938683
2016-01-01 12:00:00; 0.104005575 ; 7.45783186
2016-01-31 22:30:00; 0.103990585 ; 7.45627928
2016-03-02 09:00:00; 0.103975616 ; 7.45472908
2016-04-01 19:30:00; 0.103960678 ; 7.45318174
2016-05-02 06:00:00; 0.103945777 ; 7.45163727
2016-06-01 16:30:00; 0.103930905 ; 7.45009565
2016-07-02 03:00:00; 0.103916042 ; 7.44855642
2016-08-01 13:30:00; 0.103901222 ; 7.44702005
2016-09-01 00:00:00; 0.103886433 ; 7.44548607
2016-10-01 10:30:00; 0.103871673 ; 7.44395494
2016-10-31 21:00:00; 0.103856929 ; 7.44242668
2016-12-01 07:30:00; 0.103842221 ; 7.44090080
2016-12-31 18:00:00; 0.103827536 ; 7.43937778
-7.00000000
0.412552953
0
0
0
115
184
262
171
165
125
0
0
0
0
0
0
115
184
262
171
165
125
0
0
0
0
0
0
84
167
224
218
175
119
0
0
0
0
0
0
69
161
204
220
214
125
0
0
0
0
0
0
104
137
171
235
216
139
0
0
0
0
0
0
79
198
250
197
179
118
0
0
0
0
0
0
39
135
222
234
172
132
0
0
0
0
0
0
34
142
280
196
173
137
0
0
0
0
0
0
62
149
200
203
207
148
0
0
0
0
0
0
80
157
213
235
202
138
0
0
0
0
0
0
60
146
213
256
188
137
0
0
0
0
0
0
48
158
205
218
211
102
0
0
0
0
0
0
86
150
228
224
200
120
0
0
0
0
0
0
14
117
172
239
206
155
0
0
0
0
0
0
85
168
215
226
198
135
0
0
0
0
0
0
115
148
238
228
206
121
0
0
0
0
0
0
114
149
203
242
198
119
0
0
0
0
0
0
74
123
232
245
158
116
0
0
0
0
0
0
74
116
201
197
237
129
0
0
0
0
0
0
46
113
196
209
208
133
0
0
0
0
0
0
76
160
207
256
183
114
0
0
0
0
0
0
82
168
248
218
158
123
0
0
0
0
0
0
50
146
224
246
144
98
0
0
0
0
0
0
51
153
231
210
168
130
0
0
0
0
0
0
86
173
269
214
155
95
0
0
0
0
0
0
116
136
259
187
144
128
0
0
0
0
0
0
85
185
212
241
177
118
0
0
0
0
0
0
73
123
166
277
156
110
0
0
0
0
0
0
108
164
226
240
168
107
0
0
0
0
0
0
46
177
211
204
203
150
0
0
0
0
0
0
88
157
195
242
189
134
0
0
0
0
0
0
66
183
226
230
208
131
0
0
0
0
0
0
74
150
221
250
196
110
0
0
0
0
0
0
73
210
229
196
171
125
0
0
0
0
0
0
128
144
219
221
189
113
0
0
0
0
0
0
137
154
241
181
161
98
0
0
0
0
0
0
84
172
265
162
156
93
0
0
0
0
0
0
55
154
234
230
155
109
0
0
0
0
0
0
80
157
248
230
166
106
0
0
0
0
0
0
59
143
179
237
159
100
0
0
0
0
0
0
57
166
234
239
188
99
0
0
0
0
0
0
67
164
248
235
184
109
0
0
0
0
0
0
108
125
246
231
192
111
0
0
0
0
0
0
88
157
233
236
179
105
0
0
0
\ No newline at end of file
12
8
38
29
26
7
45
5
62
15
24
40
12
8
38
29
26
7
45
5
62
15
24
40
74
4
12
24
26
27
42
55
81
2
23
59
6
51
37
90
50
106
100
45
100
3
72
45
40
4
0
48
66
149
26
29
42
33
2
57
41
76
36
34
1
6
32
31
19
20
25
33
51
15
32
67
68
34
55
46
27
28
49
60
47
52
53
70
45
15
117
6
22
42
105
100
56
40
75
53
56
35
80
69
0
2
10
92
60
38
28
37
68
39
74
27
0
47
34
48
13
1
15
80
82
60
27
48
19
41
44
44
67
69
12
23
50
76
49
7
77
3
32
47
95
45
1
20
50
66
42
1
38
23
30
76
103
32
47
82
51
197
13
33
43
9
39
86
32
40
33
30
15
118
86
17
54
10
78
84
32
38
16
42
41
56
58
0
43
42
58
43
48
32
22
27
40
88
57
8
70
36
65
50
39
35
44
29
124
63
0
50
40
52
26
47
57
57
35
45
104
79
112
3
1
39
77
23
45
47
24
73
123
58
116
65
48
25
7
80
55
38
71
45
39
51
2
6
7
11
73
63
84
24
37
74
25
54
9
79
71
27
65
87
8
30
40
55
93
30
7
84
128
41
3
122
48
42
45
53
46
60
130
117
75
115
22
37
17
50
31
10
30
27
22
20
75
115
22
37
38
88
26
2
63
9
53
41
14
16
78
79
27
12
28
40
16
84
35
16
14
53
22
60
28
67
61
80
1222
129
1
60
64
25
25
36
52
41
50
61
5
59
5
41
79
24
106
125
5
94
53
22
7
52
164
35
36
119
41
48
118
161
36
23
50
101
64
89
19
65
44
67
79
47
68
29
41
125
79
35
37
50
73
71
37
61
33
24
67
103
14
49
0
54
40
58
71
35
27
20
4
30
16
15
41
56
52
12
36
19
78
49
53
38
58
3
21
36
44
31
53
35
105
13
37
24
92
14
39
30
30
16
11.5
10.9
9.5
42
72
14
88
5
67
45.5
40
0
30
20.5
2
56
71
121.5
31
59.5
69.5
73
46.5
49
75
55
21.8
19
68.1
25.5
27.8
93
0
45
46.5
37
109
11
51
12
11
13.5
27
59.5
94
150
10
15.5
98
9.8
27.1
59
59.3
25
27.8
5
69
19
0
66
74.9
17.3
27.1
100
46.5
83
17.8
4.1
0.8
43.3
77.3
35
86.7
56.8
52.3
29.6
115
27.9
71
7
53.2
20.4
34.6
32.4
16.6
38.6
32.2
74.8
39.6
42.6
23.2
9.2
6
44.4
47.2
67.2
\ No newline at end of file
......@@ -4,88 +4,72 @@ program nonlin
! ----------------------------------------------- Variables -----------------------------------------------------------
! общие переменные
integer :: i,j !< count
integer, parameter :: N = 5 ! количество элементов сетки 1
integer, parameter :: M = 5 ! количество элементов сетки 2
logical :: odn = .false. !false
integer, parameter :: N = 10 ! количество элементов сетки 1
integer, parameter :: M = 75 ! количество элементов сетки 2
! Величины для шага по сетке
integer, parameter :: a = 12 ! коэффициент сгущения сетки
real :: E(N) ! интерполяция
real :: z(N) ! Уровень сетки 1 (глубина)
real :: x(N) ! Значение аргумента, промежуточное значение уровня сетки, аналог x(i-1/2) в статье
real :: h(N) ! Шаг сетки 1
real :: t(M) ! Уровень сетки 2 (время)
real :: dt = 1. ! Шаг сетки 2
real :: z(0:N) ! Уровень сетки 1 (глубина)
real :: zh(0:N+1) ! Значение аргумента, промежуточное значение уровня сетки, аналог x(i-1/2) в статье
integer :: t ! Уровень сетки 2 (время)
real :: dt = 10. ! Шаг сетки 2 (Шаг по времени)
real :: h (N+1) ! Шаг сетки 1 (общий вид)
real :: dz (N+1) ! Шаг сетки 1 (основной шаг)
real :: dzh(N+1) ! Шаг сетки 1 (промежуточный шаг)
! Внешняя функция, и её усреднение
real :: Cor(N)!Cor(2:N-1) ! Оригинальное значение поступающей функции
real :: c0 = 3. ! начальное значение функции
real :: w = 0.05 ! const функции
real :: Cr1(N) ! Среднее значение функции (функция разбивается на небольшие интервалы)
real :: InCor ! Интеграл от поступающей из вне функции
real :: U ! Оригинальное значение поступающей функции
real :: c0 = 0.3 ! начальное значение функции
real :: w = 0.00005 ! const функции
real(kind = 8) :: Us(0:N) ! Среднее значение функции (функция разбивается на небольшие интервалы)
real(kind = 8) :: InU ! Интеграл от поступающей из вне функции
real(kind = 8) :: Flux(0:N)
real(kind = 8) :: C(0:N)
real :: Ct(M,N) ! Функция от времени
! Коэффициенты для финального вычисления, вычисления реконструкции слева и справа
real :: M10(2:N-1), M10p1(2:N-1), M10p2(2:N-1) ! Коэффициент С10 и его составляющие
real :: M11(2:N-1), M11p1(2:N-1), M11p2(2:N-1) ! Коэффициент С11 и его составляющие
real :: M12(2:N-1), M12p1(2:N-1), M12p2(2:N-1) ! Коэффициент С12 и его составляющие
real :: M10(2:N), M10p1(2:N), M10p2(2:N) ! Коэффициент С10 и его составляющие
real :: M11(2:N), M11p1(2:N), M11p2(2:N) ! Коэффициент С11 и его составляющие
real :: M12(2:N), M12p1(2:N), M12p2(2:N) ! Коэффициент С12 и его составляющие
real :: M00p1(N-2), M00p2(N-2), M00(N-2) ! Коэффициент С00 и его составляющие
real :: M01p1(N-2), M01p2(N-2), M01(N-2) ! Коэффициент С01 и его составляющие
real :: M02p1(N-2), M02p2(N-2), M02(N-2) ! Коэффициент С02 и его составляющие
real :: M00p1(N-1), M00p2(N-1), M00(N-1) ! Коэффициент С00 и его составляющие
real :: M01p1(N-1), M01p2(N-1), M01(N-1) ! Коэффициент С01 и его составляющие
real :: M02p1(N-1), M02p2(N-1), M02(N-1) ! Коэффициент С02 и его составляющие
! Финальное вычисление, реконструкция слева и справа
real :: CzL(2:N-1), CzR(1:N-2) ! Реконструкция слева и справа
real :: Cz(2:N) ! Универсальная реконструкция
! ----------------------------------------------- Main programm -------------------------------------------------------
! ---- initial value ----
t = 1.
Ct = 0.
! ---- Вычисление аргумента сетки, шага по сетке ----
if (odn .eqv. .true.) then ! ---- Случай однородной сетки ----
z(1) = 1.
! ---- Initial value ----
z = 0.
zh = 0.
h = 0.
h(:) = 1.
do i = 2, N
z(i) = z(i-1) + h(i)
end do
t = 0
else ! ---- Неоднородная сетка ----
InU = 0.
U = 0.
Us(:) = 0.
Cz(:) = 0.
E = (/0.1,0.2,0.3,0.4,0.5/)!,0.6,0.7,0.8,0.9,1.,1.1/)
! ---- Вычисление аргумента сетки, шага по сетке ----
z(:) = (/0.,1.,2.,3.,4.,5.,6.,7.,8.,9.,10./)
do i = 1, N
!E(i) = (i - 1.)/(N - 1.)*1.0
z(i) = ((1 + a)**E(i) - 1.)/a
z(i) = (i/5.)**2
zh(i) = (z(i-1) + z(i))/2
end do
zh(0) = z(0) !=0
zh(N+1) = z(N)
h(1) = z(1)
dzh(1) = abs(zh(1) - z(0))
do i = 2, N
h(i) = z(i) - z(i-1)
dzh(i) = abs(zh(i) - zh(i-1))
end do
dzh(N+1) = abs(z(N) - zh(N))
end if
h(:) = dzh(:)
x(1) = z(1)/2.
do i = 2, N
x(i) = (z(i) + z(i-1))/2
Cor(i) = C0*(x(i) - w)
end do
! ---- Вычисление среднего значения поступающей на вход функции Cor(x,t) в ячейке с номером i, ----
!! На выход Cr1(N-1)
do i = 2, N-1
InCor = InCor + Cor(i)*0.5*(x(i+1) - x(i-1)) !Функция Cor(i) интегрируется в пределах x(i-1) и x(i)
end do
do i = 1, N
Cr1(i) = 1./h(i)*InCor
end do
! ---- Вычисление коэффициентов при значениях среднего значения функции C(x,t)
do i = 2, N-1
! Вычисление коэффициентов при значениях среднего значения функции C(zh,t)
do i = 2, N !M10, M11, M12
M10p1(i) = -h(i)*h(i+1)
M10p2(i) = (h(i) + h(i-1))*(h(i) + h(i-1) + h(i+1))
M10(i) = M10p1(i)/M10p2(i)
......@@ -99,7 +83,7 @@ program nonlin
M12(i) = M12p1(i)/M12p2(i)
end do
do i = 1, N-2
do i = 1, N-1 !M00, M01, M02
M00p1(i) = h(i+1)*(h(i+1) + h(i+2))
M00p2(i) = (h(i) + h(i+1) + h(i+2))*(h(i) + h(i+1))
M00(i) = M00p1(i)/M00p2(i)
......@@ -113,105 +97,52 @@ program nonlin
M02(i) = M02p1(i)/M02p2(i)
end do
! ---- Реконструкция ----
do i = 2, N-1
CzL(i) = M10(i)*Cr1(i-1) + M11(i)*Cr1(i) + M12(i)*Cr1(i+1) ! Слева
do i = 1, N
U = C0*(100.*zh(i) - w*t)
InU = U*0.5*(zh(i+1) - zh(i-1))
Us(i) = InU/h(i)
end do
C(:) = Us(:)
! Начало большого цикла по времени
do j = 1, M
do i = 1, N-2
CzR(i) = M00(i)*Cr1(i) + M01(i)*Cr1(i+1) + M02(i)*Cr1(i+2) ! Справа
t = t + dt
print*, 't = ', t
do i = 1, N
U = C0*(100.*zh(i) - w*t)
InU = U*0.5*(zh(i+1) - zh(i-1))
Us(i) = InU/h(i)
end do
! ---- учет диффиренцирования по времени ----
do j = 2, M
Ct(j,2) = (CzL(2))/h(i)*dt + Ct(j-1,2)
do i = 3, N-1
Ct(j,i) = (CzL(i) - CzL(i-1))/h(i)*dt + Ct(j-1,i)
Flux(0) = 0. !w*Us(0)*C0
Flux(1) = w*Us(1)*C0*h(1)/(2.*h(1)+h(2)) !/1000.
do i = 2, N
Cz(i) = M10(i)*C(i-2) + M11(i)*C(i-1) + M12(i)*C(i)
Flux(i) = Cz(i)*w*C0
end do
do i = 1, N
C(i) = C(i) + dt*(Flux(i) - Flux(i-1))/h(i)
! print*, dt*(Flux(i) - Flux(i-1))/h(i)
end do
do i = 1, N
!print*, i, Cz(i)
print*, i, Us(i), C(i)
write(530,*) t,';',Us(i),';', C(i)
end do
end do
print*, 'z: ', z
print*, 'zh:', zh
print*, 'h: ', h
!print*, 'M10:', M10
!print*, 'M11:', M11
!print*, 'M12:', M12
print*, 'x:', x
!print*, 'M01:', M01
!print*, 'M02:', M02
print*,'CzL', CzL
print*,'Ct(M,2)', Ct(M,2)
print*,'Ct(M,3)', Ct(M,3)
print*,'Ct(M,4)', Ct(M,4)
print*,'Ct(M,5)', Ct(M,5)
!print*,'Ct(M,1)', Ct(M,4)
!print*, 'InCor:', InCor
!print*, 'Cr1:', Cr1
end program nonlin
!MODULE MUSCL_MOD
!часть с use
! implicit none !некоторые переменные
!contains
! !> Function action_1 - implements MINMOD limiter after Roe (1986)
! FUNCTION action_1(a,b)
! implicit none
! real, intent(in) :: a, b
! real :: action_1
! action_1 = 0.5*(sign(1.,a) + sign(1.,b))*min(abs(a),abs(b))
! END FUNCTION action_1
!SUBROUTINE Non_lineare_grid(N,array)
!integer, intent(in) :: N !< Number of grid cells
!real, intent(in ) :: array(1:N) !< Grid variable to be interpolated
! do i = 1, N-1
! fun(i) = call(f, x(i)) !!!!
! call integral(x(i-1), x(i),n,intgr)
! srdzn(i) = intgr(i)/h(i)
! end do
!
! intgr = h(i)*(sum(fun) - (fun(0) + fun(n))/2 )
!
!
! function integral(x0,xn,n,f, intgr)
!
! implicit none
! integer, intent(in) :: n
! real, intent(in) :: x0, xn, f
! real :: hop, x(0:n), intgr
!
! hop = (xn - x0)/n
! x(0) = x0
! x(n) = xn
!
! do i = 1, N-1
! x(i) = x(i - 1) + hop
! fun(i) = call(f, x(i)) !!!!
! end do
!
! intgr = hop*(sum(fun) - (fun(0) + fun(n))/2 )
!
! end function integral
!END SUBROUTINE Non_lineare_grid
!END MODULE MUSCL_MOD
\ No newline at end of file
......@@ -29,7 +29,7 @@ model_data_paths = [
f'results/{carbon_model_type}/{station}_3.txt'
]
if station == 'DAO3' or 'DAO4':
if (station == 'DAO3') or (station == 'DAO4'):
model_data_paths = [
f'results/{carbon_model_type}/{station}_1.txt',
f'results/{carbon_model_type}/{station}_2.txt',
......@@ -37,7 +37,6 @@ if station == 'DAO3' or 'DAO4':
f'results/{carbon_model_type}/{station}_4.txt'
]
#if enviromental == station
obs_data_path = f'data/obs_data_{station}.csv'
#else
......@@ -48,17 +47,17 @@ pools = {'Csoil' : 'Почва',
'Csoilb': 'Почва типа b'
}
if carbon_model_type == 'ROTHC':
if (carbon_model_type == 'rothc'):
pools = {'CDPM': 'Разлагаемый растительный материал',
'CRPM': 'Устойчивый растительный материал',
'CBIO': 'Пул микробной биомассы',
'CHUM': 'Долгоживущий гумусовый пул'
}
elif carbon_model_type == 'SOCS':
elif (carbon_model_type == 'socs'):
pools = {'csoil1': 'Огранический углерод в почве',
'csoil2': 'Минерализованный углерод в почве'
}
elif carbon_model_type == 'another':
elif (carbon_model_type == 'other'):
pools = {'C1': 'Pool 1',
'C2': 'Pool 2'
}
......
......@@ -22,8 +22,8 @@ module carbon_model_to_core_arg_kit
integer, parameter :: nmonth = 12
integer, parameter :: year_min = 1937 !< предусмотренный диапазон лет
integer, parameter :: year_max = 2937 !<
integer, parameter :: year_min = 1900 !< предусмотренный диапазон лет
integer, parameter :: year_max = 2025 !<
! (44)*12 = 528 ! Для случая Rostov: 1974 - 2018
! (73)*12 = 876 ! Для случая DAO3: 1939 - 2012
......
......@@ -22,10 +22,10 @@ contains
subroutine carbon_model_assembly()
use environment_model_inmcm, only : nv2, vegg_nv2
!use environment_core, only : Tsoil
use const, only : yrs, umol2kg
use grid, only : ms
use environment_core, only : Tsoil
use environment_model_inmcm, only : nv2, vegg_nv2
integer :: n_Catm, n_Cveg, n_Csoil, n_Csoilb !< id пулов
integer :: n_F !< id потока
......@@ -34,8 +34,23 @@ contains
call set_pool(pid = n_Catm, name = 'catm' )
call set_pool(pid = n_Cveg, name = 'cveg' , alias = Cveg )
call set_pool(pid = n_Csoil, name = 'csoil' ,initial_value = 2.941372, alias = Csoil ) !8.730624 2.78124 2.806524 2.983512 2.941372
call set_pool(pid = n_Csoilb, name = 'csoilb' ,initial_value = 0.060028, alias = Csoilb ) !0.178176 0.05676 0.057276 0.060888 0.060028
call set_pool(pid = n_Csoil, name = 'csoil' ,initial_value = 8.730624, alias = Csoil )
call set_pool(pid = n_Csoilb, name = 'csoilb' ,initial_value = 0.178176, alias = Csoilb )
! station: opt: С1: С2:
! ROST 1 8.730624 0.178176
! VLDR 1 1.6583168 0.0338432
! TRGK 1 3.0351384 0.0619416
! 2 2.7901482 0.0569418
! 3 3.0351384 0.0619416
! DAO3 1 2.78124 0.05676
! 2 2.806524 0.057276
! 3 2.983512 0.060888
! 4 2.941372 0.060028
! DAO4 1 3.037706 0.061994
! 2 3.173926 0.064774
! 3 3.160304 0.064496
! 4 2.983218 0.060882
call set_flux(fid = n_F, pid_out = n_Csoil, pid_in = n_Catm, name = 'fmicr', alias = Fmicr)
call set_mult(n_F, 'lin', x_ijn = Csoil)
......
......@@ -2,35 +2,35 @@ module carbon_model_inmcm_aux
! интерфейс
! ----------------------------------------------- Use pack ------------------------------------------------------------
use environment_model_inmcm, only: nv2
use environment_core, only: Tsoil, Temp, Wsoil, lambd
use grid, only: date_c
use environment_core, only: Tsoil, Wsoil, lambd
use config, only: station_name, station_opt, carbon_model_type
use const, only: pi, yrs, nmonth
use const, only: yrs, pi, nmonth
use grid, only: date_c
use environment_model_inmcm, only: nv2
! ---------------------------------------------- Variables ------------------------------------------------------------
implicit none
! ---- Pools ----
! ------- Pools -------
real, dimension(:,:,:), pointer :: Catm !< атмосфера
real, dimension(:,:,:), pointer :: Cveg !< растительность
real, dimension(:,:,:), pointer :: Csoil !< почва
real, dimension(:,:,:), pointer :: Csoilb !< почва типа b
! ---- Flow ----
! ---- Flows ----
real, dimension(:,:,:), pointer :: Fmicr !< микробное дыхание
real, dimension(:,:,:), pointer :: Fmicrb !< микробное дыхание b
real, dimension(:,:,:), pointer :: Flit !< отмирание растений
real, dimension(:,:,:), pointer :: Fers !< почвенная эрозия
! ---- Constant from main program INMCM ----
real, parameter :: amrp(nv2) = (/0.5, 0.4000, 0.3864, 0.25, 0.25, 0.1250, 0.1700, 0.1909, 0.1909, 0.05, 0.05, 0.2273, 0.2273/) !< microbial respiration parameter, [umol co2/kg c/s]
real, parameter :: tmin(nv2) = (/ 5., 0., -2.5, -5., -5., 5., 0., -5., 0., 0., 0., 0., 0. /) !< minimum temperature for photosynthesis, [C]
real, parameter :: amrp(nv2) = (/0.5, 0.4000, 0.3864, 0.25, 0.25, 0.1250, 0.1700, 0.1909, 0.1909, 0.05, 0.05, 0.2273, 0.2273/)
!< microbial respiration parameter, [umol co2/kg c/s]
real, parameter :: tmin(nv2) = (/ 5., 0., -2.5, -5., -5., 5., 0., -5., 0., 0., 0., 0., 0. /)
!< minimum temperature for photosynthesis, [C]
real, parameter :: tmin_soil = 0. !< эквивалент label='fst'
real, parameter :: t_ref = 25. !< референсная температура для величин типа rmf25, kc25 и тд [C]
real, parameter :: t_ref_soil = 10. !< референсная температура для величин типа Ts [C]
real, parameter :: hint = 100. !< Depth above which the total (rswa) and average (rsw) soil moisture is calculated,! в модели изначально 200.
real, parameter :: hint = 100. !< Depth above which the total (rswa) and average (rsw) soil moisture is calculated,
! в модели изначально 200.
real, parameter :: cv81b = 50. !< Decomposition time, [year]
! ---- Landuse ----
real, parameter :: gt2year_to_kg2s = 1.e+12 / yrs
real, parameter :: defor0 = 1. * gt2year_to_kg2s
......
......@@ -20,10 +20,10 @@ module carbon_model_rothc
call set_pool(pid = n_Catm, name = 'catm')
call set_pool(pid = n_Cveg, name = 'cveg')
call set_pool(pid = n_CDPM, name = 'CDPM', initial_value = 0.012180579701505, alias = CDPM)
call set_pool(pid = n_CRPM, name = 'CRPM', initial_value = 0.3894608389488 , alias = CRPM)
call set_pool(pid = n_CBIO, name = 'CBIO', initial_value = 0.06696989650323 , alias = CBIO)
call set_pool(pid = n_CHUM, name = 'CHUM', initial_value = 2.5754859888393 , alias = CHUM)
call set_pool(pid = n_CDPM, name = 'CDPM', initial_value = 0.043915506788352, alias = CDPM)
call set_pool(pid = n_CRPM, name = 'CRPM', initial_value = 0.57587725621248 , alias = CRPM)
call set_pool(pid = n_CBIO, name = 'CBIO', initial_value = 0.20176158117888 , alias = CBIO)
call set_pool(pid = n_CHUM, name = 'CHUM', initial_value = 8.11102631424 , alias = CHUM)
! litterfall
call set_flux(fid = n_F, pid_out = n_Cveg, pid_in = n_CDPM, name = 'fdpm*lambdac')
......@@ -47,10 +47,11 @@ module carbon_model_rothc
! atmosphere fall
call set_flux(fid = n_F, pid_out = n_Catm, pid_in = n_CBIO, name = '(0.46*bettar)*Rs')
call set_mult(n_F, 'lin', x = Rs, k_ij = (0.46*bettar))
call set_mult(n_F, 'lin', x = Rs, k_ij = (0.46*bettar/100))
call set_flux(fid = n_F, pid_out = n_Catm, pid_in = n_CHUM, name = '(0.54*bettar)*Rs')
call set_mult(n_F, 'lin', x = Rs, k_ij = (0.54*bettar))
call set_mult(n_F, 'lin', x = Rs, k_ij = (0.54*bettar/100))
end subroutine carbon_model_assembly
......
module carbon_model_rothc_aux
use environment_core, only: Tsoil, Wsoil, veg, lambd, bettar, sw
use const, only: yrs, day2sec, pi, nmonth
use grid, only: date_c, i0, i1, j0, j1, ml
! интерфейс
! ----------------------------------------------- Use pack ------------------------------------------------------------
use environment_core, only: Tsoil, Wsoil, lambd, veg, sw, bettar
use config, only: station_name, station_opt, carbon_model_type
use const, only: yrs, pi, nmonth
use grid, only: date_c, i0, i1, j0, j1, ml
! ---------------------------------------------- Variables ------------------------------------------------------------
implicit none
! Интерфейс
! -------------------------------------------------------------------------------------------------------------------
! ------- Pools -------
real, dimension(:,:,:), pointer :: Catm !< атмосфера
real, dimension(:,:,:), pointer :: Cveg !< растительность
......@@ -15,7 +16,7 @@ implicit none
real, dimension(:,:,:), pointer :: CRPM !< устойчивый растительный материал / resistant plant material
real, dimension(:,:,:), pointer :: CBIO !< пул микробной биомассы / microbial biomass pool
real, dimension(:,:,:), pointer :: CHUM !< долгоживущий гумусовый пул / long lived humified pool
! ------- Flows n_Catm, n_Cveg, n_CDPM, n_CRPM, n_CBIO, n_CHUM -------
! ------- Flows -------
real, dimension(:,:,:), pointer :: litterfall1 !< Между растениями и почвой DPM
real, dimension(:,:,:), pointer :: litterfall2 !< Между растениеми и почвой RPM
real, dimension(:,:,:), pointer :: atmosphere1 !< Между атмосферой и почвой BIO
......@@ -45,10 +46,23 @@ implicit none
real, allocatable :: s0(:,:,:) !< Оптимальная влажность почвы, [dim]
real, allocatable :: smin(:,:,:) !< Переменные для функций, [dim]
! ------ Determined externally
!real :: bettar !< Fraction of soil respiration, [%] from 0 to 1
!real :: bettar(i0:i1,j0:j1) !< Fraction of soil respiration, [%] from 0 to 1
!real :: sw !< Влажность увядания
! ------ Initialization ------
real :: cs ! Сумма пулов
! ----- The topsoil moisture deficit -------
! real, allocatable :: TSMD(:,:) ! the topsoil moisture deficit
! real, allocatable :: rainfall(:,:) ! осадки (из внешних данных)
! real, allocatable :: Evpar(:,:) ! Evaporation
! real, allocatable :: evpar_part(:,:) ! 75% from evaporation
! real, allocatable :: moi_bal(:,:) ! rainfall - evaporation
! real, allocatable :: aTSMD(:,:) ! accumulated topsoil mositure deficit
! real :: b ! moisture coefficient
! integer :: mncX
! integer :: mnc = 528 ! Случай для Ростова
! real, allocatable :: in_rainfall(:)
! real, allocatable :: in_Evpar(:)
contains
subroutine carbon_model_init()
......@@ -58,6 +72,28 @@ contains
allocate(s0(i0:i1,j0:j1,ml))
allocate(smin(i0:i1,j0:j1,ml))
! init of TPMD
! allocate(TSMD(i0:i1,j0:j1))
! allocate(rainfall(i0:i1,j0:j1))
! allocate(Evpar(i0:i1,j0:j1))
! allocate(evpar_part(i0:i1,j0:j1))
! allocate(moi_bal(i0:i1,j0:j1))
! allocate(aTSMD(i0:i1,j0:j1))
! allocate(in_rainfall(0:mnc))
! allocate(in_Evpar(0:mnc))
! TSMD(:,:) = -(20. + 1.3*bettar(:,:) - 0.01*bettar(:,:)**2)
! open (unit = 1, file = 'initial_value/rainfall.txt', status='unknown')
! read(1,*) in_rainfall(1:mnc)
! close (1)
! open (unit = 1, file = 'initial_value/Evpar.txt', status='unknown')
! read(1,*) in_Evpar(1:mnc)
! close (1)
! mncX = 1
! main init part of Rothc
do i = 1, ml
s0 (:,:,i) = 0.5*(1. + sw(:,:))
smin(:,:,i) = 1.7*sw(:,:)
......@@ -80,21 +116,56 @@ contains
integer, intent(in) :: ii, jj
! ---- TPMD_calc_at_cell ----
! rainfall(ii,jj) = in_rainfall(mncX)
! Evpar(ii,jj) = in_Evpar(mncX)
! !rainfall(ii,jj) = 48.2
! !Evpar(ii,jj) = 81.8
! evpar_part(ii,jj) = 0.75*Evpar(ii,jj)
! moi_bal(ii,jj) = rainfall(ii,jj) - evpar_part(ii,jj)
! if (moi_bal(ii,jj) < 0. .or. aTSMD(ii,jj) < 0.) then
! aTSMD(ii,jj) = moi_bal(ii,jj) + aTSMD(ii,jj)
! if (aTSMD(ii,jj) < TSMD(ii,jj)) aTSMD(ii,jj) = TSMD(ii,jj)
! if (aTSMD(ii,jj) > 0.) aTSMD(ii,jj) = 0.
! end if
! if (aTSMD(ii,jj) > 0.444*TSMD(ii,jj)) then
! b = 1.0
! else
! b = 0.2 + (1.0 - 0.2)*(TSMD(ii,jj) - aTSMD(ii,jj))/(TSMD(ii,jj) - 0.444*TSMD(ii,jj))
! end if
! mncX = mncX + 1
! --------------
! main part of rothc_calc_at_cell
! Tsoil(ii,jj,1) = 10.2
! Wsoil(ii,jj,1) = 0.355704637
! if (Tsoil(ii,jj,1) <= 0.) then ! Если влажность зануляется при отрицательной температуре
! Wsoil(ii,jj,1) = 0.
! s0(ii,jj,1) = 0.
! end if
if (Wsoil(ii,jj,1) >= s0(ii,jj,1)) then
Fs = 1 - 0.8*(Wsoil(ii,jj,1) - s0(ii,jj,1))
Fs = 1. - 0.8*(Wsoil(ii,jj,1) - s0(ii,jj,1))
else if (smin(ii,jj,1) < Wsoil(ii,jj,1) .and. Wsoil(ii,jj,1) < s0(ii,jj,1)) then
Fs = 0.2 + 0.8*(Wsoil(ii,jj,1) - smin(ii,jj,1))/(s0(ii,jj,1) - smin(ii,jj,1))
else if (Wsoil(ii,jj,1) <= smin(ii,jj,1)) then
Fs = 0.2
end if
! Fs = b
if (Tsoil(ii,jj,1) >= -18.27) then
Ft = 47.91/(1 + exp(106.06/(Tsoil(ii,jj,1) + 18.27)))
Ft = 47.91/(1. + exp(106.06/(Tsoil(ii,jj,1) + 18.27)))
else
Ft = 0
end if
Fv = 0.6 + 0.4*(1 - veg(ii,jj))
Fv = 0.6 + 0.4*(1. - veg(ii,jj))
RDPM = Ft*Fv*Fs*ks(1)*CDPM(ii,jj,1)
RRPM = Ft*Fv*Fs*ks(2)*CRPM(ii,jj,1)
......
......@@ -25,24 +25,40 @@ module carbon_model_socs
call set_pool(pid = n_Catm, name = 'catm')
call set_pool(pid = n_Cveg, name = 'cveg')
call set_pool(pid = n_Csoil1, name = 'csoil1',initial_value = 0.060028, alias = C1) !0.056761
call set_pool(pid = n_Csoil2, name = 'csoil2',initial_value = 2.941372, alias = C2) !2.78124
call set_pool(pid = n_Csoil1, name = 'csoil1',initial_value = 0.178176, alias = C1)
call set_pool(pid = n_Csoil2, name = 'csoil2',initial_value = 8.730624, alias = C2)
! station: opt: С1: С2:
! ROST 1 0.178176 8.730624
! VLDR 1 0.0338432 1.6583168
! TRGK 1 0.0619416 3.0351384
! 2 0.0569418 2.7901482
! 3 0.0619416 3.0351384
! DAO3 1 0.05676 2.78124
! 2 0.057276 2.806524
! 3 0.060888 2.983512
! 4 0.060028 2.941372
! DAO4 1 0.061994 3.037706
! 2 0.064774 3.173926
! 3 0.064496 3.160304
! 4 0.060882 2.983218
call set_flux(fid = n_F, pid_out = n_Cveg, pid_in = n_Csoil1, name = 'litterfall')
call set_mult(n_F, 'lin', x_ij = lambd)
call set_flux(fid = n_F, pid_out = n_Csoil2, pid_in = n_Csoil1, name = 'destabilization')
call set_mult(n_F, 'lin', x_ijn = C2, k_ij = kd)
call set_mult(n_F, 'lin', x_ijn = C2)
call set_mult(n_F, 'lin', x = kd)
call set_flux(fid = n_F, pid_out = n_Csoil1, pid_in = n_Csoil2, name = 'mineralization')
call set_mult(n_F, 'lin', x_ijn = C2, k = -1./Cm, y0 = 1.)
call set_mult(n_F, 'const', c = rare)
call set_mult(n_F, 'const', c = kirk)
call set_mult(n_F, 'lin', x = kirk)
call set_mult(n_F, 'lin', x_ijn = C1)
call set_flux(fid = n_F, pid_out = n_Csoil1, pid_in = n_Catm, name = 'microbal_respiration')
call set_mult(n_F, 'lin', x_ijn = C1, k = (1.-rare))
call set_mult(n_F, 'const', c = kirk)
call set_mult(n_F, 'lin', x = kirk)
end subroutine carbon_model_assembly
......
......@@ -2,10 +2,10 @@ module carbon_model_socs_aux
! интерфейс
! ----------------------------------------------- Use pack ------------------------------------------------------------
use environment_core, only: kd, lambd
use environment_core, only: Tsoil, Wsoil, lambd, sw, kd
use config, only: station_name, station_opt, carbon_model_type
use const, only: yrs
use grid, only : date_c
use config, only : station_name, station_opt
use grid, only: date_c, i0, i1, j0, j1, ml
! ---------------------------------------------- Variables ------------------------------------------------------------
implicit none
......@@ -21,16 +21,31 @@ implicit none
real, dimension(:,:,:), pointer :: F_destabilization !< Между почвой2 и почвой1 (дестабилизация?)
! ------- Serve value -------
integer, parameter :: ntiles = 2 !< В данном случае, количество пулов
! ------- Functions ------------
real :: Ft, Fs !< Функции: температуры, влажности [dim]
! ------ Climate variables --------
! ------ Determined within
real, allocatable :: s0(:,:,:) !< Оптимальная влажность почвы, [dim]
real, allocatable :: smin(:,:,:) !< Переменные для функций, [dim]
! ------- Coefficients ------------
real :: rare = 0.45 !< Доля углерода переходящего в пул защищенного C1
real :: Cm = 12. !< Max кол-во органического углерода которое может быть защищено в почве
real :: kirk = 4./yrs !< Коэф. скорости разложения C1
real :: kirk = 0. !< Коэф. скорости разложения C1
!real :: kd !< Коэф. перехода углерода из C2 в C1, десорбация, разрушение агрегатов
contains
subroutine carbon_model_init()
integer :: i !< count
allocate(s0(i0:i1,j0:j1,ml))
allocate(smin(i0:i1,j0:j1,ml))
do i = 1, ml
s0 (:,:,i) = 0.5*(1. + sw(:,:))
smin(:,:,i) = 1.7*sw(:,:)
end do
end subroutine
......@@ -56,6 +71,31 @@ contains
integer, intent(in) :: ii, jj, nn
if (Wsoil(ii,jj,1) >= s0(ii,jj,1)) then
Fs = 1. - 0.8*(Wsoil(ii,jj,1) - s0(ii,jj,1))
else if (smin(ii,jj,1) < Wsoil(ii,jj,1) .and. Wsoil(ii,jj,1) < s0(ii,jj,1)) then
Fs = 0.2 + 0.8*(Wsoil(ii,jj,1) - smin(ii,jj,1))/(s0(ii,jj,1) - smin(ii,jj,1))
else if (Wsoil(ii,jj,1) <= smin(ii,jj,1)) then
Fs = 0.2
end if
if (Tsoil(ii,jj,1) >= -18.27) then
Ft = 47.91/(1. + exp(106.06/(Tsoil(ii,jj,1) + 18.27)))
else
Ft = 0
end if
!print*, 4./yrs
!kirk = Ft*Fs*7.5/yrs
kirk = Ft*Fs*7.5/yrs
!print*, kirk
!kd = Ft*0.008/yrs
!kd = Ft*Fs*0.0235/yrs
!kd = 0.007/yrs !0.012 007
!print*, kd
!print*, 0.035/yrs
end subroutine
......@@ -64,7 +104,7 @@ contains
use grid, only : date_c
open(unit=500, file='results/'//trim(station_name)//'_'//trim(station_opt)//'.txt', status='unknown')
open(unit=500, file='results/'//trim(carbon_model_type)//'/'//trim(station_name)//'_'//trim(station_opt)//'.txt', status='unknown')
write(500,*) date_c%timestamp,';',C1(:,:,1),';',C2(:,:,1)
end subroutine
......
module environment_data_station
! интерфейс
! ---------------------------------------------------------------------------------
! ----------------------------------------------- Use pack ------------------------------------------------------------
use environment_core, only: Temp, e, Rlwd, Rswd, p, pr, Wind, ra, Tsrf, Tsoil, Wsoil, Isoil, snow, Tgr, &
& sw, bettar, kd, veg, lambd, rhodry, g2gw_to_cmw
use grid, only: date_c, date_fst, date_lst, dt, i0, i1, j0, j1, ml, ms,dz
use config, only: station_name, station_opt
use const, only: yrs, nmonth, pi
! ---------------------------------------------- Variables ------------------------------------------------------------
implicit none
private
......@@ -17,40 +15,37 @@ module environment_data_station
public :: environment_data_calc_at_timestep
public :: environment_data_calc_at_cell
public :: environment_data_calc_at_tile
! -------------------------------------------------------------------------------------------------------------------
! ---------------------------------------------------------------------------------------------------------------------
! ------- Serve value -------
integer :: mnc !< Количество месяцев в расчете
integer :: mncX = 0 !< Номер месяца с начала работы программы !Как часть параметров для шага по времени
integer :: mncX = 0 !< Номер месяца с начала работы программы
integer, parameter :: station_max = 5 !< Максимальное число станций
integer :: opt_n !< Номер способа подачи удобрения
integer, parameter :: opt_max = 4 !< Максимальное количество способов подачи удобрения
! DAO4 DAO3 TRGK VLDR ROST
integer :: station_n! 1 2 3 4 5 !< Номер станции наблюдения за климатом
integer :: mnclot_fst(station_max) = (/1937,1939,1956,1968,1974/) !< Даты начала сбора данных по климату в рамках станции
integer :: mnclot_lst(station_max) = (/2012,2012,2018,2018,2018/) !< Даты конца сбора данных по климату в рамках станции
! -------------------------------------------------------------------------------------------------------------------
! ------ Determined externally
real, allocatable :: in_temp(:) !< Поступление извне данных cредней температуры воздуха в месяц, [Celsius]
real, allocatable :: in_veg(:) !< Поступление извне данных средней концентрации растений в месяц, [%]
real, allocatable :: in_wsoil(:) !< Поступление извне данных влажности почвы, [dim]
real, allocatable :: in_lambd(:) !< Поступление извне данных по поступлению углерода в почву, [kg/m**3 / year]
integer :: opt_n !< Номер способа подачи удобрения
integer :: station_n ! DAO4 DAO3 TRGK VLDR ROST !< Номер станции наблюдения за климатом
! 1 2 3 4 5
integer :: mnclot_fst(station_max) = (/1937,1939,1956,1968,1974/) !< Даты начала сбора данных по климату, в рамках станции
integer :: mnclot_lst(station_max) = (/2012,2012,2018,2018,2018/) !< Даты конца сбора данных по климату, в рамках станции
! ---------------------------------------------------------------------------------------------------------------------
! ------ Determined externally ------
real(kind = 16), allocatable :: in_temp (:) !< Поступление извне данных cредней температуры воздуха в месяц, [Celsius]
real(kind = 16), allocatable :: in_veg (:) !< Поступление извне данных средней концентрации растений в месяц, [%]
real(kind = 16), allocatable :: in_wsoil(:) !< Поступление извне данных влажности почвы, [dim]
real(kind = 16), allocatable :: in_lambd(:) !< Поступление извне данных по поступлению углерода в почву, [kg/m**3 / year]
! station = DAO4 DAO3 TRGK VLDR ROST
! ---- For INMCM ----
real :: rhodry_in(station_max) = (/1.26, 1.26, 1.23, 1.30, 2.62/)
! 1.0 1.0 1.28
real(kind = 16) :: rhodry_in(station_max) = (/1.26, 1.26, 1.23, 1.30, 1.28/)
! 2.62
! ---- For Rothc ----
real :: sw_in (station_max) = (/0.120, 0.120, 0.120, 0.120, 0.146/)
real :: bettar_in(station_max) = (/0.25, 0.25, 0.07, 0.08, 0.41/)
real(kind = 16) :: sw_in (station_max) = (/0.120, 0.120, 0.120, 0.120, 0.146/)
real(kind = 16) :: bettar_in(station_max) = (/25., 25., 7., 8., 41./)
! ---- For SOCs ----
real :: kd_in (station_max,opt_max)
! opt = 1 2 3 4
data kd_in(01,:) /0.03, 0.03, 0.035, 0.03/
data kd_in(02,:) /0.03, 0.03, 0.035, 0.03/
data kd_in(03,:) /0., 0., 0., 0./
data kd_in(04,:) /0., 0., 0., 0./
data kd_in(03,:) /0., 0., 0., 0./ !0.015, 0.008, 0.008, 0.
data kd_in(04,:) /0., 0., 0., 0./ !0.015, 0.008, 0.008, 0.
data kd_in(05,:) /0.012, 0.007, 0.007, 0./
contains
......@@ -61,8 +56,9 @@ contains
subroutine environment_data_init()
use const, only : miss_v, rho_w
integer :: k !<count
! ---- Part of enviromental carbon_model_init() ----
mnc = (date_lst%y - date_fst%y)*nmonth + (date_lst%m - date_fst%m)
allocate(in_lambd(0:mnc))
allocate(in_temp (0:mnc))
......@@ -104,16 +100,15 @@ contains
in_lambd = in_lambd/dt
rhodry(:,:,:) = rhodry_in(station_n)
sw (:,:) = sw_in (station_n)
bettar(:,:) = bettar_in(station_n)
kd (:,:) = kd_in (station_n, opt_n)
rhodry(:,:,:) = rhodry_in(station_n)
do k = ms+1, ml-1
g2gw_to_cmw(:,:,k) = rhodry(:,:,k) / rho_w * dz(k)
end do
! ---- Part of timesteps init ----
! @todo учесть шаг по времени 1 час
if (dt == 86400) then ! Для шага по времени день:
......@@ -152,20 +147,21 @@ contains
!mncX ! Номер месяца с начала работы программы
! -------------
if (dt == 86400) then ! Для шага по времени день:
lambd (:,:) = in_lambd(mncX)/N(nom)
Temp (:,:) = in_temp(mncX)*sin(pi*(nod-1)/(N(nom)-1)) + in_temp(mncX+1)*(1-sin(pi*(nod-1)/(N(nom)-1)))
Wsoil(:,:,:) = in_wsoil(mncX)*sin(pi*(nod-1)/(N(nom)-1)) + in_wsoil(mncX+1)*(1-sin(pi*(nod-1)/(N(nom)-1)))
veg (:,:) = in_veg(mncX)
lambd(:,:) = in_lambd(mncX)/N(nom)
if (nod == (N(nom)/2)) mncX = mncX + 1
else ! Для шага по времени месяц:
lambd (:,:) = in_lambd(mncX)
Temp (:,:) = in_temp(mncX)
Wsoil(:,:,:) = in_wsoil(mncX)
veg (:,:) = in_veg(mncX)
lambd(:,:) = in_lambd(mncX)
mncX = mncX + 1
end if
if (mncX == mnc) mncX = 0
!if (mncX == mnc) mncX = 0 !для инициализации, по идее, в других случаях строка комментируется
do i = 1, ml
Tsoil(:,:,i) = Temp(:,:) ! температура почвы равна температуре воздуха
......
......@@ -12,7 +12,7 @@
! -----------------------------------------------------------------
!> Углеродная модель:
carbon_model_type = 'rothc'
carbon_model_type = 'socs'
!
! 'inmcm' - модель inmcm [1,2]
! 'socs' - модель SOCS [3]
......@@ -33,7 +33,7 @@
! дополнительно для environment_data_type = 'station':
!> Имя станции:
station_name = 'DAO4'
station_name = 'Rostov'
! 'Rostov' - Станция ФАНЦ
! 'DAO3' - Станция в Долгопрудном 1
! 'DAO4' - Станция в Долгопрудном 2
......@@ -41,7 +41,7 @@
! 'TRGK' - Данные Торжок
!
!> Тип подачи удобрения:
station_opt = '4'
station_opt = '3'
! '1' - контрольный случай, без дополнительных удобрений
! '2' - 2 способ подачи удобрений
! '3' - 3 способ подачи удобрений
......@@ -105,7 +105,7 @@
!
! 'auto' - получить из входного файла (для lsm_offline)
! 'manual' - задать вручную [yyyy-mm-dd hh:mm:ss] 1937 1939 1956 1968 1974
datetime_init = '1937-01-01 00:00:00'
datetime_init = '1974-01-01 00:00:00'
!> Продолжительность расчета:
ntime_mode = 'datetime_last'
......@@ -113,7 +113,7 @@
! 'ntime' - указанное число шагов
ntime = 1000
! 'datetime_last' - до достижения указанной даты 2012 2018 2975
datetime_last = '2012-01-01 00:00:00'
datetime_last = '2018-01-01 00:00:00'
! (для lsm_offline) 'auto' - до конца входного файла
! продвинутые настройки
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment