1!!****m* ABINIT/interfaces_41_geometry
2!! NAME
3!! interfaces_41_geometry
4!!
5!! FUNCTION
6!! This module contains the interfaces of the routines
7!! in the directory src/41_geometry
8!!
9!! COPYRIGHT
10!! Copyright (C) 2010-2016 ABINIT group
11!! This file is distributed under the terms of the
12!! GNU General Public License, see ~abinit/COPYING
13!! or http://www.gnu.org/copyleft/gpl.txt .
14!!
15!! NOTES
16!! THIS FILE IS GENERATED AUTOMATICALLY BY abilint.
17!! To do that: config/scripts/abilint . .
18!!
19!!
20!! SOURCE
21
22#if defined HAVE_CONFIG_H
23#include "config.h"
24#endif
25
26module interfaces_41_geometry
27
28 implicit none
29
30interface
31 subroutine bldgrp(msym,nogen,nsym,symafm,symrel,tnons)
32  use defs_basis
33  implicit none
34  integer,intent(in) :: msym
35  integer,intent(inout) :: nogen
36  integer,intent(in) :: nsym
37  integer,intent(inout) :: symafm(msym)
38  integer,intent(inout) :: symrel(3,3,msym)
39  real(dp),intent(inout) :: tnons(3,msym)
40 end subroutine bldgrp
41end interface
42
43interface
44 subroutine bonds_lgth_angles(coordn,fnameabo_app_geo,natom,ntypat,rprimd,typat,xred,znucl)
45  use defs_basis
46  implicit none
47  integer,intent(in) :: coordn
48  integer,intent(in) :: natom
49  integer,intent(in) :: ntypat
50  character(len=*),intent(in) :: fnameabo_app_geo
51  real(dp),intent(in) :: rprimd(3,3)
52  integer,intent(in) :: typat(natom)
53  real(dp),intent(inout) :: xred(3,natom)
54  real(dp),intent(in) :: znucl(ntypat)
55 end subroutine bonds_lgth_angles
56end interface
57
58interface
59 subroutine chiscwrt(chi_org,disv_org,nat_org,sdisv_org,smult_org,nsh_org,chi_sc,&
60  &  disv_sc,nat_sc,smult_sc,nsh_sc,opt,prtvol)
61  use defs_basis
62  implicit none
63  integer,intent(in) :: nat_org
64  integer,intent(in) :: nat_sc
65  integer,intent(in) :: nsh_org
66  integer,intent(in) :: nsh_sc
67  integer,intent(in),optional :: opt
68  integer,intent(in),optional :: prtvol
69  real(dp),intent(in) :: chi_org(nat_org)
70  real(dp),intent(out) :: chi_sc(nat_sc)
71  real(dp),intent(in) :: disv_org(nat_org)
72  real(dp),intent(in) :: disv_sc(nat_sc)
73  real(dp),intent(in) :: sdisv_org(nsh_org)
74  integer,intent(in) :: smult_org(nsh_org)
75  integer,intent(in) :: smult_sc(nsh_sc)
76 end subroutine chiscwrt
77end interface
78
79interface
80 subroutine chkdilatmx(dilatmx,rprimd,rprimd_orig,dilatmx_errmsg)
81  use defs_basis
82  implicit none
83  real(dp),intent(in) :: dilatmx
84  character(len=500),intent(out) :: dilatmx_errmsg
85  real(dp),intent(inout) :: rprimd(3,3)
86  real(dp),intent(in) :: rprimd_orig(3,3)
87 end subroutine chkdilatmx
88end interface
89
90interface
91 subroutine chkgrp(nsym,symafm,symrel,ierr)
92  implicit none
93  integer,intent(out) :: ierr
94  integer,intent(in) :: nsym
95  integer,intent(in) :: symafm(nsym)
96  integer,intent(in) :: symrel(3,3,nsym)
97 end subroutine chkgrp
98end interface
99
100interface
101 subroutine sg_multable(nsym,symafm,symrel,tnons,tnons_tol,ierr,multable,toinv)
102  use defs_basis
103  implicit none
104  integer,intent(out) :: ierr
105  integer,intent(in) :: nsym
106  real(dp),intent(in) :: tnons_tol
107  integer,optional,intent(out) :: multable(4,nsym,nsym)
108  integer,intent(in) :: symafm(nsym)
109  integer,intent(in) :: symrel(3,3,nsym)
110  real(dp),intent(in) :: tnons(3,nsym)
111  integer,optional,intent(out) :: toinv(4,nsym)
112 end subroutine sg_multable
113end interface
114
115interface
116 subroutine chkorthsy(gprimd,iexit,nsym,rmet,rprimd,symrel)
117  use defs_basis
118  implicit none
119  integer,intent(inout) :: iexit
120  integer,intent(in) :: nsym
121  real(dp),intent(in) :: gprimd(3,3)
122  real(dp),intent(in) :: rmet(3,3)
123  real(dp),intent(in) :: rprimd(3,3)
124  integer,intent(in) :: symrel(3,3,nsym)
125 end subroutine chkorthsy
126end interface
127
128interface
129 subroutine chkprimit(chkprim,multi,nsym,symafm,symrel)
130  implicit none
131  integer,intent(in) :: chkprim
132  integer,intent(out) :: multi
133  integer,intent(in) :: nsym
134  integer,intent(in) :: symafm(nsym)
135  integer,intent(in) :: symrel(3,3,nsym)
136 end subroutine chkprimit
137end interface
138
139interface
140 subroutine chkrprimd(acell,rprim,rprimd,iout)
141  use defs_basis
142  implicit none
143  integer,intent(in) :: iout
144  real(dp),intent(in) :: acell(3)
145  real(dp),intent(in) :: rprim(3,3)
146  real(dp),intent(in) :: rprimd(3,3)
147 end subroutine chkrprimd
148end interface
149
150interface
151 function dbeta(cosbeta,ll,mp,mm)
152  use defs_basis
153  implicit none
154  integer,intent(in) :: ll
155  integer,intent(in) :: mm
156  integer,intent(in) :: mp
157  real(dp),intent(in) :: cosbeta
158  real(dp) :: dbeta
159 end function dbeta
160end interface
161
162interface
163 function dist2(v1,v2,rprimd,option)
164  use defs_basis
165  implicit none
166  integer,intent(in),optional :: option
167  real(dp) :: dist2
168  real(dp),intent(in),optional :: rprimd(3,3)
169  real(dp),intent(in) :: v1(3)
170  real(dp),intent(in) :: v2(3)
171 end function dist2
172end interface
173
174interface
175 subroutine fcart2fred(fcart,fred,rprimd,natom)
176  use defs_basis
177  implicit none
178  integer,intent(in) :: natom
179  real(dp),intent(in) :: fcart(3,natom)
180  real(dp),intent(out) :: fred(3,natom)
181  real(dp),intent(in) :: rprimd(3,3)
182 end subroutine fcart2fred
183end interface
184
185interface
186 subroutine fillcell(natom,natrd,nsym,nucdipmom,spinat,symafm,symrel,tnons,tolsym,typat,xred)
187  use defs_basis
188  implicit none
189  integer,intent(in) :: natom
190  integer,intent(in) :: natrd
191  integer,intent(in) :: nsym
192  real(dp),intent(in) :: tolsym
193  real(dp),intent(inout) :: nucdipmom(3,natom)
194  real(dp),intent(inout) :: spinat(3,natom)
195  integer,intent(in) :: symafm(nsym)
196  integer,intent(in) :: symrel(3,3,nsym)
197  real(dp),intent(in) :: tnons(3,nsym)
198  integer,intent(inout) :: typat(natom)
199  real(dp),intent(inout) :: xred(3,natom)
200 end subroutine fillcell
201end interface
202
203interface
204 subroutine fred2fcart(favg,fcart,fred,gprimd,jellslab,natom)
205  use defs_basis
206  implicit none
207  integer,intent(in) :: jellslab
208  integer,intent(in) :: natom
209  real(dp),intent(out) :: favg(3)
210  real(dp),intent(out) :: fcart(3,natom)
211  real(dp),intent(in) :: fred(3,natom)
212  real(dp),intent(in) :: gprimd(3,3)
213 end subroutine fred2fcart
214end interface
215
216interface
217 subroutine gensymshub(genafm,spgroup,spgroupma,shubnikov)
218  use defs_basis
219  implicit none
220  integer,intent(out) :: shubnikov
221  integer,intent(in) :: spgroup
222  integer,intent(in) :: spgroupma
223  real(dp),intent(out) :: genafm(3)
224 end subroutine gensymshub
225end interface
226
227interface
228 subroutine gensymshub4(genafm,msym,nsym,symafm,symrel,tnons)
229  use defs_basis
230  implicit none
231  integer,intent(in) :: msym
232  integer,intent(inout) :: nsym
233  real(dp),intent(in) :: genafm(3)
234  integer,intent(inout) :: symafm(msym)
235  integer,intent(inout) :: symrel(3,3,msym)
236  real(dp),intent(inout) :: tnons(3,msym)
237 end subroutine gensymshub4
238end interface
239
240interface
241 subroutine gensymspgr(brvltt,msym,nsym,shubnikov,spgaxor,spgorig,&
242  &  spgroup,spgroupma,symafm,symrel,tnons)
243  use defs_basis
244  implicit none
245  integer,intent(inout) :: brvltt
246  integer,intent(in) :: msym
247  integer,intent(out) :: nsym
248  integer,intent(in) :: shubnikov
249  integer,intent(in) :: spgaxor
250  integer,intent(in) :: spgorig
251  integer,intent(in) :: spgroup
252  integer,intent(in) :: spgroupma
253  integer,intent(inout) :: symafm(msym)
254  integer,intent(inout) :: symrel(3,3,msym)
255  real(dp),intent(inout) :: tnons(3,msym)
256 end subroutine gensymspgr
257end interface
258
259interface
260 subroutine getptgroupma(ptgroup,ptgroupha,ptgroupma)
261  implicit none
262  integer,intent(out) :: ptgroupma
263  character(len=5),intent(in) :: ptgroup
264  character(len=5),intent(in) :: ptgroupha
265 end subroutine getptgroupma
266end interface
267
268interface
269 subroutine getspinrot(rprimd,spinrot,symrel_conv)
270  use defs_basis
271  implicit none
272  integer,intent(in) :: symrel_conv(3,3)
273  real(dp),intent(in) :: rprimd(3,3)
274  real(dp),intent(out) :: spinrot(4)
275 end subroutine getspinrot
276end interface
277
278interface
279 subroutine holocell(cell_base,enforce,foundc,iholohedry,tolsym)
280  use defs_basis
281  implicit none
282  integer,intent(in) :: enforce
283  integer,intent(out) :: foundc
284  integer,intent(in) :: iholohedry
285  real(dp),intent(in) :: tolsym
286  real(dp),intent(inout) :: cell_base(3,3)
287 end subroutine holocell
288end interface
289
290interface
291 subroutine ioniondist(natom,rprimd,xred,inm,option,varlist,magv,atp,prtvol)
292  use defs_basis
293  implicit none
294  integer,intent(in),optional :: atp
295  integer,intent(in) :: natom
296  integer,intent(in) :: option
297  integer,intent(in),optional :: prtvol
298  real(dp),intent(out) :: inm(natom,natom)
299  integer,intent(in),optional :: magv(natom)
300  real(dp),intent(in) :: rprimd(3,3)
301  real(dp),intent(in),optional :: varlist(natom)
302  real(dp),intent(in) :: xred(3,natom)
303 end subroutine ioniondist
304end interface
305
306interface
307 subroutine irreducible_set_pert(indsym,mpert,natom,nsym,pertsy,rfdir,rfpert,symq,symrec,symrel)
308  implicit none
309  integer,intent(in) :: mpert
310  integer,intent(in) :: natom
311  integer,intent(in) :: nsym
312  integer,intent(in) :: rfdir(3)
313  integer,intent(in) :: indsym(4,nsym,natom)
314  integer,intent(out) :: pertsy(3,mpert)
315  integer,intent(in) :: rfpert(mpert)
316  integer,intent(in) :: symq(4,2,nsym)
317  integer,intent(in) :: symrec(3,3,nsym)
318  integer,intent(in) :: symrel(3,3,nsym)
319 end subroutine irreducible_set_pert
320end interface
321
322interface
323 subroutine littlegroup_pert(gprimd,idir,indsym,iout,ipert,natom,nsym,nsym1,&
324  &  rfmeth,symafm,symaf1,symq,symrec,symrel,symrl1,syuse,tnons,tnons1)
325  use defs_basis
326  implicit none
327  integer,intent(in) :: idir
328  integer,intent(in) :: iout
329  integer,intent(in) :: ipert
330  integer,intent(in) :: natom
331  integer,intent(in) :: nsym
332  integer,intent(out) :: nsym1
333  integer,intent(in) :: rfmeth
334  integer,intent(in) :: syuse
335  real(dp),intent(in) :: gprimd(3,3)
336  integer,intent(in) :: indsym(4,nsym,natom)
337  integer,intent(out) :: symaf1(nsym)
338  integer,intent(in) :: symafm(nsym)
339  integer,intent(in) :: symq(4,2,nsym)
340  integer,intent(in) :: symrec(3,3,nsym)
341  integer,intent(in) :: symrel(3,3,nsym)
342  integer,intent(out) :: symrl1(3,3,nsym)
343  real(dp),intent(in) :: tnons(3,nsym)
344  real(dp),intent(out) :: tnons1(3,nsym)
345 end subroutine littlegroup_pert
346end interface
347
348interface
349 subroutine metric(gmet,gprimd,iout,rmet,rprimd,ucvol)
350  use defs_basis
351  implicit none
352  integer,intent(in) :: iout
353  real(dp),intent(out) :: ucvol
354  real(dp),intent(out) :: gmet(3,3)
355  real(dp),intent(out) :: gprimd(3,3)
356  real(dp),intent(out) :: rmet(3,3)
357  real(dp),intent(in) :: rprimd(3,3)
358 end subroutine metric
359end interface
360
361interface
362 subroutine mkeuler(rot,cosbeta,cosalp,sinalp,cosgam,singam,isn)
363  use defs_basis
364  implicit none
365  integer,intent(out) :: isn
366  real(dp),intent(out) :: cosalp
367  real(dp),intent(out) :: cosbeta
368  real(dp),intent(out) :: cosgam
369  real(dp),intent(out) :: sinalp
370  real(dp),intent(out) :: singam
371  real(dp),intent(in) :: rot(3,3)
372 end subroutine mkeuler
373end interface
374
375interface
376 subroutine mkradim(acell,rprim,rprimd)
377  use defs_basis
378  implicit none
379  real(dp),intent(out) :: acell(3)
380  real(dp),intent(out) :: rprim(3,3)
381  real(dp),intent(in) :: rprimd(3,3)
382 end subroutine mkradim
383end interface
384
385interface
386 subroutine mkrdim(acell,rprim,rprimd)
387  use defs_basis
388  implicit none
389  real(dp),intent(in) :: acell(3)
390  real(dp),intent(in) :: rprim(3,3)
391  real(dp),intent(out) :: rprimd(3,3)
392 end subroutine mkrdim
393end interface
394
395interface
396 subroutine mksupercell(xred_org,magv_org,rprimd_org,nat_org,nat_sc,xred_sc,magv_sc,rprimd_sc,ext,prtvol)
397  use defs_basis
398  implicit none
399  integer,intent(in) :: nat_org
400  integer,intent(in) :: nat_sc
401  integer,intent(in),optional :: prtvol
402  integer,intent(in) :: ext(3)
403  integer,intent(in),optional :: magv_org(nat_org)
404  real(dp),intent(out) :: magv_sc(nat_sc)
405  real(dp),intent(in) :: rprimd_org(3,3)
406  real(dp),intent(out) :: rprimd_sc(3,3)
407  real(dp),intent(in) :: xred_org(3,nat_org)
408  real(dp),intent(out) :: xred_sc(3,nat_sc)
409 end subroutine mksupercell
410end interface
411
412interface
413 subroutine polcart(red_ptot,pel,pel_cart,pelev,pion,pion_cart,polunit,&
414  &  ptot_cart,rprimd,ucvol,unit_out,usepaw)
415  use defs_basis
416  implicit none
417  integer,intent(in) :: polunit
418  integer,intent(in) :: unit_out
419  integer,intent(in) :: usepaw
420  real(dp),intent(in) :: ucvol
421  real(dp),intent(in) :: pel(3)
422  real(dp),intent(out) :: pel_cart(3)
423  real(dp),intent(in) :: pelev(3)
424  real(dp),intent(in) :: pion(3)
425  real(dp),intent(out) :: pion_cart(3)
426  real(dp),intent(out) :: ptot_cart(3)
427  real(dp),intent(in) :: red_ptot(3)
428  real(dp),intent(in) :: rprimd(3,3)
429 end subroutine polcart
430end interface
431
432interface
433 subroutine prt_cif(brvltt, ciffname, natom, nsym, ntypat, rprimd,&
434  &  spgaxor, spgroup, spgorig, symrel, tnon, typat, xred, znucl)
435  use defs_basis
436  implicit none
437  integer, intent(in) :: brvltt
438  integer,intent(in) :: natom
439  integer,intent(in) :: nsym
440  integer,intent(in) :: ntypat
441  integer, intent(in) :: spgaxor
442  integer, intent(in) :: spgorig
443  integer, intent(in) :: spgroup
444  character(len=*), intent(in) :: ciffname
445  real(dp), intent(in) :: rprimd(3,3)
446  integer, intent(in) :: symrel(3,3,nsym)
447  real(dp), intent(in) :: tnon(3,nsym)
448  integer, intent(in) :: typat(natom)
449  real(dp), intent(in) :: xred(3,natom)
450  real(dp), intent(in) :: znucl(ntypat)
451 end subroutine prt_cif
452end interface
453
454interface
455 subroutine symrel2string(symrel1, tnon, string)
456  use defs_basis
457  implicit none
458  character(len=80), intent(out) :: string
459  integer, intent(in) :: symrel1(3,3)
460  real(dp), intent(in) :: tnon(3)
461 end subroutine symrel2string
462end interface
463
464interface
465 subroutine prtposcar(fcart, fnameradix, natom, ntypat, rprimd, typat, ucvol, xred, znucl)
466  use defs_basis
467  implicit none
468  integer, intent(in) :: natom
469  integer, intent(in) :: ntypat
470  character(len=fnlen), intent(in) :: fnameradix
471  real(dp), intent(in) :: ucvol
472  real(dp), intent(in) :: fcart(3,natom)
473  real(dp), intent(in) :: rprimd(3,3)
474  integer, intent(in) :: typat(natom)
475  real(dp), intent(in) :: xred(3,natom)
476  real(dp), intent(in) :: znucl(ntypat)
477 end subroutine prtposcar
478end interface
479
480interface
481 subroutine prtspgroup(bravais,genafm,iout,jdtset,ptgroupma,spgroup)
482  use defs_basis
483  implicit none
484  integer,intent(in) :: iout
485  integer,intent(in) :: jdtset
486  integer,intent(in) :: ptgroupma
487  integer,intent(in) :: spgroup
488  integer,intent(in) :: bravais(11)
489  real(dp),intent(inout) :: genafm(3)
490 end subroutine prtspgroup
491end interface
492
493interface
494 subroutine ptgmadata(ptgroupma,ptgrpmasb)
495  implicit none
496  integer,intent(in) :: ptgroupma
497  character(len=10),intent(out) :: ptgrpmasb
498 end subroutine ptgmadata
499end interface
500
501interface
502 subroutine randomcellpos(natom,npsp,ntypat,random_atpos,ratsph,rprim,rprimd,typat,xred,znucl,acell)
503  use defs_basis
504  implicit none
505  integer,intent(in) :: natom
506  integer,intent(in) :: npsp
507  integer,intent(in) :: ntypat
508  integer,intent(in) :: random_atpos
509  real(dp), intent(inout) :: acell(3)
510  real(dp),intent(in) :: ratsph(ntypat)
511  real(dp), intent(inout) :: rprim(3,3)
512  real(dp), intent(inout) :: rprimd(3,3)
513  integer, intent(in) :: typat(natom)
514  real(dp), intent(inout) :: xred(3,natom)
515  real(dp), intent(in) :: znucl(npsp)
516 end subroutine randomcellpos
517end interface
518
519interface
520 subroutine remove_inversion(nsym,symrel,tnons,nsym_out,symrel_out,tnons_out,pinv)
521  use defs_basis
522  implicit none
523  integer,intent(in) :: nsym
524  integer,intent(out) :: nsym_out
525  integer,intent(out) :: pinv
526  integer,pointer :: symrel_out(:,:,:)
527  integer,intent(in) :: symrel(3,3,nsym)
528  real(dp),intent(in) :: tnons(3,nsym)
529  real(dp),pointer :: tnons_out(:,:)
530 end subroutine remove_inversion
531end interface
532
533interface
534 subroutine shellstruct(xred,rprimd,natom,magv,distv,smult,sdisv,nsh,atp,prtvol)
535  use defs_basis
536  implicit none
537  integer,intent(in),optional :: atp
538  integer,intent(in) :: natom
539  integer,intent(out) :: nsh
540  integer,intent(in),optional :: prtvol
541  real(dp),intent(out) :: distv(natom)
542  integer,intent(in),optional :: magv(natom)
543  real(dp),intent(in) :: rprimd(3,3)
544  real(dp),intent(out) :: sdisv(natom)
545  integer,intent(out) :: smult(natom)
546  real(dp),intent(in) :: xred(3,natom)
547 end subroutine shellstruct
548end interface
549
550interface
551 subroutine smallprim(metmin,minim,rprimd)
552  use defs_basis
553  implicit none
554  real(dp),intent(out) :: metmin(3,3)
555  real(dp),intent(out) :: minim(3,3)
556  real(dp),intent(in) :: rprimd(3,3)
557 end subroutine smallprim
558end interface
559
560interface
561 subroutine spgdata(brvsb,intsb,intsbl,ptintsb,ptschsb,&
562  &  schsb,spgaxor,spgroup,sporder,spgorig)
563  implicit none
564  integer,intent(in) :: spgaxor
565  integer,intent(in) :: spgorig
566  integer,intent(in) :: spgroup
567  integer,intent(out) :: sporder
568  character(len=1),intent(out) :: brvsb
569  character(len=15),intent(out) :: intsb
570  character(len=35),intent(out) :: intsbl
571  character(len=15),intent(out) :: ptintsb
572  character(len=15),intent(out) :: ptschsb
573  character(len=15),intent(out) :: schsb
574 end subroutine spgdata
575end interface
576
577interface
578 subroutine strconv(frac,gprimd,cart)
579  use defs_basis
580  implicit none
581  real(dp),intent(inout) :: cart(6)
582  real(dp),intent(in) :: frac(6)
583  real(dp),intent(in) :: gprimd(3,3)
584 end subroutine strconv
585end interface
586
587interface
588 subroutine stresssym(gprimd,nsym,stress,sym)
589  use defs_basis
590  implicit none
591  integer,intent(in) :: nsym
592  real(dp),intent(in) :: gprimd(3,3)
593  real(dp),intent(inout) :: stress(6)
594  integer,intent(in) :: sym(3,3,nsym)
595 end subroutine stresssym
596end interface
597
598interface
599 subroutine symanal(bravais,chkprim,genafm,msym,nsym,ptgroupma,rprimd,spgroup,symafm,symrel,tnons,tolsym)
600  use defs_basis
601  implicit none
602  integer,intent(in) :: chkprim
603  integer,intent(in) :: msym
604  integer,intent(in) :: nsym
605  integer,intent(out) :: ptgroupma
606  integer,intent(out) :: spgroup
607  real(dp),intent(in) :: tolsym
608  integer,intent(out) :: bravais(11)
609  real(dp),intent(out) :: genafm(3)
610  real(dp),intent(in) :: rprimd(3,3)
611  integer,intent(in) :: symafm(msym)
612  integer,intent(in) :: symrel(3,3,msym)
613  real(dp),intent(inout) :: tnons(3,msym)
614 end subroutine symanal
615end interface
616
617interface
618 subroutine symatm(indsym,natom,nsym,symrec,tnons,tolsym,typat,xred)
619  use defs_basis
620  implicit none
621  integer,intent(in) :: natom
622  integer,intent(in) :: nsym
623  real(dp), intent(in) :: tolsym
624  integer,intent(out) :: indsym(4,nsym,natom)
625  integer,intent(in) :: symrec(3,3,nsym)
626  real(dp),intent(in) :: tnons(3,nsym)
627  integer,intent(in) :: typat(natom)
628  real(dp),intent(in) :: xred(3,natom)
629 end subroutine symatm
630end interface
631
632interface
633 subroutine symaxes(center,iholohedry,isym,isymrelconv,label,ordersym,tnons_order,trialt,type_axis)
634  use defs_basis
635  implicit none
636  integer,intent(in) :: center
637  integer,intent(in) :: iholohedry
638  integer,intent(in) :: isym
639  integer,intent(in) :: ordersym
640  integer,intent(in) :: tnons_order
641  integer,intent(out) :: type_axis
642  character(len=128),intent(out) :: label
643  integer,intent(in) :: isymrelconv(3,3)
644  real(dp),intent(in) :: trialt(3)
645 end subroutine symaxes
646end interface
647
648interface
649 subroutine symbrav(bravais,msym,nsym,ptgroup,rprimd,symrel,tolsym,axis)
650  use defs_basis
651  implicit none
652  integer,intent(in) :: msym
653  integer,intent(in) :: nsym
654  character(len=5),intent(out) :: ptgroup
655  real(dp),intent(in) :: tolsym
656  integer,optional,intent(out) :: axis(3)
657  integer,intent(out) :: bravais(11)
658  real(dp),intent(in) :: rprimd(3,3)
659  integer,intent(in) :: symrel(3,3,msym)
660 end subroutine symbrav
661end interface
662
663interface
664 subroutine symcharac(center, determinant, iholohedry, isym, label, symrel, tnons, type_axis)
665  use defs_basis
666  implicit none
667  integer, intent(in) :: center
668  integer, intent(in) :: determinant
669  integer, intent(in) :: iholohedry
670  integer, intent(in) :: isym
671  integer, intent(out) :: type_axis
672  character(len = 128), intent(out) :: label
673  integer,intent(in) :: symrel(3,3)
674  real(dp),intent(in) :: tnons(3)
675 end subroutine symcharac
676end interface
677
678interface
679 subroutine symchk(difmin,eatom,natom,tratom,transl,trtypat,typat,xred)
680  use defs_basis
681  implicit none
682  integer,intent(out) :: eatom
683  integer,intent(in) :: natom
684  integer,intent(in) :: trtypat
685  integer,intent(out) :: transl(3)
686  real(dp),intent(out) :: difmin(3)
687  real(dp),intent(in) :: tratom(3)
688  integer,intent(in) :: typat(natom)
689  real(dp),intent(in) :: xred(3,natom)
690 end subroutine symchk
691end interface
692
693interface
694 subroutine symdet(determinant,nsym,sym)
695  implicit none
696  integer,intent(in) :: nsym
697  integer,intent(out) :: determinant(nsym)
698  integer,intent(in) :: sym(3,3,nsym)
699 end subroutine symdet
700end interface
701
702interface
703 subroutine symfind(berryopt,efield,gprimd,jellslab,msym,natom,noncoll,nptsym,nsym,&
704  &  ptsymrel,spinat,symafm,symrel,tnons,tolsym,typat,use_inversion,xred,&
705  &  nucdipmom)
706  use defs_basis
707  implicit none
708  integer,intent(in) :: berryopt
709  integer,intent(in) :: jellslab
710  integer,intent(in) :: msym
711  integer,intent(in) :: natom
712  integer,intent(in) :: noncoll
713  integer,intent(in) :: nptsym
714  integer,intent(out) :: nsym
715  integer,intent(in) :: use_inversion
716  real(dp),intent(in) :: tolsym
717  real(dp),intent(in) :: efield(3)
718  real(dp),intent(in) :: gprimd(3,3)
719  real(dp),optional :: nucdipmom(3,natom)
720  integer,intent(in) :: ptsymrel(3,3,msym)
721  real(dp),intent(in) :: spinat(3,natom)
722  integer,intent(inout) :: symafm(msym)
723  integer,intent(inout) :: symrel(3,3,msym)
724  real(dp),intent(inout) :: tnons(3,msym)
725  integer,intent(in) :: typat(natom)
726  real(dp),intent(in) :: xred(3,natom)
727 end subroutine symfind
728end interface
729
730interface
731 subroutine symkpt(chksymbreak,gmet,indkpt1,iout,kptns,nkpt,nkpt1,nsym1,&
732  &  symrc1,timrev,wtk,wtk_folded)
733  use defs_basis
734  implicit none
735  integer,intent(in) :: chksymbreak
736  integer,intent(in) :: iout
737  integer,intent(in) :: nkpt
738  integer,intent(out) :: nkpt1
739  integer,intent(in) :: nsym1
740  integer,intent(in) :: timrev
741  real(dp),intent(in) :: gmet(3,3)
742  integer,intent(inout) :: indkpt1(nkpt)
743  real(dp),intent(in) :: kptns(3,nkpt)
744  integer,intent(in) :: symrc1(3,3,nsym1)
745  real(dp),intent(in) :: wtk(nkpt)
746  real(dp),intent(out) :: wtk_folded(nkpt)
747 end subroutine symkpt
748end interface
749
750interface
751 subroutine symlatt(bravais,msym,nptsym,ptsymrel,rprimd,tolsym)
752  use defs_basis
753  implicit none
754  integer,intent(in) :: msym
755  integer,intent(out) :: nptsym
756  real(dp),intent(in) :: tolsym
757  integer,intent(out) :: bravais(11)
758  integer,intent(out) :: ptsymrel(3,3,msym)
759  real(dp),intent(in) :: rprimd(3,3)
760 end subroutine symlatt
761end interface
762
763interface
764 subroutine symlist_bcc(additional_info,nsym,n_axes,spgroup)
765  implicit none
766  integer,intent(in) :: additional_info
767  integer,intent(in) :: nsym
768  integer,intent(out) :: spgroup
769  integer,intent(in) :: n_axes(31)
770 end subroutine symlist_bcc
771end interface
772
773interface
774 subroutine symlist_fcc(nsym,n_axes,spgroup)
775  implicit none
776  integer,intent(in) :: nsym
777  integer,intent(out) :: spgroup
778  integer,intent(in) :: n_axes(31)
779 end subroutine symlist_fcc
780end interface
781
782interface
783 subroutine symlist_others(brvltt,nsym,n_axes,spgroup)
784  implicit none
785  integer,intent(in) :: brvltt
786  integer,intent(in) :: nsym
787  integer,intent(out) :: spgroup
788  integer,intent(in) :: n_axes(31)
789 end subroutine symlist_others
790end interface
791
792interface
793 subroutine symlist_prim(additional_info,nsym,n_axes,spgroup)
794  implicit none
795  integer,intent(in) :: additional_info
796  integer,intent(in) :: nsym
797  integer,intent(out) :: spgroup
798  integer,intent(in) :: n_axes(31)
799 end subroutine symlist_prim
800end interface
801
802interface
803 subroutine symmetrize_rprimd(bravais,nsym,rprimd,symrel,tolsym)
804  use defs_basis
805  implicit none
806  integer,intent(in) :: nsym
807  real(dp) :: tolsym
808  integer,intent(in) :: bravais(11)
809  real(dp),intent(inout) :: rprimd(3,3)
810  integer,intent(in) :: symrel(3,3,nsym)
811 end subroutine symmetrize_rprimd
812end interface
813
814interface
815 subroutine symmetrize_xred(indsym,natom,nsym,symrel,tnons,xred)
816  use defs_basis
817  implicit none
818  integer,intent(in) :: natom
819  integer,intent(in) :: nsym
820  integer,intent(in) :: indsym(4,nsym,natom)
821  integer,intent(in) :: symrel(3,3,nsym)
822  real(dp),intent(in) :: tnons(3,nsym)
823  real(dp),intent(inout) :: xred(3,natom)
824 end subroutine symmetrize_xred
825end interface
826
827interface
828 subroutine symplanes(center,iholohedry,isym,isymrelconv,itnonsconv,label,type_axis)
829  use defs_basis
830  implicit none
831  integer,intent(in) :: center
832  integer,intent(in) :: iholohedry
833  integer,intent(in) :: isym
834  integer,intent(out) :: type_axis
835  character(len = 128), intent(out) :: label
836  integer,intent(in) :: isymrelconv(3,3)
837  real(dp),intent(in) :: itnonsconv(3)
838 end subroutine symplanes
839end interface
840
841interface
842 subroutine symptgroup(iholohedry,nsym,ptgroup,symrel)
843  implicit none
844  integer,intent(out) :: iholohedry
845  integer,intent(in) :: nsym
846  character(len=5),intent(out) :: ptgroup
847  integer,intent(in) :: symrel(3,3,nsym)
848 end subroutine symptgroup
849end interface
850
851interface
852 subroutine symredcart(aprim,bprim,symcart,symred)
853  use defs_basis
854  implicit none
855  integer,intent(in) :: symred(3,3)
856  real(dp),intent(in) :: aprim(3,3)
857  real(dp),intent(in) :: bprim(3,3)
858  real(dp),intent(out) :: symcart(3,3)
859 end subroutine symredcart
860end interface
861
862interface
863 subroutine symrelrot(nsym,rprimd,rprimd_new,symrel,tolsym)
864  use defs_basis
865  implicit none
866  integer,intent(in) :: nsym
867  real(dp),intent(in) :: tolsym
868  real(dp),intent(in) :: rprimd(3,3)
869  real(dp),intent(in) :: rprimd_new(3,3)
870  integer,intent(inout) :: symrel(3,3,nsym)
871 end subroutine symrelrot
872end interface
873
874interface
875 subroutine symsgcube(msym,nsym,shubnikov,spgaxor,spgorig,spgroup,&
876  &  spgroupma,symafm,symrel,tnons)
877  use defs_basis
878  implicit none
879  integer,intent(in) :: msym
880  integer,intent(inout) :: nsym
881  integer,intent(in) :: shubnikov
882  integer,intent(in) :: spgaxor
883  integer,intent(in) :: spgorig
884  integer,intent(in) :: spgroup
885  integer,intent(in) :: spgroupma
886  integer,intent(inout) :: symafm(msym)
887  integer,intent(inout) :: symrel(3,3,msym)
888  real(dp),intent(out) :: tnons(3,msym)
889 end subroutine symsgcube
890end interface
891
892interface
893 subroutine symsghexa(brvltt,msym,nsym,shubnikov,spgaxor,spgorig,spgroup,&
894  &  spgroupma,symafm,symrel,tnons)
895  use defs_basis
896  implicit none
897  integer,intent(inout) :: brvltt
898  integer,intent(in) :: msym
899  integer,intent(in) :: nsym
900  integer,intent(in) :: shubnikov
901  integer,intent(in) :: spgaxor
902  integer,intent(in) :: spgorig
903  integer,intent(in) :: spgroup
904  integer,intent(in) :: spgroupma
905  integer,intent(inout) :: symafm(msym)
906  integer,intent(inout) :: symrel(3,3,msym)
907  real(dp),intent(inout) :: tnons(3,msym)
908 end subroutine symsghexa
909end interface
910
911interface
912 subroutine symsgmono(brvltt,msym,nsym,shubnikov,spgaxor,spgorig,spgroup,&
913  &  spgroupma,symafm,symrel,tnons)
914  use defs_basis
915  implicit none
916  integer,intent(inout) :: brvltt
917  integer,intent(in) :: msym
918  integer,intent(in) :: nsym
919  integer,intent(in) :: shubnikov
920  integer,intent(in) :: spgaxor
921  integer,intent(in) :: spgorig
922  integer,intent(in) :: spgroup
923  integer,intent(in) :: spgroupma
924  integer,intent(inout) :: symafm(msym)
925  integer,intent(inout) :: symrel(3,3,msym)
926  real(dp),intent(inout) :: tnons(3,msym)
927 end subroutine symsgmono
928end interface
929
930interface
931 subroutine symsgortho(msym,nsym,shubnikov,spgaxor,spgorig,spgroup,&
932  &  spgroupma,symafm,symrel,tnons)
933  use defs_basis
934  implicit none
935  integer,intent(in) :: msym
936  integer,intent(in) :: nsym
937  integer,intent(in) :: shubnikov
938  integer,intent(in) :: spgaxor
939  integer,intent(in) :: spgorig
940  integer,intent(in) :: spgroup
941  integer,intent(in) :: spgroupma
942  integer,intent(inout) :: symafm(msym)
943  integer,intent(inout) :: symrel(3,3,msym)
944  real(dp),intent(inout) :: tnons(3,msym)
945 end subroutine symsgortho
946end interface
947
948interface
949 subroutine symsgtetra(msym,nsym,shubnikov,spgaxor,spgorig,spgroup,&
950  &  spgroupma,symafm,symrel,tnons)
951  use defs_basis
952  implicit none
953  integer,intent(in) :: msym
954  integer,intent(in) :: nsym
955  integer,intent(in) :: shubnikov
956  integer,intent(in) :: spgaxor
957  integer,intent(in) :: spgorig
958  integer,intent(in) :: spgroup
959  integer,intent(in) :: spgroupma
960  integer,intent(inout) :: symafm(msym)
961  integer,intent(inout) :: symrel(3,3,msym)
962  real(dp),intent(inout) :: tnons(3,msym)
963 end subroutine symsgtetra
964end interface
965
966interface
967 subroutine symspgr(bravais,nsym,spgroup,symrel,tnons,tolsym)
968  use defs_basis
969  implicit none
970  integer,intent(in) :: nsym
971  integer,intent(out) :: spgroup
972  real(dp),intent(in) :: tolsym
973  integer,intent(in) :: bravais(11)
974  integer,intent(in) :: symrel(3,3,nsym)
975  real(dp),intent(inout) :: tnons(3,nsym)
976 end subroutine symspgr
977end interface
978
979interface
980 subroutine xcart2xred(natom,rprimd,xcart,xred)
981  use defs_basis
982  implicit none
983  integer,intent(in) :: natom
984  real(dp),intent(in) :: rprimd(3,3)
985  real(dp),intent(in) :: xcart(3,natom)
986  real(dp),intent(out) :: xred(3,natom)
987 end subroutine xcart2xred
988end interface
989
990interface
991 subroutine xred2xcart(natom,rprimd,xcart,xred)
992  use defs_basis
993  implicit none
994  integer,intent(in) :: natom
995  real(dp),intent(in) :: rprimd(3,3)
996  real(dp),intent(out) :: xcart(3,natom)
997  real(dp),intent(in) :: xred(3,natom)
998 end subroutine xred2xcart
999end interface
1000
1001end module interfaces_41_geometry
1002!!***
1003