Blame view

src/idl/dustem_read_align.pro 3.79 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
32
33
34
35
36
37
38
39
40
41
42
;== 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
IF stregex(key_str, 'univ', /bool) THEN !run_univ = 1
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
nalig=nlines-ncurrent

b5ccb706   Jean-Philippe Bernard   improved to fit p...
43
44
;stop

427f1205   Jean-Michel Glorian   version 4.2 merged
45
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...
46
47
;Ngrains=st_grains.Ngrains
Ngrains=n_elements(st_grains)
427f1205   Jean-Michel Glorian   version 4.2 merged
48

b5ccb706   Jean-Philippe Bernard   improved to fit p...
49
50
51
st=replicate(one_st,Ngrains)

;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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102

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) 
    ;stop

    IF !run_univ eq 1 THEN BEGIN
      st = replicate(st(i),Ngrains)
      ;st.aligned = stregex(st_grains.grains.type_keywords, 'pol', /bool) 
      st.aligned = stregex(st_grains(i).type_keywords, 'pol', /bool) 
      break
    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
103
     
b5ccb706   Jean-Philippe Bernard   improved to fit p...
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
135
136
137
138
;       	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
139
140
141
       
    
       
b5ccb706   Jean-Philippe Bernard   improved to fit p...
142
;       ENDIF
427f1205   Jean-Michel Glorian   version 4.2 merged
143

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

close,unit
free_lun,unit

full_st={keywords:key_str,anisG0:anisG0,gamma:0,grains:st}
36e8b879   Jean-Michel Glorian   update from deborah
150

427f1205   Jean-Michel Glorian   version 4.2 merged
151
152
153
RETURN,full_st

END