SpectraRust/tlusty/extracted/pfheav.f
2026-03-19 14:05:33 +08:00

366 lines
25 KiB
Fortran

SUBROUTINE PFHEAV(IIZ,JNION,MODE,t,ane,u)
C =========================================
C
c subset of kurucz's pfsaha for Z>28.
c removed code for Z<28; crp- 28 aug, 1995
C EDITED 27 JULY 1994 BY GMW - REPLACED PT III PF COEFF. AND IP
C MODE 3 RETURNS PARTITION FUNCTION
C
INCLUDE 'IMPLIC.FOR'
REAL*8 IP
PARAMETER (DEBCON=1./2.8965E-18,
* TVCON=8.6171E-5,
* HIONEV=13.595,
* ONE=1.,
* HALF=0.5,
* THIRD=1./3.,
* X18=1./18.,
* X120=1./120.,
* T211=2000./11.)
c
DIMENSION IP(6),PART(6),POTLO(6)
DIMENSION SCALE(4)
DIMENSION NNN(6*218)
DIMENSION NNN16(54),NNN17(54),NNN18(54),NNN19(54),NNN20(54)
DIMENSION NNN21(54),NNN22(54),NNN23(54),NNN24(54),NNN25(54)
DIMENSION NNN26(54),NNN27(54),NNN28(54),NNN29(54),NNN30(54)
DIMENSION NNN31(54),NNN32(54),NNN33(54),NNN34(54),NNN35(54)
DIMENSION NNN36(54),NNN37(54),NNN38(54),NNN39(54),NNN40(12)
EQUIVALENCE (NNN( 811-810),NNN16(1))
EQUIVALENCE (NNN( 865-810),NNN17(1)),(NNN( 919-810),NNN18(1))
EQUIVALENCE (NNN( 973-810),NNN19(1)),(NNN(1027-810),NNN20(1))
EQUIVALENCE (NNN(1081-810),NNN21(1)),(NNN(1135-810),NNN22(1))
EQUIVALENCE (NNN(1189-810),NNN23(1)),(NNN(1243-810),NNN24(1))
EQUIVALENCE (NNN(1297-810),NNN25(1)),(NNN(1351-810),NNN26(1))
EQUIVALENCE (NNN(1405-810),NNN27(1)),(NNN(1459-810),NNN28(1))
EQUIVALENCE (NNN(1513-810),NNN29(1)),(NNN(1567-810),NNN30(1))
EQUIVALENCE (NNN(1621-810),NNN31(1)),(NNN(1675-810),NNN32(1))
EQUIVALENCE (NNN(1729-810),NNN33(1)),(NNN(1783-810),NNN34(1))
EQUIVALENCE (NNN(1837-810),NNN35(1)),(NNN(1891-810),NNN36(1))
EQUIVALENCE (NNN(1945-810),NNN37(1)),(NNN(1999-810),NNN38(1))
EQUIVALENCE (NNN(2053-810),NNN39(1)),(NNN(2107-810),NNN40(1))
C ( 1)( 2) ( 3)( 4) ( 5)( 6) ( 7)( 8) ( 9)(10) ( IP ) G REF
DATA NNN16/
1 227027622, 306233052, 356839222, 446052912, 652382292, 763314,
2 108416342, 222428472, 353944332, 577378932, 110314303, 1814900,
3 198724282, 293236452, 468362702, 86511123, 136016073, 3516000,
4 279836622, 461857562, 720693022, 124915873, 192522633, 5600000,
5 262136422, 501167232, 87911303, 138916483, 190721673, 7900000,
6 201620781, 231026761, 314737361, 450555381, 692386911, 772301,
7 109415761, 247938311, 58910042, 190937022, 68311693, 2028903,
8 897195961, 107212972, 165021182, 260230862, 356940532, 3682900,
9 100010001, 100410231, 108712611, 167124841, 388460411, 939102/
DATA NNN17/
1 200020021, 201620761, 223726341, 351352061, 80812472, 1796001,
2 100610471, 122617301, 300566361, 149924112, 332342352, 3970000,
3 403245601, 493151431, 529654331, 559358091, 611065171, 600000,
4 99710051, 104511541, 135016501, 208226431, 321837921, 2050900,
5 199820071, 204521391, 229124761, 266028451, 302932131, 3070000,
6 502665261, 755183501, 901496201, 102410942, 117912812, 787900,
7 422848161, 512153401, 557458941, 636270361, 794489061, 1593000,
8 100010261, 114613921, 175221251, 249828711, 324436181, 3421000,
9 403143241, 491856701, 649173781, 840396751, 113013392, 981000/
DATA NNN18/
1 593676641, 884697521, 105911572, 129515012, 180322212, 1858700,
2 484470541, 91510972, 125614082, 157017612, 199722912, 2829900,
3 630172361, 799686381, 919797221, 102810942, 117712832, 975000,
4 438055511, 691582151, 94510732, 121413672, 152016732, 2150000,
5 651982921, 94610382, 113212492, 139515462, 169718482, 3200000,
6 437347431, 498951671, 538559501, 74710812, 169126672, 1183910,
7 705183611, 93510092, 111614162, 222932532, 427652992, 2160000,
8 510869921, 87410312, 123116552, 236530712, 377744832, 3590000,
9 100010001, 100010051, 105012781, 198535971, 65911422, 1399507/
DATA NNN19/
1 461049811, 522254261, 609088131, 168935052, 68612253, 2455908,
2 759990901, 101911142, 129017782, 302856642, 99414333, 3690000,
3 200020011, 200720361, 211523021, 269434141, 459163351, 417502,
4 100010001, 100110321, 129524961, 61014202, 291753192, 2750004,
5 473650891, 533156051, 66810932, 232950852, 99915303, 4000000,
6 100110041, 104111741, 146019721, 281941411, 607785251, 569202,
7 202621931, 255331271, 384347931, 624085761, 122417632, 1102600,
8 100010001, 100110321, 129524961, 61014202, 291753192, 4300000,
9 791587851, 100012192, 155119942, 254031782, 389946932, 637900/
DATA NNN20/
1 118217102, 220827002, 319036792, 416646512, 513256072, 1223000,
2 92510012, 104710862, 112311612, 120212472, 132814282, 2050000,
3 141320802, 291439702, 531170262, 92712273, 162521053, 684000,
4 354454352, 724689652, 107212643, 148517093, 193321573, 1312900,
5 209727032, 324537052, 415446282, 510255752, 604965222, 2298000,
6 256636022, 465759302, 749693962, 116514243, 171520333, 687900,
7 335157222, 84511463, 147718363, 221826083, 299933893, 1431900,
8 223725352, 280830972, 340937362, 406844002, 473150632, 2503900,
9 703972941, 82610822, 154822682, 327244912, 571469372, 709900/
DATA NNN21/
1 75714552, 274347322, 718897632, 123414913, 174920063, 1614900,
2 267645462, 669890262, 115514323, 173620673, 242528083, 2714900,
3 90613732, 184823562, 291735332, 419949102, 565764332, 728000,
4 131318312, 227126932, 311735452, 397644072, 483852692, 1525900,
5 204721673, 234725733, 284031463, 348738613, 426546943, 3000000,
6 176824122, 318941082, 515263202, 761790472, 106112303, 736400,
7 221934642, 501968372, 88911173, 136316243, 189221613, 1675900,
8 210622722, 241025422, 267928262, 297731272, 327834282, 2846000,
9 148520202, 255230902, 364942462, 489656082, 638872352, 746000/
DATA NNN22/
1 153421292, 288137912, 484660322, 720187062, 101011483, 1807000,
2 254537212, 492362292, 770592182, 107312243, 137615273, 3104900,
3 115919651, 320746011, 607576761, 95011642, 141817172, 832900,
4 755087211, 105913442, 173122222, 282034722, 412247732, 1941900,
5 180223462, 289735212, 414247632, 538460052, 662672472, 3292000,
6 200020001, 200220141, 206422141, 257633021, 455164681, 757403,
7 100810581, 125817401, 260641031, 66210072, 135316982, 2148000,
8 795887491, 97711762, 156620252, 248329422, 340038582, 3481900,
9 100010001, 100410241, 109212891, 176827421, 444268771, 899003/
DATA NNN23/
1 200020021, 201720921, 233329881, 451475371, 127520782, 1690301,
2 100310281, 114815371, 246138311, 519265531, 791492761, 3747000,
3 252431921, 368440461, 433746521, 512259221, 723389021, 578400,
4 100110071, 104611651, 146118581, 225426511, 304734431, 1886000,
5 200120111, 205021611, 243628031, 317035371, 390442701, 2802900,
6 232637101, 488058571, 669074381, 816189091, 97210632, 734200,
7 286335941, 408144471, 479351961, 571862901, 686274341, 1462700,
8 100010251, 114013811, 175321601, 256829751, 338337901, 3049000,
9 404043481, 494656811, 646772781, 813490751, 101411372, 863900/
DATA NNN24/
1 303147981, 618472951, 827392621, 103711702, 131214532, 1650000,
2 313037601, 429347901, 536260591, 689477591, 862494881, 2529900,
3 526258801, 657372351, 784284071, 897095741, 102711082, 900900,
4 440855541, 686481251, 93810792, 125414792, 176321132, 1860000,
5 349054751, 699883081, 96611302, 134216202, 197724212, 2800000,
6 405342041, 438645621, 475751071, 587974491, 102214572, 1045404,
7 568567471, 773485861, 94510362, 112712182, 130914002, 1909000,
8 514269581, 86910562, 130716652, 215327742, 351843662, 3200000,
9 100010001, 100010091, 109515351, 291060661, 119621482, 1212716/
DATA NNN25/
1 414844131, 465649111, 538464651, 87112232, 158019362, 2120000,
2 615475101, 867797531, 112213462, 157618062, 203622662, 3209900,
3 200020001, 201020501, 215623871, 283536181, 462756261, 389300,
4 100010001, 100310371, 119016501, 269146361, 77912412, 2510000,
5 424445601, 481750061, 516953311, 549356551, 581759791, 3500000,
6 101210791, 135119351, 282340571, 574580391, 111015062, 521002,
7 262638611, 504160621, 698579371, 91010692, 129115952, 1000000,
8 100010001, 100310351, 118416321, 264945521, 76512182, 3700000,
9 71111992, 172323592, 312540402, 510763182, 765791012, 558000/
DATA NNN26/
1 204529582, 383647882, 582469262, 807992692, 104911723, 1106000,
2 94712552, 148416582, 179819212, 203621522, 227424042, 1916900,
3 295959132, 103515693, 215527593, 335939413, 449650223, 565000,
4 79718153, 289639443, 495159253, 686877533, 863794813, 1085000,
5 298640242, 475053692, 596965912, 725379692, 872094692, 2008000,
6 460693672, 158523823, 327242303, 519661563, 709379783, 541900,
7 455480232, 114014653, 178521013, 240927073, 299232633, 1055000,
8 46410533, 183826893, 354443773, 518459633, 674375243, 2320000,
9 139623042, 364860002, 96114603, 209828633, 373446973, 549000/
DATA NNN27/
1 460493692, 158523823, 327142303, 519661563, 709279783, 1073000,
2 455480232, 114014653, 178521013, 240927073, 299232633, 2000000,
3 131720482, 280535692, 441254492, 676583972, 103412583, 555000,
4 139623042, 364860002, 96114603, 209828633, 373446973, 1089900,
5 460493682, 158523823, 327142303, 519661563, 709279783, 2000000,
6 92915672, 222431062, 444763802, 89612173, 159520253, 562900,
7 315059662, 97114563, 204627093, 342541693, 490556383, 1106900,
8 269037812, 520270372, 91111273, 133915483, 172719093, 2000000,
9 800080571, 851699301, 127617362, 240433032, 444958442, 568000/
DATA NNN28/
1 125416052, 211828182, 375549622, 644381732, 101112213, 1125000,
2 800080571, 851699301, 127617362, 240433032, 444958442, 2000000,
3 240432982, 427555202, 708489962, 112613853, 167319843, 615900,
4 534793262, 139219123, 247730843, 371043333, 495055893, 1210000,
5 364145232, 514756362, 604864112, 673870372, 732276072, 2000000,
6 480767202, 89011393, 144118243, 230028753, 354142883, 584900,
7 480767192, 89011393, 144118243, 230028753, 354142883, 1151900,
8 480767202, 89011393, 144118243, 230028753, 354142883, 2000000,
9 343147532, 645887152, 115314793, 183322063, 257729373, 593000/
DATA NNN29/
1 343147532, 645887142, 115314793, 183322063, 257729373, 1167000,
2 343147532, 645887142, 115314793, 183322063, 257729373, 2000000,
3 222635002, 542276772, 100312353, 145716713, 187020703, 602000,
4 222635002, 542276772, 100312353, 145716713, 187020703, 1180000,
5 222635002, 542276772, 100312353, 145716713, 187020703, 2000000,
6 133715382, 209130152, 429859382, 79410293, 129815983, 609900,
7 265934782, 497877532, 120517733, 245032063, 400448073, 1193000,
8 265934782, 497877532, 120517733, 245032063, 400448073, 2000000,
9 800381111, 87510702, 147621462, 310343462, 585475982, 618000/
DATA NNN30/
1 156718872, 279244452, 678196342, 128316243, 197823443, 1205000,
2 93517192, 364666132, 103414613, 192624193, 293334613, 2370000,
3 100010011, 101310651, 118613951, 169120661, 250629971, 625000,
4 200120901, 270345231, 81714042, 223533112, 461959862, 1217000,
5 100312561, 250851931, 91914182, 198626022, 323638692, 2000000,
6 514664441, 759086851, 99211442, 133315612, 182721252, 609900,
7 125924831, 438667801, 98714112, 199727872, 380850742, 1389900,
8 323948621, 661297271, 158626482, 426865032, 93712843, 1900000,
9 659294081, 128016962, 222528952, 372047062, 585171462, 700000/
DATA NNN31/
1 99117882, 274638812, 520867322, 84410313, 123314453, 1489900,
2 187427702, 343739872, 448049452, 539358282, 625266642, 2329900,
3 65210892, 171325762, 373552252, 705192012, 116414343, 787900,
4 192837842, 600784802, 111113823, 165419233, 218524383, 1620000,
5 99117872, 274638812, 520867312, 84410313, 123314453, 2400000,
6 398981651, 130019172, 273438022, 516168382, 88411163, 797900,
7 131429482, 523279952, 111414623, 183422233, 262130233, 1770000,
8 192837842, 600784792, 111113823, 165419233, 218524383, 2500000,
9 600963001, 75910412, 150121572, 301940972, 539168952, 787000/
DATA NNN32/
1 73710852, 190731262, 464964142, 83810503, 127315053, 1660000,
2 131429482, 523279952, 111414623, 183422233, 262130233, 2600000,
3 110815502, 216829732, 398752322, 672484682, 104612673, 850000,
4 168225972, 362046562, 566766422, 757484612, 93010103, 1700000,
5 73710852, 190731262, 464964142, 83810503, 127315053, 2700000,
6 129117892, 239430882, 388748292, 596173252, 89510843, 910000,
7 110815502, 216829732, 398752322, 672484682, 104612673, 2000000,
8 168225972, 362046562, 566766422, 757484612, 93010103, 2800000,
9 158918512, 207523002, 254328242, 316335762, 407246582, 900000/
DATA NNN33/
1 98115462, 224930742, 401150612, 623475412, 89910583, 1855900,
C 2 110815502, 216829732, 398752322, 672484682, 104612673, 2900000,
2 146323292, 354651802, 74810923, 161723953, 348749363, 3322700,
3 203222611, 265731251, 364042301, 494958601, 702084731, 922000,
4 120521331, 357753801, 75310062, 130516572, 206925452, 2050000,
5 651780821, 108814772, 195925252, 316338622, 460853882, 3000000,
6 100010001, 100110111, 105211851, 152122101, 341552811, 1043002,
7 200320211, 210023021, 268834231, 480472341, 111416912, 1875000,
8 104012871, 186129471, 458664151, 82410072, 119013732, 3420000,
9 200420711, 222424271, 265429161, 325637371, 442853911, 610500/
DATA NNN34/
1 100010021, 101910801, 121414641, 189525811, 358949721, 2041900,
2 200020311, 216624611, 296337451, 489064791, 85711212, 2979900,
3 103411711, 147819101, 244331781, 434862751, 93113762, 741404,
4 204122231, 248227841, 311535621, 429153941, 651976431, 1502800,
5 100210131, 106812201, 154522671, 381665951, 95512512, 3192900,
6 400140351, 416944121, 474851591, 564362181, 690477231, 728700,
7 106814451, 204427341, 350744811, 586879131, 108314772, 1667900,
8 205523051, 264830231, 345439921, 469156001, 675281671, 2555900,
9 500950661, 518153561, 559058941, 628968071, 748483501, 843000/
DATA NNN35/
1 443756241, 696282451, 95411012, 128615262, 182922012, 1900000,
2 336953201, 682481011, 93810882, 127915272, 184622442, 2700000,
3 402841621, 431544771, 463148311, 520059491, 734896851, 930000,
4 576168741, 788387631, 96910642, 116012552, 135014462, 2000000,
5 490265341, 812797201, 116614322, 179622692, 285035302, 2900000,
6 100010001, 100010031, 102311051, 133018071, 264539391, 1074500,
7 402841621, 431544771, 463148311, 520059491, 734996851, 2000000,
8 576168741, 788387631, 96910642, 116012552, 135014462, 3000000,
9 200020011, 201220591, 218124481, 296538611, 488859141, 400000/
DATA NNN36/
1 100010001, 100010031, 102311051, 133018071, 264539401, 2200000,
2 421645151, 477449611, 511852711, 542455761, 572958821, 3300000,
3 100010041, 105212131, 153220271, 270435641, 460258111, 527600,
4 201221791, 258131471, 381645781, 546365131, 777592781, 1014400,
5 100010001, 100010031, 102311051, 133018071, 264539391, 3400000,
6 510064491, 82710872, 142718412, 232328712, 348341572, 690000,
7 228951571, 88513232, 183324132, 305537492, 448152402, 1210000,
8 723989131, 103511752, 130814352, 155416652, 177018682, 2000000,
9 620099241, 162725772, 391457072, 80110833, 141818023, 600000/
DATA NNN37/
1 620099241, 162725772, 391457072, 80110833, 141818023, 1200000,
2 620099251, 162725772, 391457072, 80110833, 141818023, 2000000,
3 347877992, 129318323, 240730533, 380546863, 570368573, 600000,
4 347877992, 129318323, 240730533, 380546863, 570368573, 1200000,
5 347777992, 129318323, 240730533, 380546863, 570368573, 2000000,
6 209530092, 450866762, 96613623, 186524763, 318839893, 600000,
7 209530092, 450866762, 96613623, 186524763, 318839893, 1200000,
8 209530092, 450866762, 96613623, 186524763, 318839893, 2000000,
9 209530092, 450866762, 96613623, 186524763, 318839893, 600000/
DATA NNN38/
1 209530092, 450866762, 96613623, 186524763, 318839893, 1200000,
2 209530092, 450866762, 96613623, 186524763, 318839893, 2000000,
3 209530092, 450866762, 96613623, 186524763, 318839893, 600000,
4 209530092, 450866762, 96613623, 186524763, 318839893, 1200000,
5 209530092, 450866762, 96613623, 186524763, 318839893, 2000000,
6 209530092, 450866762, 96613623, 186524763, 318839893, 600000,
7 209530092, 450866762, 96613623, 186524763, 318839893, 1200000,
8 209530092, 450866762, 96613623, 186524763, 318839893, 2000000,
9 209530092, 450866762, 96613623, 186524763, 318839893, 600000/
DATA NNN39/
1 209530092, 450866762, 96613623, 186524763, 318839893, 1200000,
2 209530092, 450866762, 96613623, 186524763, 318839893, 2000000,
3 209530092, 450866762, 96613623, 186524763, 318839893, 600000,
4 209530092, 450866762, 96613623, 186524763, 318839893, 1200000,
5 209530092, 450866762, 96613623, 186524763, 318839893, 2000000,
6 209530092, 450866762, 96613623, 186524763, 318839893, 600000,
7 209530092, 450866762, 96613623, 186524763, 318839893, 1200000,
8 209530092, 450866762, 96613623, 186524763, 318839893, 2000000,
9 209530092, 450866762, 96613623, 186524763, 318839893, 600000/
DATA NNN40/
1 209530092, 450866762, 96613623, 186524763, 318839893, 1200000,
2 209530092, 450866762, 96613623, 186524763, 318839893, 2000000/
DATA SCALE/.001,.01,.1,1./
C
if(mode.lt.0) return
tk=1.38054d-16*t
tv=8.6171d-5*t
C LOWERING OF THE IONIZATION POTENTIAL IN VOLTS FOR UNIT ZEFF
CHARGE=ANE*2.
DEBYE=SQRT(TK*DEBCON/CHARGE)
C DEBYE=SQRT(TK/12.5664/4.801E-10**2/CHARGE)
POTLOW=MIN(1.D0,1.44E-7/DEBYE)
IF(IIZ.LE.28)then
write(6,*) 'Error, routine PFHEAV for Z.GE.28 only'
stop23
endif
c removed elements with z<28
if(iiz.eq.28) n=1
IF(IIZ.GT.28) N=3*IIZ+54-135
IF(IIZ.eq.28) NIONS=4
IF(IIZ.GT.28) NIONS=3
NION2=MIN0(JNION+2,NIONS)
N=N-1
C
DO 18 ION=1,NION2
Z=ION
POTLO(ION)=POTLOW*Z
N=N+1
nnn6n=nnn(6+6*(N-1))
c nnn6n=nnn(6,n)
NNN100=NNN6N/100
XN1= NNN100
IP(ION)=XN1*1.e-3
IG=NNN6N-NNN100*100
GGG=IG
T2000=IP(ION)*T211
IT=MAX0(1,MIN0(9, INT(T/T2000-HALF)))
XIT=IT
DT=T/T2000-XIT-HALF
PMIN=ONE
I=(IT+1)/2
nnnin=nnn(i+6*(N-1))
c nnnin=nnn(i,n)
K1=NNNIN/100000
K2=NNNIN-K1*100000
K3=K2/10
xk1=k1
xk3=k3
KSCALE=K2-K3*10
IF(MOD(IT,2).EQ.0) GO TO 12
P1=XK1*SCALE(KSCALE)
P2=XK3*SCALE(KSCALE)
IF(DT.GE.0.)GO TO 13
IF(KSCALE.GT.1)GO TO 13
KP1=int(P1)
IF(KP1.NE. INT(P2+.5)) GO TO 13
PMIN=KP1
GO TO 13
12 continue
xk3=k3
P1=XK3*SCALE(KSCALE)
nnni1n=nnn(i+1+6*(N-1))
c nnni1n=nnn(i+1,n)
K1=NNNI1N/100000
KSCALE=MOD(NNNI1N,10)
xk1=k1
P2=XK1*SCALE(KSCALE)
13 PART(ION)= MAX (PMIN,P1+(P2-P1)*DT)
IF(GGG.EQ.0..OR.POTLO(ION).LT..1.OR.T.LT.T2000*4.) GO TO 18
IF(T.GT.(T2000*11.)) TV=(T2000*11.)*TVCON
D1=.1/TV
D2=POTLO(ION)/TV
DX=SQRT(HIONEV*Z*Z/TV/D2)**3
PART(ION)=PART(ION)+GGG*EXP(-IP(ION)/TV)*
* (DX*(THIRD+(ONE-(HALF+(X18+D2*X120)*D2)*D2)*D2)-
* DX*(THIRD+(ONE-(HALF+(X18+D1*X120)*D1)*D1)*D1))
18 CONTINUE
u=part(jnion)
RETURN
END