1! 2! Copyright (C) 2002-2010 Quantum ESPRESSO group 3! This file is distributed under the terms of the 4! GNU General Public License. See the file `License' 5! in the root directory of the present distribution, 6! or http://www.gnu.org/copyleft/gpl.txt . 7! 8! written by Carlo Cavazzoni 9 10!=----------------------------------------------------------------------------=! 11 MODULE cp_interfaces 12!=----------------------------------------------------------------------------=! 13 14 IMPLICIT NONE 15 PRIVATE 16 17 PUBLIC :: dforce 18 19 PUBLIC :: pseudopotential_indexes 20 PUBLIC :: compute_dvan 21 PUBLIC :: compute_betagx 22 PUBLIC :: compute_qradx 23 PUBLIC :: interpolate_beta 24 PUBLIC :: interpolate_qradb 25 PUBLIC :: exact_beta 26 PUBLIC :: build_cctab 27 PUBLIC :: build_pstab 28 PUBLIC :: check_tables 29 PUBLIC :: fill_qrl 30 PUBLIC :: exact_qradb 31 PUBLIC :: compute_xgtab 32 33 PUBLIC :: rhoofr 34 PUBLIC :: checkrho 35 36 PUBLIC :: writefile 37 PUBLIC :: readfile 38 39 PUBLIC :: runcp_uspp 40 PUBLIC :: runcp_uspp_force_pairing 41 42 PUBLIC :: eigs 43 PUBLIC :: fermi_energy 44 PUBLIC :: packgam 45 46 PUBLIC :: ortho 47 PUBLIC :: ortho_gamma 48 49 PUBLIC :: nlfh 50 PUBLIC :: nlfl_bgrp 51 52 PUBLIC :: pseudo_stress 53 PUBLIC :: compute_gagb 54 PUBLIC :: stress_har 55 PUBLIC :: stress_hartree 56 PUBLIC :: add_drhoph 57 PUBLIC :: stress_local 58 PUBLIC :: stress_kin 59 60 PUBLIC :: interpolate_lambda 61 PUBLIC :: update_lambda 62 PUBLIC :: elec_fakekine 63 PUBLIC :: wave_rand_init 64 PUBLIC :: crot 65 PUBLIC :: proj 66 67 PUBLIC :: phfacs 68 PUBLIC :: strucf 69 70 PUBLIC :: printout_new 71 PUBLIC :: open_and_append 72 PUBLIC :: cp_print_rho 73 74 75 PUBLIC :: vofmean 76 PUBLIC :: vofps 77 PUBLIC :: vofloc 78 PUBLIC :: force_loc 79 PUBLIC :: self_vofhar 80 ! 81 PUBLIC :: set_eitot 82 PUBLIC :: set_evtot 83 ! 84 PUBLIC :: move_electrons 85 ! 86 PUBLIC :: compute_stress 87 88 PUBLIC :: protate 89 PUBLIC :: c_bgrp_expand 90 PUBLIC :: c_bgrp_pack 91 PUBLIC :: vofrho 92 PUBLIC :: enkin 93 PUBLIC :: newinit 94 PUBLIC :: prefor 95 PUBLIC :: denlcc 96 PUBLIC :: dotcsc 97 PUBLIC :: nlsm1 98 PUBLIC :: nlsm2_bgrp 99 PUBLIC :: calbec_bgrp 100 PUBLIC :: ennl 101 PUBLIC :: calrhovan 102 PUBLIC :: calbec 103 PUBLIC :: caldbec_bgrp 104 PUBLIC :: dennl 105 PUBLIC :: nlfq_bgrp 106 PUBLIC :: collect_bec 107 PUBLIC :: beta_eigr 108 PUBLIC :: nlsm1us 109 110 ! ------------------------------------ ! 111 112 113 INTERFACE dforce 114 SUBROUTINE dforce_x( i, bec, vkb, c, df, da, v, ldv, ispin, f, n, nspin, v1 ) 115 USE kinds, ONLY: DP 116 IMPLICIT NONE 117 INTEGER, INTENT(IN) :: i 118 REAL(DP) :: bec(:,:) 119 COMPLEX(DP) :: vkb(:,:) 120 COMPLEX(DP) :: c(:,:) 121 COMPLEX(DP) :: df(:), da(:) 122 INTEGER, INTENT(IN) :: ldv 123 REAL(DP) :: v( ldv, * ) 124 INTEGER :: ispin( : ) 125 REAL(DP) :: f( : ) 126 INTEGER, INTENT(IN) :: n, nspin 127 REAL(DP), OPTIONAL :: v1( ldv, * ) 128 END SUBROUTINE dforce_x 129 END INTERFACE 130 131 132 133 INTERFACE pseudopotential_indexes 134 SUBROUTINE pseudopotential_indexes_x( ) 135 IMPLICIT NONE 136 END SUBROUTINE pseudopotential_indexes_x 137 END INTERFACE 138 139 140 INTERFACE compute_dvan 141 SUBROUTINE compute_dvan_x() 142 IMPLICIT NONE 143 END SUBROUTINE 144 END INTERFACE 145 146 INTERFACE compute_betagx 147 SUBROUTINE compute_betagx_x( tpre ) 148 IMPLICIT NONE 149 LOGICAL, INTENT(IN) :: tpre 150 END SUBROUTINE 151 END INTERFACE 152 153 INTERFACE compute_qradx 154 SUBROUTINE compute_qradx_x( tpre ) 155 IMPLICIT NONE 156 LOGICAL, INTENT(IN) :: tpre 157 END SUBROUTINE 158 END INTERFACE 159 160 INTERFACE interpolate_beta 161 SUBROUTINE interpolate_beta_x( tpre ) 162 IMPLICIT NONE 163 LOGICAL, INTENT(IN) :: tpre 164 END SUBROUTINE 165 END INTERFACE 166 167 INTERFACE interpolate_qradb 168 SUBROUTINE interpolate_qradb_x( tpre ) 169 IMPLICIT NONE 170 LOGICAL, INTENT(IN) :: tpre 171 END SUBROUTINE 172 END INTERFACE 173 174 INTERFACE exact_beta 175 SUBROUTINE exact_beta_x( tpre ) 176 IMPLICIT NONE 177 LOGICAL, INTENT(IN) :: tpre 178 END SUBROUTINE 179 END INTERFACE 180 181 INTERFACE build_cctab 182 SUBROUTINE build_cctab_x( ) 183 IMPLICIT NONE 184 END SUBROUTINE 185 END INTERFACE 186 187 INTERFACE build_pstab 188 SUBROUTINE build_pstab_x( ) 189 IMPLICIT NONE 190 END SUBROUTINE 191 END INTERFACE 192 193 INTERFACE check_tables 194 LOGICAL FUNCTION check_tables_x( gmax ) 195 USE kinds, ONLY: DP 196 IMPLICIT NONE 197 REAL(DP), INTENT(OUT) :: gmax 198 END FUNCTION check_tables_x 199 END INTERFACE 200 201 INTERFACE fill_qrl 202 SUBROUTINE fill_qrl_x( is, qrl ) 203 USE kinds, ONLY: DP 204 IMPLICIT NONE 205 INTEGER, INTENT(IN) :: is 206 REAL(DP), INTENT(OUT) :: qrl( :, :, : ) 207 END SUBROUTINE 208 END INTERFACE 209 210 INTERFACE exact_qradb 211 SUBROUTINE exact_qradb_x( tpre ) 212 IMPLICIT NONE 213 LOGICAL, INTENT(IN) :: tpre 214 END SUBROUTINE 215 END INTERFACE 216 217 INTERFACE compute_xgtab 218 SUBROUTINE compute_xgtab_x( xgmin, xgmax ) 219 USE kinds, ONLY: DP 220 IMPLICIT NONE 221 REAL(DP), INTENT(OUT) :: xgmax, xgmin 222 END SUBROUTINE 223 END INTERFACE 224 225 226 INTERFACE rhoofr 227 SUBROUTINE rhoofr_cp & 228 ( nfi, c_bgrp, irb, eigrb, bec, dbec, rhovan, rhor, drhor, rhog, drhog, rhos, enl, denl, ekin, dekin, tstress, ndwwf ) 229 USE kinds, ONLY: DP 230 IMPLICIT NONE 231 INTEGER nfi 232 COMPLEX(DP) c_bgrp( :, : ) 233 INTEGER irb( :, : ) 234 COMPLEX(DP) eigrb( :, : ) 235 REAL(DP) bec(:,:) 236 REAL(DP) dbec(:,:,:,:) 237 REAL(DP) rhovan(:, :, : ) 238 REAL(DP) rhor(:,:) 239 REAL(DP) drhor(:,:,:,:) 240 COMPLEX(DP) rhog( :, : ) 241 COMPLEX(DP) drhog( :, :, :, : ) 242 REAL(DP) rhos(:,:) 243 REAL(DP) enl, ekin 244 REAL(DP) denl(3,3), dekin(6) 245 LOGICAL, OPTIONAL, INTENT(IN) :: tstress 246 INTEGER, OPTIONAL, INTENT(IN) :: ndwwf 247 END SUBROUTINE rhoofr_cp 248 END INTERFACE 249 250 INTERFACE checkrho 251 SUBROUTINE checkrho_x(nnr,nspin,rhor,rmin,rmax,rsum,rnegsum) 252 USE kinds, ONLY: DP 253 IMPLICIT NONE 254 INTEGER, INTENT(IN) :: nnr, nspin 255 REAL(DP) :: rhor(nnr,nspin), rmin, rmax, rsum, rnegsum 256 END SUBROUTINE checkrho_x 257 END INTERFACE 258 259 INTERFACE readfile 260 SUBROUTINE readfile_x & 261 & ( flag, h,hold,nfi,c0,cm,taus,tausm,vels,velsm,acc, & 262 & lambda,lambdam,xnhe0,xnhem,vnhe,xnhp0,xnhpm,vnhp,nhpcl,nhpdim,ekincm,& 263 & xnhh0,xnhhm,vnhh,velh,fion, tps, mat_z, occ_f ) 264 USE kinds, ONLY : DP 265 IMPLICIT NONE 266 INTEGER, INTENT(in) :: flag 267 integer :: nfi 268 REAL(DP) :: h(3,3), hold(3,3) 269 complex(DP) :: c0(:,:), cm(:,:) 270 REAL(DP) :: tausm(:,:),taus(:,:), fion(:,:) 271 REAL(DP) :: vels(:,:), velsm(:,:) 272 REAL(DP) :: acc(:),lambda(:,:,:), lambdam(:,:,:) 273 REAL(DP) :: xnhe0,xnhem,vnhe 274 REAL(DP) :: xnhp0(:), xnhpm(:), vnhp(:) 275 integer, INTENT(inout) :: nhpcl,nhpdim 276 REAL(DP) :: ekincm 277 REAL(DP) :: xnhh0(3,3),xnhhm(3,3),vnhh(3,3),velh(3,3) 278 REAL(DP), INTENT(OUT) :: tps 279 REAL(DP), INTENT(INOUT) :: mat_z(:,:,:), occ_f(:) 280 END SUBROUTINE readfile_x 281 END INTERFACE 282 283 284 INTERFACE writefile 285 SUBROUTINE writefile_x & 286 & ( h,hold,nfi,c0,cm,taus,tausm,vels,velsm,acc, & 287 & lambda,lambdam,idesc,xnhe0,xnhem,vnhe,xnhp0,xnhpm,vnhp,nhpcl,nhpdim,ekincm,& 288 & xnhh0,xnhhm,vnhh,velh, fion, tps, mat_z, occ_f, rho ) 289 USE kinds, ONLY: DP 290 implicit none 291 integer, INTENT(IN) :: nfi 292 REAL(DP), INTENT(IN) :: h(3,3), hold(3,3) 293 complex(DP), INTENT(IN) :: c0(:,:), cm(:,:) 294 REAL(DP), INTENT(IN) :: tausm(:,:), taus(:,:), fion(:,:) 295 REAL(DP), INTENT(IN) :: vels(:,:), velsm(:,:) 296 REAL(DP), INTENT(IN) :: acc(:), lambda(:,:,:), lambdam(:,:,:) 297 INTEGER, INTENT(IN) :: idesc( :, : ) 298 REAL(DP), INTENT(IN) :: xnhe0, xnhem, vnhe, ekincm 299 REAL(DP), INTENT(IN) :: xnhp0(:), xnhpm(:), vnhp(:) 300 integer, INTENT(in) :: nhpcl, nhpdim 301 REAL(DP), INTENT(IN) :: xnhh0(3,3),xnhhm(3,3),vnhh(3,3),velh(3,3) 302 REAL(DP), INTENT(in) :: tps 303 REAL(DP), INTENT(in) :: rho(:,:) 304 REAL(DP), INTENT(in) :: occ_f(:) 305 REAL(DP), INTENT(in) :: mat_z(:,:,:) 306 END SUBROUTINE writefile_x 307 END INTERFACE 308 309 310 INTERFACE runcp_uspp 311 SUBROUTINE runcp_uspp_x & 312 ( nfi, fccc, ccc, ema0bg, dt2bye, rhos, bec_bgrp, c0_bgrp, cm_bgrp, fromscra, restart ) 313 USE kinds, ONLY: DP 314 IMPLICIT NONE 315 integer, intent(in) :: nfi 316 real(DP) :: fccc, ccc 317 real(DP) :: ema0bg(:), dt2bye 318 real(DP) :: rhos(:,:) 319 real(DP) :: bec_bgrp(:,:) 320 complex(DP) :: c0_bgrp(:,:), cm_bgrp(:,:) 321 logical, optional, intent(in) :: fromscra 322 logical, optional, intent(in) :: restart 323 END SUBROUTINE 324 END INTERFACE 325 326 327 328 INTERFACE runcp_uspp_force_pairing 329 SUBROUTINE runcp_uspp_force_pairing_x & 330 ( nfi, fccc, ccc, ema0bg, dt2bye, rhos, bec, c0, cm, intermed, fromscra, & 331 restart ) 332 USE kinds, ONLY: DP 333 IMPLICIT NONE 334 INTEGER, INTENT(in) :: nfi 335 REAL(DP) :: fccc, ccc 336 REAL(DP) :: ema0bg(:), dt2bye 337 REAL(DP) :: rhos(:,:) 338 REAL(DP) :: bec(:,:) 339 COMPLEX(DP) :: c0(:,:), cm(:,:) 340 REAL(DP) :: intermed 341 LOGICAL, OPTIONAL, INTENT(in) :: fromscra 342 LOGICAL, OPTIONAL, INTENT(in) :: restart 343 END SUBROUTINE 344 END INTERFACE 345 346 347 INTERFACE eigs 348 SUBROUTINE cp_eigs_x( nfi, lambdap, lambda, idesc ) 349 USE kinds, ONLY: DP 350 IMPLICIT NONE 351 INTEGER :: nfi 352 REAL(DP) :: lambda( :, :, : ), lambdap( :, :, : ) 353 INTEGER, INTENT(IN) :: idesc( :, : ) 354 END SUBROUTINE 355 END INTERFACE 356 357 INTERFACE fermi_energy 358 SUBROUTINE fermi_energy_x(eig, occ, wke, ef, qtot, temp, sume) 359 USE kinds, ONLY: DP 360 IMPLICIT NONE 361 REAL(DP) :: occ(:) 362 REAL(DP) ef, qtot, temp, sume 363 REAL(DP) eig(:,:), wke(:,:) 364 END SUBROUTINE 365 END INTERFACE 366 367 INTERFACE packgam 368 SUBROUTINE rpackgam_x( gam, f, aux ) 369 USE kinds, ONLY: DP 370 IMPLICIT NONE 371 REAL(DP), INTENT(INOUT) :: gam(:,:) 372 REAL(DP), INTENT(OUT), OPTIONAL :: aux(:) 373 REAL(DP), INTENT(IN) :: f(:) 374 END SUBROUTINE 375 END INTERFACE 376 377 378 INTERFACE ortho 379 SUBROUTINE ortho_x & 380 ( eigr, cp_bgrp, phi_bgrp, x0, idesc, diff, iter, ccc, bephi, becp_bgrp ) 381 USE kinds, ONLY: DP 382 IMPLICIT NONE 383 INTEGER, INTENT(IN) :: idesc( :, : ) 384 COMPLEX(DP) :: eigr( :, : ) 385 COMPLEX(DP) :: cp_bgrp( :, : ), phi_bgrp( :, : ) 386 REAL(DP) :: x0( :, :, : ), diff, ccc 387 INTEGER :: iter 388 REAL(DP) :: bephi(:,:) 389 REAL(DP) :: becp_bgrp(:,:) 390 END SUBROUTINE 391 END INTERFACE 392 393 INTERFACE ortho_gamma 394 SUBROUTINE ortho_gamma_x & 395 ( iopt, cp, ngwx, phi, becp_dist, qbecp, nkbx, bephi, qbephi, & 396 x0, nx0, idesc, diff, iter, n, nss, istart ) 397 USE kinds, ONLY: DP 398 IMPLICIT NONE 399 INTEGER, INTENT(IN) :: iopt 400 INTEGER, INTENT(IN) :: ngwx, nkbx, nx0 401 INTEGER, INTENT(IN) :: n, nss, istart 402 COMPLEX(DP) :: phi( ngwx, n ), cp( ngwx, n ) 403 REAL(DP) :: bephi( :, : ) 404 REAL(DP) :: becp_dist(:,:) 405 REAL(DP) :: qbephi( :, : ), qbecp( :, : ) 406 REAL(DP) :: x0( nx0, nx0 ) 407 INTEGER, INTENT(IN) :: idesc( : ) 408 INTEGER, INTENT(OUT) :: iter 409 REAL(DP), INTENT(OUT) :: diff 410 END SUBROUTINE 411 END INTERFACE 412 413 INTERFACE pseudo_stress 414 SUBROUTINE pseudo_stress_x( deps, epseu, gagb, sfac, dvps, rhoeg, omega ) 415 USE kinds, ONLY: DP 416 IMPLICIT NONE 417 REAL(DP), INTENT(IN) :: omega 418 REAL(DP), INTENT(OUT) :: deps(:) 419 REAL(DP), INTENT(IN) :: gagb(:,:) 420 COMPLEX(DP), INTENT(IN) :: rhoeg(:,:) 421 COMPLEX(DP), INTENT(IN) :: sfac(:,:) 422 REAL(DP), INTENT(IN) :: dvps(:,:) 423 REAL(DP), INTENT(IN) :: epseu 424 END SUBROUTINE 425 END INTERFACE 426 427 INTERFACE compute_gagb 428 SUBROUTINE compute_gagb_x( gagb, gx, ngm, tpiba2 ) 429 USE kinds, ONLY: DP 430 IMPLICIT NONE 431 INTEGER, INTENT(IN) :: ngm 432 REAL(DP), INTENT(IN) :: gx(:,:) 433 REAL(DP), INTENT(OUT) :: gagb(:,:) 434 REAL(DP), INTENT(IN) :: tpiba2 435 END SUBROUTINE 436 END INTERFACE 437 438 INTERFACE stress_har 439 SUBROUTINE stress_har_x(deht, ehr, sfac, rhoeg, gagb, omega ) 440 USE kinds, ONLY: DP 441 IMPLICIT NONE 442 REAL(DP), INTENT(OUT) :: DEHT(:) 443 REAL(DP), INTENT(IN) :: omega, EHR, gagb(:,:) 444 COMPLEX(DP), INTENT(IN) :: RHOEG(:,:) 445 COMPLEX(DP), INTENT(IN) :: sfac(:,:) 446 END SUBROUTINE 447 END INTERFACE 448 449 INTERFACE stress_hartree 450 SUBROUTINE stress_hartree_x(deht, ehr, sfac, rhot, drhot, gagb, omega ) 451 USE kinds, ONLY: DP 452 IMPLICIT NONE 453 REAL(DP), INTENT(OUT) :: DEHT(:) 454 REAL(DP), INTENT(IN) :: omega, EHR, gagb(:,:) 455 COMPLEX(DP) :: rhot(:) ! total charge: Sum_spin ( rho_e + rho_I ) 456 COMPLEX(DP) :: drhot(:,:) 457 COMPLEX(DP), INTENT(IN) :: sfac(:,:) 458 END SUBROUTINE 459 END INTERFACE 460 461 INTERFACE add_drhoph 462 SUBROUTINE add_drhoph_x( drhot, sfac, gagb ) 463 USE kinds, ONLY: DP 464 IMPLICIT NONE 465 COMPLEX(DP), INTENT(INOUT) :: drhot( :, : ) 466 COMPLEX(DP), INTENT(IN) :: sfac( :, : ) 467 REAL(DP), INTENT(IN) :: gagb( :, : ) 468 END SUBROUTINE 469 END INTERFACE 470 471 INTERFACE stress_local 472 SUBROUTINE stress_local_x( deps, epseu, gagb, sfac, rhoe, drhoe, omega ) 473 USE kinds, ONLY: DP 474 IMPLICIT NONE 475 REAL(DP), INTENT(IN) :: omega 476 REAL(DP), INTENT(OUT) :: deps(:) 477 REAL(DP), INTENT(IN) :: gagb(:,:) 478 COMPLEX(DP), INTENT(IN) :: rhoe(:) 479 COMPLEX(DP), INTENT(IN) :: drhoe(:,:) 480 COMPLEX(DP), INTENT(IN) :: sfac(:,:) 481 REAL(DP), INTENT(IN) :: epseu 482 END SUBROUTINE 483 END INTERFACE 484 485 INTERFACE stress_kin 486 SUBROUTINE stress_kin_x(dekin, c0, occ) 487 USE kinds, ONLY: DP 488 IMPLICIT NONE 489 REAL(DP), INTENT(OUT) :: dekin(:) 490 COMPLEX(DP), INTENT(IN) :: c0(:,:) 491 REAL(DP), INTENT(IN) :: occ(:) 492 END SUBROUTINE 493 END INTERFACE 494 495 496 INTERFACE interpolate_lambda 497 SUBROUTINE interpolate_lambda_x( lambdap, lambda, lambdam ) 498 USE kinds, ONLY: DP 499 IMPLICIT NONE 500 REAL(DP) :: lambdap(:,:,:), lambda(:,:,:), lambdam(:,:,:) 501 END SUBROUTINE 502 END INTERFACE 503 504 INTERFACE update_lambda 505 SUBROUTINE update_lambda_x( i, lambda, c0, c2, n, noff, tdist ) 506 USE kinds, ONLY: DP 507 IMPLICIT NONE 508 INTEGER, INTENT(IN) :: n, noff 509 REAL(DP) :: lambda(:,:) 510 COMPLEX(DP) :: c0(:,:), c2(:) 511 INTEGER, INTENT(IN) :: i 512 LOGICAL, INTENT(IN) :: tdist ! if .true. lambda is distributed 513 END SUBROUTINE 514 END INTERFACE 515 516 INTERFACE elec_fakekine 517 SUBROUTINE elec_fakekine_x( ekincm, ema0bg, emass, c0, cm, ngw, n, noff, delt ) 518 USE kinds, ONLY: DP 519 IMPLICIT NONE 520 integer, intent(in) :: ngw ! number of plane wave coeff. 521 integer, intent(in) :: n ! number of bands 522 integer, intent(in) :: noff ! offset for band index 523 real(DP), intent(out) :: ekincm 524 real(DP), intent(in) :: ema0bg( ngw ), delt, emass 525 complex(DP), intent(in) :: c0( ngw, n ), cm( ngw, n ) 526 END SUBROUTINE 527 END INTERFACE 528 529 530 INTERFACE wave_rand_init 531 SUBROUTINE wave_rand_init_x( cm, global ) 532 USE kinds, ONLY: DP 533 IMPLICIT NONE 534 COMPLEX(DP), INTENT(OUT) :: cm(:,:) 535 LOGICAL, OPTIONAL, INTENT(IN) :: global 536 END SUBROUTINE 537 END INTERFACE 538 539 INTERFACE crot 540 SUBROUTINE crot_gamma2 ( c0rot, c0, ngw, n, noffr, noff, lambda, nx, eig ) 541 USE kinds, ONLY: DP 542 IMPLICIT NONE 543 INTEGER, INTENT(IN) :: ngw, n, nx, noffr, noff 544 COMPLEX(DP), INTENT(INOUT) :: c0rot(:,:) 545 COMPLEX(DP), INTENT(IN) :: c0(:,:) 546 REAL(DP), INTENT(IN) :: lambda(:,:) 547 REAL(DP), INTENT(OUT) :: eig(:) 548 END SUBROUTINE 549 END INTERFACE 550 551 INTERFACE proj 552 SUBROUTINE proj_gamma( a, b, ngw, n, noff, lambda) 553 USE kinds, ONLY: DP 554 IMPLICIT NONE 555 INTEGER, INTENT( IN ) :: ngw, n, noff 556 COMPLEX(DP), INTENT(INOUT) :: a(:,:), b(:,:) 557 REAL(DP), OPTIONAL :: lambda(:,:) 558 END SUBROUTINE 559 END INTERFACE 560 561 INTERFACE phfacs 562 SUBROUTINE phfacs_x( ei1, ei2, ei3, eigr, mill, taus, nr1, nr2, nr3, nat ) 563 USE kinds, ONLY: DP 564 IMPLICIT NONE 565 INTEGER, INTENT(IN) :: nat 566 INTEGER, INTENT(IN) :: nr1, nr2, nr3 567 COMPLEX(DP) :: ei1( -nr1 : nr1, nat ) 568 COMPLEX(DP) :: ei2( -nr2 : nr2, nat ) 569 COMPLEX(DP) :: ei3( -nr3 : nr3, nat ) 570 COMPLEX(DP) :: eigr( :, : ) 571 REAL(DP) :: taus( 3, nat ) 572 INTEGER :: mill( :, : ) 573 END SUBROUTINE 574 END INTERFACE 575 576 INTERFACE strucf 577 SUBROUTINE strucf_x( sfac, ei1, ei2, ei3, mill, ngm ) 578 USE kinds, ONLY: DP 579 USE ions_base, ONLY: nat 580 USE fft_base, ONLY: dfftp 581 IMPLICIT NONE 582 COMPLEX(DP) :: ei1( -dfftp%nr1 : dfftp%nr1, nat ) 583 COMPLEX(DP) :: ei2( -dfftp%nr2 : dfftp%nr2, nat ) 584 COMPLEX(DP) :: ei3( -dfftp%nr3 : dfftp%nr3, nat ) 585 INTEGER :: mill( :, : ) 586 INTEGER :: ngm 587 COMPLEX(DP), INTENT(OUT) :: sfac(:,:) 588 END SUBROUTINE 589 END INTERFACE 590 591 592 INTERFACE printout_new 593 SUBROUTINE printout_new_x & 594 ( nfi, tfirst, tfilei, tprint, tps, h, stress, tau0, vels, & 595 fion, ekinc, temphc, tempp, temps, etot, enthal, econs, econt, & 596 vnhh, xnhh0, vnhp, xnhp0, vnhe, xnhe0, atot, ekin, epot, print_forces, print_stress,tstdout ) 597 USE kinds, ONLY: DP 598 IMPLICIT NONE 599 INTEGER, INTENT(IN) :: nfi 600 LOGICAL, INTENT(IN) :: tfirst, tfilei, tprint 601 REAL(DP), INTENT(IN) :: tps 602 REAL(DP), INTENT(IN) :: h( 3, 3 ) 603 REAL(DP), INTENT(IN) :: stress( 3, 3 ) 604 REAL(DP), INTENT(IN) :: tau0( :, : ) ! real positions 605 REAL(DP), INTENT(IN) :: vels( :, : ) ! scaled velocities 606 REAL(DP), INTENT(IN) :: fion( :, : ) ! real forces 607 REAL(DP), INTENT(IN) :: ekinc, temphc, tempp, etot, enthal, econs, econt 608 REAL(DP), INTENT(IN) :: temps( : ) ! partial temperature for different ionic species 609 REAL(DP), INTENT(IN) :: vnhh( 3, 3 ), xnhh0( 3, 3 ), vnhp( 1 ), xnhp0( 1 ), vnhe, xnhe0 610 REAL(DP), INTENT(IN) :: atot! enthalpy of system for c.g. case 611 REAL(DP), INTENT(IN) :: ekin 612 REAL(DP), INTENT(IN) :: epot ! ( epseu + eht + exc ) 613 LOGICAL, INTENT(IN) :: print_forces, print_stress, tstdout 614 END SUBROUTINE 615 END INTERFACE 616 617 INTERFACE open_and_append 618 SUBROUTINE open_and_append_x( iunit, file_name ) 619 USE kinds, ONLY: DP 620 IMPLICIT NONE 621 INTEGER, INTENT(IN) :: iunit 622 CHARACTER(LEN = *), INTENT(IN) :: file_name 623 END SUBROUTINE 624 END INTERFACE 625 626 INTERFACE cp_print_rho 627 SUBROUTINE cp_print_rho_x & 628 (nfi, bec, c0, eigr, irb, eigrb, rhor, rhog, rhos, lambdap, lambda, tau0, h ) 629 USE kinds, ONLY: DP 630 IMPLICIT NONE 631 INTEGER :: nfi 632 INTEGER :: irb(:,:) 633 COMPLEX(DP) :: c0( :, : ) 634 REAL(DP) :: bec( :, : ), rhor( :, : ), rhos( :, : ) 635 REAL(DP) :: lambda( :, :, : ), lambdap( :, :, : ) 636 REAL(DP) :: tau0( :, : ), h( 3, 3 ) 637 COMPLEX(DP) :: eigrb( :, : ), rhog( :, : ) 638 COMPLEX(DP) :: eigr( :, : ) 639 END SUBROUTINE 640 END INTERFACE 641 642 643 INTERFACE vofmean 644 SUBROUTINE vofmean_x( sfac, rhops, rhoeg ) 645 USE kinds, ONLY: DP 646 IMPLICIT NONE 647 REAL(DP), INTENT(IN) :: RHOPS(:,:) 648 COMPLEX(DP), INTENT(IN) :: RHOEG(:) 649 COMPLEX(DP), INTENT(IN) :: sfac(:,:) 650 END SUBROUTINE 651 END INTERFACE 652 653 654 INTERFACE vofps 655 SUBROUTINE vofps_x( eps, vloc, rhoeg, vps, sfac, omega ) 656 USE kinds, ONLY: DP 657 IMPLICIT NONE 658 REAL(DP), INTENT(IN) :: vps(:,:) 659 REAL(DP), INTENT(IN) :: omega 660 COMPLEX(DP), INTENT(OUT) :: vloc(:) 661 COMPLEX(DP), INTENT(IN) :: rhoeg(:) 662 COMPLEX(DP), INTENT(IN) :: sfac(:,:) 663 COMPLEX(DP), INTENT(OUT) :: eps 664 END SUBROUTINE 665 END INTERFACE 666 667 668 INTERFACE vofloc 669 SUBROUTINE vofloc_x( tscreen, ehte, ehti, eh, vloc, rhoeg, & 670 rhops, vps, sfac, omega, screen_coul ) 671 USE kinds, ONLY: DP 672 IMPLICIT NONE 673 LOGICAL, INTENT(IN) :: tscreen 674 REAL(DP), INTENT(IN) :: rhops(:,:), vps(:,:) 675 COMPLEX(DP), INTENT(INOUT) :: vloc(:) 676 COMPLEX(DP), INTENT(IN) :: rhoeg(:) 677 COMPLEX(DP), INTENT(IN) :: sfac(:,:) 678 REAL(DP), INTENT(OUT) :: ehte, ehti 679 REAL(DP), INTENT(IN) :: omega 680 COMPLEX(DP), INTENT(OUT) :: eh 681 COMPLEX(DP), INTENT(IN) :: screen_coul(:) 682 END SUBROUTINE 683 END INTERFACE 684 685 INTERFACE force_loc 686 SUBROUTINE force_loc_x( tscreen, rhoeg, fion, rhops, vps, ei1, ei2, ei3, & 687 sfac, omega, screen_coul ) 688 USE kinds, ONLY: DP 689 USE fft_base, ONLY: dfftp 690 USE ions_base, ONLY: nat 691 IMPLICIT NONE 692 LOGICAL :: tscreen 693 REAL(DP) :: fion(:,:) 694 REAL(DP) :: rhops(:,:), vps(:,:) 695 COMPLEX(DP) :: rhoeg(:) 696 COMPLEX(DP), INTENT(IN) :: sfac(:,:) 697 COMPLEX(DP) :: ei1(-dfftp%nr1:dfftp%nr1,nat) 698 COMPLEX(DP) :: ei2(-dfftp%nr2:dfftp%nr2,nat) 699 COMPLEX(DP) :: ei3(-dfftp%nr3:dfftp%nr3,nat) 700 REAL(DP) :: omega 701 COMPLEX(DP) :: screen_coul(:) 702 END SUBROUTINE 703 END INTERFACE 704 705 INTERFACE self_vofhar 706 SUBROUTINE self_vofhar_x( tscreen, self_ehte, vloc, rhoeg, omega, hmat ) 707 USE kinds, ONLY: DP 708 IMPLICIT NONE 709 LOGICAL :: tscreen 710 COMPLEX(DP) :: vloc(:) 711 COMPLEX(DP) :: rhoeg(:,:) 712 REAL(DP) :: self_ehte 713 REAL(DP), INTENT(IN) :: omega 714 REAL(DP), INTENT(IN) :: hmat( 3, 3 ) 715 END SUBROUTINE 716 END INTERFACE 717 718 INTERFACE set_eitot 719 SUBROUTINE set_eitot_x( eitot ) 720 USE kinds, ONLY: DP 721 IMPLICIT NONE 722 REAL(DP), INTENT(OUT) :: eitot(:,:) 723 END SUBROUTINE 724 END INTERFACE 725 726 INTERFACE set_evtot 727 SUBROUTINE set_evtot_x( c0, ctot, lambda, idesc, iupdwn_tot, nupdwn_tot ) 728 USE kinds, ONLY: DP 729 IMPLICIT NONE 730 COMPLEX(DP), INTENT(IN) :: c0(:,:) 731 COMPLEX(DP), INTENT(OUT) :: ctot(:,:) 732 REAL(DP), INTENT(IN) :: lambda(:,:,:) 733 INTEGER, INTENT(IN) :: idesc(:,:) 734 INTEGER, INTENT(IN) :: iupdwn_tot(2), nupdwn_tot(2) 735 END SUBROUTINE 736 END INTERFACE 737 738 INTERFACE print_projwfc 739 SUBROUTINE print_projwfc_x ( c0, lambda, eigr, vkb ) 740 USE kinds, ONLY: DP 741 IMPLICIT NONE 742 COMPLEX(DP), INTENT(IN) :: c0(:,:), eigr(:,:), vkb(:,:) 743 REAL(DP), INTENT(IN) :: lambda(:,:,:) 744 END SUBROUTINE 745 END INTERFACE 746 747 748 749 INTERFACE move_electrons 750 SUBROUTINE move_electrons_x( & 751 nfi, tfirst, tlast, b1, b2, b3, fion, c0_bgrp, cm_bgrp, phi_bgrp, enthal, enb, & 752 & enbi, fccc, ccc, dt2bye, stress,l_cprestart ) 753 USE kinds, ONLY: DP 754 IMPLICIT NONE 755 INTEGER, INTENT(IN) :: nfi 756 LOGICAL, INTENT(IN) :: tfirst, tlast 757 REAL(DP), INTENT(IN) :: b1(3), b2(3), b3(3) 758 REAL(DP) :: fion(:,:) 759 COMPLEX(DP) :: c0_bgrp(:,:), cm_bgrp(:,:), phi_bgrp(:,:) 760 REAL(DP), INTENT(IN) :: dt2bye 761 REAL(DP) :: fccc, ccc 762 REAL(DP) :: enb, enbi 763 REAL(DP) :: enthal 764 REAL(DP) :: ei_unp 765 REAL(DP) :: stress(3,3) 766 LOGICAL, INTENT(in) :: l_cprestart 767 END SUBROUTINE 768 END INTERFACE 769 770 INTERFACE compute_stress 771 SUBROUTINE compute_stress_x( stress, detot, h, omega ) 772 USE kinds, ONLY : DP 773 IMPLICIT NONE 774 REAL(DP), INTENT(OUT) :: stress(3,3) 775 REAL(DP), INTENT(IN) :: detot(3,3), h(3,3), omega 776 END SUBROUTINE 777 END INTERFACE 778 779 INTERFACE nlfh 780 SUBROUTINE nlfh_x( stress, bec, dbec, lambda, idesc ) 781 USE kinds, ONLY : DP 782 IMPLICIT NONE 783 REAL(DP), INTENT(INOUT) :: stress(3,3) 784 REAL(DP), INTENT(IN) :: bec( :, : ), dbec( :, :, :, : ) 785 REAL(DP), INTENT(IN) :: lambda( :, :, : ) 786 INTEGER, INTENT(IN) :: idesc(:,:) 787 END SUBROUTINE 788 END INTERFACE 789 790 INTERFACE nlfl_bgrp 791 SUBROUTINE nlfl_bgrp_x( bec_bgrp, becdr_bgrp, lambda, idesc, fion ) 792 USE kinds, ONLY: DP 793 IMPLICIT NONE 794 REAL(DP) :: bec_bgrp(:,:), becdr_bgrp(:,:,:) 795 REAL(DP), INTENT(IN) :: lambda(:,:,:) 796 INTEGER, INTENT(IN) :: idesc(:,:) 797 REAL(DP), INTENT(INOUT) :: fion(:,:) 798 END SUBROUTINE 799 END INTERFACE 800 801 INTERFACE protate 802 SUBROUTINE protate_x ( c0, bec, c0rot, becrot, ngwl, nss, noff, lambda, nrl, & 803 ityp, nat, indv_ijkb0, nh, np_rot, me_rot, comm_rot ) 804 USE kinds, ONLY: DP 805 IMPLICIT NONE 806 INTEGER, INTENT(IN) :: ngwl, nss, nrl, noff 807 INTEGER, INTENT(IN) :: ityp(:), nat, indv_ijkb0(:), nh(:) 808 INTEGER, INTENT(IN) :: np_rot, me_rot, comm_rot 809 COMPLEX(DP), INTENT(IN) :: c0(:,:) 810 COMPLEX(DP), INTENT(OUT) :: c0rot(:,:) 811 REAL(DP), INTENT(IN) :: lambda(:,:) 812 REAL(DP), INTENT(IN) :: bec(:,:) 813 REAL(DP), INTENT(OUT) :: becrot(:,:) 814 END SUBROUTINE 815 END INTERFACE 816 817 INTERFACE c_bgrp_expand 818 SUBROUTINE c_bgrp_expand_x( c_bgrp ) 819 USE kinds, ONLY: DP 820 IMPLICIT NONE 821 COMPLEX(DP) :: c_bgrp(:,:) 822 END SUBROUTINE c_bgrp_expand_x 823 END INTERFACE 824 INTERFACE c_bgrp_pack 825 SUBROUTINE c_bgrp_pack_x( c_bgrp ) 826 USE kinds, ONLY: DP 827 IMPLICIT NONE 828 COMPLEX(DP) :: c_bgrp(:,:) 829 END SUBROUTINE c_bgrp_pack_x 830 END INTERFACE 831 832 INTERFACE vofrho 833 SUBROUTINE vofrho_x( nfi, rhor, drhor, rhog, drhog, rhos, rhoc, tfirst, tlast, & 834 & ei1, ei2, ei3, irb, eigrb, sfac, tau0, fion ) 835 USE kinds, ONLY: dp 836 IMPLICIT NONE 837 LOGICAL :: tlast, tfirst 838 INTEGER :: nfi 839 REAL(DP) :: rhor(:,:), drhor(:,:,:,:), rhos(:,:), fion(:,:) 840 REAL(DP) :: rhoc(:), tau0(:,:) 841 ! COMPLEX(DP) ei1(-nr1:nr1,nat), ei2(-nr2:nr2,nat), ei3(-nr3:nr3,nat) 842 COMPLEX(DP) :: ei1(:,:), ei2(:,:), ei3(:,:) 843 COMPLEX(DP) :: eigrb(:,:) 844 COMPLEX(DP) :: rhog(:,:), drhog(:,:,:,:) 845 COMPLEX(DP) :: sfac(:,:) 846 INTEGER :: irb(:,:) 847 END SUBROUTINE vofrho_x 848 END INTERFACE 849 850 INTERFACE enkin 851 FUNCTION enkin_x( c, f, n ) 852 USE kinds, ONLY: dp 853 IMPLICIT NONE 854 INTEGER, INTENT(IN) :: n 855 COMPLEX(DP), INTENT(IN) :: c( :, : ) 856 REAL(DP), INTENT(IN) :: f( : ) 857 REAL(DP) :: enkin_x 858 END FUNCTION enkin_x 859 END INTERFACE 860 861 INTERFACE newinit 862 SUBROUTINE newinit_x( h, iverbosity ) 863 USE kinds, ONLY: dp 864 IMPLICIT NONE 865 REAL(DP), INTENT(IN) :: h( 3, 3 ) 866 INTEGER, INTENT(IN) :: iverbosity 867 END SUBROUTINE newinit_x 868 END INTERFACE 869 870 INTERFACE prefor 871 SUBROUTINE prefor_x( eigr, betae ) 872 USE kinds, ONLY: dp 873 IMPLICIT NONE 874 COMPLEX(DP), INTENT(IN) :: eigr( :, : ) 875 COMPLEX(DP), INTENT(OUT) :: betae( :, : ) 876 END SUBROUTINE prefor_x 877 END INTERFACE 878 879 INTERFACE denlcc 880 SUBROUTINE denlcc_x( nnr, nspin, vxcr, sfac, drhocg, dcc ) 881 USE kinds, ONLY: dp 882 IMPLICIT NONE 883 INTEGER, INTENT(IN) :: nnr, nspin 884 REAL(DP), INTENT(IN) :: vxcr( :, : ) 885 COMPLEX(DP), INTENT(IN) :: sfac( :, : ) 886 REAL(DP), INTENT(IN) :: drhocg( :, : ) 887 REAL(DP), INTENT(OUT) :: dcc( :, : ) 888 END SUBROUTINE denlcc_x 889 END INTERFACE 890 891 INTERFACE dotcsc 892 SUBROUTINE dotcsc_x( eigr, cp, ngw, n ) 893 USE kinds, ONLY: dp 894 IMPLICIT NONE 895 INTEGER, INTENT(IN) :: ngw, n 896 COMPLEX(DP), INTENT(IN) :: eigr(:,:), cp(:,:) 897 END SUBROUTINE dotcsc_x 898 END INTERFACE 899 900 INTERFACE nlsm1 901 SUBROUTINE nlsm1_x ( n, nspmn, nspmx, eigr, c, becp, pptype_ ) 902 USE kinds, ONLY : DP 903 IMPLICIT NONE 904 INTEGER, INTENT(IN) :: n, nspmn, nspmx 905 COMPLEX(DP), INTENT(IN) :: eigr( :, : ), c( :, : ) 906 REAL(DP), INTENT(OUT) :: becp( :, : ) 907 INTEGER, INTENT(IN), OPTIONAL :: pptype_ 908 END SUBROUTINE nlsm1_x 909 END INTERFACE 910 911 INTERFACE nlsm2_bgrp 912 SUBROUTINE nlsm2_bgrp_x( ngw, nkb, eigr, c_bgrp, becdr_bgrp, nbspx_bgrp, nbsp_bgrp ) 913 USE kinds, ONLY : DP 914 IMPLICIT NONE 915 INTEGER, INTENT(IN) :: ngw, nkb, nbspx_bgrp, nbsp_bgrp 916 COMPLEX(DP), INTENT(IN) :: eigr( :, : ), c_bgrp( :, : ) 917 REAL(DP), INTENT(OUT) :: becdr_bgrp( :, :, : ) 918 END SUBROUTINE nlsm2_bgrp_x 919 END INTERFACE 920 921 INTERFACE calbec_bgrp 922 SUBROUTINE calbec_bgrp_x ( nspmn, nspmx, eigr, c_bgrp, bec_bgrp, pptype_ ) 923 USE kinds, ONLY : DP 924 IMPLICIT NONE 925 INTEGER, INTENT(IN) :: nspmn, nspmx 926 COMPLEX(DP), INTENT(IN) :: eigr( :, : ), c_bgrp( :, : ) 927 REAL(DP), INTENT(OUT) :: bec_bgrp( :, : ) 928 INTEGER, INTENT(IN), OPTIONAL :: pptype_ 929 END SUBROUTINE calbec_bgrp_x 930 END INTERFACE 931 932 INTERFACE ennl 933 SUBROUTINE ennl_x( ennl_val, rhovan, bec_bgrp ) 934 USE kinds, ONLY: DP 935 IMPLICIT NONE 936 REAL(DP), INTENT(OUT) :: ennl_val 937 REAL(DP), INTENT(OUT) :: rhovan( :, :, : ) 938 REAL(DP), INTENT(IN) :: bec_bgrp( :, : ) 939 END SUBROUTINE ennl_x 940 END INTERFACE 941 942 INTERFACE calrhovan 943 SUBROUTINE calrhovan_x( rhovan, bec, iwf ) 944 USE kinds, ONLY: DP 945 IMPLICIT NONE 946 REAL(DP), INTENT(OUT) :: rhovan( :, :, : ) 947 REAL(DP), INTENT(IN) :: bec( :, : ) 948 INTEGER, INTENT(IN) :: iwf 949 END SUBROUTINE calrhovan_x 950 END INTERFACE 951 952 INTERFACE calbec 953 SUBROUTINE calbec_x( nspmn, nspmx, eigr, c, bec, pptype_ ) 954 USE kinds, ONLY: DP 955 IMPLICIT NONE 956 INTEGER, INTENT(IN) :: nspmn, nspmx 957 REAL(DP), INTENT(OUT) :: bec( :, : ) 958 COMPLEX(DP), INTENT(IN) :: c( :, : ), eigr( :, : ) 959 INTEGER, INTENT(IN), OPTIONAL :: pptype_ 960 END SUBROUTINE calbec_x 961 END INTERFACE 962 963 INTERFACE caldbec_bgrp 964 SUBROUTINE caldbec_bgrp_x( eigr, c_bgrp, dbec, idesc ) 965 USE kinds, ONLY: DP 966 IMPLICIT NONE 967 COMPLEX(DP), INTENT(IN) :: c_bgrp( :, : ), eigr( :, : ) 968 REAL(DP), INTENT(OUT) :: dbec( :, :, :, : ) 969 INTEGER, INTENT(IN) :: idesc( :, : ) 970 END SUBROUTINE caldbec_bgrp_x 971 END INTERFACE 972 973 INTERFACE dennl 974 SUBROUTINE dennl_x( bec_bgrp, dbec, drhovan, denl, idesc ) 975 USE kinds, ONLY: DP 976 IMPLICIT NONE 977 REAL(DP), INTENT(IN) :: dbec( :, :, :, : ) 978 REAL(DP), INTENT(IN) :: bec_bgrp( :, : ) 979 REAL(DP), INTENT(OUT) :: drhovan( :, :, :, :, : ) 980 REAL(DP), INTENT(OUT) :: denl( 3, 3 ) 981 INTEGER, INTENT(IN) :: idesc( :, : ) 982 END SUBROUTINE dennl_x 983 END INTERFACE 984 985 INTERFACE nlfq_bgrp 986 SUBROUTINE nlfq_bgrp_x( c_bgrp, eigr, bec_bgrp, becdr_bgrp, fion ) 987 USE kinds, ONLY: DP 988 IMPLICIT NONE 989 COMPLEX(DP), INTENT(IN) :: c_bgrp( :, : ), eigr( :, : ) 990 REAL(DP), INTENT(IN) :: bec_bgrp( :, : ) 991 REAL(DP), INTENT(OUT) :: becdr_bgrp( :, :, : ) 992 REAL(DP), INTENT(OUT) :: fion( :, : ) 993 END SUBROUTINE nlfq_bgrp_x 994 END INTERFACE 995 996 INTERFACE collect_bec 997 SUBROUTINE collect_bec_x( bec_repl, bec_dist, idesc, nspin ) 998 USE kinds, ONLY : DP 999 REAL(DP), INTENT(OUT) :: bec_repl(:,:) 1000 REAL(DP), INTENT(IN) :: bec_dist(:,:) 1001 INTEGER, INTENT(IN) :: idesc(:,:) 1002 INTEGER, INTENT(IN) :: nspin 1003 END SUBROUTINE collect_bec_x 1004 END INTERFACE 1005 1006 INTERFACE beta_eigr 1007 SUBROUTINE beta_eigr_x ( beigr, nspmn, nspmx, eigr, pptype_ ) 1008 USE kinds, ONLY : DP 1009 IMPLICIT NONE 1010 INTEGER, INTENT(IN) :: nspmn, nspmx 1011 COMPLEX(DP), INTENT(IN) :: eigr( :, : ) 1012 COMPLEX(DP), INTENT(OUT) :: beigr( :, : ) 1013 INTEGER, INTENT(IN), OPTIONAL :: pptype_ 1014 END SUBROUTINE beta_eigr_x 1015 END INTERFACE 1016 1017 INTERFACE nlsm1us 1018 SUBROUTINE nlsm1us_x ( n, beigr, c, becp ) 1019 USE kinds, ONLY : DP 1020 IMPLICIT NONE 1021 INTEGER, INTENT(IN) :: n 1022 COMPLEX(DP), INTENT(IN) :: beigr( :, : ) 1023 COMPLEX(DP), INTENT(IN) :: c( :, : ) 1024 REAL(DP), INTENT(OUT) :: becp( :, : ) 1025 END SUBROUTINE nlsm1us_x 1026 END INTERFACE 1027 1028 1029!=----------------------------------------------------------------------------=! 1030 1031!=----------------------------------------------------------------------------=! 1032 END MODULE 1033!=----------------------------------------------------------------------------=! 1034