Blame view

src/idl/dustem_read_all_web3p8.pro 3.79 KB
427f1205   Jean-Michel Glorian   version 4.2 merged
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
FUNCTION dustem_read_all_web3p8,dir_in,silent=silent

dir_in_dat=dir_in+'/data/'
dir_in_qabs=dir_in+'/oprop/'
dir_in_capa=dir_in+'/hcap/'

file=dir_in_dat+(*!dustem_inputs).grain
st_grains=dustem_read_grain(file,silent=silent)

Ngrains=st_grains.Ngrains

file=dir_in_dat+'ISRF.DAT'
st_isrf=dustem_read_isrf(file,silent=silent,Nisrf=Nisrf)

;=== Read Qabs
st_qabs=ptrarr(Ngrains)
FOR i=0L,Ngrains-1 DO BEGIN
  Qabs_file=dir_in_qabs+'Q_'+st_grains.grains(i).grain_type+'.DAT'
  st=dustem_read_qabs_lv(Qabs_file,silent=silent)
  st_qabs(i)=ptr_new(st)
ENDFOR

;=== Read heat capacities
st_calor=ptrarr(Ngrains)
FOR i=0L,Ngrains-1 DO BEGIN
  Calor_file=dir_in_capa+'C_'+st_grains.grains(i).grain_type+'.DAT'
  st=dustem_read_calor_lv(Calor_file,silent=silent)
  st_calor(i)=ptr_new(st)
ENDFOR

;=== Read lambda
file=dir_in_qabs+'LAMBDA.DAT'
st_lambda=dustem_read_lambda(file,silent=silent)

;=== Read size distribution files
st_size=ptrarr(Ngrains)
FOR i=0L,Ngrains-1 DO BEGIN
  IF stregex(st_grains.grains(i).type_keywords, 'size', /bool) THEN BEGIN
    Size_file=dir_in_dat+'SIZE_'+st_grains.grains(i).grain_type+'.DAT'
    st=dustem_read_size(Size_file,silent=silent)
    st_size(i)=ptr_new(st)
  ENDIF ELSE BEGIN
    st_size(i) = ptr_new()
  ENDELSE
ENDFOR

;=== Read MIX files
st_mix = ptrarr(Ngrains)
FOR i=0L,Ngrains-1 DO BEGIN
   IF stregex(st_grains.grains(i).type_keywords, 'mix', /bool) THEN BEGIN
      Mix_file=dir_in_dat+'MIX_'+st_grains.grains(i).grain_type+'.DAT'
      st=dustem_read_mix(Mix_file,silent=silent)
      st_mix(i)=ptr_new(st)
   ENDIF ELSE BEGIN
      st_mix(i)=ptr_new()
   ENDELSE
ENDFOR

;stop

;=== Read POL and Qabs files
st_qpol = ptrarr(2,Ngrains)
st_qH = ptrarr(2,Ngrains)
st_qcirc = ptrarr(Ngrains)

if !run_pol then begin

   st_align=dustem_read_align(dir_in_dat,st_grains,silent=silent)

   FOR i=0L,Ngrains-1 DO BEGIN

      i_alig = 0

      IF stregex(st_grains.grains(i).type_keywords, 'pol', /bool) THEN BEGIN
 
	 IF not stregex(st_align.keywords, 'rrf', /bool) THEN BEGIN
         FOR i_axis = 1, 2 DO BEGIN
            Q_file=dir_in_qabs+'Q'+strtrim(i_axis,2)+'_'+st_grains.grains(i).grain_type+'.DAT'
            st=dustem_read_qabs_lv(Q_file,silent=silent)
            st_qpol(i_axis-1,i)=ptr_new(st)
         ENDFOR
         ENDIF
         
      	 IF (st_align.anisG0 > 0) THEN BEGIN
            FOR i_axis = 1, 2 DO BEGIN
               Q_file=dir_in_qabs+'QH'+strtrim(i_axis,2)+'_'+st_grains.grains(i).grain_type+'.DAT'
               st=dustem_read_qabs_lv(Q_file,silent=silent)
               st_qH(i_axis-1,i)=ptr_new(st)
            ENDFOR
	 endif

      	 IF stregex(st_align.keywords, 'circ', /bool) THEN BEGIN
            Q_file=dir_in_qabs+'Qc_'+st_grains.grains(i).grain_type+'.DAT'
            st=dustem_read_qabs_lv(Q_file,silent=silent)
            st_qcirc(i)=ptr_new(st)
	 endif

      ENDIF ELSE BEGIN
         st_qpol(0:1,i)=ptr_new()
         st_qH(0:1,i)=ptr_new()
         st_qcirc(i)=ptr_new()
      ENDELSE
 
   ENDFOR

ENDIF

;DP :ADD DTLS
one_st={file:'',a_dtls:0.,lc:0.,c_delta:0.,vt:0.,Pmu:0.,gamma_e:0.,omega_m:0.,tau_0:0.,V0:0.,Vmin:0.,Vm:0.,ldtresh:0.}
st_tls = replicate(one_st,Ngrains)

if !run_tls then begin
   FOR i=0L,Ngrains-1 DO BEGIN
      IF stregex(st_grains.grains(i).type_keywords, 'dtls', /bool) THEN BEGIN
         TLS_file='DTLS_'+st_grains.grains(i).grain_type+'.DAT'
         st=dustem_read_tls(dir_in,TLS_file,silent=silent)
         st_tls(i)=st
      ENDIF ELSE BEGIN
         st_tls(i)=one_st
      ENDELSE
   ENDFOR
ENDIF

;VG Add NH
if !run_pol then begin
	st={grain:st_grains,isrf:st_isrf,qabs:st_qabs,calor:st_calor,lambda:st_lambda,size:st_size,mix:st_mix,align:st_align,qpol:st_qpol,qcirc:st_qcirc,qH:st_qH,tls:st_tls}
endif else begin
	st={grain:st_grains,isrf:st_isrf,qabs:st_qabs,calor:st_calor,lambda:st_lambda,size:st_size,mix:st_mix,tls:st_tls}
endelse


RETURN,st

END