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