Module diskchef.maps.radmc_dust
Classes
class RadMCTherm (chemistry: Union[ChemistryBase, PhysicsBase] = None, line_list: List[Line] = None, executable: Union[str, os.PathLike] = 'radmc3d', folder: Union[str, os.PathLike] = 'radmc', radii_bins: Optional[None] = None, theta_bins: Optional[None] = None, phi_bins: Optional[None] = None, outer_radius: Optional[None] = None, verbosity: int = 0, wavelengths: astropy.units.quantity.Quantity = <Quantity [9.13000000e-02, 9.23666837e-02, 9.34458298e-02, 9.45375839e-02, 9.56420933e-02, 9.67595069e-02, 9.78899756e-02, 9.90336519e-02, 1.00190690e-01, 1.01361246e-01, 1.02545478e-01, 1.03743546e-01, 1.04955611e-01, 1.06181838e-01, 1.07422390e-01, 1.08677436e-01, 1.09947145e-01, 1.11231689e-01, 1.12531240e-01, 1.13845975e-01, 1.15176069e-01, 1.16521704e-01, 1.17883060e-01, 1.19260321e-01, 1.20653673e-01, 1.22063304e-01, 1.23489404e-01, 1.24932166e-01, 1.26391784e-01, 1.27868455e-01, 1.29362378e-01, 1.30873756e-01, 1.32402791e-01, 1.33949690e-01, 1.35514662e-01, 1.37097918e-01, 1.38699672e-01, 1.40320140e-01, 1.41959539e-01, 1.43618093e-01, 1.45296024e-01, 1.46993558e-01, 1.48710926e-01, 1.50448358e-01, 1.52206088e-01, 1.53984355e-01, 1.55783398e-01, 1.57603459e-01, 1.59444785e-01, 1.61307624e-01, 1.63192226e-01, 1.65098847e-01, 1.67027744e-01, 1.68979176e-01, 1.70953408e-01, 1.72950705e-01, 1.74971337e-01, 1.77015577e-01, 1.79083700e-01, 1.81175985e-01, 1.83292715e-01, 1.85434176e-01, 1.87600656e-01, 1.89792448e-01, 1.92009847e-01, 1.94253152e-01, 1.96522666e-01, 1.98818696e-01, 2.01141551e-01, 2.03491545e-01, 2.05868994e-01, 2.08274220e-01, 2.10707547e-01, 2.13169303e-01, 2.15659820e-01, 2.18179435e-01, 2.20728487e-01, 2.23307320e-01, 2.25916283e-01, 2.28555727e-01, 2.31226008e-01, 2.33927487e-01, 2.36660528e-01, 2.39425500e-01, 2.42222776e-01, 2.45052733e-01, 2.47915753e-01, 2.50812223e-01, 2.53742533e-01, 2.56707079e-01, 2.59706261e-01, 2.62740482e-01, 2.65810154e-01, 2.68915689e-01, 2.72057507e-01, 2.75236032e-01, 2.78451692e-01, 2.81704922e-01, 2.84996161e-01, 2.88325852e-01, 2.91694444e-01, 2.95102393e-01, 2.98550158e-01, 3.02038204e-01, 3.05567001e-01, 3.09137027e-01, 3.12748763e-01, 3.16402695e-01, 3.20099317e-01, 3.23839128e-01, 3.27622632e-01, 3.31450340e-01, 3.35322768e-01, 3.39240439e-01, 3.43203881e-01, 3.47213629e-01, 3.51270224e-01, 3.55374214e-01, 3.59526151e-01, 3.63726597e-01, 3.67976118e-01, 3.72275287e-01, 3.76624684e-01, 3.81024897e-01, 3.85476519e-01, 3.89980150e-01, 3.94536399e-01, 3.99145879e-01, 4.03809213e-01, 4.08527031e-01, 4.13299967e-01, 4.18128668e-01, 4.23013783e-01, 4.27955973e-01, 4.32955904e-01, 4.38014250e-01, 4.43131695e-01, 4.48308928e-01, 4.53546648e-01, 4.58845562e-01, 4.64206384e-01, 4.69629839e-01, 4.75116657e-01, 4.80667579e-01, 4.86283355e-01, 4.91964741e-01, 4.97712504e-01, 5.03527420e-01, 5.09410274e-01, 5.15361858e-01, 5.21382976e-01, 5.27474441e-01, 5.33637074e-01, 5.39871707e-01, 5.46179181e-01, 5.52560347e-01, 5.59016066e-01, 5.65547209e-01, 5.72154657e-01, 5.78839302e-01, 5.85602045e-01, 5.92443800e-01, 5.99365488e-01, 6.06368045e-01, 6.13452414e-01, 6.20619553e-01, 6.27870426e-01, 6.35206014e-01, 6.42627306e-01, 6.50135303e-01, 6.57731017e-01, 6.65415475e-01, 6.73189712e-01, 6.81054778e-01, 6.89011734e-01, 6.97061653e-01, 7.05205622e-01, 7.13444738e-01, 7.21780115e-01, 7.30212877e-01, 7.38744160e-01, 7.47375117e-01, 7.56106912e-01, 7.64940723e-01, 7.73877742e-01, 7.82919175e-01, 7.92066241e-01, 8.01320175e-01, 8.10682226e-01, 8.20153656e-01, 8.29735743e-01, 8.39429780e-01, 8.49237076e-01, 8.59158953e-01, 8.69196750e-01, 8.79351822e-01, 8.89625538e-01, 9.00019285e-01, 9.10534465e-01, 9.21172497e-01, 9.31934816e-01, 9.42822874e-01, 9.53838141e-01, 9.64982102e-01, 9.76256261e-01, 9.87662139e-01, 9.99201275e-01, 1.01087523e+00, 1.02268557e+00, 1.03463389e+00, 1.04672181e+00, 1.05895096e+00, 1.07132298e+00, 1.08383955e+00, 1.09650236e+00, 1.10931311e+00, 1.12227352e+00, 1.13538536e+00, 1.14865039e+00, 1.16207040e+00, 1.17564720e+00, 1.18938262e+00, 1.20327851e+00, 1.21733675e+00, 1.23155924e+00, 1.24594790e+00, 1.26050466e+00, 1.27523149e+00, 1.29013038e+00, 1.30520334e+00, 1.32045240e+00, 1.33587962e+00, 1.35148708e+00, 1.36727689e+00, 1.38325117e+00, 1.39941208e+00, 1.41576181e+00, 1.43230256e+00, 1.44903655e+00, 1.46596606e+00, 1.48309335e+00, 1.50042075e+00, 1.51795059e+00, 1.53568524e+00, 1.55362708e+00, 1.57177855e+00, 1.59014208e+00, 1.60872016e+00, 1.62751530e+00, 1.64653002e+00, 1.66576689e+00, 1.68522852e+00, 1.70491752e+00, 1.72483656e+00, 1.74498831e+00, 1.76537550e+00, 1.78600088e+00, 1.80686724e+00, 1.82797738e+00, 1.84933416e+00, 1.87094045e+00, 1.89279918e+00, 1.91491329e+00, 1.93728576e+00, 1.95991962e+00, 1.98281791e+00, 2.00598374e+00, 2.02942021e+00, 2.05313050e+00, 2.07711781e+00, 2.10138536e+00, 2.12593644e+00, 2.15077436e+00, 2.17590246e+00, 2.20132415e+00, 2.22704284e+00, 2.25306201e+00, 2.27938517e+00, 2.30601588e+00, 2.33295771e+00, 2.36021432e+00, 2.38778937e+00, 2.41568659e+00, 2.44390974e+00, 2.47246263e+00, 2.50134911e+00, 2.53057308e+00, 2.56013848e+00, 2.59004930e+00, 2.62030958e+00, 2.65092340e+00, 2.68189489e+00, 2.71322822e+00, 2.74492764e+00, 2.77699740e+00, 2.80944185e+00, 2.84226535e+00, 2.87547234e+00, 2.90906730e+00, 2.94305476e+00, 2.97743930e+00, 3.01222557e+00, 3.04741825e+00, 3.08302210e+00, 3.11904192e+00, 3.15548257e+00, 3.19234896e+00, 3.22964608e+00, 3.26737895e+00, 3.30555266e+00, 3.34417237e+00, 3.38324328e+00, 3.42277067e+00, 3.46275987e+00, 3.50321627e+00, 3.54414534e+00, 3.58555259e+00, 3.62744362e+00, 3.66982407e+00, 3.71269966e+00, 3.75607618e+00, 3.79995948e+00, 3.84435549e+00, 3.88927018e+00, 3.93470962e+00, 3.98067995e+00, 4.02718736e+00, 4.07423813e+00, 4.12183861e+00, 4.16999521e+00, 4.21871445e+00, 4.26800288e+00, 4.31786717e+00, 4.36831403e+00, 4.41935028e+00, 4.47098280e+00, 4.52321856e+00, 4.57606460e+00, 4.62952806e+00, 4.68361615e+00, 4.73833616e+00, 4.79369548e+00, 4.84970158e+00, 4.90636202e+00, 4.96368443e+00, 5.02167656e+00, 5.08034623e+00, 5.13970136e+00, 5.19974994e+00, 5.26050009e+00, 5.32196000e+00, 5.38413797e+00, 5.44704237e+00, 5.51068171e+00, 5.57506457e+00, 5.64019962e+00, 5.70609567e+00, 5.77276160e+00, 5.84020641e+00, 5.90843919e+00, 5.97746916e+00, 6.04730562e+00, 6.11795801e+00, 6.18943584e+00, 6.26174877e+00, 6.33490656e+00, 6.40891906e+00, 6.48379628e+00, 6.55954830e+00, 6.63618536e+00, 6.71371780e+00, 6.79215606e+00, 6.87151074e+00, 6.95179255e+00, 7.03301231e+00, 7.11518098e+00, 7.19830965e+00, 7.28240954e+00, 7.36749199e+00, 7.45356849e+00, 7.54065064e+00, 7.62875019e+00, 7.71787904e+00, 7.80804920e+00, 7.89927285e+00, 7.99156229e+00, 8.08492998e+00, 8.17938850e+00, 8.27495061e+00, 8.37162920e+00, 8.46943732e+00, 8.56838815e+00, 8.66849505e+00, 8.76977153e+00, 8.87223126e+00, 8.97588805e+00, 9.08075589e+00, 9.18684893e+00, 9.29418148e+00, 9.40276803e+00, 9.51262323e+00, 9.62376190e+00, 9.73619904e+00, 9.84994981e+00, 9.96502956e+00, 1.00814538e+01, 1.01992383e+01, 1.03183989e+01, 1.04389517e+01, 1.05609129e+01, 1.06842990e+01, 1.08091267e+01, 1.09354128e+01, 1.10631743e+01, 1.11924285e+01, 1.13231928e+01, 1.14554849e+01, 1.15893226e+01, 1.17247239e+01, 1.18617072e+01, 1.20002908e+01, 1.21404936e+01, 1.22823345e+01, 1.24258325e+01, 1.25710070e+01, 1.27178776e+01, 1.28664642e+01, 1.30167867e+01, 1.31688655e+01, 1.33227211e+01, 1.34783742e+01, 1.36358459e+01, 1.37951573e+01, 1.39563300e+01, 1.41193858e+01, 1.42843466e+01, 1.44512346e+01, 1.46200725e+01, 1.47908830e+01, 1.49636890e+01, 1.51385140e+01, 1.53153816e+01, 1.54943155e+01, 1.56753400e+01, 1.58584794e+01, 1.60437585e+01, 1.62312023e+01, 1.64208360e+01, 1.66126853e+01, 1.68067760e+01, 1.70031343e+01, 1.72017868e+01, 1.74027601e+01, 1.76060815e+01, 1.78117783e+01, 1.80198784e+01, 1.82304097e+01, 1.84434007e+01, 1.86588802e+01, 1.88768772e+01, 1.90974211e+01, 1.93205416e+01, 1.95462690e+01, 1.97746336e+01, 2.00056662e+01, 2.02393981e+01, 2.04758607e+01, 2.07150860e+01, 2.09571062e+01, 2.12019540e+01, 2.14496624e+01, 2.17002649e+01, 2.19537952e+01, 2.22102876e+01, 2.24697767e+01, 2.27322975e+01, 2.29978853e+01, 2.32665762e+01, 2.35384061e+01, 2.38134120e+01, 2.40916308e+01, 2.43731002e+01, 2.46578580e+01, 2.49459427e+01, 2.52373932e+01, 2.55322489e+01, 2.58305493e+01, 2.61323350e+01, 2.64376464e+01, 2.67465249e+01, 2.70590122e+01, 2.73751502e+01, 2.76949819e+01, 2.80185502e+01, 2.83458988e+01, 2.86770720e+01, 2.90121143e+01, 2.93510711e+01, 2.96939880e+01, 3.00409112e+01, 3.03918877e+01, 3.07469647e+01, 3.11061902e+01, 3.14696126e+01, 3.18372810e+01, 3.22092450e+01, 3.25855547e+01, 3.29662610e+01, 3.33514151e+01, 3.37410691e+01, 3.41352756e+01, 3.45340877e+01, 3.49375592e+01, 3.53457446e+01, 3.57586989e+01, 3.61764779e+01, 3.65991380e+01, 3.70267361e+01, 3.74593299e+01, 3.78969778e+01, 3.83397390e+01, 3.87876730e+01, 3.92408403e+01, 3.96993022e+01, 4.01631204e+01, 4.06323575e+01, 4.11070768e+01, 4.15873424e+01, 4.20732191e+01, 4.25647724e+01, 4.30620687e+01, 4.35651750e+01, 4.40741593e+01, 4.45890902e+01, 4.51100371e+01, 4.56370705e+01, 4.61702613e+01, 4.67096815e+01, 4.72554039e+01, 4.78075022e+01, 4.83660508e+01, 4.89311250e+01, 4.95028012e+01, 5.00811565e+01, 5.06662688e+01, 5.12582171e+01, 5.18570814e+01, 5.24629424e+01, 5.30758818e+01, 5.36959823e+01, 5.43233277e+01, 5.49580025e+01, 5.56000924e+01, 5.62496840e+01, 5.69068650e+01, 5.75717240e+01, 5.82443507e+01, 5.89248359e+01, 5.96132715e+01, 6.03097502e+01, 6.10143661e+01, 6.17272142e+01, 6.24483907e+01, 6.31779929e+01, 6.39161193e+01, 6.46628694e+01, 6.54183440e+01, 6.61826450e+01, 6.69558756e+01, 6.77381400e+01, 6.85295439e+01, 6.93301940e+01, 7.01401982e+01, 7.09596660e+01, 7.17887079e+01, 7.26274357e+01, 7.34759626e+01, 7.43344030e+01, 7.52028729e+01, 7.60814893e+01, 7.69703709e+01, 7.78696375e+01, 7.87794105e+01, 7.96998127e+01, 8.06309682e+01, 8.15730026e+01, 8.25260431e+01, 8.34902182e+01, 8.44656580e+01, 8.54524942e+01, 8.64508599e+01, 8.74608897e+01, 8.84827201e+01, 8.95164887e+01, 9.05623352e+01, 9.16204006e+01, 9.26908277e+01, 9.37737608e+01, 9.48693462e+01, 9.59777316e+01, 9.70990666e+01, 9.82335025e+01, 9.93811923e+01, 1.00542291e+02, 1.01716955e+02, 1.02905343e+02, 1.04107615e+02, 1.05323934e+02, 1.06554463e+02, 1.07799369e+02, 1.09058820e+02, 1.10332985e+02, 1.11622036e+02, 1.12926148e+02, 1.14245496e+02, 1.15580259e+02, 1.16930616e+02, 1.18296749e+02, 1.19678843e+02, 1.21077085e+02, 1.22491663e+02, 1.23922768e+02, 1.25370593e+02, 1.26835333e+02, 1.28317186e+02, 1.29816352e+02, 1.31333033e+02, 1.32867434e+02, 1.34419762e+02, 1.35990226e+02, 1.37579038e+02, 1.39186413e+02, 1.40812567e+02, 1.42457720e+02, 1.44122094e+02, 1.45805913e+02, 1.47509405e+02, 1.49232799e+02, 1.50976328e+02, 1.52740228e+02, 1.54524735e+02, 1.56330091e+02, 1.58156540e+02, 1.60004327e+02, 1.61873703e+02, 1.63764920e+02, 1.65678231e+02, 1.67613897e+02, 1.69572178e+02, 1.71553337e+02, 1.73557644e+02, 1.75585367e+02, 1.77636780e+02, 1.79712161e+02, 1.81811789e+02, 1.83935948e+02, 1.86084923e+02, 1.88259006e+02, 1.90458489e+02, 1.92683670e+02, 1.94934848e+02, 1.97212327e+02, 1.99516414e+02, 2.01847421e+02, 2.04205661e+02, 2.06591454e+02, 2.09005120e+02, 2.11446986e+02, 2.13917381e+02, 2.16416639e+02, 2.18945095e+02, 2.21503093e+02, 2.24090976e+02, 2.26709095e+02, 2.29357801e+02, 2.32037453e+02, 2.34748412e+02, 2.37491045e+02, 2.40265720e+02, 2.43072812e+02, 2.45912700e+02, 2.48785768e+02, 2.51692403e+02, 2.54632996e+02, 2.57607946e+02, 2.60617652e+02, 2.63662522e+02, 2.66742966e+02, 2.69859399e+02, 2.73012243e+02, 2.76201922e+02, 2.79428868e+02, 2.82693514e+02, 2.85996302e+02, 2.89337678e+02, 2.92718092e+02, 2.96138000e+02, 2.99597865e+02, 3.03098151e+02, 3.06639333e+02, 3.10221887e+02, 3.13846297e+02, 3.17513052e+02, 3.21222647e+02, 3.24975582e+02, 3.28772364e+02, 3.32613504e+02, 3.36499522e+02, 3.40430941e+02, 3.44408292e+02, 3.48432112e+02, 3.52502943e+02, 3.56621334e+02, 3.60787842e+02, 3.65003029e+02, 3.69267462e+02, 3.73581719e+02, 3.77946380e+02, 3.82362034e+02, 3.86829278e+02, 3.91348714e+02, 3.95920952e+02, 4.00546608e+02, 4.05226308e+02, 4.09960681e+02, 4.14750368e+02, 4.19596014e+02, 4.24498273e+02, 4.29457806e+02, 4.34475283e+02, 4.39551381e+02, 4.44686784e+02, 4.49882186e+02, 4.55138287e+02, 4.60455796e+02, 4.65835431e+02, 4.71277919e+02, 4.76783992e+02, 4.82354394e+02, 4.87989877e+02, 4.93691201e+02, 4.99459135e+02, 5.05294457e+02, 5.11197955e+02, 5.17170426e+02, 5.23212674e+02, 5.29325516e+02, 5.35509776e+02, 5.41766288e+02, 5.48095897e+02, 5.54499456e+02, 5.60977830e+02, 5.67531893e+02, 5.74162529e+02, 5.80870632e+02, 5.87657108e+02, 5.94522873e+02, 6.01468852e+02, 6.08495982e+02, 6.15605213e+02, 6.22797503e+02, 6.30073823e+02, 6.37435153e+02, 6.44882489e+02, 6.52416833e+02, 6.60039204e+02, 6.67750629e+02, 6.75552148e+02, 6.83444815e+02, 6.91429694e+02, 6.99507863e+02, 7.07680411e+02, 7.15948442e+02, 7.24313070e+02, 7.32775425e+02, 7.41336647e+02, 7.49997893e+02, 7.58760331e+02, 7.67625143e+02, 7.76593524e+02, 7.85666686e+02, 7.94845852e+02, 8.04132262e+02, 8.13527166e+02, 8.23031834e+02, 8.32647548e+02, 8.42375605e+02, 8.52217318e+02, 8.62174014e+02, 8.72247037e+02, 8.82437746e+02, 8.92747516e+02, 9.03177738e+02, 9.13729819e+02, 9.24405183e+02, 9.35205270e+02, 9.46131538e+02, 9.57185461e+02, 9.68368529e+02, 9.79682253e+02, 9.91128158e+02, 1.00270779e+03, 1.01442271e+03, 1.02627449e+03, 1.03826475e+03, 1.05039509e+03, 1.06266715e+03, 1.07508260e+03, 1.08764309e+03, 1.10035033e+03, 1.11320604e+03, 1.12621194e+03, 1.13936979e+03, 1.15268137e+03, 1.16614847e+03, 1.17977291e+03, 1.19355654e+03, 1.20750119e+03, 1.22160877e+03, 1.23588117e+03, 1.25032032e+03, 1.26492817e+03, 1.27970668e+03, 1.29465786e+03, 1.30978371e+03, 1.32508629e+03, 1.34056764e+03, 1.35622988e+03, 1.37207509e+03, 1.38810543e+03, 1.40432306e+03, 1.42073017e+03, 1.43732896e+03, 1.45412168e+03, 1.47111060e+03, 1.48829800e+03, 1.50568620e+03, 1.52327756e+03, 1.54107445e+03, 1.55907925e+03, 1.57729442e+03, 1.59572240e+03, 1.61436567e+03, 1.63322676e+03, 1.65230821e+03, 1.67161260e+03, 1.69114252e+03, 1.71090062e+03, 1.73088955e+03, 1.75111203e+03, 1.77157076e+03, 1.79226853e+03, 1.81320811e+03, 1.83439233e+03, 1.85582405e+03, 1.87750617e+03, 1.89944161e+03, 1.92163332e+03, 1.94408431e+03, 1.96679759e+03, 1.98977625e+03, 2.01302337e+03, 2.03654209e+03, 2.06033559e+03, 2.08440707e+03, 2.10875979e+03, 2.13339702e+03, 2.15832211e+03, 2.18353839e+03, 2.20904929e+03, 2.23485824e+03, 2.26096872e+03, 2.28738426e+03, 2.31410842e+03, 2.34114480e+03, 2.36849706e+03, 2.39616888e+03, 2.42416400e+03, 2.45248619e+03, 2.48113928e+03, 2.51012713e+03, 2.53945366e+03, 2.56912281e+03, 2.59913860e+03, 2.62950508e+03, 2.66022633e+03, 2.69130650e+03, 2.72274980e+03, 2.75456046e+03, 2.78674277e+03, 2.81930107e+03, 2.85223976e+03, 2.88556329e+03, 2.91927614e+03, 2.95338287e+03, 2.98788808e+03, 3.02279642e+03, 3.05811260e+03, 3.09384140e+03, 3.12998762e+03, 3.16655616e+03, 3.20355193e+03, 3.24097993e+03, 3.27884522e+03, 3.31715289e+03, 3.35590813e+03, 3.39511615e+03, 3.43478226e+03, 3.47491179e+03, 3.51551017e+03, 3.55658287e+03, 3.59813543e+03, 3.64017347e+03, 3.68270264e+03, 3.72572870e+03, 3.76925744e+03, 3.81329474e+03, 3.85784655e+03, 3.90291886e+03, 3.94851776e+03, 3.99464942e+03, 4.04132003e+03, 4.08853592e+03, 4.13630344e+03, 4.18462905e+03, 4.23351925e+03, 4.28298066e+03, 4.33301993e+03, 4.38364383e+03, 4.43485918e+03, 4.48667290e+03, 4.53909196e+03, 4.59212346e+03, 4.64577454e+03, 4.70005244e+03, 4.75496448e+03, 4.81051808e+03, 4.86672072e+03, 4.92357999e+03, 4.98110357e+03, 5.03929922e+03, 5.09817477e+03, 5.15773819e+03, 5.21799751e+03, 5.27896085e+03, 5.34063644e+03, 5.40303261e+03, 5.46615777e+03, 5.53002044e+03, 5.59462923e+03, 5.65999287e+03, 5.72612017e+03, 5.79302005e+03, 5.86070154e+03, 5.92917378e+03, 5.99844599e+03, 6.06852753e+03, 6.13942786e+03, 6.21115653e+03, 6.28372323e+03, 6.35713775e+03, 6.43140999e+03, 6.50654997e+03, 6.58256784e+03, 6.65947384e+03, 6.73727836e+03, 6.81599189e+03, 6.89562505e+03, 6.97618859e+03, 7.05769337e+03, 7.14015040e+03, 7.22357080e+03, 7.30796582e+03, 7.39334685e+03, 7.47972542e+03, 7.56711317e+03, 7.65552189e+03, 7.74496352e+03, 7.83545012e+03, 7.92699390e+03, 8.01960721e+03, 8.11330256e+03, 8.20809257e+03, 8.30399003e+03, 8.40100790e+03, 8.49915925e+03, 8.59845733e+03, 8.69891555e+03, 8.80054744e+03, 8.90336672e+03, 9.00738728e+03, 9.11262313e+03, 9.21908849e+03, 9.32679771e+03, 9.43576532e+03, 9.54600604e+03, 9.65753473e+03, 9.77036644e+03, 9.88451640e+03, 1.00000000e+04] um>, modified_random_walk: bool = True, scattering_mode_max: int = None, istar_sphere: int = None, nphot_therm: int = None, nphotdiff: float = None, nphotdiff_type: int = None, nphot_mono: int = None, nphot_spec: int = None, mc_scat_maxtauabs: float = None, nphot_scat: int = None, coordinate: Union[str, astropy.coordinates.sky_coordinate.SkyCoord] = None, external_source_type: Literal['Draine1978', 'WeingartnerDraine2001', 'None'] = None, external_source_multiplier: float = 1, star_number: int = 1, star_radius: Optional[None] = None, star_positions: Optional[None] = None, star_effective_temperature: Optional[None] = None, accretion_luminosity: Optional[None] = None, accretion_temperature: Optional[None] = <Quantity 20000. K>, stellar_template: Optional[None] = None)-
RadMCTherm(chemistry: Union[diskchef.chemistry.base.ChemistryBase, diskchef.physics.base.PhysicsBase] = None, line_list: List[diskchef.lamda.line.Line] = None, executable: Union[str, os.PathLike] = 'radmc3d', folder: Union[str, os.PathLike] = 'radmc', radii_bins: Union[NoneType, int] = None, theta_bins: Union[NoneType, int] = None, phi_bins: Union[NoneType, int] = None, outer_radius: Union[NoneType, astropy.units.quantity.Quantity] = None, verbosity: int = 0, wavelengths: astropy.units.quantity.Quantity =
, modified_random_walk: bool = True, scattering_mode_max: int = None, istar_sphere: int = None, nphot_therm: int = None, nphotdiff: float = None, nphotdiff_type: int = None, nphot_mono: int = None, nphot_spec: int = None, mc_scat_maxtauabs: float = None, nphot_scat: int = None, coordinate: Union[str, astropy.coordinates.sky_coordinate.SkyCoord] = None, external_source_type: Literal['Draine1978', 'WeingartnerDraine2001', 'None'] = None, external_source_multiplier: float = 1, star_number: int = 1, star_radius: Union[NoneType, astropy.units.quantity.Quantity] = None, star_positions: Union[NoneType, astropy.units.quantity.Quantity] = None, star_effective_temperature: Union[NoneType, astropy.units.quantity.Quantity] = None, accretion_luminosity: Union[NoneType, astropy.units.quantity.Quantity] = None, accretion_temperature: Union[NoneType, astropy.units.quantity.Quantity] = , stellar_template: Union[NoneType, astropy.units.quantity.Quantity] = None) Expand source code
class RadMCTherm(RadMCBase): star_number: int = 1 star_radius: Union[None, u.Quantity] = None star_positions: Union[None, u.Quantity] = None star_effective_temperature: Union[None, u.Quantity] = None accretion_luminosity: Union[None, u.Quantity] = None accretion_temperature: Union[None, u.Quantity] = 2e4 * u.K stellar_template: Union[None, u.Quantity] = None def __post_init__(self): super().__post_init__() self.dust_species = self.chemistry.table.dust_list try: self.star_mass = self.chemistry.physics.star_mass except: if self.star_number == 1: self.star_mass = self.chemistry.m_star elif self.star_number > 1: self.star_mass = self.chemistry.m_stars if self.star_number == 1: try: yb08 = diskchef.physics.yorke_bodenheimer.YorkeBodenheimer2008(lt = self.chemistry.age) except AttributeError: yb08 = diskchef.physics.yorke_bodenheimer.YorkeBodenheimer2008(lt = self.chemistry.ages[0]) if (self.star_radius is None) and (self.star_effective_temperature is not None): try: self.star_effective_temperature = self.star_effective_temperature[0] except TypeError: pass self.star_radius = yb08.radius(self.star_mass) self.logger.warn( "Only star effective temperature was given, not star radius! Taking radius from trktime0210") elif (self.star_radius is not None) and (self.star_effective_temperature is None): try: self.star_radius = self.star_radius[0] except TypeError: pass self.star_effective_temperature = yb08.effective_temperature(self.star_mass) self.logger.warn( "Only star radius was given, not effective temperature! Taking effective temperature from trktime0210") elif (self.star_radius is None) and (self.star_effective_temperature is None): self.star_radius = yb08.radius(self.star_mass) self.star_effective_temperature = yb08.effective_temperature(self.star_mass) self.logger.info("Taking effective temperature and radius from trktime0210") elif (self.star_radius is not None) and (self.star_effective_temperature is not None): try: self.star_radius = self.star_radius[0] self.star_effective_temperature = self.star_effective_temperature[0] except TypeError: pass elif self.star_number > 1: for istar in range(self.star_number): if (self.star_radius[istar] is None) and (self.star_effective_temperature[istar] is not None): self.star_radius[istar] = yb08.radius(self.star_mass[istar]) self.logger.warn( "Only star effective temperature was given, not star radius! Taking radius from trktime0210") elif (self.star_radius[istar] is not None) and (self.star_effective_temperature[istar] is None): self.star_effective_temperature[istar] = yb08.effective_temperature(self.star_mass[istar]) self.logger.warn( "Only star radius was given, not effective temperature! Taking effective temperature from trktime0210") elif (self.star_radius[istar] is None) and (self.star_effective_temperature[istar] is None): self.star_radius[istar] = yb08.radius(self.star_mass[istar]) self.star_effective_temperature[istar] = yb08.effective_temperature(self.star_mass[istar]) self.logger.info("Taking effective temperature and radius from trktime0210") if self.star_positions is None: self.star_positions = np.zeros((self.star_number, 3)) * u.cm if self.stellar_template is not None: if self.star_number == 1: if len(self.wavelengths) != len(self.stellar_template): raise ValueError("Wavelength and stellar template grid are not matching. Please fix it") elif self.star_number > 1: for istar in range(self.star_number): if len(self.wavelengths) != len(self.stellar_template[istar]): raise ValueError("Wavelength and stellar template of one of the stars grid are not matching. Please fix it") @property def mode(self) -> str: """Mode of RadMC: `mctherm`, `image`, `spectrum`, `sed`""" return "mctherm" def create_files(self) -> None: super().create_files() self.dustopac() self.dust_density() self.stars() self.external_source() def stars(self, out_file: PathLike = None) -> None: """Writes the `stars.inp` file""" if out_file is None: out_file = os.path.join(self.folder, 'stars.inp') with open(out_file, 'w') as file: if (self.accretion_luminosity is None) or (self.accretion_luminosity <= 0): print('2', file=file) # Typically 2 at present print(f'{self.star_number} {len(self.wavelengths)}', file=file) # number of stars, wavelengths if self.star_number==1: print(f'{self.star_radius.to(u.cm).value:.5e} ' f'{self.star_mass.to(u.g).value:.5e} ' f'{self.star_positions[0, 0].to(u.cm).value:.5e} ' f'{self.star_positions[0, 1].to(u.cm).value:.5e} ' f'{self.star_positions[0, 2].to(u.cm).value:.5e} ', file=file) print('\n'.join(f"{entry:.7e}" for entry in self.wavelengths.to_value(u.um)), file=file) if self.stellar_template is not None: print('\n'.join(f"{entry:.7e}" for entry in self.stellar_template.to_value(u.erg / u.s / u.Hz / u.cm**2)), file=file) else: print(-self.star_effective_temperature.to(u.K).value, file=file) elif self.star_number > 1: for istar in range(self.star_number): print(f'{self.star_radius[istar].to(u.cm).value:.5e} ' f'{self.star_mass[istar].to(u.g).value:.5e} ' f'{self.star_positions[istar, 0].to(u.cm).value:.5e} ' f'{self.star_positions[istar, 1].to(u.cm).value:.5e} ' f'{self.star_positions[istar, 2].to(u.cm).value:.5e} ', file=file) print('\n'.join(f"{entry:.7e}" for entry in self.wavelengths.to_value(u.um)), file=file) for istar in range(self.star_number): if self.stellar_template[istar] is not None: print('\n'.join(f"{entry:.7e}" for entry in self.stellar_template[istar].to_value(u.erg / u.s / u.Hz / u.cm ** 2)), file=file) else: print(-self.star_effective_temperature[istar].to(u.K).value, file=file) else: print('2', file=file) # Typically 2 at present print(f'{self.star_number+1} {len(self.wavelengths)}', file=file) if self.star_number == 1: print(f'{self.star_radius.to(u.cm).value:.5e} ' f'{self.star_mass.to(u.g).value:.5e} ' f'{self.star_positions[0, 0].to(u.cm).value:.5e} ' f'{self.star_positions[0, 1].to(u.cm).value:.5e} ' f'{self.star_positions[0, 2].to(u.cm).value:.5e} ', file=file) elif self.star_number > 1: for istar in range(self.star_number): print(f'{self.star_radius[istar].to(u.cm).value:.5e} ' f'{self.star_mass[istar].to(u.g).value:.5e} ' f'{self.star_positions[istar, 0].to(u.cm).value:.5e} ' f'{self.star_positions[istar, 1].to(u.cm).value:.5e} ' f'{self.star_positions[istar, 2].to(u.cm).value:.5e} ', file=file) print(f'{self.accretion_effective_radius.to_value(u.cm)} ' f'0 ' f'0 0 0', file=file) print('\n'.join(f"{entry:.7e}" for entry in self.wavelengths.to_value(u.um)), file=file) for istar in range(self.star_number): if self.stellar_template[istar] is not None: self.logger.warn( "You are about to use stellar template with accretion luminosity. I hope you know what you are doing") print('\n'.join(f"{entry:.7e}" for entry in self.stellar_template[istar].to_value(u.erg / u.s / u.Hz / u.cm ** 2)), file=file) else: print(-self.star_effective_temperature[istar].to(u.K).value, file=file) print(-self.accretion_temperature.to(u.K).value, file=file) @property def accretion_effective_radius(self): return np.sqrt(self.accretion_luminosity / ( 4 * np.pi * c.sigma_sb * self.accretion_temperature ** 4)).cgs def dustopac(self, out_file: PathLike = None) -> None: """Writes the `dustopac.inp` file""" if out_file is None: out_file = os.path.join(self.folder, 'dustopac.inp') with open(out_file, 'w') as file: print('2', file=file) # Typically 2 at present print(len(self.dust_species), file=file) # Number of species for dust_spice in self.dust_species: print('-----------------------------', file=file) type = "dustkapscatmat_" if os.path.basename(dust_spice.opacity_file).startswith( "dustkapscatmat_") else "dustkappa_" print('10' if type == "dustkapscatmat_" else '1', file=file) print('0', file=file) name_without_whitespaces = re.sub(r"\s*", "", dust_spice.name) print(name_without_whitespaces, file=file) try: shutil.copyfile(dust_spice.opacity_file, os.path.join(self.folder, f"{type}{name_without_whitespaces}.inp")) except SameFileError: pass # except: # dust_spice.optool_opacity() print('-----------------------------', file=file) def dust_density(self, out_file: PathLike = None, nearest=False) -> None: """Writes the dust density file""" if out_file is None: out_file = os.path.join(self.folder, 'dust_density.inp') try: self.interpolate("Dust density") except: pass with open(out_file, 'w') as file: print('1', file=file) # Typically 1 at present print(self.nrcells, file=file) print(len(self.dust_species), file=file) # Number of species for dust_spice in self.dust_species: try: self.interpolate(f"{dust_spice.name} mass fraction") except: self.interpolate(f"{dust_spice.name} density") # Fixing interpolation mishaps self.polar_table.check_zeros(f"{dust_spice.name} density", nearest=nearest) try: print( '\n'.join( f"{entry:.7e}" for entry in ( self.polar_table["Dust density"] * self.polar_table[f"{dust_spice.name} mass fraction"] ).to(u.g * u.cm ** (-3)).value), file=file ) except: print( '\n'.join( f"{entry:.7e}" for entry in ( self.polar_table[f"{dust_spice.name} density"] ).to(u.g * u.cm ** (-3)).value), file=file ) def dust_temperature(self, out_file: PathLike = None, nearest=False) -> None: """Writes the dust temperature file""" if out_file is None: out_file = os.path.join(self.folder, 'dust_temperature.dat') with open(out_file, 'w') as file: print('1', file=file) # Typically 1 at present print(self.nrcells, file=file) print(len(self.dust_species), file=file) # Number of species for dust_spice in self.dust_species: self.interpolate(f"{dust_spice.name} temperature") # Fixing interpolation mishaps self.polar_table.check_zeros(f"{dust_spice.name} temperature", nearest=nearest) print( '\n'.join( f"{entry:.7e}" for entry in ( self.polar_table[f"{dust_spice.name} temperature"] ).to(u.K).value), file=file ) @u.quantity_input def run( self, inclination: u.deg = 0 * u.deg, position_angle: u.deg = 0 * u.deg, distance: u.pc = 140 * u.pc, velocity_offset: u.km / u.s = 0 * u.km / u.s, threads: int = 1, npix: int = 100, see_radmc_warnings: bool = True ) -> None: self.logger.info("Running radmc3d") start = time.time() command = (f"{self.executable} {self.mode} " f"setthreads {threads} " ) self.logger.info("Running radmc3d for dust temperature calculation: %s", command) proc = subprocess.run( command, cwd=self.folder, text=True, capture_output=True, shell=True ) self.logger.info("radmc3d finished after %s", timedelta(seconds=time.time() - start)) if see_radmc_warnings: self.catch_radmc_messages(proc) def read_dust_temperature(self, messages_on=False, nearest=False) -> None: """Read RadMC3D dust temperature output into `table` """ radmc_temp = np.loadtxt( os.path.join(self.folder, "dust_temperature.dat") )[3:] << u.K number_of_zeroes = np.sum(radmc_temp == 0) if number_of_zeroes != 0: if messages_on: self.logger.error("RadMC never achieved %d points. " "Recalculate with higher nphot_therm " "and/or remove high-density regions " "out of the model grid " "(highly likely, you can forfeit radii ~< 1 au)." "Values are set to 2.7 K", number_of_zeroes) radmc_temp[radmc_temp == 0] = 2.7 * u.K for idust in range(len(self.dust_species)): dust_spice = self.dust_species[idust] self.polar_table[f'RADMC {dust_spice.name} temperature'] = radmc_temp[idust*self.nrcells:(idust+1)*self.nrcells] self.interpolate_back(f"RADMC {dust_spice.name} temperature") self.table[f"Original {dust_spice.name} temperature"] = self.table[f"{dust_spice.name} temperature"] self.table[f"{dust_spice.name} temperature"] = self.table[f"RADMC {dust_spice.name} temperature"] self.table.check_zeros(f"{dust_spice.name} temperature", nearest=nearest)Ancestors
Subclasses
Class variables
var accretion_luminosity : Optional[None]var accretion_temperature : Optional[None]var star_effective_temperature : Optional[None]var star_number : intvar star_positions : Optional[None]var star_radius : Optional[None]var stellar_template : Optional[None]
Instance variables
prop accretion_effective_radius-
Expand source code
@property def accretion_effective_radius(self): return np.sqrt(self.accretion_luminosity / ( 4 * np.pi * c.sigma_sb * self.accretion_temperature ** 4)).cgs
Methods
def dust_density(self, out_file: Union[str, os.PathLike] = None, nearest=False) ‑> None-
Writes the dust density file
def dust_temperature(self, out_file: Union[str, os.PathLike] = None, nearest=False) ‑> None-
Writes the dust temperature file
def dustopac(self, out_file: Union[str, os.PathLike] = None) ‑> None-
Writes the
dustopac.inpfile def read_dust_temperature(self, messages_on=False, nearest=False) ‑> None-
Read RadMC3D dust temperature output into
table def stars(self, out_file: Union[str, os.PathLike] = None) ‑> None-
Writes the
stars.inpfile
Inherited members
class RadMCThermMono (chemistry: Union[ChemistryBase, PhysicsBase] = None, line_list: List[Line] = None, executable: Union[str, os.PathLike] = 'radmc3d', folder: Union[str, os.PathLike] = 'radmc', radii_bins: Optional[None] = None, theta_bins: Optional[None] = None, phi_bins: Optional[None] = None, outer_radius: Optional[None] = None, verbosity: int = 0, wavelengths: astropy.units.quantity.Quantity = <Quantity [1.00000000e-02, 1.09729293e-02, 1.20405177e-02, 1.32119750e-02, 1.44974067e-02, 1.59079019e-02, 1.74556282e-02, 1.91539374e-02, 2.10174801e-02, 2.30623323e-02, 2.53061342e-02, 2.77682421e-02, 3.04698957e-02, 3.34344011e-02, 3.66873319e-02, 4.02567499e-02, 4.41734470e-02, 4.84712111e-02, 5.31871172e-02, 5.83618476e-02, 6.40400427e-02, 7.02706860e-02, 7.71075269e-02, 8.46095441e-02, 9.28414545e-02, 1.01874271e-01, 1.11785918e-01, 1.22661897e-01, 1.34596032e-01, 1.47691275e-01, 1.62060591e-01, 1.77827941e-01, 1.95129342e-01, 2.14114048e-01, 2.34945830e-01, 2.57804398e-01, 2.82886943e-01, 3.10409843e-01, 3.40610526e-01, 3.73749521e-01, 4.10112707e-01, 4.50013774e-01, 4.93796932e-01, 5.41839882e-01, 5.94557071e-01, 6.52403270e-01, 7.15877495e-01, 7.85527313e-01, 8.61953566e-01, 9.45815554e-01, 1.03783672e+00, 1.13881089e+00, 1.24960914e+00, 1.37118727e+00, 1.50459410e+00, 1.65098047e+00, 1.81160919e+00, 1.98786596e+00, 2.18127126e+00, 2.39349353e+00, 2.62636353e+00, 2.88189013e+00, 3.16227766e+00, 3.46994492e+00, 3.80754602e+00, 4.17799333e+00, 4.58448253e+00, 5.03052027e+00, 5.51995432e+00, 6.05700685e+00, 6.64631078e+00, 7.29294983e+00, 8.00250228e+00, 8.78108917e+00, 9.63542705e+00, 1.05728860e+01, 1.16015530e+01, 1.27303021e+01, 1.39688705e+01, 1.53279428e+01, 1.68192432e+01, 1.84556367e+01, 2.02512396e+01, 2.22215421e+01, 2.43835410e+01, 2.67558871e+01, 2.93590457e+01, 3.22154733e+01, 3.53498111e+01, 3.87890977e+01, 4.25630026e+01, 4.67040818e+01, 5.12480588e+01, 5.62341325e+01, 6.17053160e+01, 6.77088069e+01, 7.42963951e+01, 8.15249090e+01, 8.94567062e+01, 9.81602111e+01, 1.07710506e+02, 1.18189976e+02, 1.29689025e+02, 1.42306850e+02, 1.56152301e+02, 1.71344815e+02, 1.88015454e+02, 2.06308029e+02, 2.26380341e+02, 2.48405547e+02, 2.72573651e+02, 2.99093140e+02, 3.28192787e+02, 3.60123625e+02, 3.95161107e+02, 4.33607489e+02, 4.75794431e+02, 5.22085865e+02, 5.72881128e+02, 6.28618411e+02, 6.89778538e+02, 7.56889112e+02, 8.30529071e+02, 9.11333677e+02, 1.00000000e+03] um>, modified_random_walk: bool = True, scattering_mode_max: int = None, istar_sphere: int = None, nphot_therm: int = None, nphotdiff: float = None, nphotdiff_type: int = None, nphot_mono: int = None, nphot_spec: int = None, mc_scat_maxtauabs: float = None, nphot_scat: int = None, coordinate: Union[str, astropy.coordinates.sky_coordinate.SkyCoord] = None, external_source_type: Literal['Draine1978', 'WeingartnerDraine2001', 'None'] = None, external_source_multiplier: float = 1, star_number: int = 1, star_radius: Optional[None] = None, star_positions: Optional[None] = None, star_effective_temperature: Optional[None] = None, accretion_luminosity: Optional[None] = None, accretion_temperature: Optional[None] = <Quantity 20000. K>, stellar_template: Optional[None] = None, mcmono_wavelengths: astropy.units.quantity.Quantity = <Quantity [0.0912 , 0.09504824, 0.09905885, 0.10323869, 0.10759491, 0.11213493, 0.11686653, 0.12179778, 0.1269371 , 0.13229329, 0.13787548, 0.14369321, 0.14975643, 0.15607548, 0.16266117, 0.16952475, 0.17667795, 0.18413297, 0.19190256, 0.2 ] um>)-
Class to run
radmc3d mcthermandradmc3d mcmonoone after anotherExpand source code
class RadMCThermMono(RadMCTherm): """Class to run `radmc3d mctherm` and `radmc3d mcmono` one after another""" wavelengths: u.Quantity = field(default=np.geomspace(0.01, 1000, 125) * u.um) mcmono_wavelengths: u.Quantity = field(default=np.geomspace(0.0912, 0.2, 20) * u.um) @u.quantity_input def run( self, inclination: u.deg = 0 * u.deg, position_angle: u.deg = 0 * u.deg, distance: u.pc = 140 * u.pc, velocity_offset: u.km / u.s = 0 * u.km / u.s, threads: int = 1, npix: int = 100, ) -> None: super().run( inclination=inclination, position_angle=position_angle, distance=distance, velocity_offset=velocity_offset, threads=threads, npix=npix ) self.logger.info("Running radmc3d") start = time.time() command = (f"{self.executable} mcmono " f"setthreads {threads} " ) self.logger.info("Running radmc3d for radiation field: %s", command) proc = subprocess.run( command, cwd=self.folder, text=True, capture_output=True, shell=True ) self.logger.info("radmc3d finished after %s", timedelta(seconds=time.time() - start)) self.catch_radmc_messages(proc) def mcmono_wavelength_micron(self, out_file: PathLike = None) -> None: """Creates a `mcmono_wavelength_micron.inp` file""" if out_file is None: out_file = os.path.join(self.folder, 'mcmono_wavelength_micron.inp') with open(out_file, 'w') as file: print(len(self.mcmono_wavelengths), file=file) print('\n'.join(f"{entry.to(u.um).value:.7e}" for entry in self.mcmono_wavelengths), file=file) def create_files(self) -> None: super().create_files() self.mcmono_wavelength_micron() def read_radiation_strength(self) -> None: """Read RadMC3D mcmono radiation strength output into `table`""" radiation = np.loadtxt( os.path.join(self.folder, "mean_intensity.out"), skiprows=4 ).reshape(-1, len(self.mcmono_wavelengths), order="F") << (u.erg / u.s / u.cm ** 2 / u.Hz / u.sr) self.polar_table["Radiation strength"] = np.abs( 4 * np.pi * u.sr * np.trapz( radiation, self.mcmono_wavelengths.to(u.Hz, equivalencies=u.spectral()), axis=1) ).to(u.erg / u.s / u.cm ** 2) number_of_zeroes = np.sum(radiation == 0) if number_of_zeroes != 0: self.logger.warning("RadMC never achieved %d points. " "Recalculate with higher nphot_therm " "and/or remove high-density regions " "out of the model grid " "(highly likely, you can forfeit radii ~< 1 au). ", number_of_zeroes) self.interpolate_back("Radiation strength") self.table["Radiation strength"][self.table["Radiation strength"] < 0] = 0 self.table.check_zeros("Radiation strength")Ancestors
Class variables
var mcmono_wavelengths : astropy.units.quantity.Quantityvar wavelengths : astropy.units.quantity.Quantity
Methods
def mcmono_wavelength_micron(self, out_file: Union[str, os.PathLike] = None) ‑> None-
Creates a
mcmono_wavelength_micron.inpfile def read_radiation_strength(self) ‑> None-
Read RadMC3D mcmono radiation strength output into
table
Inherited members