;Name: CROISSANT ; ; REFERENCES: Thernisien, A., ApJS, 194, 33, 2011; ; Hutten, J., and Morgan, H., ApJ, 813, 35, 2015; ; Hutten, J. and Morgan, H., A&A, 599, A68, 2017 ; if you use hydro model -- choices are: ; HYDRO=2 ; Gibson et al., JGR, 104, 9691, 1999 [closed field] ; Guhathakurta et al., JGR, 104, 9801, 1999 [open field] ; HYDRO=3 ; Vasquez et al., ApJ, 598, 1361, 2003 ; HYDRO=4 ; Cranmer et al., ApJ, 511, 481, 1999 [open field] ; Vasquez et al., ApJ, 598, 1361, 2003 [closed field] ; ;Purpose: To create structure containing parameters that control the croissant CME model; ; To be called by driver routine and resulting structure will be named ; ModPramsStruct (with ModPramsStruct.name='croissant') ; ; The Croissant CME model is a large tube with ; footpoints at the Sun. In this model, the density is peaked at the boundaries ; of the flux tube, decreasing with distance from the boundaries. The tube is ; narrow near the Sun and widest at the CME apex. The tube can be centered at any longitude, ; latitude, can be twisted around the vertical symmetry axis, and manipulated in several ; other ways. ; ; This module allows users to specify various parameters that control the geometry and total mass ; of the Croissant-shaped flux tube, described below. ; ; This implementation of the Croissant model is a simple, general model for large CMEs, and is ; similar to the model developed by Thernisien et al, see ; https://iopscience.iop.org/article/10.1088/0067-0049/194/2/33/meta ; and references within. See also ; https://iopscience.iop.org/article/10.1088/0004-637X/813/1/35/meta ; https://www.aanda.org/articles/aa/abs/2017/03/aa29516-16/aa29516-16.html ; for brief descriptions of similar models. Please cite the above if you use this module for ; published work. ; ;Keyword Inputs: ; ;Several parameters to control the distribution of CME points ; ; ORIENTATION: orientation of croissant around its central vertical axis of symmetry. For a CME centered above the ; equator, at the limb, orientation=90 will result in a CME seen face-on. orientation=0 will be a CME ; seen edge-on. ; Units=degrees ; DEFAULT 0 ; ; WIDTH: ; Unitless factor controlling the width of the tube at the CME apex. This is multiplied by the distance ; of the CME from the Sun in order to replicate self-similar expansion. To be specific, this width is the radius ; of the tube from the central axis of the tube at the CME apex. The tube then narrows from this maximum width ; from the apex down to the footpoints (see htwidthfact parameter below). ; Units=unitless ; DEFAULT 0.4 ; ; ANGULAR_EXTENT: ; The range of the Croissant from one leg to the other at its widest point. For a CME viewed face-on, this ; corresponds approximately to the position angle extent of the CME ; Units=unitless. This parameter is multiplied by the distance ; of the CME from the Sun in order to replicate self-similar expansion. ; DEFAULT 1.0 ; ; HTWIDTHFACT: A factor that controls how the tube narrows from the maximum radius at the CME apex ; Units=unitless ; DEFAULT 0.3 ; ; HEIGHTPROF: In calculating the CME density, we need a profile that reduces the density of the legs at smaller distances ; to the Sun (else legs are overwhelmingly bright, contrary to observations) ; Units=unitless ; DEFAULT 1.0 ; ; LEGSSQUEEZE: A factor that controls the distance between the CME footpoints. Rarely used ; Units= unitless ; DEFAULT 0.2 ; ; TWIST: twist of main CME around central vertical axis of symmetry. Very interesting CME shapes can arise from ; quite small twists. ; Units=number of full rotations from footpoints to CME apex ; DEFAULT 0.2 ; ; MASS: Total mass of the CME. If only a portion of the CME is within the image field of view, then this mass ; is reduced accordingly. The density is calculated based on this mass. Approximate only. ; Units=grams ; DEFAULT 3.d16 ; ; NLOOP: number of points defining croissant axis ; DEFAULT 100 ; ; CME_DISTANCE: The heliocentric distance of the CME apex ; - the top of the central axis of the croissant, not the CME front ; ; Units=Solar radii ; DEFAULT 3.15 ; ; EDGEWIDTH: The width of the CME boundary ; - multiples rloop/3.15 -- ; where rloop is set by cme_distance and angular_extent and legssqueeze ; DEFAULT 0.05 ; ; HYDRO, ODENSPROF, OT0: ; how to handle the plasma throughout the corona. ; The CME density is added to this 'background' plasma ; the temperature of the croissant is also OT0 ; DEFAULT HYDRO 0 ; no plasma outside the croissant ; ; FOR ODENSPROF, OT0 DEFAULTS SEE BELOW ; ; HYDRO: hydrostatic atmospheric models ; ; CALLED by models (within [model]*prams.pro): ; ; The options are: ; HYDRO=0 - zero density ; not allowed for DIPOLE, GIBBAGLOW, or PFSSMOD -- replaced with hydro=3 ; HYDRO=1; exponential isothermal hydrostatic equilibrium ; HYDRO=2; radial power law hydrostatic equilibrium ; HYDRO=3; Vasquez et al 2003 density, electron temperature ; DEFAULT ; HYDRO=4; Cranmer et al 1999 empirical model for coronal hole density, temperature ; only allowed for open field profiles ; if set, any closed fields will revert to HYDRO=3 representation ; HYDRO=5; simpler version of HYDRO=2, with only one radial power law (for far field) ; HYDRO > 5 --> HYDRO=3 ; ; KEYWORDS SET IN FOR_HYDRODEFAULTS ; ; CDENSPROF,ODENSPROF - ; HYDRO=0, CDENSPROF,ODENSPROF not used, set to 'NULL' and won't show up in widget ; HYDRO=1, CDENSPROF, ODENSPROF represent density at coronal base in CGS units, ; CDENSPROF scaled by 1d9 ; ODENSPROF scaled by 1d8 ; HYDRO=2, CDENSPROF, ODENSPROF can be input array [A,B,C,D,E,F] (units in cgs) ; or multipliers of array [densprof*A,B,densprof*C,D,densprof*E,F] ; (note for widget it has to be multiplier, so, scalar) ; closed field array defaults to values of Gibson et al 1999 WSM streamer ; open field array defaults to values of Guhathakurta et al 1999 WSM c. hole ; dens = A*r^-B + C*r^-D + E*r^-F ; HYDRO=3, CDENSPROF,ODENSPROF can be array [A1,A2,A3,A4,A5,aa,bb,alpha,beta] ; or multipliers of A1 ; closed field array defaults to Vasquez/Sittler-Guhathakurta streamer values ; open field array defaults to Vasquez/Sittler-Guhathakurta polar ; dens=A1*exp(A2/r)*r^-2*(1+A3/r+A4/r^2+A5/r^3) ; HYDRO=4,ODENSPROF can be array [da,db,dc,dd,de,ta,tb,tc,td] ; or multipliers of da ; open field array defaults to Cranmer coronal hole values ; dens_he= da*1e5*(db*(1./r)^dc + dd*(1./r)^de) ; (for HYDRO=4 CDENSPROF set to 'NULL' and for_hydrodefaults will ; be called twice, the second time with HYDRO=3) ; HYDRO=5, ODENSPROF CDENSPROF are density at coronal base ; density=densprof*1d7r^T0 ; ; DEFAULT CDENSPROF=1 (CDENSPROF=6 for HYDRO=5) ; DEFAULT ODENSPROF=1 ; ; CT0, OTO ; HYDRO=0,1, isothermal temperature parameter value ; HYDRO=2 -- not used set to null and not shown in widget ; (temperature follows from density profile, ideal gas law, hydrostatic pressure balance) ; HYDRO=3 scaling factor for model, divided by 1.5d6, and uses parameters in DENSPROF ; temp=T0*(8e5/1.5e6)*(aa+1)/(aa+bb*r^alpha + (1-bb)*r^-beta) ; (normalized to 1.5e6 so same T0 default can be used as other HYDRO choices) ; HYDRO=4 scaling factor for model, divided by 1.5d6, and uses parameters in DENSPROF ; temp_he= T0*(1e6/1.5e6)*(ta*r^tb + tc*r^td)^(-1) ; (normalized to 1.5e6 so same T0 default can be used as other HYDRO choices) ; (for HYDRO=4 CTO set to 'NULL'and for_hydrodefaults will ; be called twice, the second time with HYDRO=3) ; DEFAULT CTO 1.5D6 ; DEFAULT OTO 1.D6 ; (except for HYDRO=3 -- DEFAULT OTO 1.5D6) ; HYDRO=5 -- defines slope of radial falloff; designed for far field falloff ; (temperature follows from density profile, ideal gas law, hydrostatic pressure balance) ; DEFAULT CTO =-4 OTO=-2