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