;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

