27INTEGER,
INTENT(IN) :: NAT, STR
28INTEGER,
DIMENSION(NAT,NS),
INTENT(IN):: CONT
29INTEGER,
DIMENSION(MAXN,NAT,NS),
INTENT(IN) :: VOIS
30INTEGER,
DIMENSION(NAT),
INTENT(INOUT):: CPT
31INTEGER,
DIMENSION(NAT,MAXN),
INTENT(INOUT) :: VPT
32INTEGER :: RAB, RAC, RAD
45 if (cont(rab,str) .gt. 1)
then
47 do rad=1, cont(rab,str)
48 if (cont(vois(rad,rab,str),str) .gt. 1)
then
50 vpt(rab,rac) = vois(rad,rab,str)
67INTEGER,
INTENT(IN) :: STR, NAT
68INTEGER :: RAB, RAC, RAD
80 if (
contj(rab,str) .gt. 1)
then
82 do rad=1,
contj(rab,str)
113 INTEGER,
INTENT(IN) :: vid
122numth = omp_get_max_threads()
125if (
ns.ge.1 .and.
ns.lt.numth)
then
126 if (numth .ge. 2*(
ns-1))
then
133if (all_atoms) doatoms=.true.
136 if (
na.lt.numth) numth=
na
138 write (6, *)
"OpenMP on atoms, NUMTH= ",numth
140 call king_ring_search_atoms (ar, numth)
143 write (6, *)
"OpenMP on MD steps, NUMTH= ",numth
156SUBROUTINE king_ring_search_atoms (ARI, NUMTH)
163INTEGER,
INTENT(IN) :: ari, numth
164TYPE (
ring),
DIMENSION(:),
ALLOCATABLE :: the_ring
165INTEGER,
DIMENSION(:),
ALLOCATABLE :: tring, indte, indth
166INTEGER,
DIMENSION(:,:,:),
ALLOCATABLE :: savring, ordring
167INTEGER,
DIMENSION(:,:,:),
ALLOCATABLE :: savr, ordr
168INTEGER :: lora, lorb, lorc, ri
171 RECURSIVE SUBROUTINE inside_ring (THE_RING, FND, S_IR, AI_IR, RID, TAE, TAH, LRA, LRB, &
172 NRPAT, RSAVED, OSAVED, TRING, INDE, INDH, RESL, CPT, VPT)
174 TYPE (
ring),
DIMENSION(TAILLD),
INTENT(INOUT) :: the_ring
175 LOGICAL,
INTENT(INOUT) :: fnd
176 INTEGER,
INTENT(IN) :: s_ir, ai_ir, rid, lra, lrb
177 INTEGER,
INTENT(INOUT) :: tae, tah
178 INTEGER,
DIMENSION(NA),
INTENT(INOUT) :: nrpat
179 INTEGER,
DIMENSION(TAILLR,NUMA,TAILLR),
INTENT(INOUT) :: rsaved, osaved
180 INTEGER,
DIMENSION(NUMA),
INTENT(INOUT) :: inde, indh
181 INTEGER,
DIMENSION(TAILLR),
INTENT(INOUT) :: resl, tring
182 INTEGER,
DIMENSION(NA,MAXN),
INTENT(IN) :: vpt
183 INTEGER,
DIMENSION(NA),
INTENT(IN):: cpt
187 INTEGER,
INTENT(IN) :: idsearch
188 INTEGER,
DIMENSION(TAILLR, NS),
INTENT(IN) :: nri
190 INTEGER FUNCTION rings_to_ogl (STEP, IDSEARCH, NRI, RSAVED, OSAVED)
192 INTEGER,
INTENT(IN) :: step, idsearch
193 INTEGER,
DIMENSION(TAILLR,NS),
INTENT(IN) :: nri
194 INTEGER,
DIMENSION(TAILLR,NUMA,TAILLR),
INTENT(IN) :: rsaved, osaved
196 SUBROUTINE del_this_ring (TLED, RSAVED, OSAVED, TRING, RESL, INDT)
198 INTEGER,
INTENT(IN) :: tled
199 INTEGER,
DIMENSION(TAILLR,NUMA,TAILLR),
INTENT(INOUT) :: rsaved, osaved
200 INTEGER,
DIMENSION(NUMA),
INTENT(INOUT) :: indt
201 INTEGER,
DIMENSION(TAILLR),
INTENT(INOUT) :: resl, tring
206if(
allocated(savring))
deallocate(savring)
207allocate(savring(taillr,numa,taillr), stat=err)
213if(
allocated(ordring))
deallocate(ordring)
214allocate(ordring(taillr,numa,taillr), stat=err)
220if(
allocated(cpat))
deallocate(cpat)
221allocate(cpat(na), stat=err)
227 if(
allocated(vpat))
deallocate(vpat)
228allocate(vpat(na,maxn), stat=err)
252 if (
allocated(rpat))
deallocate(rpat)
253 allocate(rpat(na), stat=err)
259 if(
allocated(res_list))
deallocate(res_list)
260 allocate(res_list(taillr), stat=err)
266 if(
allocated(indte))
deallocate(indte)
267 allocate(indte(numa), stat=err)
272 if(
allocated(indth))
deallocate(indth)
273 allocate(indth(numa), stat=err)
278 if(
allocated(apna))
deallocate(apna)
279 allocate(apna(taillr), stat=err)
285 if(
allocated(savr))
deallocate(savr)
286 allocate(savr(taillr,numa,taillr), stat=err)
292 if(
allocated(ordr))
deallocate(ordr)
293 allocate(ordr(taillr,numa,taillr), stat=err)
299 if(
allocated(tring))
deallocate(tring)
300 allocate(tring(taillr), stat=err)
306 if(
allocated(the_ring))
deallocate(the_ring)
307 allocate(the_ring(tailld), stat=err)
320 if (tbr .or. alc)
goto 003
321 if (tlt .eq. nsp+1 .or. lot(j) .eq. tlt)
then
332 if (cpat(j).ge.2)
then
342 if ((lorb .ne. lora) .and. (lorc .ne. lora) .and. (lorb .eq. lorc))
then
359 the_ring(1)%ATOM=vpat(j,l)
360 the_ring(1)%SPEC=lorb
361 the_ring(1)%NEIGHBOR=1
363 the_ring(2)%SPEC=lora
364 the_ring(2)%NEIGHBOR=1
371 the_ring(3)%ATOM=vpat(j,m)
372 the_ring(3)%SPEC=lorc
373 the_ring(3)%NEIGHBOR=cpat(vpat(j,m))
375 call inside_ring (the_ring, found, i, vpat(j,m), 3, taille, taillh, lora, lorb, &
376 rpat, savr, ordr, tring, indte, indth, res_list, cpat, vpat)
377 if (alc) alc_tab=
"INSIDE_LIST"
378 if (tbr .or. alc)
goto 003
383 if (indte(n).ne.0 .and. apna(k).eq.0)
then
393 if (apna(taille) .eq. 0)
then
395 minat=
min(minat,taille)
396 maxat=
max(maxat,taille)
400 else if (no_homo .and. res_list(taillh) .ne. 0)
then
403 call del_this_ring (taillh, savr, ordr, tring, res_list, indth)
404 else if (doampat)
then
405 if (contj(vpat(j,l),i) .ge. 2 .and. contj(vpat(j,m),i) .ge. 2)
then
407 ampat(o,i)=ampat(o,i)+1
419 if (apna(k).eq.1 .and. apna(l).eq.1)
then
421 pna(k,l,i)=pna(k,l,i)+1
426 maxpna(maxat,i)=maxpna(maxat,i)+1
428 minpna(minat,i)=minpna(minat,i)+1
435 if (tbr .or. alc)
goto 002
438 if (tring(k).gt.0)
then
439 if (nring(k,i).gt.0)
then
445 if (savring(k,m,n) .ne. savr(k,l,n))
then
454 if (nring(k,i)+o .gt. numa)
then
459 savring(k,nring(k,i)+o,m) = savr(k,l,m)
460 ordring(k,nring(k,i)+o,m) = ordr(k,l,m)
464 nring(k,i)=nring(k,i)+o
468 savring(k,l,m) = savr(k,l,m)
469 ordring(k,l,m) = ordr(k,l,m)
472 nring(k,i) = tring(k)
482 if (
allocated(rpat))
deallocate (rpat)
483 if (
allocated(res_list))
deallocate (res_list)
484 if (
allocated(indte))
deallocate (indte)
485 if (
allocated(indth))
deallocate (indth)
486 if (
allocated(apna))
deallocate (apna)
487 if (
allocated(tring))
deallocate (tring)
488 if (
allocated(savr))
deallocate (savr)
489 if (
allocated(ordr))
deallocate (ordr)
490 if (
allocated(the_ring))
deallocate (the_ring)
492 if (alc .or. tbr)
goto 001
509 call show_error (
"Impossible to allocate memory"//char(0), &
510 "Subroutine: KING_RING_SEARCH_ATOMS"//char(0),
"Table: "//alc_tab(1:len_trim(alc_tab))//char(0))
513if (
allocated(cpat))
deallocate (cpat)
514if (
allocated(vpat))
deallocate (vpat)
515if (
allocated(savring))
deallocate (savring)
516if (
allocated(ordring))
deallocate (ordring)
529INTEGER,
INTENT(IN) :: ari, numth
535INTEGER,
INTENT(IN) :: ARI
537TYPE (RING),
DIMENSION(:),
ALLOCATABLE :: THE_RING
538INTEGER,
DIMENSION(:),
ALLOCATABLE :: TRING, INDTE, INDTH
539INTEGER,
DIMENSION(:,:,:),
ALLOCATABLE :: SAVRING, ORDRING
540INTEGER :: LORA, LORB, LORC, ri
543 RECURSIVE SUBROUTINE inside_ring (THE_RING, FND, S_IR, AI_IR, RID, TAE, TAH, LRA, LRB, &
544 NRPAT, RSAVED, OSAVED, TRING, INDE, INDH, RESL, CPT, VPT)
546 TYPE (RING),
DIMENSION(TAILLD),
INTENT(INOUT) :: THE_RING
547 LOGICAL,
INTENT(INOUT) :: FND
548 INTEGER,
INTENT(IN) :: S_IR, AI_IR, RID
549 INTEGER,
INTENT(INOUT) :: TAE, TAH
550 INTEGER,
INTENT(IN) :: LRA, LRB
551 INTEGER,
DIMENSION(NA),
INTENT(INOUT) :: NRPAT
552 INTEGER,
DIMENSION(TAILLR,NUMA,TAILLR),
INTENT(INOUT) :: RSAVED, OSAVED
553 INTEGER,
DIMENSION(TAILLR),
INTENT(INOUT) :: TRING
554 INTEGER,
DIMENSION(NUMA),
INTENT(INOUT) :: INDE, INDH
555 INTEGER,
DIMENSION(TAILLR),
INTENT(INOUT) :: RESL
556 INTEGER,
DIMENSION(NA),
INTENT(IN):: CPT
557 INTEGER,
DIMENSION(NA,MAXN),
INTENT(IN) :: VPT
561 INTEGER,
INTENT(IN) :: IDSEARCH
562 INTEGER,
DIMENSION(TAILLR, NS),
INTENT(IN) :: NRI
564 INTEGER FUNCTION rings_to_ogl (STEP, IDSEARCH, NRI, RSAVED, OSAVED)
566 INTEGER,
INTENT(IN) :: STEP, IDSEARCH
567 INTEGER,
DIMENSION(TAILLR,NS),
INTENT(IN) :: NRI
568 INTEGER,
DIMENSION(TAILLR,NUMA,TAILLR),
INTENT(IN) :: RSAVED, OSAVED
570 SUBROUTINE del_this_ring (TLED, RSAVED, OSAVED, TRING, RESL, INDT)
572 INTEGER,
INTENT(IN) :: TLED
573 INTEGER,
DIMENSION(TAILLR,NUMA,TAILLR),
INTENT(INOUT) :: RSAVED, OSAVED
574 INTEGER,
DIMENSION(NUMA),
INTENT(INOUT) :: INDT
575 INTEGER,
DIMENSION(TAILLR),
INTENT(INOUT) :: RESL, TRING
591if(
allocated(savring))
deallocate(savring)
592allocate(savring(taillr,numa,taillr), stat=err)
598if(
allocated(ordring))
deallocate(ordring)
599allocate(ordring(taillr,numa,taillr), stat=err)
605if(
allocated(cpat))
deallocate(cpat)
606allocate(cpat(na), stat=err)
612if(
allocated(vpat))
deallocate(vpat)
613allocate(vpat(na,maxn), stat=err)
619if (
allocated(rpat))
deallocate(rpat)
620allocate(rpat(na), stat=err)
626if(
allocated(res_list))
deallocate(res_list)
627allocate(res_list(taillr), stat=err)
633if(
allocated(indte))
deallocate(indte)
634allocate(indte(numa), stat=err)
639if(
allocated(indth))
deallocate(indth)
640allocate(indth(numa), stat=err)
645if(
allocated(apna))
deallocate(apna)
646allocate(apna(taillr), stat=err)
652if(
allocated(tring))
deallocate(tring)
653allocate(tring(taillr), stat=err)
659if(
allocated(the_ring))
deallocate(the_ring)
660allocate(the_ring(tailld), stat=err)
672 if (tbr .or. alc)
goto 002
681 if (tlt .eq. nsp+1 .or. lot(j) .eq. tlt)
then
689 if (cpat(j).ge.2)
then
699 if ((lorb .ne. lora) .and. (lorc .ne. lora) .and. (lorb .eq. lorc))
then
719 the_ring(1)%SPEC=lorb
720 the_ring(1)%NEIGHBOR=1
722 the_ring(2)%SPEC=lora
723 the_ring(2)%NEIGHBOR=1
724 the_ring(3)%ATOM=vpat(j,m)
725 the_ring(3)%SPEC=lorc
726 the_ring(3)%NEIGHBOR=cpat(vpat(j,m))
732 call inside_ring (the_ring, found, i, vpat(j,m), 3, taille, taillh, lora, lorb, &
733 rpat, savring, ordring, tring, indte, indth, res_list, cpat, vpat)
734 if (alc) alc_tab=
"INSIDE_RING"
735 if (tbr .or. alc)
goto 002
740 if (indte(n).ne.0 .and. apna(k).eq.0)
then
750 if (apna(taille) .eq. 0)
then
752 minat=
min(minat,taille)
753 maxat=
max(maxat,taille)
757 else if (no_homo .and. res_list(taillh) .ne. 0)
then
760 call del_this_ring (taillh, savring, ordring, tring, res_list, indth)
761 else if (doampat)
then
762 if (contj(vpat(j,l),i) .ge. 2 .and. contj(vpat(j,m),i) .ge. 2) ampat(o,i)=ampat(o,i)+1
773 if (apna(k).eq.1 .and. apna(l).eq.1)
then
774 pna(k,l,i)=pna(k,l,i)+1
778 maxpna(maxat,i)=maxpna(maxat,i)+1
779 minpna(minat,i)=minpna(minat,i)+1
786 nring(j,i) = tring(j)
813 call show_error (
"Impossible to allocate memory"//char(0), &
814 "Subroutine: KING_RING_SEARCH_STEPS"//char(0),
"Table: "//alc_tab(1:len_trim(alc_tab))//char(0))
817if (
allocated(tring))
deallocate (tring)
818if (
allocated(the_ring))
deallocate (the_ring)
819if (
allocated(savring))
deallocate (savring)
820if (
allocated(ordring))
deallocate (ordring)
821if (
allocated(cpat))
deallocate (cpat)
822if (
allocated(vpat))
deallocate (vpat)
823if (
allocated(rpat))
deallocate (rpat)
824if (
allocated(res_list))
deallocate (res_list)
825if (
allocated(indte))
deallocate (indte)
826if (
allocated(indth))
deallocate (indth)
827if (
allocated(apna))
deallocate (apna)
837INTEGER FUNCTION check_ring (THE_RING, FND, S_CR, RID, TAE, TAH, RSAVED, OSAVED, TRING, INDE, INDH, RESL)
843TYPE (
ring),
DIMENSION(TAILLD),
INTENT(IN) :: the_ring
844LOGICAL,
INTENT(INOUT) :: fnd
845INTEGER,
INTENT(IN) :: s_cr, rid
846INTEGER,
INTENT(INOUT) :: tae, tah
847INTEGER,
DIMENSION(TAILLR,NUMA,TAILLR),
INTENT(INOUT) :: rsaved, osaved
848INTEGER,
DIMENSION(TAILLR),
INTENT(INOUT) :: tring
849INTEGER,
DIMENSION(NUMA),
INTENT(INOUT) :: inde, indh
850INTEGER,
DIMENSION(TAILLR),
INTENT(INOUT) :: resl
851INTEGER :: ix, iy, chaine
854DOUBLE PRECISION :: duv
855DOUBLE PRECISION,
DIMENSION(3) :: rab, vab
858 DOUBLE PRECISION FUNCTION calcdij(R12, AT1, AT2, STEP_1, STEP_2, SID)
859 DOUBLE PRECISION,
DIMENSION(3),
INTENT(INOUT) :: r12
860 INTEGER,
INTENT(IN) :: at1, at2, step_1, step_2, sid
862 SUBROUTINE save_this_ring (THE_RING, TLES, RSAVED, OSAVED, TRING, INDT, RESL)
864 TYPE (
ring),
DIMENSION(TAILLR),
INTENT(IN) :: the_ring
865 INTEGER,
INTENT(IN) :: tles
866 INTEGER,
DIMENSION(TAILLR,NUMA,TAILLR),
INTENT(INOUT) :: rsaved, osaved
867 INTEGER,
DIMENSION(NUMA),
INTENT(INOUT) :: indt
868 INTEGER,
DIMENSION(TAILLR),
INTENT(INOUT) :: resl, tring
870 SUBROUTINE del_this_ring (TLED, RSAVED, OSAVED, TRING, RESL, INDT)
872 INTEGER,
INTENT(IN) :: tled
873 INTEGER,
DIMENSION(TAILLR,NUMA,TAILLR),
INTENT(INOUT) :: rsaved, osaved
874 INTEGER,
DIMENSION(NUMA),
INTENT(INOUT) :: indt
875 INTEGER,
DIMENSION(TAILLR),
INTENT(INOUT) :: resl, tring
881 if (the_ring(rid)%ATOM.eq.the_ring(1)%ATOM .and. rid.ge.4)
then
887 if (the_ring(ix)%SPEC .eq. the_ring(ix+1)%SPEC)
then
898 if (ncells .gt. 1)
then
899 duv =
calcdij(rab,the_ring(ix)%ATOM,the_ring(ix+1)%ATOM,s_cr,s_cr,s_cr)
901 duv =
calcdij(rab,the_ring(ix)%ATOM,the_ring(ix+1)%ATOM,s_cr,s_cr,1)
904 vab(iy)=vab(iy)+rab(iy)
907 if (abs(vab(1)) .ge. 0.01 .or. abs(vab(2)) .ge. 0.01 .or. abs(vab(3)) .ge. 0.01)
then
917 if (.not.no_homo .or. .not.homop)
then
919 call save_this_ring (the_ring, chaine, rsaved, osaved, tring, inde, resl)
923 if (chaine .le. tah)
then
924 if (chaine.lt.tah .or. .not.homop)
call del_this_ring (tah, rsaved, osaved, tring, resl, indh)
925 if (chaine.lt.tae)
call del_this_ring (tae, rsaved, osaved, tring, resl, inde)
926 if (.not.homop .and. chaine.le.tae)
then
929 call save_this_ring (the_ring, tae, rsaved, osaved, tring, inde, resl)
931 if (chaine .lt. tae)
then
934 call save_this_ring (the_ring, tah, rsaved, osaved, tring, indh, resl)
939 if (chaine .le. tae)
then
940 if (chaine.lt.tae)
call del_this_ring (tae, rsaved, osaved, tring, resl, inde)
943 call save_this_ring (the_ring, tae, rsaved, osaved, tring, inde, resl)
963RECURSIVE SUBROUTINE inside_ring (THE_RING, FND, S_IR, AI_IR, RID, TAE, TAH, LRA, LRB, &
964 NRPAT, RSAVED, OSAVED, TRING, INDE, INDH, RESL, CPT, VPT)
969TYPE (
ring),
DIMENSION(TAILLD),
INTENT(INOUT) :: the_ring
970LOGICAL,
INTENT(INOUT) :: fnd
971INTEGER,
INTENT(IN) :: s_ir, ai_ir, rid
972INTEGER,
INTENT(INOUT) :: tae, tah
973INTEGER,
INTENT(IN) :: lra, lrb
974INTEGER,
DIMENSION(NA),
INTENT(INOUT) :: nrpat
975INTEGER,
DIMENSION(TAILLR,NUMA,TAILLR),
INTENT(INOUT) :: rsaved, osaved
976INTEGER,
DIMENSION(TAILLR),
INTENT(INOUT) :: tring
977INTEGER,
DIMENSION(NUMA),
INTENT(INOUT) :: inde, indh
978INTEGER,
DIMENSION(TAILLR),
INTENT(INOUT) :: resl
979INTEGER,
DIMENSION(NA),
INTENT(IN):: cpt
980INTEGER,
DIMENSION(NA,MAXN),
INTENT(IN) :: vpt
985 INTEGER FUNCTION check_ring (THE_RING, FND, S_CR, RID, TAE, TAH, RSAVED, OSAVED, TRING, INDE, INDH, RESL)
987 TYPE (
ring),
DIMENSION(TAILLR),
INTENT(IN) :: the_ring
988 LOGICAL,
INTENT(INOUT) :: fnd
989 INTEGER,
INTENT(IN) :: s_cr, rid
990 INTEGER,
INTENT(INOUT) :: tae, tah
991 INTEGER,
DIMENSION(TAILLR,NUMA,TAILLR),
INTENT(INOUT) :: rsaved, osaved
992 INTEGER,
DIMENSION(TAILLR),
INTENT(INOUT) :: tring
993 INTEGER,
DIMENSION(NUMA),
INTENT(INOUT) :: inde, indh
994 INTEGER,
DIMENSION(TAILLR),
INTENT(INOUT) :: resl
998if (rid-1 .lt. tae)
then
1000 do while (the_ring(rid)%NEIGHBOR .ge. 1)
1002 ind = vpt(ai_ir, the_ring(rid)%NEIGHBOR)
1003 if (nrpat(ind).eq.0)
then
1006 if (mod(rid,2).eq.0 .and. lot(ind).eq.lrb)
then
1008 elseif (mod(rid,2).ne.0 .and. lot(ind).eq.lra)
then
1018 the_ring(rid+1)%ATOM = ind
1019 the_ring(rid+1)%SPEC = lot(ind)
1020 the_ring(rid+1)%NEIGHBOR = cpt(ind)
1022 res =
check_ring(the_ring, fnd, s_ir, rid+1, tae, tah, rsaved, osaved, tring, inde, indh, resl)
1023 if (tbr .or. alc)
goto 001
1024 if (res .eq. 0)
then
1025 call inside_ring (the_ring, fnd, s_ir, ind, rid+1, tae, tah, lra, lrb, &
1026 nrpat, rsaved, osaved, tring, inde, indh, resl, cpt, vpt)
1027 if (tbr .or. alc)
goto 001
1035 the_ring(rid)%NEIGHBOR = the_ring(rid)%NEIGHBOR - 1
1051TYPE (RING),
DIMENSION(TAILLD),
INTENT(IN) :: THE_RING
1052INTEGER,
INTENT(IN) :: TLES
1053INTEGER,
DIMENSION(TAILLR,NUMA,TAILLR),
INTENT(INOUT) :: RSAVED, OSAVED
1054INTEGER,
DIMENSION(NUMA),
INTENT(INOUT) :: INDT
1055INTEGER,
DIMENSION(TAILLR),
INTENT(INOUT) :: RESL, TRING
1058INTEGER,
DIMENSION(TLES) :: TOTRI, TOSAV
1066 totri(idx)=the_ring(idx)%ATOM
1067 tosav(idx)=the_ring(idx)%ATOM
1071call tri(totri, tles)
1073if (tring(tles) .ne. 0)
then
1075 do idx=1, tring(tles)
1081 if (totri(idy) .ne. rsaved(tles,idx,idy))
then
1087 if (.not.newring)
then
1090 indt(idx)=indt(idx)+1
1107 resl(tles)=resl(tles)+1
1108 tring(tles)=tring(tles)+1
1109 if (tring(tles) .gt.
numa)
then
1113 indt(tring(tles))=indt(tring(tles))+1
1115 rsaved(tles,tring(tles),idx)=totri(idx)
1116 osaved(tles,tring(tles),idx)=tosav(idx)
1131INTEGER,
INTENT(IN) :: TLED
1132INTEGER,
DIMENSION(TAILLR,NUMA,TAILLR),
INTENT(INOUT) :: RSAVED, OSAVED
1133INTEGER,
DIMENSION(NUMA),
INTENT(INOUT) :: INDT
1134INTEGER,
DIMENSION(TAILLR),
INTENT(INOUT) :: RESL, TRING
1139if (resl(tled) .ge. 1)
then
1141 do xdel=0, resl(tled)-1
1145 rsaved(tled,tring(tled)-xdel,did)=0
1146 osaved(tled,tring(tled)-xdel,did)=0
1158 tring(tled)=tring(tled)-resl(tled)
void show_error(char *error, int val, GtkWidget *win)
show error message
integer, dimension(:,:), allocatable contj
integer, dimension(:,:,:), allocatable voisj
integer, dimension(:,:), allocatable vpat
integer, dimension(:), allocatable cpat
integer function recrings(vid)
subroutine save_this_ring(the_ring, tles, rsaved, osaved, tring, indt, resl)
integer function king_rings()
integer function check_ring(the_ring, fnd, s_cr, rid, tae, tah, rsaved, osaved, tring, inde, indh, resl)
subroutine del_this_ring(tled, rsaved, osaved, tring, resl, indt)
subroutine king_ring_search_steps(ari)
subroutine setup_cpat_vpat_ring(nat, str, cont, vois, cpt, vpt)
recursive subroutine inside_ring(the_ring, fnd, s_ir, ai_ir, rid, tae, tah, lra, lrb, nrpat, rsaved, osaved, tring, inde, indh, resl, cpt, vpt)
subroutine setup_cpat_vpat(str, nat)
integer function rings_to_ogl(step, idsearch, nri, rsaved, osaved)
integer function rings_to_ogl_menu(idsearch, nri)
subroutine tri(tab, dimtab)
double precision function calcdij(r12, at1, at2, step_1, step_2, sid)