Blame view

src/idl/dustem_read_align.pro 3.85 KB
427f1205   Jean-Michel Glorian   version 4.2 merged
1
2
FUNCTION dustem_read_align,dir_in,st_grains,silent=silent

66aff855   Jean-Philippe Bernard   modified to impro...
3
4
5
6
7
8
;moved to dustem_init.pro
;defsysv, '!run_circ', 0.  
;defsysv, '!run_anis', 0.  
;defsysv, '!run_rrf', 0.    
;defsysv, '!run_univ', 0.    
;defsysv, '!run_lin', 0.    
427f1205   Jean-Michel Glorian   version 4.2 merged
9
10
11
12
13
14
15
16
17
18
19

file=dir_in+(*!dustem_inputs).align
openr,unit,file,/get_lun
Nlines=0L
str=''
WHILE not eof(unit) DO BEGIN
      readf,unit,str
      Nlines=Nlines+1
ENDWHILE
close,unit
free_lun,unit
b5ccb706   Jean-Philippe Bernard   improved to fit p...
20

427f1205   Jean-Michel Glorian   version 4.2 merged
21
22
23
24
25
26
27
28
29
30
31
;== now read the file
openr,unit,file,/get_lun
ncurrent=0L
REPEAT BEGIN
      readf,unit,str
      ncurrent=ncurrent+1
      first_char=strmid(str,0,1)
ENDREP UNTIL first_char NE '#'
key_str=str

IF stregex(key_str, 'lin', /bool) THEN !run_lin = 1
e69bf245   Jean-Philippe Bernard   improved
32
33
IF stregex(key_str, 'univ', /bool) THEN BEGIN
  !run_univ = 1
8357b327   Jean-Philippe Bernard   removed a stop
34
  ;stop
e69bf245   Jean-Philippe Bernard   improved
35
ENDIF
427f1205   Jean-Michel Glorian   version 4.2 merged
36
37
38
39
40
41
42
43
IF stregex(key_str, 'circ', /bool) THEN !run_circ = 1
IF stregex(key_str, 'anis', /bool) THEN !run_anis = 1
IF stregex(key_str, 'rrf', /bool) THEN !run_rrf = 1

readf,unit,str,format='(A100)'
xx=strsplit(str,' ',/regex,/extr)
anisG0 = float(xx(0))
ncurrent+=+1
d06cb418   Ilyes Choubani   Added PILOT filter
44
nalig=nlines-ncurrent  ; why do we need this? 
b5ccb706   Jean-Philippe Bernard   improved to fit p...
45
46
;stop

427f1205   Jean-Michel Glorian   version 4.2 merged
47
one_st={aligned:0.,law:'',athresh:0.,plev:0.,pstiff:0.,TdsTg:0.,a0:0.,rvcut:0.}
b5ccb706   Jean-Philippe Bernard   improved to fit p...
48
49
;Ngrains=st_grains.Ngrains
Ngrains=n_elements(st_grains)
b5ccb706   Jean-Philippe Bernard   improved to fit p...
50
st=replicate(one_st,Ngrains)
b5ccb706   Jean-Philippe Bernard   improved to fit p...
51
;st.aligned = stregex(st_grains.grains.type_keywords, 'pol', /bool) 
36e8b879   Jean-Michel Glorian   update from deborah
52
;count=0
b5ccb706   Jean-Philippe Bernard   improved to fit p...
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

