CalculiX  2.13
A Free Software Three-Dimensional Structural Finite Element Program
greens.f File Reference

Go to the source code of this file.

Functions/Subroutines

subroutine greens (inpc, textpart, nmethod, iperturb, isolver, istep, istat, n, iline, ipol, inl, ipoinp, inp, ithermal, ipoinpc)
 

Function/Subroutine Documentation

◆ greens()

subroutine greens ( character*1, dimension(*)  inpc,
character*132, dimension(16)  textpart,
integer  nmethod,
integer, dimension(2)  iperturb,
integer  isolver,
integer  istep,
integer  istat,
integer  n,
integer  iline,
integer  ipol,
integer  inl,
integer, dimension(2,*)  ipoinp,
integer, dimension(3,*)  inp,
integer  ithermal,
integer, dimension(0:*)  ipoinpc 
)
22 !
23 ! reading the input deck: *GREEN
24 !
25 ! isolver=0: SPOOLES
26 ! 7: pardiso
27 !
28  implicit none
29 !
30  character*1 inpc(*)
31  character*20 solver
32  character*132 textpart(16)
33 !
34  integer nmethod,iperturb(2),isolver,istep,istat,n,key,i,
35  & iline,ipol,inl,ipoinp(2,*),inp(3,*),ithermal,ipoinpc(0:*)
36 !
37 c if((iperturb.eq.1).and.(istep.ge.1)) then
38 c write(*,*) '*ERROR reading *GREEN:'
39 c write(*,*) ' perturbation analysis is'
40 c write(*,*) ' not provided in a *GREEN'
41 c write(*,*) ' step.'
42 c call exit(201)
43 c endif
44 !
45  if(istep.lt.1) then
46  write(*,*) '*ERROR reading *GREEN:'
47  write(*,*) ' *GREEN can only be used'
48  write(*,*) ' within a STEP'
49  call exit(201)
50  endif
51 !
52 ! no heat transfer analysis
53 !
54  if(ithermal.gt.1) then
55  ithermal=1
56  endif
57 !
58 ! default solver
59 !
60  solver=' '
61  if(isolver.eq.0) then
62  solver(1:7)='SPOOLES'
63  elseif(isolver.eq.2) then
64  solver(1:16)='ITERATIVESCALING'
65  elseif(isolver.eq.3) then
66  solver(1:17)='ITERATIVECHOLESKY'
67  elseif(isolver.eq.4) then
68  solver(1:3)='SGI'
69  elseif(isolver.eq.5) then
70  solver(1:5)='TAUCS'
71  elseif(isolver.eq.7) then
72  solver(1:7)='PARDISO'
73  endif
74 !
75  do i=2,n
76  if(textpart(i)(1:7).eq.'SOLVER=') then
77  read(textpart(i)(8:27),'(a20)') solver
78  else
79  write(*,*) '*WARNING reading *GREEN:'
80  write(*,*) ' parameter not recognized:'
81  write(*,*) ' ',
82  & textpart(i)(1:index(textpart(i),' ')-1)
83  call inputwarning(inpc,ipoinpc,iline,
84  &"*GREEN%")
85  endif
86  enddo
87 !
88  if(solver(1:7).eq.'SPOOLES') then
89  isolver=0
90  elseif(solver(1:7).eq.'PARDISO') then
91  isolver=7
92  else
93  write(*,*) '*ERROR reading *GREEN:'
94  write(*,*) ' solver:',solver,'is not allowed.'
95  write(*,*) ' please specify SPOOLES or PARDISO'
96  call exit(201)
97  endif
98 !
99  nmethod=11
100  if(iperturb(1).gt.1) iperturb(1)=0
101 !
102  call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
103  & ipoinp,inp,ipoinpc)
104 !
105  return
subroutine inputwarning(inpc, ipoinpc, iline, text)
Definition: inputwarning.f:20
subroutine getnewline(inpc, textpart, istat, n, key, iline, ipol, inl, ipoinp, inp, ipoinpc)
Definition: getnewline.f:21
Hosted by OpenAircraft.com, (Michigan UAV, LLC)