1 SUBROUTINE allocate_boozer (iread)
8 INTEGER :: i, jrad, istat1=0, istat2=0, istat3=0, iread, index
9 CHARACTER(LEN=1000) :: temp
10 CHARACTER(LEN=10) :: scanset=
'0123456789'
12 IF (.not.
ALLOCATED(jlist))
ALLOCATE (jlist(ns), lsurf_boz(ns),
14 IF (istat1 .ne. 0) stop
'Unable to allocate jlist/lsurf_boz'
23 READ (iread,
'(a)', iostat=istat1) temp
24 IF (istat1 .eq. 0)
THEN
25 DO WHILE (istat1 .eq. 0)
27 index = scan(temp,scanset)
30 READ(temp, *) jlist(jrad)
31 IF (jlist(jrad) < 10)
THEN
33 ELSE IF (jlist(jrad) < 100)
THEN
39 READ (iread,
'(a)', iostat=istat1) temp
46 IF (i.gt.1 .and. i.le.ns) lsurf_boz(i) = .true.
49 ELSE IF (istat1 .ne. 0)
THEN
50 WRITE(6,
'(a,/,a,i4)')
51 1
' No jlist data was found in Boozer input file.',
52 1
' Will assume that all surfaces are needed.',
55 lsurf_boz(1) = .false.
59 jsize = count(lsurf_boz(1:ns))
64 ALLOCATE (jlist(jsize), stat=istat1)
65 IF (istat1 .ne. 0) stop
'Unable to allocate jlist'
69 IF (lsurf_boz(jrad))
THEN
75 IF (.not.
ALLOCATED(bsubumnc))
ALLOCATE(
76 1 bsubumnc(mnmax_nyq,ns), bsubvmnc(mnmax_nyq,ns),
77 1 bmodmnc(mnmax_nyq,ns),
78 2 rmnc(mnmax,ns), zmns(mnmax,ns), lmns(mnmax,ns),
79 3 xm(mnmax), xn(mnmax),
80 3 xm_nyq(mnmax_nyq), xn_nyq(mnmax_nyq),
81 4 hiota(ns), phip(ns), gpsi(ns), ipsi(ns), pmns(mnmax_nyq),
82 5 beta_vol(ns), pres(ns), phi(ns), buco(ns), bvco(ns),
83 5 rmncb(mnboz,jsize), zmnsb(mnboz,jsize), pmnsb(mnboz,jsize),
84 6 gmncb(mnboz,jsize), bmncb(mnboz,jsize),
85 7 bmod_b(nv_boz,nu_boz), chip(ns), chi(ns), stat=istat1 )
88 IF (.not.
ALLOCATED(sfull))
ALLOCATE(
89 1 sfull(ns), scl(mnboz), xmb(mnboz), xnb(mnboz), stat=istat2)
91 IF (.not.
ALLOCATED(bsubumns))
ALLOCATE(
93 1 bsubumns(mnmax_nyq,ns), bsubvmns(mnmax_nyq,ns),
94 1 bmodmns(mnmax_nyq,ns),
95 1 rmns(mnmax,ns), zmnc(mnmax,ns), lmnc(mnmax,ns),
97 5 rmnsb(mnboz,jsize), zmncb(mnboz,jsize), pmncb(mnboz,jsize),
98 6 gmnsb(mnboz,jsize), bmnsb(mnboz,jsize),
101 IF (istat1.ne.0 .or. istat2.ne.0 .or. istat3.ne.0)
THEN
102 print *,
' problem allocating boozer memory'
103 print *,
' istat1 = ',istat1,
' istat2 = ',istat2,
104 1
' istat3 = ',istat3
108 END SUBROUTINE allocate_boozer