FOR i=0L,Ngrains-1 DO BEGIN
  ;stop
  is_aligned = stregex(st_grains(i).type_keywords, 'pol', /bool) 

  ;IF st(i).aligned then begin
  IF is_aligned THEN BEGIN
    ;stop
    readf,unit,str,format='(A100)'
    strv=str_sep(strcompress(strtrim(str,2)),' ')
    Nstrv=n_elements(strv)
  
    ii=0L
    st(i).law=strv(ii) & ii=ii+1

    ; IDG
    IF stregex(st(i).law, 'idg', /bool) THEN BEGIN
      st[i].TdsTg = strv[ii] & ii=ii+1
      st[i].a0    = strv[ii] & ii=ii+1
      st[i].rvcut = strv[ii] & ii=ii+1
    ENDIF

    ; RAT
    IF stregex(st(i).law, 'rat', /bool) THEN BEGIN
    ENDIF

    ; PARAMETRIC
    IF stregex(st(i).law, 'par', /bool) THEN BEGIN
      ; Grain radius Threshold for alignment, given in microns and converted in cm
      st[i].athresh = strv(ii) & ii=ii+1
      st[i].pstiff  = strv(ii) & ii=ii+1
      st[i].plev    = strv(ii) & ii=ii+1
    ENDIF
    st[i].aligned = stregex(st_grains(i).type_keywords, 'pol', /bool) 
4ae78eb8   Jean-Philippe Bernard   removed stop
87
    ;stop
b5ccb706   Jean-Philippe Bernard   improved to fit p...
88
89
90
91

    IF !run_univ eq 1 THEN BEGIN
      st = replicate(st(i),Ngrains)
      ;st.aligned = stregex(st_grains.grains.type_keywords, 'pol', /bool) 
d06cb418   Ilyes Choubani   Added PILOT filter
92
      st(i).aligned = stregex(st_grains(i).type_keywords, 'pol', /bool)
b5ccb706   Jean-Philippe Bernard   improved to fit p...
93
      break
d06cb418   Ilyes Choubani   Added PILOT filter
94
      ;stop  
b5ccb706   Jean-Philippe Bernard   improved to fit p...
95
96
97
98
99
100
101
102
103
    ENDIF
  ENDIF
ENDFOR

; FOR i=0L,st_grains.Ngrains-1 DO BEGIN
;    IF st(i).aligned then begin
;         ; if count EQ 0. then begin   
;          readf,unit,str,format='(A100)'   
;       ;endif 
36e8b879   Jean-Michel Glorian   update from deborah
104
     
b5ccb706   Jean-Philippe Bernard   improved to fit p...
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
135
136
137
138
139
;       	strv=str_sep(strcompress(strtrim(str,2)),' ')
;       	Nstrv=n_elements(strv)

; 	ii=0L
;       	st(i).law=strv(ii) & ii=ii+1 

; 	; IDG
;         IF stregex(st(i).law, 'idg', /bool) THEN begin
;            ii=ii+1 
;       		st(i).TdsTg = strv(ii) & ii=ii+1
;       		st(i).a0    = strv(ii) & ii=ii+1
;       		st(i).rvcut = strv(ii) & ii=ii+1
; 	endif

; 	; RAT
;       	IF stregex(st(i).law, 'rat', /bool) THEN begin
; 	endif

; 	; PARAMETRIC
;         IF stregex(st(i).law, 'par', /bool) THEN begin
;                                 ; Grain radius Threshold for
;                                 ; alignment, given in microns and
;                                 ; converted in cm
;       		st(i).athresh = strv(ii) & ii=ii+1
;       		st(i).pstiff  = strv(ii) & ii=ii+1
;                 st(i).plev    = strv(ii) & ii=ii+1
;                 ; count=1
; 	endif

;         IF !run_univ eq 1 then begin
; 		st = replicate(st(i),st_grains.Ngrains)
;                 st.aligned = stregex(st_grains.grains.type_keywords, 'pol', /bool)
;                 ;stop
; 		break
; 	endif
36e8b879   Jean-Michel Glorian   update from deborah
140
141
142
       
    
       
b5ccb706   Jean-Philippe Bernard   improved to fit p...
143
;       ENDIF
427f1205   Jean-Michel Glorian   version 4.2 merged
144

b5ccb706   Jean-Philippe Bernard   improved to fit p...
145
; ENDFOR
427f1205   Jean-Michel Glorian   version 4.2 merged
146
147
148
149
150

close,unit
free_lun,unit

full_st={keywords:key_str,anisG0:anisG0,gamma:0,grains:st}
427f1205   Jean-Michel Glorian   version 4.2 merged
151
152
153
RETURN,full_st

END