31 integer,
dimension(:),
allocatable ,
public ::
rows
32 integer,
dimension(:),
allocatable ,
public ::
pt_b
33 integer,
dimension(:),
allocatable ,
public ::
pt_e
34 integer,
dimension(:),
allocatable ,
public ::
dia
35 integer,
dimension(:,:),
allocatable ,
public ::
jind
86 integer,
dimension(net_size*net_size) :: ja_t
87 integer,
dimension(:,:),
allocatable :: cscf_tmp_fiss
88 integer,
dimension(4,6) :: cscf_tmp
106 select case (rr_tmp%group)
108 if ((rr_tmp%reac_type.eq.
rrt_sf).or.(rr_tmp%reac_type.eq.
rrt_bf)) cycle
110 if (rr_tmp%parts(j).eq.0)
exit
111 jind(rr_tmp%parts(1),rr_tmp%parts(j)) = 1
114 if (rr_tmp%reac_type.eq.
rrt_nf) cycle
116 if (rr_tmp%parts(j).eq.0)
exit
117 jind(rr_tmp%parts(1),rr_tmp%parts(j)) = 1
118 jind(rr_tmp%parts(2),rr_tmp%parts(j)) = 1
122 if (rr_tmp%parts(j).eq.0)
exit
123 jind(rr_tmp%parts(1),rr_tmp%parts(j)) = 1
124 jind(rr_tmp%parts(2),rr_tmp%parts(j)) = 1
125 jind(rr_tmp%parts(3),rr_tmp%parts(j)) = 1
129 if (rr_tmp%parts(j).eq.0)
exit
130 jind(rr_tmp%parts(1),rr_tmp%parts(j)) = 1
131 jind(rr_tmp%parts(2),rr_tmp%parts(j)) = 1
132 jind(rr_tmp%parts(3),rr_tmp%parts(j)) = 1
133 jind(rr_tmp%parts(4),rr_tmp%parts(j)) = 1
157 if (
jind(j,i).eq.0) cycle
159 if (j.eq.i)
dia(i)=cnt
177 select case (rr_tmp%group)
179 if ((rr_tmp%reac_type.eq.
rrt_sf).or.(rr_tmp%reac_type.eq.
rrt_bf)) cycle
181 if (rr_tmp%parts(j).eq.0)
exit
182 cscf_tmp(1,j)=
jind(rr_tmp%parts(1),rr_tmp%parts(j))
185 if (rr_tmp%reac_type.eq.
rrt_nf) cycle
187 if (rr_tmp%parts(j).eq.0)
exit
188 cscf_tmp(1,j)=
jind(rr_tmp%parts(1),rr_tmp%parts(j))
189 cscf_tmp(2,j)=
jind(rr_tmp%parts(2),rr_tmp%parts(j))
193 if (rr_tmp%parts(j).eq.0)
exit
194 cscf_tmp(1,j)=
jind(rr_tmp%parts(1),rr_tmp%parts(j))
195 cscf_tmp(2,j)=
jind(rr_tmp%parts(2),rr_tmp%parts(j))
196 cscf_tmp(3,j)=
jind(rr_tmp%parts(3),rr_tmp%parts(j))
200 if (rr_tmp%parts(j).eq.0)
exit
201 cscf_tmp(1,j)=
jind(rr_tmp%parts(1),rr_tmp%parts(j))
202 cscf_tmp(2,j)=
jind(rr_tmp%parts(2),rr_tmp%parts(j))
203 cscf_tmp(3,j)=
jind(rr_tmp%parts(3),rr_tmp%parts(j))
204 cscf_tmp(4,j)=
jind(rr_tmp%parts(4),rr_tmp%parts(j))
208 rrate(i)%cscf_ind = cscf_tmp
214 if (
allocated(cscf_tmp_fiss))
deallocate(cscf_tmp_fiss)
215 allocate(cscf_tmp_fiss(2,
fissrate(i)%dimens))
226 fissrate(i)%cscf_ind = cscf_tmp_fiss
250 real(
r_kind),
dimension(net_size),
intent(inout) :: rhs
251 real(
r_kind),
dimension(net_size),
intent(inout) :: res
257 integer :: maxfct, mnum, mtype, phase, nrhs, error, msglvl
260 integer,
dimension(:),
allocatable :: ja_par
261 real(
r_kind),
dimension(:),
allocatable :: a_par
267 character*3 :: omp_env
270 data nrhs /1/, maxfct /1/, mnum /1/
272 info_entry(
"netsolve")
274 nz_cnt = count(
vals.ne.0.d0)
275 allocate(ja_par(nz_cnt))
276 allocate(a_par(nz_cnt))
283 if(
vals(j).eq.0.d0) cycle
286 ja_par(cnt) =
rows(j)
287 if (ia_par(i).lt.0) ia_par(i) = cnt
299 call pardisoinit(pt, mtype, iparm)
301 call getenv(
'OMP_NUM_THREADS',omp_env)
303 if (len_trim(omp_env)==0)
then
306 read(omp_env,
'(i3)')nthreads
319 call pardiso (pt, maxfct, mnum, mtype, phase,
net_size, a_par, ia_par, ja_par, &
320 idum, nrhs, iparm, msglvl, rhs, el, error)
324 call pardiso (pt, maxfct, mnum, mtype, phase,
net_size, ddum, idum, idum,&
325 idum, nrhs, iparm, msglvl, ddum, ddum, error)
329 if (el(i).ne.el(i))
then
338 if((i.gt.2).and.(el(i) .lt. 1.d-25)) el(i) = 0.d0
339 rhs(i) = el(i) - res(i)
346 new_line(
"A")//
'Choose either "1" or "2".',
"netsolve",350004)
352 info_exit(
"netsolve")