LCOV - code coverage report
Current view: top level - src/57_iovars - m_outvar_o_z.F90 (source / functions) Coverage Total Hit
Test: coverage.info Lines: 97.9 % 1109 1086
Test Date: 2026-09-19 17:42:43 Functions: 100.0 % 2 2

            Line data    Source code
       1              : !!****m* ABINIT/m_outvar_o_z
       2              : !! NAME
       3              : !!  m_outvar_o_z
       4              : !!
       5              : !! FUNCTION
       6              : !!
       7              : !!
       8              : !! COPYRIGHT
       9              : !!  Copyright (C) 1998-2026 ABINIT group (DCA, XG, GMR, MM)
      10              : !!  This file is distributed under the terms of the
      11              : !!  GNU General Public License, see ~abinit/COPYING
      12              : !!  or http://www.gnu.org/copyleft/gpl.txt .
      13              : !!
      14              : !! SOURCE
      15              : 
      16              : #if defined HAVE_CONFIG_H
      17              : #include "config.h"
      18              : #endif
      19              : 
      20              : #include "abi_common.h"
      21              : 
      22              : module m_outvar_o_z
      23              : 
      24              :  use defs_basis
      25              : 
      26              :  use m_errors
      27              :  use m_results_out
      28              :  use m_abicore
      29              :  use m_xmpi
      30              :  use m_dtset
      31              : 
      32              :  use m_geometry,     only : mkrdim, xred2xcart
      33              :  use m_parser,       only : prttagm, prttagm_images, ab_dimensions
      34              : 
      35              :  implicit none
      36              : 
      37              :  private
      38              : !!***
      39              : 
      40              :  public :: outvar_o_z
      41              : !!***
      42              : 
      43              : contains
      44              : !!***
      45              : 
      46              : !!****f* ABINIT/outvar_o_z
      47              : !! NAME
      48              : !! outvar_o_z
      49              : !!
      50              : !! FUNCTION
      51              : !! Echo variables between acell and gw_ ... (by alphabetic order) for the ABINIT code.
      52              : !!
      53              : !! INPUTS
      54              : !!  choice= 1 if echo of preprocessed variables, 2 if echo after call driver
      55              : !!  dtsets(0:ndtset_alloc)=<type datafiles_type>contains all input variables
      56              : !!  iout=unit number for echoed output
      57              : !!  jdtset_(0:ndtset_alloc)=actual index of the dataset (equal to dtsets(:)%jdtset)
      58              : !!  marr=maximum number of numbers in an array (might need to be increased ... !)
      59              : !!  multivals= <type ab_dimensions>  either 0 or 1 , depending whether the
      60              : !!     dimension has different values for different datasets
      61              : !!  mxvals= <type ab_dimensions>
      62              : !!     maximum size of some arrays along all datasets, including
      63              : !!         lpawu      =maximal value of input lpawu for all the datasets
      64              : !!         gw_nqlwl   =maximal value of input gw_nqlwl for all the datasets
      65              : !!         mband      =maximum number of bands
      66              : !!         natom      =maximal value of input natom for all the datasets
      67              : !!         natpawu    =maximal value of number of atoms on which +U is applied for all the datasets
      68              : !!         natsph     =maximal value of input natsph for all the datasets
      69              : !!         natvshift  =maximal value of input natvshift for all the datasets
      70              : !!         nconeq     =maximal value of input nconeq for all the datasets
      71              : !!         nimage     =maximal value of input nimage for all the datasets
      72              : !!         nkptgw     =maximal value of input nkptgw for all the datasets
      73              : !!         nkpt       =maximal value of input nkpt for all the datasets
      74              : !!         nnos       =maximal value of input nnos for all the datasets
      75              : !!         nqptdm     =maximal value of input nqptdm for all the datasets
      76              : !!         nspinor    =maximal value of input nspinor for all the datasets
      77              : !!         nsppol     =maximal value of input nsppol for all the datasets
      78              : !!         nsym       =maximum number of symmetries
      79              : !!         ntypat     =maximum number of type of atoms
      80              : !!         nzchempot  =maximal value of input nzchempot for all the datasets
      81              : !!  ncid= NetCDF handler
      82              : !!  ndtset=number of datasets
      83              : !!  ndtset_alloc=number of datasets, corrected for allocation of at least
      84              : !!      one data set. Use for most dimensioned arrays.
      85              : !!  npsp=number of pseudopotentials
      86              : !!  prtvol_glob= if 0, minimal output volume, if 1, no restriction.
      87              : !!  results_out(0:ndtset_alloc)=<type results_out_type>contains the results
      88              : !!   needed for outvars, including evolving variables
      89              : !!  timopt=input variable to modulate the timing
      90              : !!
      91              : !! OUTPUT
      92              : !!
      93              : !! NOTES
      94              : !! Note that this routine is called only by the processor me==0 .
      95              : !! In consequence, no use of message and wrtout routine.
      96              : !! The lines of code needed to output the defaults are preserved
      97              : !! (see last section of the routine, but are presently disabled)
      98              : !!
      99              : !!  Note that acell, occ, rprim, xred and vel might have been modified by the
     100              : !!  computation, so that their values if choice=1 or choice=2 will differ.
     101              : !!
     102              : !! SOURCE
     103              : 
     104         4524 :  subroutine outvar_o_z(choice,dtsets,iout,&
     105         4524 : & jdtset_,marr,multivals,mxvals,ncid,ndtset,ndtset_alloc,npsp,prtvol_glob,&
     106         4524 : & results_out,strimg,timopt)
     107              : 
     108              : !Arguments ------------------------------------
     109              : !scalars
     110              :  integer,intent(in) :: choice,iout,marr,ndtset
     111              :  integer,intent(in) :: ndtset_alloc,prtvol_glob,ncid,npsp,timopt
     112              : !arrays
     113              :  integer,intent(in) :: jdtset_(0:ndtset_alloc)
     114              :  type(ab_dimensions),intent(in) :: multivals,mxvals
     115              :  type(dataset_type),intent(in) :: dtsets(0:ndtset_alloc)
     116              :  type(results_out_type),intent(in) :: results_out(0:ndtset_alloc)
     117              :  character(len=8),intent(in) :: strimg(mxvals%nimage)
     118              : 
     119              : !Local variables-------------------------------
     120              : !scalars
     121              :  integer,parameter :: nkpt_max=50
     122              :  integer :: iat,icount,idtset,ii,iimage,ndtset_alloc_tmp
     123              :  integer :: narr
     124              :  integer :: multi_kptopt
     125              :  integer :: natom
     126              :  integer :: nimage,nnos,nsym
     127              :  integer :: ntypalch,ntypat,size1,size2,test_write,tnkpt,timopt_default,tmpimg0
     128              :  logical :: compute_static_images
     129              :  logical :: nontrivial_spinaxis
     130              :  character(len=1) :: firstchar_gpu
     131              : !arrays
     132         4524 :  integer,allocatable :: narrm(:)
     133         4524 :  integer,allocatable :: nimagem(:),prtimg(:,:)
     134         4524 :  integer,allocatable :: intarr(:,:)
     135              :  real(dp) :: rprimd(3,3)
     136         4524 :  real(dp),allocatable :: dprarr(:,:),dprarr_images(:,:,:)
     137         4524 :  real(dp),allocatable :: xangst(:,:),xcart(:,:),xred(:,:)
     138         4524 :  real(dp),allocatable :: xangst_(:,:,:,:),xcart_(:,:,:,:)
     139              : ! *************************************************************************
     140              : 
     141              : !###########################################################
     142              : !### 01. Initial allocations and initialisations.
     143              : 
     144        18096 :  ABI_MALLOC(dprarr,(marr,0:ndtset_alloc))
     145        22620 :  ABI_MALLOC(dprarr_images,(marr,mxvals%nimage,0:ndtset_alloc))
     146        18096 :  ABI_MALLOC(intarr,(marr,0:ndtset_alloc))
     147        13572 :  ABI_MALLOC(narrm,(0:ndtset_alloc))
     148         9048 :  ABI_MALLOC(nimagem,(0:ndtset_alloc))
     149        18096 :  ABI_MALLOC(prtimg,(mxvals%nimage,0:ndtset_alloc))
     150              : 
     151        29986 :  do idtset=0,ndtset_alloc
     152        29986 :    nimagem(idtset)=dtsets(idtset)%nimage
     153              :  end do
     154              : 
     155         4524 :  firstchar_gpu=' '
     156        25462 :  if (maxval(dtsets(1:ndtset_alloc)%gpu_option)/=ABI_GPU_DISABLED) firstchar_gpu='-'
     157              : 
     158         4524 :  natom=dtsets(1)%natom
     159         4524 :  nimage=dtsets(1)%nimage
     160         4524 :  nnos=dtsets(1)%nnos
     161         4524 :  nsym=-1;nsym=dtsets(1)%nsym
     162         4524 :  ntypalch=dtsets(1)%ntypalch
     163         4524 :  ntypat=dtsets(1)%ntypat
     164              : 
     165              : !###########################################################
     166              : !### 02. Specific treatment for occopt, xangst, xcart, xred
     167              : 
     168              : !Must compute xangst and xcart
     169        22620 :  ABI_MALLOC(xangst_,(3,mxvals%natom,mxvals%nimage,0:ndtset_alloc))
     170        18096 :  ABI_MALLOC(xcart_,(3,mxvals%natom,mxvals%nimage,0:ndtset_alloc))
     171      1261848 :  xangst_(:,:,:,:)=0.0_dp ; xcart_(:,:,:,:)=0.0_dp
     172              : 
     173        25462 :  do idtset=1,ndtset_alloc
     174        20938 :    natom=dtsets(idtset)%natom
     175        62814 :    ABI_MALLOC(xred,(3,natom))
     176        41876 :    ABI_MALLOC(xangst,(3,natom))
     177        41876 :    ABI_MALLOC(xcart,(3,natom))
     178        42628 :    do iimage=1,dtsets(idtset)%nimage
     179       394714 :      xred(:,1:natom)=results_out(idtset)%xred(:,1:natom,iimage)
     180        21690 :      call mkrdim(results_out(idtset)%acell(:,iimage),results_out(idtset)%rprim(:,:,iimage),rprimd)
     181              : !    Compute xcart from xred and rprimd
     182        21690 :      call xred2xcart(natom,rprimd,xcart,xred)
     183              : !    Compute xangst from xcart
     184       394714 :      xangst(:,:)=xcart(:,:)*Bohr_Ang
     185              : !    Save the data
     186       394714 :      xangst_(1:3,1:natom,iimage,idtset)=xangst(:,:)
     187       415652 :      xcart_(1:3,1:natom,iimage,idtset)=xcart(:,:)
     188              :    end do
     189        20938 :    if(dtsets(idtset)%nimage/=mxvals%nimage)then
     190          776 :      xangst_(1:3,1:natom,dtsets(idtset)%nimage+1:mxvals%nimage,idtset)=zero
     191          776 :      xcart_(1:3,1:natom,dtsets(idtset)%nimage+1:mxvals%nimage,idtset)=zero
     192              :    end if
     193        20938 :    ABI_FREE(xred)
     194        20938 :    ABI_FREE(xangst)
     195        25462 :    ABI_FREE(xcart)
     196              :  end do
     197              : 
     198              : !###########################################################
     199              : !### 03. Print all the input variables (O)
     200              : !##
     201              : 
     202              : !occ
     203              : !The use of prttagm for occ if occopt>=2 is not possible because
     204              : !the different k-point and spins must be separated on different lines ...
     205              : !Also, if prtvol=-1 and NC file has been created, only print one dataset
     206         4524 :  ndtset_alloc_tmp=ndtset_alloc
     207         4524 :  if(ncid<0)ndtset_alloc_tmp=1
     208         4524 :  call prtocc(dtsets,iout,jdtset_,mxvals,ndtset_alloc_tmp,nimagem,prtvol_glob,results_out,strimg)
     209              : 
     210        29986 :  intarr(1,:)=dtsets(:)%occopt
     211         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'occopt','INT',0)
     212              : 
     213        29986 :  dprarr(1,:)=dtsets(:)%omegasimax
     214         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'omegasimax','ENE',0)
     215              : 
     216        29986 :  dprarr(1,:)=dtsets(:)%omegasrdmax
     217         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'omegasrdmax','ENE',0)
     218              : 
     219        29986 :  intarr(1,:)=dtsets(:)%optcell
     220         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'optcell','INT',0)
     221              : 
     222        29986 :  intarr(1,:)=dtsets(:)%optdcmagpawu
     223         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'optdcmagpawu','INT',0)
     224              : 
     225        29986 :  intarr(1,:)=dtsets(:)%optdriver
     226         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'optdriver','INT',0)
     227              : 
     228        29986 :  intarr(1,:)=dtsets(:)%optforces
     229         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'optforces','INT',0)
     230              : 
     231        29986 :  intarr(1,:)=dtsets(:)%optnlxccc
     232         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'optnlxccc','INT',0)
     233              : 
     234        29986 :  intarr(1,:)=dtsets(:)%optstress
     235         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'optstress','INT',0)
     236              : 
     237        29986 :  dprarr(1,:)=dtsets(:)%oracle_factor
     238         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'oracle_factor','DPR',0)
     239              : 
     240        29986 :  dprarr(1,:)=dtsets(:)%oracle_min_occ
     241         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'oracle_min_occ','DPR',0)
     242              : 
     243        29986 :  intarr(1,:)=dtsets(:)%orbmag
     244         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'orbmag','INT',0)
     245              : 
     246        29986 :  intarr(1,:)=dtsets(:)%ortalg
     247         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'ortalg','INT',0,firstchar=firstchar_gpu)
     248              : 
     249              : !###########################################################
     250              : !### 03. Print all the input variables (P)
     251              : !##
     252              : 
     253        29986 :  intarr(1,:)=dtsets(:)%paral_atom
     254         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'paral_atom','INT',0, firstchar="-")
     255              :  !call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'paral_atom','INT',0)
     256              : 
     257        29986 :  intarr(1,:)=dtsets(:)%paral_kgb
     258         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'paral_kgb','INT',0)
     259              : 
     260        29986 :  intarr(1,:)=dtsets(:)%paral_rf
     261         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'paral_rf','INT',0)
     262              : 
     263        29986 :  intarr(1,:)=dtsets(:)%paral_slice
     264         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'paral_slice','INT',0)
     265              : 
     266        29986 :  intarr(1,:)=dtsets(:)%paw_add_core
     267         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'paw_add_core','INT',0)
     268              : 
     269        29986 :  intarr(1,:)=dtsets(:)%pawcpxocc
     270         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawcpxocc','INT',0)
     271              : 
     272        29986 :  intarr(1,:)=dtsets(:)%pawcross
     273         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawcross','INT',0)
     274              : 
     275        29986 :  dprarr(1,:)=dtsets(:)%pawecutdg
     276         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'pawecutdg','ENE',0)
     277              : 
     278        29986 :  intarr(1,:)=dtsets(:)%pawfatbnd
     279         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawfatbnd','INT',0)
     280              : 
     281        29986 :  intarr(1,:)=dtsets(:)%pawlcutd
     282         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawlcutd','INT',0)
     283              : 
     284        29986 :  intarr(1,:)=dtsets(:)%pawlmix
     285         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawlmix','INT',0)
     286              : 
     287        29986 :  intarr(1,:)=dtsets(:)%pawmixdg
     288         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawmixdg','INT',0)
     289              : 
     290        29986 :  intarr(1,:)=dtsets(:)%pawnhatxc
     291         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawnhatxc','INT',0)
     292              : 
     293        29986 :  intarr(1,:)=dtsets(:)%pawnphi
     294         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawnphi','INT',0)
     295              : 
     296        29986 :  intarr(1,:)=dtsets(:)%pawntheta
     297         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawntheta','INT',0)
     298              : 
     299        29986 :  intarr(1,:)=dtsets(:)%pawnzlm
     300         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawnzlm','INT',0)
     301              : 
     302        29986 :  intarr(1,:)=dtsets(:)%pawoptmix
     303         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawoptmix','INT',0)
     304              : 
     305        29986 :  intarr(1,:)=dtsets(:)%pawoptosc
     306         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawoptosc','INT',0)
     307              : 
     308        29986 :  dprarr(1,:)=dtsets(:)%pawovlp
     309         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawovlp','DPR',0)
     310              : 
     311        29986 :  intarr(1,:)=dtsets(:)%pawprtdos
     312         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawprtdos','INT',0)
     313              : 
     314        29986 :  intarr(1,:)=dtsets(:)%pawprtvol
     315         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawprtvol','INT',0)
     316              : 
     317        29986 :  intarr(1,:)=dtsets(:)%pawprtwf
     318         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawprtwf','INT',0)
     319              : 
     320        29986 :  intarr(1,:)=dtsets(:)%pawprt_b
     321         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawprt_b','INT',0)
     322              : 
     323        29986 :  intarr(1,:)=dtsets(:)%pawprt_k
     324         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawprt_k','INT',0)
     325              : 
     326        29986 :  intarr(1,:)=dtsets(:)%pawspnorb
     327         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawspnorb','INT',0)
     328              : 
     329        29986 :  intarr(1,:)=dtsets(:)%pawstgylm
     330         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawstgylm','INT',0)
     331              : 
     332        29986 :  intarr(1,:)=dtsets(:)%pawsushat
     333         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawsushat','INT',0)
     334              : 
     335        29986 :  intarr(1,:)=dtsets(:)%pawujat
     336         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawujat','INT',0)
     337              : 
     338        29986 :  dprarr(1,:)=dtsets(:)%pawujrad
     339         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawujrad','LEN',0)
     340              : 
     341        29986 :  dprarr(1,:)=dtsets(:)%pawujv
     342         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawujv','ENE',0)
     343              : 
     344        29986 :  intarr(1,:)=dtsets(:)%pawusecp
     345         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawusecp','INT',0)
     346              : 
     347        29986 :  intarr(1,:)=dtsets(:)%pawxcdev
     348         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawxcdev','INT',0)
     349              : 
     350        29986 :  intarr(1,:)=dtsets(:)%ph_intmeth
     351         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'ph_intmeth','INT',0)
     352              : 
     353        29986 :  intarr(1,:)=dtsets(:)%ph_ndivsm
     354         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'ph_ndivsm','INT',0)
     355              : 
     356        29986 :  do idtset=0,ndtset_alloc
     357       106372 :    intarr(1:3,idtset)=dtsets(idtset)%ph_ngqpt
     358              :  end do
     359         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,3,narrm,ncid,ndtset_alloc,'ph_ngqpt','INT',0)
     360              : 
     361        29986 :  intarr(1,:)=dtsets(:)%ph_nqpath
     362         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'ph_nqpath','INT',0)
     363              : 
     364        29986 :  intarr(1,:)=dtsets(:)%ph_nqshift
     365         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'ph_nqshift','INT',0)
     366              : 
     367        29986 :  dprarr(1,:)=dtsets(:)%ph_smear
     368         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'ph_smear','ENE',0)
     369              : 
     370        29986 :  dprarr(1,:)=dtsets(:)%ph_wstep
     371         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'ph_wstep','ENE',0)
     372              : 
     373              : !pimass
     374         4524 :  icount=0
     375        29986 :  do idtset=0, ndtset_alloc
     376        62144 :    do ii = 1, ntypat
     377        32158 :      dprarr(ii,idtset) = dtsets(idtset)%pimass(ii)
     378        57620 :      if (dtsets(idtset)%pimass(ii)/=dtsets(idtset)%amu_orig(ii,1)) icount=1
     379              :    end do ! end loop over ntypat
     380              :  end do ! end loop over datasets
     381         4524 :  if (icount/=0) then
     382            0 :    call prttagm(dprarr,intarr,iout,jdtset_,1,marr,ntypat,narrm,ncid,ndtset_alloc,'pimass','DPR',0)
     383              :  end if
     384              : 
     385        29986 :  intarr(1,:)=dtsets(:)%pimd_constraint
     386         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pimd_constraint','INT',0)
     387              : 
     388        29986 :  intarr(1,:)=dtsets(:)%pitransform
     389         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pitransform','INT',0)
     390              : 
     391        29986 :  intarr(1,:)=dtsets(:)%plowan_bandi
     392         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'plowan_bandi','INT',0)
     393              : 
     394        29986 :  intarr(1,:)=dtsets(:)%plowan_bandf
     395         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'plowan_bandf','INT',0)
     396              : 
     397        29986 :  intarr(1,:)=dtsets(:)%plowan_compute
     398         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'plowan_compute','INT',0)
     399              : 
     400        29986 :  intarr(1,:)=dtsets(:)%plowan_natom
     401         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'plowan_natom','INT',0)
     402              : 
     403        29986 :  intarr(1,:)=dtsets(:)%plowan_nt
     404         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'plowan_nt','INT',0)
     405              : 
     406        29986 :  intarr(1,:)=dtsets(:)%plowan_realspace
     407         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'plowan_realspace','INT',0)
     408              : 
     409              : 
     410              : !plowan_it
     411         4524 :  narr=100
     412        29986 :  do idtset=0,ndtset_alloc       ! specific size for each dataset
     413        25462 :    narrm(idtset)=3*dtsets(idtset)%plowan_nt
     414              :    !if(idtset==0)narrm(idtset)=100
     415        29986 :    if (narrm(idtset)>0.and.dtsets(idtset)%plowan_compute>=0) then
     416            0 :      intarr(1:narrm(idtset),idtset)=dtsets(idtset)%plowan_it(1:narrm(idtset))
     417              :    end if
     418              :  end do
     419         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,narr,narrm,ncid,ndtset_alloc,'plowan_it','INT',1)
     420              : 
     421              : 
     422              : !plowan_iatom
     423         4524 :  narr=mxvals%natom
     424        29986 :  do idtset=0,ndtset_alloc       ! specific size for each dataset
     425        25462 :    narrm(idtset)=dtsets(idtset)%plowan_natom
     426              :    !if(idtset==0)narrm(idtset)=mxvals%natom
     427        29986 :    if (narrm(idtset)>0.and.dtsets(idtset)%plowan_compute>=0) then
     428            0 :      intarr(1:narrm(idtset),idtset)=dtsets(idtset)%plowan_iatom(1:narrm(idtset))
     429              :    end if
     430              :  end do
     431         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,narr,narrm,ncid,ndtset_alloc,'plowan_iatom','INT',1)
     432              : 
     433              : !plowan_nbl
     434              :  narr=mxvals%natom
     435        29986 :  do idtset=0,ndtset_alloc       ! specific size for each dataset
     436        25462 :    narrm(idtset)=dtsets(idtset)%plowan_natom
     437              :    !if(idtset==0)narrm(idtset)=mxvals%natom
     438        29986 :    if (narrm(idtset)>0.and.dtsets(idtset)%plowan_compute>=0) then
     439            0 :      intarr(1:narrm(idtset),idtset)=dtsets(idtset)%plowan_nbl(1:narrm(idtset))
     440              :    end if
     441              :  end do
     442         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,narr,narrm,ncid,ndtset_alloc,'plowan_nbl','INT',1)
     443              : 
     444              : !plowan_lcalc
     445         4524 :  narr=12*mxvals%natom
     446        29986 :  do idtset=0,ndtset_alloc       ! specific size for each dataset
     447        25462 :    narrm(idtset)=sum(dtsets(idtset)%plowan_nbl(1:dtsets(idtset)%plowan_natom))
     448              :    !if(idtset==0)narrm(idtset)=12*mxvals%natom
     449        29986 :    if (narrm(idtset)>0.and.dtsets(idtset)%plowan_compute>=0) then
     450            0 :      intarr(1:narrm(idtset),idtset)=dtsets(idtset)%plowan_lcalc(1:narrm(idtset))
     451              :    end if
     452              :  end do
     453         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,narr,narrm,ncid,ndtset_alloc,'plowan_lcalc','INT',1)
     454              : 
     455              : !plowan_projcalc
     456              :  narr=12*mxvals%natom
     457        29986 :  do idtset=0,ndtset_alloc       ! specific size for each dataset
     458        25462 :    narrm(idtset)=sum(dtsets(idtset)%plowan_nbl(1:dtsets(idtset)%plowan_natom))
     459              :    !if(idtset==0)narrm(idtset)=12*mxvals%natom
     460        29986 :    if (narrm(idtset)>0.and.dtsets(idtset)%plowan_compute>=0) then
     461            0 :      intarr(1:narrm(idtset),idtset)=dtsets(idtset)%plowan_projcalc(1:narrm(idtset))
     462              :    end if
     463              :  end do
     464         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,narr,narrm,ncid,ndtset_alloc,'plowan_projcalc','INT',1)
     465              : 
     466        29986 :  dprarr(1,:)=dtsets(:)%polcen(1)
     467        29986 :  dprarr(2,:)=dtsets(:)%polcen(2)
     468        29986 :  dprarr(3,:)=dtsets(:)%polcen(3)
     469         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,3,narrm,ncid,ndtset_alloc,'polcen','DPR',0)
     470              : 
     471        29986 :  intarr(1,:)=dtsets(:)%posdoppler
     472         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'posdoppler','INT',0)
     473              : 
     474        29986 :  intarr(1,:)=dtsets(:)%positron
     475         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'positron','INT',0)
     476              : 
     477        29986 :  intarr(1,:)=dtsets(:)%posnstep
     478         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'posnstep','INT',0)
     479              : 
     480        29986 :  dprarr(1,:)=dtsets(:)%posocc
     481         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'posocc','DPR',0)
     482              : 
     483        29986 :  dprarr(1,:)=dtsets(:)%postoldfe
     484         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'postoldfe','ENE',0)
     485              : 
     486        29986 :  dprarr(1,:)=dtsets(:)%postoldff
     487         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'postoldff','DPR',0)
     488              : 
     489        29986 :  dprarr(1,:)=dtsets(:)%ppmfrq
     490         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'ppmfrq','ENE',0)
     491              : 
     492        29986 :  intarr(1,:)=dtsets(:)%ppmodel
     493         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'ppmodel','INT',0)
     494              : 
     495        29986 :  intarr(1,:)=dtsets(:)%precon_in_memory
     496         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'precon_in_memory','INT',0)
     497              : 
     498        29986 :  intarr(1,:)=dtsets(:)%precon_ls_maxite
     499         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'precon_ls_maxite','INT',0)
     500              : 
     501        29986 :  dprarr(1,:)=dtsets(:)%precon_ls_rtol
     502         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'precon_ls_rtol','DPR',0)
     503              : 
     504        29986 :  dprarr(1,:)=dtsets(:)%precon_tsmear
     505         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'precon_tsmear','ENE',0)
     506              : 
     507        29986 :  intarr(1,:)=dtsets(:)%precon_verbose
     508         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'precon_verbose','INT',0)
     509              : 
     510        29986 :  intarr(1,:)=dtsets(:)%prepalw
     511         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prepalw','INT',0)
     512              : 
     513        29986 :  intarr(1,:)=dtsets(:)%prepanl
     514         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prepanl','INT',0)
     515              : 
     516        29986 :  intarr(1,:)=dtsets(:)%prepgkk
     517         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prepgkk','INT',0)
     518              : 
     519              : !prtatlist
     520         4524 :  if(multivals%natom==0)then
     521        27240 :    do idtset=0,ndtset_alloc
     522        92296 :      intarr(1:natom,idtset)=dtsets(idtset)%prtatlist(1:natom)
     523              :    end do
     524        36116 :    intarr(1:mxvals%natom,0)=(/ (ii,ii=1,mxvals%natom) /)
     525         4412 :    call prttagm(dprarr,intarr,iout,jdtset_,4,marr,natom,narrm,ncid,ndtset_alloc,'prtatlist','INT',0)
     526              :  else
     527              : !  This thing will disappear with new generalized prttagm
     528              :  end if
     529              : 
     530        29986 :  intarr(1,:)=dtsets(:)%prtbbb
     531         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtbbb','INT',0)
     532              : 
     533        29986 :  intarr(1,:)=dtsets(:)%prtbltztrp
     534         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtbltztrp','INT',0)
     535              : 
     536        29986 :  intarr(1,:)=dtsets(:)%prtchkprdm
     537         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtchkprdm','INT',0)
     538              : 
     539        29986 :  intarr(1,:)=dtsets(:)%prtcif
     540         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtcif','INT',0)
     541              : 
     542        29986 :  intarr(1,:)=dtsets(:)%prtcurrent
     543         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtcurrent','INT',0)
     544              : 
     545        29986 :  intarr(1,:)=dtsets(:)%prtden
     546         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtden','INT',0)
     547              : 
     548        29986 :  intarr(1,:)=dtsets(:)%prtdensph
     549         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtdensph','INT',0)
     550              : 
     551        29986 :  intarr(1,:)=dtsets(:)%prtdos
     552         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtdos','INT',0)
     553              : 
     554        29986 :  intarr(1,:)=dtsets(:)%prtdosm
     555         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtdosm','INT',0)
     556              : 
     557        29986 :  intarr(1,:)=dtsets(:)%prtebands
     558         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtebands','INT',0)
     559              : 
     560        29986 :  intarr(1,:)=dtsets(:)%prtefmas
     561         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtefmas','INT',0)
     562              : 
     563        29986 :  intarr(1,:)=dtsets(:)%prteig
     564         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prteig','INT',0)
     565              : 
     566        29986 :  intarr(1,:)=dtsets(:)%prtelf
     567         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtelf','INT',0)
     568              : 
     569        29986 :  intarr(1,:)=dtsets(:)%prteliash
     570         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prteliash','INT',0)
     571              : 
     572        29986 :  intarr(1,:)=dtsets(:)%prtevk
     573         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtevk','INT',0)
     574              : 
     575        29986 :  intarr(1,:)=dtsets(:)%prtfull1wf
     576         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtfull1wf','INT',0)
     577              : 
     578        29986 :  intarr(1,:)=dtsets(:)%prtfsurf
     579         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtfsurf','INT',0)
     580              : 
     581        29986 :  intarr(1,:)=dtsets(:)%prtgden
     582         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtgden','INT',0)
     583              : 
     584        29986 :  intarr(1,:)=dtsets(:)%prtgeo
     585         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtgeo','INT',0)
     586              : 
     587        29986 :  intarr(1,:)=dtsets(:)%prtgkk
     588         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtgkk','INT',0)
     589              : 
     590        29986 :  intarr(1,:)=dtsets(:)%prtgsr
     591         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtgsr','INT',0)
     592              : 
     593        29986 :  intarr(1,:)=dtsets(:)%prtkden
     594         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtkden','INT',0)
     595              : 
     596        29986 :  intarr(1,:)=dtsets(:)%prtlden
     597         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtlden','INT',0)
     598              : 
     599        29986 :  intarr(1,:)=dtsets(:)%prt1mag
     600         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prt1mag','INT',0)
     601              : 
     602        29986 :  intarr(1,:)=dtsets(:)%prtnabla
     603         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtnabla','INT',0)
     604              : 
     605        29986 :  intarr(1,:)=dtsets(:)%prtnest
     606         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtnest','INT',0)
     607              : 
     608        29986 :  intarr(1,:)=dtsets(:)%prtocc
     609         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtocc','INT',0)
     610              : 
     611        29986 :  intarr(1,:)=dtsets(:)%prtphbands
     612         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtphbands','INT',0)
     613              : 
     614        29986 :  intarr(1,:)=dtsets(:)%prtphdos
     615         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtphdos','INT',0)
     616              : 
     617        29986 :  intarr(1,:)=dtsets(:)%prtphsurf
     618         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtphsurf','INT',0)
     619              : 
     620        29986 :  intarr(1,:)=dtsets(:)%prtposcar
     621         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtposcar','INT',0)
     622              : 
     623        29986 :  intarr(1,:)=dtsets(:)%prtprocar
     624         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtprocar','INT',0)
     625              : 
     626        29986 :  intarr(1,:)=dtsets(:)%prtpot
     627         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtpot','INT',0)
     628              : 
     629        29986 :  intarr(1,:)=dtsets(:)%prtpsps
     630         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtpsps','INT',0)
     631              : 
     632        29986 :  intarr(1,:)=dtsets(:)%prtspcur
     633         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtspcur','INT',0)
     634              : 
     635        29986 :  intarr(1,:)=dtsets(:)%prtstm
     636         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtstm','INT',0)
     637              : 
     638        29986 :  intarr(1,:)=dtsets(:)%prtsuscep
     639         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtsuscep','INT',0)
     640              : 
     641        29986 :  intarr(1,:)=dtsets(:)%prtvclmb
     642         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtvclmb','INT',0)
     643              : 
     644        29986 :  intarr(1,:)=dtsets(:)%prtvha
     645         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtvha','INT',0)
     646              : 
     647        29986 :  intarr(1,:)=dtsets(:)%prtvhxc
     648         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtvhxc','INT',0)
     649              : 
     650        29986 :  intarr(1,:)=dtsets(:)%prtkbff
     651         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtkbff','INT',0)
     652              : 
     653        29986 :  intarr(1,:)=dtsets(:)%prtvol
     654         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtvol','INT',0)
     655              : 
     656        29986 :  intarr(1,:)=dtsets(:)%prtvolimg
     657         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtvolimg','INT',0)
     658              : 
     659        29986 :  intarr(1,:)=dtsets(:)%prtvpsp
     660         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtvpsp','INT',0)
     661              : 
     662        29986 :  intarr(1,:)=dtsets(:)%prtvxc
     663         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtvxc','INT',0)
     664              : 
     665        29986 :  intarr(1,:)=dtsets(:)%prtwant
     666         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtwant','INT',0)
     667              : 
     668        29986 :  intarr(1,:)=dtsets(:)%prtwf
     669         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtwf','INT',0)
     670              : 
     671        29986 :  intarr(1,:)=dtsets(:)%prtwf_full
     672         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtwf_full','INT',0)
     673              : 
     674        29986 :  intarr(1,:)=dtsets(:)%prtxml
     675         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtxml','INT',0)
     676              : 
     677              : !prt1dm
     678        29986 :  intarr(1,:)=dtsets(:)%prt1dm
     679         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prt1dm','INT',0)
     680              : 
     681              :  !ptcharge
     682        29986 :  do idtset=0, ndtset_alloc
     683        62144 :    do ii = 1, ntypat
     684        57620 :      dprarr(ii,idtset) = dtsets(idtset)%ptcharge(ii)
     685              :    end do ! end loop over ntypat
     686              :  end do ! end loop over datasets
     687         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,ntypat,narrm,ncid,ndtset_alloc,'ptcharge','DPR',0)
     688              : 
     689        29986 :  intarr(1,:)=dtsets(:)%prt_lorbmag
     690         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prt_lorbmag','INT',0)
     691              : 
     692        29986 :  intarr(1,:)=dtsets(:)%ptgroupma
     693         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'ptgroupma','INT',0)
     694              : 
     695        29986 :  intarr(1,:)=dtsets(:)%pulayhiststore
     696         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pulayhiststore','INT',0)
     697              : 
     698        29986 :  dprarr(1,:)=dtsets(:)%pvelmax(1)
     699        29986 :  dprarr(2,:)=dtsets(:)%pvelmax(2)
     700        29986 :  dprarr(3,:)=dtsets(:)%pvelmax(3)
     701         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,3,narrm,ncid,ndtset_alloc,'pvelmax','DPR',0)
     702              : 
     703        29986 :  dprarr(1,:)=dtsets(:)%pw_unbal_thresh
     704         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'pw_unbal_thresh','DPR',0)
     705              : 
     706              : !###########################################################
     707              : !### 03. Print all the input variables (Q)
     708              : !##
     709              : 
     710              : !qmass
     711         4524 :  narr=nnos ! default size for all datasets
     712        29986 :  do idtset=0,ndtset_alloc       ! specific size for each dataset
     713        25462 :    narrm(idtset)=dtsets(idtset)%nnos
     714        25462 :    if(idtset==0)narrm(idtset)=mxvals%nnos
     715        29986 :    if (narrm(idtset)>0) then
     716          208 :      dprarr(1:narrm(idtset),idtset)=dtsets(idtset)%qmass(1:narrm(idtset))
     717              :    end if
     718              :  end do
     719         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,narr,narrm,ncid,ndtset_alloc,'qmass','DPR',multivals%nnos)
     720              : 
     721        29986 :  intarr(1,:)=dtsets(:)%qprtrb(1)
     722        29986 :  intarr(2,:)=dtsets(:)%qprtrb(2)
     723        29986 :  intarr(3,:)=dtsets(:)%qprtrb(3)
     724         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,3,narrm,ncid,ndtset_alloc,'qprtrb','INT',0)
     725              : 
     726        29986 :  dprarr(1,:)=dtsets(:)%qptn(1)
     727        29986 :  dprarr(2,:)=dtsets(:)%qptn(2)
     728        29986 :  dprarr(3,:)=dtsets(:)%qptn(3)
     729         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,3,narrm,ncid,ndtset_alloc,'qpt','DPR',0)
     730              : 
     731        29986 :  dprarr(1,:)=dtsets(:)%qgbt(1)
     732        29986 :  dprarr(2,:)=dtsets(:)%qgbt(2)
     733        29986 :  dprarr(3,:)=dtsets(:)%qgbt(3)
     734         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,3,narrm,ncid,ndtset_alloc,'qgbt','DPR',0)
     735              : 
     736        29986 :  dprarr(1,:)=dtsets(:)%qgbt_cart(1)
     737        29986 :  dprarr(2,:)=dtsets(:)%qgbt_cart(2)
     738        29986 :  dprarr(3,:)=dtsets(:)%qgbt_cart(3)
     739         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,3,narrm,ncid,ndtset_alloc,'qgbt_cart','DPR',0)
     740              : 
     741              :  !qptdm
     742         4524 :  narr=3*dtsets(1)%nqptdm ! default size for all datasets
     743        29986 :  do idtset=0,ndtset_alloc       ! specific size for each dataset
     744        29986 :    if(idtset/=0)then
     745        20938 :      narrm(idtset)=3*dtsets(idtset)%nqptdm
     746        20938 :      if (narrm(idtset)>0)&
     747           24 :        dprarr(1:narrm(idtset),idtset)=reshape(dtsets(idtset)%qptdm(1:3,1:dtsets(idtset)%nqptdm), [narrm(idtset)])
     748              :    else
     749         4524 :      narrm(idtset)=3*mxvals%nqptdm
     750         4524 :      if (narrm(idtset)>0)&
     751            8 :      dprarr(1:narrm(idtset),idtset)= reshape(dtsets(idtset)%qptdm(1:3,1:mxvals%nqptdm), [narrm(idtset)])
     752              :    end if
     753              :  end do
     754         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,narr,narrm,ncid,ndtset_alloc,'qptdm','DPR',multivals%nqptdm)
     755              : 
     756        29986 :  do idtset=0, ndtset_alloc
     757        62144 :    do ii = 1, ntypat
     758        57620 :      dprarr(ii,idtset) = dtsets(idtset)%quadmom(ii)
     759              :    end do ! end loop over ntypat
     760              :  end do ! end loop over datasets
     761         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,ntypat,narrm,ncid,ndtset_alloc,'quadmom','DPR',0)
     762              : 
     763        29986 :  intarr(1,:)=dtsets(:)%quadquad
     764         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'quadquad','INT',0)
     765              : 
     766              : 
     767              : !###########################################################
     768              : !### 03. Print all the input variables (R)
     769              : !##
     770              : 
     771              : !variables used for the random positions in unit cell
     772        29986 :  intarr(1,:)=dtsets(:)%random_atpos
     773         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'random_atpos','INT',0)
     774              : 
     775        29986 :  intarr(1,:)=dtsets(:)%ratopt
     776         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'ratopt','INT',0)
     777              : 
     778        29986 :  dprarr(1,:)=dtsets(:)%ratsm
     779         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'ratsm','LEN',0)
     780              : 
     781        29986 :  do idtset=0, ndtset_alloc
     782        62144 :    do ii = 1, ntypat
     783        57620 :      dprarr(ii,idtset) = dtsets(idtset)%ratsph(ii)
     784              :    end do ! end loop over ntypat
     785              :  end do ! end loop over datasets
     786         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,ntypat,narrm,ncid,ndtset_alloc,'ratsph','LEN',0)
     787              : 
     788     19931182 :  dprarr = zero
     789        29986 :  dprarr(1,:) = dtsets(:)%ratsph_extra
     790         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'ratsph_extra','LEN',0)
     791              : 
     792        29986 :  intarr(1,:)=dtsets(:)%rcpaw_frocc
     793         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'rcpaw_frocc','INT',0)
     794              : 
     795        29986 :  intarr(1,:)=dtsets(:)%rcpaw_updatetnc
     796         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'rcpaw_updatetnc','INT',0)
     797              : 
     798        29986 :  intarr(1,:)=dtsets(:)%rcpaw_elin
     799         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'rcpaw_elin','INT',0)
     800              : 
     801        29986 :  intarr(1,:)=dtsets(:)%rcpaw_prtpaw
     802         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'rcpaw_prtpaw','INT',0)
     803              : 
     804        29986 :  intarr(1,:)=dtsets(:)%rcpaw_tpaw
     805         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'rcpaw_tpaw','INT',0)
     806              : 
     807        29986 :  intarr(1,:)=dtsets(:)%rcpaw_vhtnzc
     808         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'rcpaw_vhtnzc','INT',0)
     809              : 
     810        29986 :  dprarr(1,:)=dtsets(:)%rcpaw_tolnc
     811         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'rcpaw_tolnc','DPR',0)
     812              : 
     813        29986 :  do idtset=0, ndtset_alloc
     814        80910 :    do ii = 1, 2
     815        76386 :      intarr(ii,idtset) = dtsets(idtset)%rcpaw_updatepaw(ii)
     816              :    end do ! end loop over ntypat
     817              :  end do ! end loop over datasets
     818         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,2,narrm,ncid,ndtset_alloc,'rcpaw_updatepaw','INT',0)
     819              : 
     820        29986 :  do idtset=0, ndtset_alloc
     821        62144 :    do ii = 1, ntypat
     822        57620 :      intarr(ii,idtset) = dtsets(idtset)%rcpaw_rctypat(ii)
     823              :    end do ! end loop over ntypat
     824              :  end do ! end loop over datasets
     825         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,ntypat,narrm,ncid,ndtset_alloc,'rcpaw_rctypat','INT',0)
     826              : 
     827        29986 :  do idtset=0, ndtset_alloc
     828        62144 :    do ii = 1, ntypat
     829        57620 :      dprarr(ii,idtset) = dtsets(idtset)%rcpaw_sc(ii)
     830              :    end do ! end loop over ntypat
     831              :  end do ! end loop over datasets
     832         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,ntypat,narrm,ncid,ndtset_alloc,'rcpaw_sc','DPR',0)
     833              : 
     834        29986 :  dprarr(1,:)=dtsets(:)%rcut
     835         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'rcut','LEN',0)
     836              : 
     837              : !Variables used for recursion method
     838        29986 :  dprarr(1,:)=dtsets(:)%recefermi
     839         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'recefermi','ENE',0)
     840              : 
     841        29986 :  intarr(1,0:ndtset_alloc)=dtsets(0:ndtset_alloc)%recgratio
     842         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'recgratio','INT',0)
     843              : 
     844        29986 :  intarr(1,:)=dtsets(:)%recnpath
     845         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'recnpath','INT',0)
     846              : 
     847        29986 :  intarr(1,:)=dtsets(:)%recnrec
     848         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'recnrec','INT',0)
     849              : 
     850        29986 :  intarr(1,:)=dtsets(:)%recptrott
     851         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'recptrott','INT',0)
     852              : 
     853        29986 :  dprarr(1,:)=dtsets(:)%recrcut
     854         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'recrcut','LEN',0)
     855              : 
     856        29986 :  intarr(1,:)=dtsets(:)%rectesteg
     857         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'rectesteg','INT',0)
     858              : 
     859        29986 :  dprarr(1,:)=dtsets(:)%rectolden
     860         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'rectolden','DPR',0)
     861              : 
     862        29986 :  dprarr(1,:)=dtsets(:)%red_dfield(1)    !!HONG
     863        29986 :  dprarr(2,:)=dtsets(:)%red_dfield(2)
     864        29986 :  dprarr(3,:)=dtsets(:)%red_dfield(3)
     865         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,3,narrm,ncid,ndtset_alloc,'red_dfield','DPR',0)
     866              : 
     867        29986 :  dprarr(1,:)=dtsets(:)%red_efield(1)    !!HONG
     868        29986 :  dprarr(2,:)=dtsets(:)%red_efield(2)
     869        29986 :  dprarr(3,:)=dtsets(:)%red_efield(3)
     870         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,3,narrm,ncid,ndtset_alloc,'red_efield','DPR',0)
     871              : 
     872        29986 :  dprarr(1,:)=dtsets(:)%red_efieldbar(1)   !!HONG
     873        29986 :  dprarr(2,:)=dtsets(:)%red_efieldbar(2)
     874        29986 :  dprarr(3,:)=dtsets(:)%red_efieldbar(3)
     875         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,3,narrm,ncid,ndtset_alloc,'red_efieldbar','DPR',0)
     876              : 
     877        29986 :  intarr(1,:)=dtsets(:)%restartxf
     878         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'restartxf','INT',0)
     879              : 
     880              : !intarr(1,:)=dtsets(:)%rfasr
     881              : !call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'rfasr','INT',0)
     882              : 
     883         4524 :  test_write=0
     884        25462 :  do idtset=1,ndtset_alloc
     885        25462 :    if(dtsets(idtset)%rfatpol(1)/=1 .or. dtsets(idtset)%rfatpol(2)/=dtsets(idtset)%natom)test_write=1
     886              :  enddo
     887         4524 :  if(test_write==1)then
     888         1084 :    intarr(1,:)=dtsets(:)%rfatpol(1)
     889         1084 :    intarr(2,:)=dtsets(:)%rfatpol(2)
     890          164 :    call prttagm(dprarr,intarr,iout,jdtset_,2,marr,2,narrm,ncid,ndtset_alloc,'rfatpol','INT',0)
     891              :  endif
     892              : 
     893        29986 :  intarr(1,:)=dtsets(:)%rfddk
     894         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'rfddk','INT',0)
     895              : 
     896        29986 :  intarr(1,:)=dtsets(:)%rfdir(1)
     897        29986 :  intarr(2,:)=dtsets(:)%rfdir(2)
     898        29986 :  intarr(3,:)=dtsets(:)%rfdir(3)
     899         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,3,narrm,ncid,ndtset_alloc,'rfdir','INT',0)
     900              : 
     901        29986 :  intarr(1,:)=dtsets(:)%rfelfd
     902         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'rfelfd','INT',0)
     903              : 
     904        29986 :  dprarr(1,:)=dtsets(:)%rfeta
     905         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'rfeta','ENE',0)
     906              : 
     907        29986 :  intarr(1,:)=dtsets(:)%rfmagn
     908         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'rfmagn','INT',0)
     909              : 
     910        29986 :  intarr(1,:)=dtsets(:)%rfmeth
     911         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'rfmeth','INT',0)
     912              : 
     913        29986 :  dprarr(1,:)=dtsets(:)%rfomega
     914         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'rfomega','ENE',0)
     915              : 
     916        29986 :  intarr(1,:)=dtsets(:)%rfphon
     917         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'rfphon','INT',0)
     918              : 
     919        29986 :  intarr(1,:)=dtsets(:)%rfstrs
     920         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'rfstrs','INT',0)
     921              : 
     922        29986 :  intarr(1,:)=dtsets(:)%rfstrs_ref
     923         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'rfstrs_ref','INT',0)
     924              : 
     925        29986 :  intarr(1,:)=dtsets(:)%rf2_dkdk
     926         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'rf2_dkdk','INT',0)
     927              : 
     928        29986 :  intarr(1,:)=dtsets(:)%rf2_dkde
     929         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'rf2_dkde','INT',0)
     930              : 
     931        29986 :  intarr(1,:)=dtsets(:)%rf2_pert1_dir(1)
     932        29986 :  intarr(2,:)=dtsets(:)%rf2_pert1_dir(2)
     933        29986 :  intarr(3,:)=dtsets(:)%rf2_pert1_dir(3)
     934         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,3,narrm,ncid,ndtset_alloc,'rf2_pert1_dir','INT',0)
     935              : 
     936        29986 :  intarr(1,:)=dtsets(:)%rf2_pert2_dir(1)
     937        29986 :  intarr(2,:)=dtsets(:)%rf2_pert2_dir(2)
     938        29986 :  intarr(3,:)=dtsets(:)%rf2_pert2_dir(3)
     939         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,3,narrm,ncid,ndtset_alloc,'rf2_pert2_dir','INT',0)
     940              : 
     941        29986 :  dprarr(1,:)=dtsets(:)%rhoqpmix
     942         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'rhoqpmix','DPR',0)
     943              : 
     944        29986 :  dprarr(1,:)=dtsets(:)%rifcsph
     945         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'rifcsph','DPR',0)
     946              : 
     947        29986 :  intarr(1,:)=dtsets(:)%rmm_diis
     948         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'rmm_diis','INT',0)
     949        29986 :  intarr(1,:)=dtsets(:)%rmm_diis_savemem
     950         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'rmm_diis_savemem','INT',0)
     951              : 
     952              : !rprim
     953        56668 :  prtimg(:,:)=1
     954        29986 :  do idtset=0,ndtset_alloc
     955        25462 :    narrm(idtset)=9
     956        56200 :    do iimage=1,nimagem(idtset)
     957        25462 :      if (narrm(idtset)>0) then
     958              :        dprarr_images(1:narrm(idtset),iimage,idtset)=&
     959        52428 : &       reshape(results_out(idtset)%rprim(1:3,1:3,iimage), (/ narrm(idtset) /) )
     960              :      end if
     961              :    end do
     962              :  end do
     963              :  call prttagm_images(dprarr_images,iout,jdtset_,-2,marr,narrm,ncid,ndtset_alloc,'rprim','DPR',&
     964         4524 : & mxvals%nimage,nimagem,ndtset,prtimg,strimg,forceprint=2)
     965              : 
     966              : 
     967              : !###########################################################
     968              : !### 03. Print all the input variables (S)
     969              : !##
     970              : 
     971              : !shiftk (printed only when kptopt>0)
     972        25462 :  if(sum((dtsets(1:ndtset_alloc)%kptopt)**2)/=0)then
     973      4184350 :    multi_kptopt=0
     974      4184350 :    dprarr(:,0)=0.0_dp
     975         3154 :    narr=3*dtsets(1)%nshiftk ! default size for all datasets
     976        15522 :    do idtset=1,ndtset_alloc       ! specific size for each dataset
     977        12368 :      narrm(idtset)=3*dtsets(idtset)%nshiftk
     978        12368 :      if (narrm(idtset)>0) then
     979              :        dprarr(1:narrm(idtset),idtset)=&
     980        24736 : &       reshape(dtsets(idtset)%shiftk(1:3,1:dtsets(idtset)%nshiftk),(/ narrm(idtset) /) )
     981              :      end if
     982        15522 :      if(dtsets(idtset)%kptopt<=0)then
     983          892 :        narrm(idtset)=0
     984          892 :        multi_kptopt=1
     985              :      end if
     986              :    end do
     987         3154 :    call prttagm(dprarr,intarr,iout,jdtset_,1,marr,narr,narrm,ncid,ndtset_alloc,'shiftk','DPR',multivals%nshiftk)
     988              : !  End of test to see whether kptopt/=0 for some dataset
     989              :  end if
     990              : 
     991        29986 :  intarr(1,:)=dtsets(:)%sigma_bsum_range(1)
     992        29986 :  intarr(2,:)=dtsets(:)%sigma_bsum_range(2)
     993         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,2,narrm,ncid,ndtset_alloc,'sigma_bsum_range','INT',0)
     994              : 
     995        29986 :  dprarr(1,:)=dtsets(:)%sigma_erange(1)
     996        29986 :  dprarr(2,:)=dtsets(:)%sigma_erange(2)
     997         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,2,narrm,ncid,ndtset_alloc,'sigma_erange','ENE',0)
     998              : 
     999        29986 :  intarr(1,:)=dtsets(:)%transport_ngkpt(1)
    1000        29986 :  intarr(2,:)=dtsets(:)%transport_ngkpt(2)
    1001        29986 :  intarr(3,:)=dtsets(:)%transport_ngkpt(3)
    1002         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,3,narrm,ncid,ndtset_alloc,'transport_ngkpt','INT',0)
    1003              : 
    1004        29986 :  intarr(1,:)=dtsets(:)%sigma_ngkpt(1)
    1005        29986 :  intarr(2,:)=dtsets(:)%sigma_ngkpt(2)
    1006        29986 :  intarr(3,:)=dtsets(:)%sigma_ngkpt(3)
    1007         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,3,narrm,ncid,ndtset_alloc,'sigma_ngkpt','INT',0)
    1008              : 
    1009        29986 :  intarr(1,:)=dtsets(:)%signperm
    1010         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'signperm','INT',0)
    1011              : 
    1012        29986 :  dprarr(1,:)=dtsets(:)%slabwsrad
    1013         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'slabwsrad','DPR',0)
    1014              : 
    1015        29986 :  dprarr(1,:)=dtsets(:)%slabzbeg
    1016         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'slabzbeg','DPR',0)
    1017              : 
    1018        29986 :  dprarr(1,:)=dtsets(:)%slabzend
    1019         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'slabzend','DPR',0)
    1020              : 
    1021        29986 :  intarr(1,:)=dtsets(:)%slk_rankpp
    1022         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'slk_rankpp','INT',0)
    1023              : 
    1024        29986 :  intarr(1,:)=dtsets(:)%smdelta
    1025         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'smdelta','INT',0)
    1026              : 
    1027        29986 :  do idtset=0,ndtset_alloc
    1028        62256 :    intarr(1:npsp,idtset)=dtsets(idtset)%so_psp(1:npsp)
    1029              :  end do
    1030         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,npsp,narrm,ncid,ndtset_alloc,'so_psp','INT',0)
    1031              : 
    1032        29986 :  dprarr(1,:)=dtsets(:)%spbroad
    1033         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'spbroad','ENE',0)
    1034              : 
    1035        29986 :  intarr(1,:)=dtsets(:)%spgroup
    1036         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'spgroup','INT',0)
    1037              : 
    1038              : !spinat
    1039      4409052 :  dprarr(:,0)=0.0_dp
    1040         4524 :  narr=3*natom ! default size for all datasets
    1041        25462 :  do idtset=1,ndtset_alloc       ! specific size for each dataset
    1042        20938 :    narrm(idtset)=3*dtsets(idtset)%natom
    1043        20938 :    if (narrm(idtset)>0) then
    1044        41876 :      dprarr(1:narrm(idtset),idtset)=reshape(dtsets(idtset)%spinat_in(1:3,1:dtsets(idtset)%natom), (/narrm(idtset)/))
    1045              :    end if
    1046       390102 :    if(sum(abs( dtsets(idtset)%spinat_in(1:3,1:dtsets(idtset)%natom))) < tol12 ) narrm(idtset)=0
    1047              :  end do
    1048         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,narr,narrm,ncid,ndtset_alloc,'spinat','DPR',multivals%natom)
    1049              : 
    1050              : !spinat_cart
    1051         4524 :   nontrivial_spinaxis=.false.
    1052        25458 :  do idtset=1,ndtset_alloc
    1053        62806 :    if (any(abs(dtsets(idtset)%spinaxis(1:2)) > tol8) .or. &
    1054         4520 :        abs(dtsets(idtset)%spinaxis(3) - 1.0_dp) > tol8) then
    1055              :      nontrivial_spinaxis=.true.
    1056              :      exit
    1057              :    end if
    1058              :  end do
    1059         4524 :  if (nontrivial_spinaxis) then
    1060          244 :    dprarr(:,0)=0.0_dp
    1061              :    narr=3*natom ! default size for all datasets
    1062           12 :    do idtset=1,ndtset_alloc       ! specific size for each dataset
    1063            8 :      narrm(idtset)=3*dtsets(idtset)%natom
    1064            8 :      if (narrm(idtset)>0) then
    1065           16 :        dprarr(1:narrm(idtset),idtset)=reshape(dtsets(idtset)%spinat_cart(1:3,1:dtsets(idtset)%natom), (/narrm(idtset)/))
    1066              :      end if
    1067           44 :      if(sum(abs( dtsets(idtset)%spinat_cart(1:3,1:dtsets(idtset)%natom))) < tol12 ) narrm(idtset)=0
    1068              :    end do
    1069            4 :    call prttagm(dprarr,intarr,iout,jdtset_,2,marr,narr,narrm,ncid,ndtset_alloc,'spinat_cart','DPR',multivals%natom)
    1070              :  end if
    1071              : 
    1072              : ! spinaxis
    1073        29986 :  dprarr(1,:)=dtsets(:)%spinaxis(1)
    1074        29986 :  dprarr(2,:)=dtsets(:)%spinaxis(2)
    1075        29986 :  dprarr(3,:)=dtsets(:)%spinaxis(3)
    1076         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,3,narrm,ncid,ndtset_alloc,'spinaxis','DPR',0)
    1077              : 
    1078        29986 :  dprarr(1,:)=dtsets(:)%spinmagntarget
    1079         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'spinmagntarget','DPR',0)
    1080              : 
    1081        29986 :  intarr(1,:)=dtsets(:)%spmeth
    1082         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'spmeth','INT',0)
    1083              : 
    1084        29986 :  dprarr(1,:)=dtsets(:)%spnorbscl
    1085         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'spnorbscl','DPR',0)
    1086              : 
    1087        29986 :  dprarr(1,:)=dtsets(:)%stmbias
    1088         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'stmbias','DPR',0)
    1089              : 
    1090        29986 :  dprarr(1,:)=dtsets(:)%strfact
    1091         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'strfact','DPR',0)
    1092              : 
    1093        29986 :  intarr(1,:)=dtsets(:)%string_algo
    1094         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'string_algo','INT',0)
    1095              : 
    1096        31668 :  do ii=1,6
    1097       184440 :    dprarr(ii,:)=dtsets(:)%strtarget(ii)
    1098              :  end do
    1099         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,6,narrm,ncid,ndtset_alloc,'strtarget','DPR',0)
    1100              : 
    1101              : !strten
    1102         4524 :  if(choice==2)then
    1103        24872 :    prtimg(:,:)=1
    1104        13244 :    do idtset=0,ndtset_alloc       ! specific size for each dataset
    1105        11018 :      compute_static_images=(dtsets(idtset)%istatimg>0)
    1106        11018 :      narrm(idtset)=6
    1107        13244 :      if(dtsets(idtset)%iscf>=0)then
    1108        19920 :        do iimage=1,dtsets(idtset)%nimage
    1109              :          if (narrm(idtset)>0) then
    1110        71036 :            dprarr_images(1:narrm(idtset),iimage,idtset)=results_out(idtset)%strten(:,iimage)
    1111              :          end if
    1112        19920 :          if(.not.(dtsets(idtset)%dynimage(iimage)==1.or.compute_static_images))then
    1113            8 :            prtimg(iimage,idtset)=0
    1114              :          end if
    1115              :        end do
    1116              :      else
    1117         1246 :        narrm(idtset)=0
    1118              :      end if
    1119              :    end do
    1120              : !  This is a trick to force printing of strten even if zero, still not destroying the value of nimagem(0).
    1121         2226 :    tmpimg0=nimagem(0)
    1122         2226 :    nimagem(0)=0
    1123              :    call prttagm_images(dprarr_images,iout,jdtset_,2,marr,narrm,ncid,ndtset_alloc,'strten','DPR',&
    1124         2226 : &   mxvals%nimage,nimagem,ndtset,prtimg,strimg)
    1125         2226 :    nimagem(0)=tmpimg0
    1126              :  end if
    1127              : 
    1128              : !symafm
    1129      4409052 :  intarr(:,0)=1
    1130         4524 :  narr=nsym ! default size for all datasets
    1131        25462 :  do idtset=1,ndtset_alloc       ! specific size for each dataset
    1132        20938 :    narrm(idtset)=dtsets(idtset)%nsym
    1133        25462 :    if (narrm(idtset)>0) then
    1134       547966 :      intarr(1:narrm(idtset),idtset)=dtsets(idtset)%symafm(1:narrm(idtset))
    1135              :    end if
    1136              :  end do
    1137         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,narr,narrm,ncid,ndtset_alloc,'symafm','INT', multivals%nsym)
    1138              : 
    1139        29986 :  intarr(1,:)=dtsets(:)%symchi
    1140         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'symchi','INT',0)
    1141              : 
    1142        29986 :  intarr(1,:)=dtsets(:)%symdynmat
    1143         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'symdynmat','INT',0)
    1144              : 
    1145        29986 :  intarr(1,:)=dtsets(:)%symmorphi
    1146         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'symmorphi','INT',0)
    1147              : 
    1148              : !symrel
    1149        45240 :  intarr(1:9,0)=(/ 1,0,0, 0,1,0, 0,0,1 /)
    1150         4524 :  narr=9*nsym ! default size for all datasets
    1151        25462 :  do idtset=1,ndtset_alloc       ! specific size for each dataset
    1152        20938 :    narrm(idtset)=9*dtsets(idtset)%nsym
    1153        25462 :    if (narrm(idtset)>0) then
    1154              :      intarr(1:narrm(idtset),idtset)=&
    1155        41876 : &     reshape(dtsets(idtset)%symrel(1:3,1:3,1:dtsets(idtset)%nsym), [narrm(idtset)] )
    1156              :    end if
    1157              :  end do
    1158         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,3,marr,narr,narrm,ncid,ndtset_alloc,'symrel','INT', multivals%nsym)
    1159              : 
    1160        29986 :  intarr(1,:)=dtsets(:)%symsigma
    1161         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'symsigma','INT',0)
    1162              : 
    1163        29986 :  dprarr(1,:)=dtsets(:)%symsigma_de
    1164         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'symsigma_de','ENE',0)
    1165              : 
    1166        29986 :  intarr(1,:)=dtsets(:)%symv1scf
    1167         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'symv1scf','INT',0)
    1168              : 
    1169        29986 :  intarr(1,:)=dtsets(:)%scr_wrange(1)
    1170        29986 :  intarr(2,:)=dtsets(:)%scr_wrange(2)
    1171         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,2,narrm,ncid,ndtset_alloc,'scr_wrange','INT',0)
    1172              : 
    1173              : !###########################################################
    1174              : !### 03. Print all the input variables (T)
    1175              : !##
    1176              : 
    1177        29986 :  dprarr(1,:)=dtsets(:)%td_maxene
    1178         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'td_maxene','DPR',0)
    1179              : 
    1180        29986 :  intarr(1,0:ndtset_alloc)=dtsets(0:ndtset_alloc)%td_mexcit
    1181         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'td_mexcit','INT',0)
    1182              : 
    1183        29986 :  intarr(1,0:ndtset_alloc)=dtsets(0:ndtset_alloc)%tfkinfunc
    1184         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'tfkinfunc','INT',0)
    1185              : 
    1186        29986 :  dprarr(1,:)=dtsets(:)%tfw_toldfe
    1187         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'tfw_toldfe','ENE',0)
    1188              : 
    1189        29986 :  intarr(1,:)=dtsets(:)%timdisp
    1190         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'timdisp','INT',0)
    1191              : 
    1192        29986 :  intarr(1,:)=dtsets(:)%tim1rev
    1193         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'tim1rev','INT',0)
    1194              : 
    1195              : 
    1196              : !timopt
    1197         4524 :  timopt_default=1; if(xmpi_paral==1) timopt_default=0
    1198              : 
    1199         4524 :  if(timopt/=timopt_default)then
    1200         1076 :    intarr(1,:)=timopt
    1201          252 :    intarr(1,0)=timopt_default
    1202          252 :    call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'timopt','INT',0)
    1203              :  end if
    1204              : 
    1205              : !WVL - tails related variables
    1206        29986 :  intarr(1,:)=dtsets(:)%tl_nprccg
    1207         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'tl_nprccg','INT',0)
    1208        29986 :  dprarr(1,:)=dtsets(:)%tl_radius
    1209         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'tl_radius','DPR',0)
    1210              : 
    1211              : !tnons
    1212      4409052 :  dprarr(:,0)=0.0_dp
    1213         4524 :  narr=3*nsym ! default size for all datasets
    1214        25462 :  do idtset=1,ndtset_alloc       ! specific size for each dataset
    1215        20938 :    narrm(idtset)=3*dtsets(idtset)%nsym
    1216        25462 :    if (narrm(idtset)>0) then
    1217        41876 :      dprarr(1:narrm(idtset),idtset)=reshape(dtsets(idtset)%tnons(1:3,1:dtsets(idtset)%nsym), [narrm(idtset)])
    1218              :    end if
    1219              :  end do
    1220         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,-3,marr,narr,narrm,ncid,ndtset_alloc,'tnons','DPR',multivals%nsym)
    1221              : 
    1222        29986 :  dprarr(1,:)=dtsets(:)%tolcum
    1223         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'tolcum','DPR',0)
    1224              : 
    1225        29986 :  dprarr(1,:)=dtsets(:)%toldfe
    1226         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'toldfe','ENE',0)
    1227              : 
    1228        29986 :  dprarr(1,:)=dtsets(:)%tolmxde
    1229         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'tolmxde','ENE',0)
    1230              : 
    1231        29986 :  dprarr(1,:)=dtsets(:)%toldff
    1232         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'toldff','DPR',0)
    1233              : 
    1234        29986 :  dprarr(1,:)=dtsets(:)%toldmag
    1235         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'toldmag','DPR',0)
    1236              : 
    1237        29986 :  dprarr(1,:)=dtsets(:)%tolimg
    1238         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'tolimg','ENE',0)
    1239              : 
    1240        29986 :  dprarr(1,:)=dtsets(:)%tolmxf
    1241         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'tolmxf','DPR',0)
    1242              : 
    1243        29986 :  dprarr(1,:)=dtsets(:)%tolrde
    1244         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'tolrde','DPR',0)
    1245              : 
    1246        29986 :  dprarr(1,:)=dtsets(:)%tolrff
    1247         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'tolrff','DPR',0)
    1248              : 
    1249        29986 :  dprarr(1,:)=dtsets(:)%tolsym
    1250         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'tolsym','DPR',0)
    1251              : 
    1252        29986 :  dprarr(1,:)=dtsets(:)%tolvrs
    1253         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'tolvrs','DPR',0)
    1254              : 
    1255        29986 :  dprarr(1,:)=dtsets(:)%tolwfr
    1256         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'tolwfr','DPR',0)
    1257              : 
    1258        29782 :  if ( any( abs(dtsets(:)%tolwfr-dtsets(:)%tolwfr_diago)>tiny(zero) ) ) then ! output tolwfr_diago only if different than tolwfr
    1259          344 :    dprarr(1,:)=dtsets(:)%tolwfr_diago
    1260           64 :    call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'tolwfr_diago','DPR',0)
    1261              :  end if
    1262              : 
    1263        29986 :  dprarr(1,:)=dtsets(:)%tphysel
    1264         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'tphysel','ENE',0)
    1265              : 
    1266        89958 :  dprarr(1,:) = dtsets(:)%tmesh(1); dprarr(2,:) = dtsets(:)%tmesh(2); dprarr(3,:) = dtsets(:)%tmesh(3)
    1267         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,3,narrm,ncid,ndtset_alloc,'tmesh','DPR',0)
    1268              : 
    1269        29986 :  dprarr(1,:)=dtsets(:)%tsmear
    1270         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'tsmear','ENE',0)
    1271              : 
    1272              : !typat
    1273         4524 :  narr=natom                      ! default size for all datasets
    1274        29986 :  do idtset=0,ndtset_alloc       ! specific size for each dataset
    1275        25462 :    narrm(idtset)=dtsets(idtset)%natom
    1276        25462 :    if(idtset==0)narrm(idtset)=mxvals%natom
    1277        29986 :    if (narrm(idtset)>0) then
    1278       131836 :      intarr(1:narrm(idtset),idtset)=dtsets(idtset)%typat(1:narrm(idtset))
    1279              :    end if
    1280              :  end do
    1281         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,4,marr,narr,narrm,ncid,ndtset_alloc,'typat','INT',multivals%natom,forceprint=2)
    1282              : 
    1283              : !###########################################################
    1284              : !### 03. Print all the input variables (U)
    1285              : !##
    1286        29986 :  intarr(1,:)=dtsets(:)%ucrpa
    1287         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'ucrpa','INT',0)
    1288              : 
    1289        29986 :  intarr(1,:)=dtsets(:)%ucrpa_bands(1)
    1290        29986 :  intarr(2,:)=dtsets(:)%ucrpa_bands(2)
    1291         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,2,narrm,ncid,ndtset_alloc,'ucrpa_bands','INT',0)
    1292              : 
    1293        29986 :  dprarr(1,:)=dtsets(:)%ucrpa_window(1)
    1294        29986 :  dprarr(2,:)=dtsets(:)%ucrpa_window(2)
    1295         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,2,narrm,ncid,ndtset_alloc,'ucrpa_window','ENE',0)
    1296              : 
    1297              : !upawu
    1298        56668 :  prtimg(:,:)=1
    1299        29986 :  do idtset=0,ndtset_alloc
    1300        25462 :    narrm(idtset)=dtsets(idtset)%ntypat
    1301        25462 :    if (idtset==0) narrm(idtset)=mxvals%ntypat
    1302        56200 :    do iimage=1,nimagem(idtset)
    1303        51676 :      if (narrm(idtset)>0) then
    1304        59684 :        dprarr_images(1:narrm(idtset),iimage,idtset)=dtsets(idtset)%upawu(1:narrm(idtset),iimage)
    1305              :      end if
    1306              :    end do
    1307              :  end do
    1308              :  call prttagm_images(dprarr_images,iout,jdtset_,1,marr,narrm,&
    1309         4524 : & ncid,ndtset_alloc,'upawu','ENE',mxvals%nimage,nimagem,ndtset,prtimg,strimg)
    1310              : 
    1311        29986 :  intarr(1,:)=dtsets(:)%usedmatpu
    1312         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'usedmatpu','INT',0)
    1313              : 
    1314        29986 :  intarr(1,:)=dtsets(:)%usedmft
    1315         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'usedmft','INT',0)
    1316              : 
    1317        29986 :  intarr(1,:)=dtsets(:)%useexexch
    1318         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'useexexch','INT',0)
    1319              : 
    1320        29986 :  intarr(1,:)=dtsets(:)%usefock
    1321         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'usefock','INT',0)
    1322              : 
    1323        29986 :  intarr(1,:)=dtsets(:)%usepotzero
    1324         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'usepotzero','INT',0)
    1325              : 
    1326        29986 :  intarr(1,:)=dtsets(:)%usekden
    1327         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'usekden','INT',0)
    1328              : 
    1329        29986 :  intarr(1,:)=dtsets(:)%use_gemm_nonlop
    1330         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'use_gemm_nonlop','INT',0)
    1331              : 
    1332        29986 :  intarr(1,:)=dtsets(:)%useextfpmd
    1333         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'useextfpmd','INT',0)
    1334              : 
    1335        29986 :  intarr(1,:)=dtsets(:)%use_yaml
    1336         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'use_yaml','INT',0)
    1337              : 
    1338        29986 :  intarr(1,:)=dtsets(:)%use_nonscf_gkk
    1339         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'use_nonscf_gkk','INT',0)
    1340              : 
    1341        29986 :  intarr(1,:)=dtsets(:)%use_gbt
    1342         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'use_gbt','INT',0)
    1343              : 
    1344        29986 :  intarr(1,:)=dtsets(:)%usepawu
    1345         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'usepawu','INT',0)
    1346              : 
    1347        29986 :  intarr(1,:)=dtsets(:)%usepead
    1348         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'usepead','INT',0)
    1349              : 
    1350        29986 :  intarr(1,:)=dtsets(:)%useria
    1351         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'useria','INT',0)
    1352              : 
    1353        29986 :  intarr(1,:)=dtsets(:)%userib
    1354         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'userib','INT',0)
    1355              : 
    1356        29986 :  intarr(1,:)=dtsets(:)%useric
    1357         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'useric','INT',0)
    1358              : 
    1359        29986 :  intarr(1,:)=dtsets(:)%userid
    1360         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'userid','INT',0)
    1361              : 
    1362        29986 :  intarr(1,:)=dtsets(:)%userie
    1363         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'userie','INT',0)
    1364              : 
    1365        29986 :  dprarr(1,:)=dtsets(:)%userra
    1366         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'userra','DPR',0)
    1367              : 
    1368        29986 :  dprarr(1,:)=dtsets(:)%userrb
    1369         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'userrb','DPR',0)
    1370              : 
    1371        29986 :  dprarr(1,:)=dtsets(:)%userrc
    1372         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'userrc','DPR',0)
    1373              : 
    1374        29986 :  dprarr(1,:)=dtsets(:)%userrd
    1375         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'userrd','DPR',0)
    1376              : 
    1377        29986 :  dprarr(1,:)=dtsets(:)%userre
    1378         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'userre','DPR',0)
    1379              : 
    1380        29986 :  intarr(1,:)=dtsets(:)%usewvl
    1381         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'usewvl','INT',0)
    1382              : 
    1383        29986 :  intarr(1,0:ndtset_alloc)=dtsets(0:ndtset_alloc)%usexcnhat_orig
    1384         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'usexcnhat','INT',0)
    1385              : 
    1386        29986 :  intarr(1,0:ndtset_alloc)=dtsets(0:ndtset_alloc)%useylm
    1387         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'useylm','INT',0,firstchar=firstchar_gpu)
    1388              : 
    1389        29986 :  intarr(1,:)=dtsets(:)%use_slk
    1390         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'use_slk','INT',0, firstchar="-")
    1391              : 
    1392        29986 :  intarr(1,:)=dtsets(:)%use_oldchi
    1393         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'use_oldchi','INT',0)
    1394              : 
    1395              : 
    1396              : !###########################################################
    1397              : !### 03. Print all the input variables (V)
    1398              : !##
    1399              : 
    1400        25462 :  if(sum(dtsets(1:ndtset_alloc)%prtwant) >1)then
    1401              : !  van der Waals correction with MLWFs related variables
    1402          572 :    if(any(dtsets(1:ndtset_alloc)%vdw_xc==10).or.any(dtsets(1:ndtset_alloc)%vdw_xc==11).or.&
    1403              :       any(dtsets(1:ndtset_alloc)%vdw_xc==14))then
    1404           48 :      intarr(1,:)=dtsets(:)%vdw_nfrag
    1405           12 :      call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'vdw_nfrag','INT',0)
    1406              :    end if !vdw_xc==10,11,14
    1407          572 :    if(any(dtsets(1:ndtset_alloc)%vdw_xc==10).or.any(dtsets(1:ndtset_alloc)%vdw_xc==11).or.&
    1408              :       any(dtsets(1:ndtset_alloc)%vdw_xc==14))then
    1409           48 :      intarr(1,:)=dtsets(:)%vdw_supercell(1)
    1410           48 :      intarr(2,:)=dtsets(:)%vdw_supercell(2)
    1411           48 :      intarr(3,:)=dtsets(:)%vdw_supercell(3)
    1412           12 :      call prttagm(dprarr,intarr,iout,jdtset_,2,marr,3,narrm,ncid,ndtset_alloc,'vdw_supercell','INT',0)
    1413              :    end if !vdw_xc==10,11,14
    1414              :  end if !prtwant>1
    1415              : 
    1416        29986 :  dprarr(1,:)=dtsets(:)%vdw_tol
    1417         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'vdw_tol','DPR',0)
    1418        29986 :  dprarr(1,:)=dtsets(:)%vdw_tol_3bt
    1419         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'vdw_tol_3bt','DPR',0)
    1420              : 
    1421        25462 :  if(sum(dtsets(1:ndtset_alloc)%prtwant) >1)then
    1422              : !  van der Waals correction with MLWFs related variables
    1423          380 :    if(any(dtsets(1:ndtset_alloc)%vdw_xc==10).or.any(dtsets(1:ndtset_alloc)%vdw_xc==11))then
    1424           16 :      do iat=1,mxvals%natom
    1425           40 :        intarr(iat,:)=dtsets(:)%vdw_typfrag(iat)
    1426              :      end do
    1427            8 :      call prttagm(dprarr,intarr,iout,jdtset_,2,marr,mxvals%natom,narrm,ncid,ndtset_alloc,'vdw_typfrag','INT',0)
    1428              :    end if !vdw_xc==10 or xc==11
    1429              :  end if !prtwant>1
    1430              : 
    1431        29986 :  intarr(1,:)=dtsets(:)%vdw_xc
    1432         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'vdw_xc','INT',0)
    1433              : 
    1434        25462 :  if(sum(dtsets(1:ndtset_alloc)%prtvdw) >1)then
    1435            0 :    if(any(dtsets(1:ndtset_alloc)%vdw_xc<10))then
    1436            0 :      dprarr(1,:)=dtsets(:)%vdw_df_threshold
    1437            0 :      call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'vdw_df_threshold','ENE',0)
    1438              :    end if
    1439              :  end if
    1440              : 
    1441              : !vel
    1442        56668 :  prtimg(:,:)=1
    1443        29986 :  do idtset=0,ndtset_alloc
    1444        25462 :    if(idtset/=0)then
    1445        20938 :      size1=dtsets(idtset)%natom
    1446              :    else
    1447         4524 :      size1=mxvals%natom
    1448              :    end if
    1449        25462 :    narrm(idtset)=3*size1
    1450        56200 :    do iimage=1,nimagem(idtset)
    1451        51676 :      if (narrm(idtset)>0) then
    1452              :        dprarr_images(1:narrm(idtset),iimage,idtset)=&
    1453        52428 : &       reshape(results_out(idtset)%vel(1:3,1:size1,iimage), (/ narrm(idtset) /) )
    1454              :      end if
    1455              :    end do
    1456              :  end do
    1457              :  call prttagm_images(dprarr_images,iout,jdtset_,2,marr,narrm,ncid,ndtset_alloc,'vel','DPR',&
    1458         4524 : & mxvals%nimage,nimagem,ndtset,prtimg,strimg)
    1459              : 
    1460              : !vel_cell
    1461              : !At present, vel_cell does not depend on image... but this might change in the future.
    1462        56668 :  prtimg(:,:)=1
    1463              :  if (.true.) then
    1464              : !  if(mxvals%nimage==1)then
    1465        29986 :    do idtset=0,ndtset_alloc
    1466        29986 :      dprarr(1:9,idtset)= reshape(results_out(idtset)%vel_cell(:,:,1),(/9/))
    1467              :    end do
    1468         4524 :    call prttagm(dprarr,intarr,iout,jdtset_,2,marr,9,narrm,ncid,ndtset_alloc,'vel_cell','DPR',0)
    1469              : !  else
    1470              : !  do idtset=1,ndtset_alloc       ! specific size for each dataset
    1471              : !  nimagem(idtset)=dtsets(idtset)%nimage
    1472              : !  narrm(idtset)=9
    1473              : !  do iimage=1,dtsets(idtset)%nimage
    1474              : !  if (narrm(idtset)>0) then
    1475              : !  dprarr_images(1:narrm(idtset),iimage,idtset)=&
    1476              : !  &         reshape(results_out(idtset)%vel_cell(1:3,1:3,iimage),&
    1477              : !  &         (/ narrm(idtset) /) )
    1478              : !  end if
    1479              : !  end do
    1480              : !  end do
    1481              : !  call prttagm_images(dprarr_images,iout,jdtset_,&
    1482              : !  &   marr,narrm,ncid,ndtset_alloc,'vel_cell',&
    1483              : !  &   mxvals%nimage,nimagem,ndtset,prtimg,strimg)
    1484              :  end if
    1485              : 
    1486        29986 :  dprarr(1,:)=dtsets(:)%vis
    1487         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'vis','DPR',0)
    1488              : 
    1489        29986 :  dprarr(1,:)=dtsets(:)%vloc_rcut
    1490         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'vloc_rcut','LEN',0)
    1491              : 
    1492        29986 :  dprarr(1,:)=dtsets(:)%vprtrb(1)
    1493        29986 :  dprarr(2,:)=dtsets(:)%vprtrb(2)
    1494         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,2,narrm,ncid,ndtset_alloc,'vprtrb','ENE',0)
    1495              : 
    1496        29986 :  intarr(1,:)=dtsets(:)%vpq_avg_g
    1497         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'vpq_avg_g','INT',0)
    1498              : 
    1499        29986 :  intarr(1,:)=dtsets(:)%vpq_translate
    1500         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'vpq_translate','INT',0)
    1501              : 
    1502        29986 :  intarr(1,:)=dtsets(:)%vpq_interp
    1503         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'vpq_interp','INT',0)
    1504              : 
    1505        29986 :  intarr(1,:)=dtsets(:)%vpq_nstates
    1506         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'vpq_nstates','INT',0)
    1507              : 
    1508        29986 :  intarr(1,:)=dtsets(:)%vpq_nstep
    1509         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'vpq_nstep','INT',0)
    1510              : 
    1511        29986 :  intarr(1,:)=dtsets(:)%vpq_nstep_ort
    1512         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'vpq_nstep_ort','INT',0)
    1513              : 
    1514        29986 :  intarr(1,:)=dtsets(:)%vpq_select
    1515         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'vpq_select','INT',0)
    1516              : 
    1517        29986 :  intarr(1,:)=dtsets(:)%vpq_mesh_fact
    1518         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'vpq_mesh_fact','INT',0)
    1519              : 
    1520        29986 :  dprarr(1,:)=dtsets(:)%vpq_mix_fact
    1521         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'vpq_mix_fact','DPR',0)
    1522              : 
    1523        29986 :  dprarr(1,:)=dtsets(:)%vpq_tolgrs
    1524         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'vpq_tolgrs','DPR',0)
    1525              : 
    1526        29986 :  intarr(1,:)=dtsets(:)%vpq_trvec(1)
    1527        29986 :  intarr(2,:)=dtsets(:)%vpq_trvec(2)
    1528        29986 :  intarr(3,:)=dtsets(:)%vpq_trvec(3)
    1529         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,3,marr,3,narrm,ncid,ndtset_alloc,'vpq_trvec','INT',0)
    1530              : 
    1531        29986 :  dprarr(1,:)=dtsets(:)%vpq_gpr_energy(1)
    1532        29986 :  dprarr(2,:)=dtsets(:)%vpq_gpr_energy(2)
    1533         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,3,marr,2,narrm,ncid,ndtset_alloc,'vpq_gpr_energy','DPR',0)
    1534              : 
    1535        29986 :  dprarr(1,:)=dtsets(:)%vpq_gpr_length(1)
    1536        29986 :  dprarr(2,:)=dtsets(:)%vpq_gpr_length(2)
    1537        29986 :  dprarr(3,:)=dtsets(:)%vpq_gpr_length(3)
    1538         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,3,marr,3,narrm,ncid,ndtset_alloc,'vpq_gpr_length','DPR',0)
    1539              : 
    1540        29986 :  dprarr(1,:)=dtsets(:)%vcutgeo(1)
    1541        29986 :  dprarr(2,:)=dtsets(:)%vcutgeo(2)
    1542        29986 :  dprarr(3,:)=dtsets(:)%vcutgeo(3)
    1543         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,3,marr,3,narrm,ncid,ndtset_alloc,'vcutgeo','DPR',0)
    1544              : 
    1545              : !###########################################################
    1546              : !### 03. Print all the input variables (W)
    1547              : !##
    1548        29986 :  intarr(1,:)=dtsets(:)%wfinit
    1549         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'wfinit','INT',0)
    1550              : 
    1551        29986 :  dprarr(1,:)=dtsets(:)%wfmix
    1552         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'wfmix','DPR',0)
    1553              : 
    1554        29986 :  intarr(1,0:ndtset_alloc)=dtsets(0:ndtset_alloc)%wfk_task
    1555         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'wfk_task','INT',0)
    1556              : 
    1557        29986 :  intarr(1,0:ndtset_alloc)=dtsets(0:ndtset_alloc)%wfoptalg
    1558         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'wfoptalg','INT',0,firstchar=firstchar_gpu)
    1559              : 
    1560              : !wtatcon
    1561         4524 :  narr=3*natom*dtsets(1)%nconeq ! default size for all datasets
    1562        29986 :  do idtset=0,ndtset_alloc       ! specific size for each dataset
    1563        29986 :    if(idtset/=0)then
    1564        20938 :      narrm(idtset)=3*dtsets(idtset)%natom*dtsets(idtset)%nconeq
    1565        20938 :      if (narrm(idtset)>0)&
    1566              : &     dprarr(1:narrm(idtset),idtset)=&
    1567           40 : &     reshape(dtsets(idtset)%wtatcon(1:3,1:dtsets(idtset)%natom,1:dtsets(idtset)%nconeq),(/ narrm(idtset) /) )
    1568              :    else
    1569         4524 :      narrm(idtset)=3*mxvals%natom*mxvals%nconeq
    1570         4524 :      if (narrm(idtset)>0)&
    1571              : &     dprarr(1:narrm(idtset),idtset)=&
    1572           24 : &     reshape(dtsets(idtset)%wtatcon(1:3,1:mxvals%natom,1:mxvals%nconeq),(/ narrm(idtset) /) )
    1573              :    end if
    1574              :  end do
    1575              : 
    1576              :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,narr,narrm,ncid,ndtset_alloc,'wtatcon','DPR',&
    1577         4524 :    multivals%natom+multivals%nconeq)
    1578              : 
    1579              : !wtk
    1580         4524 :  if (allocated(dtsets(0)%wtk)) then
    1581      4033994 :    tnkpt=0
    1582      4033994 :    dprarr(:,0)=1
    1583         4436 :    narr=dtsets(1)%nkpt ! default size for all datasets
    1584         4436 :    if(prtvol_glob==0 .and. narr>nkpt_max)then
    1585          190 :      narr=nkpt_max
    1586          190 :      tnkpt=1
    1587              :    end if
    1588        25116 :    do idtset=1,ndtset_alloc       ! specific size for each dataset
    1589        20680 :      narrm(idtset)=dtsets(idtset)%nkpt
    1590       371926 :      if (narrm(idtset)>0) dprarr(1:narrm(idtset),idtset)=dtsets(idtset)%wtk(1:narrm(idtset))+tol12
    1591              : 
    1592        25116 :      if(prtvol_glob==0 .and. narrm(idtset)>nkpt_max)then
    1593         1388 :        narrm(idtset)=nkpt_max
    1594         1388 :        tnkpt=1
    1595              :      end if
    1596              :    end do
    1597         4436 :    call prttagm(dprarr,intarr,iout,jdtset_,4,marr,narr,narrm,ncid,ndtset_alloc,'wtk','DPR',multivals%nkpt)
    1598         4436 :    if(tnkpt==1) write(iout,'(23x,a,i3,a)' ) 'outvars : Printing only first ',nkpt_max,' k-points.'
    1599              :  end if
    1600              : 
    1601              : !WVL - wavelets variables
    1602        29986 :  if (any(dtsets(:)%usewvl==1)) then
    1603            0 :    intarr(1,:)=dtsets(:)%wvl_bigdft_comp
    1604            0 :    call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'wvl_bigdft_comp','INT',0)
    1605            0 :    dprarr(1,:)=dtsets(:)%wvl_crmult
    1606            0 :    call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'wvl_crmult','DPR',0)
    1607            0 :    dprarr(1,:)=dtsets(:)%wvl_frmult
    1608            0 :    call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'wvl_frmult','DPR',0)
    1609            0 :    dprarr(1,:)=dtsets(:)%wvl_hgrid
    1610            0 :    call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'wvl_hgrid','DPR',0)
    1611            0 :    intarr(1,:)=dtsets(:)%wvl_nprccg
    1612            0 :    call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'wvl_nprccg','INT',0)
    1613              :  end if
    1614              : 
    1615              : !Wannier90 interface related variables
    1616        25462 :  if(sum(dtsets(1:ndtset_alloc)%prtwant) >1)then
    1617          260 :    intarr(1,:)=dtsets(:)%w90iniprj
    1618           64 :    call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'w90iniprj','INT',0)
    1619          260 :    intarr(1,:)=dtsets(:)%w90prtunk
    1620           64 :    call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'w90prtunk','INT',0)
    1621              :  end if !prtwant>1
    1622              : 
    1623              : !###########################################################
    1624              : !### 03. Print all the input variables (X)
    1625              : !##
    1626              : 
    1627              : !xangst
    1628        56668 :  prtimg(:,:)=1
    1629        29986 :  do idtset=0,ndtset_alloc
    1630        25462 :    if(idtset/=0)then
    1631        20938 :      size1=dtsets(idtset)%natom
    1632              :    else
    1633         4524 :      size1=mxvals%natom
    1634              :    end if
    1635        25462 :    narrm(idtset)=3*size1
    1636        56200 :    do iimage=1,nimagem(idtset)
    1637        51676 :      if (narrm(idtset)>0) then
    1638        52428 :        dprarr_images(1:narrm(idtset),iimage,idtset)=reshape(xangst_(1:3,1:size1,iimage,idtset), (/narrm(idtset)/))
    1639              :      end if
    1640              :    end do
    1641              :  end do
    1642              : 
    1643              :  call prttagm_images(dprarr_images,iout,jdtset_,-2,marr,narrm,ncid,ndtset_alloc,'xangst','DPR',&
    1644         4524 : & mxvals%nimage,nimagem,ndtset,prtimg,strimg)
    1645              : 
    1646              : !xcart
    1647        56668 :  prtimg(:,:)=1
    1648        29986 :  do idtset=0,ndtset_alloc
    1649        25462 :    if(idtset/=0)then
    1650        20938 :      size1=dtsets(idtset)%natom
    1651              :    else
    1652         4524 :      size1=mxvals%natom
    1653              :    end if
    1654        25462 :    narrm(idtset)=3*size1
    1655        56200 :    do iimage=1,nimagem(idtset)
    1656        51676 :      if (narrm(idtset)>0) then
    1657        52428 :        dprarr_images(1:narrm(idtset),iimage,idtset)=reshape(xcart_(1:3,1:size1,iimage,idtset), (/ narrm(idtset) /) )
    1658              :      end if
    1659              :    end do
    1660              :  end do
    1661              : 
    1662              :  call prttagm_images(dprarr_images,iout,jdtset_,-2,marr,narrm,ncid,ndtset_alloc,'xcart','DPR',&
    1663         4524 : & mxvals%nimage,nimagem,ndtset,prtimg,strimg)
    1664              : 
    1665        29986 :  dprarr(1,:)=dtsets(:)%xc_denpos
    1666         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'xc_denpos','DPR',0)
    1667              : 
    1668        59736 :  if (any(dtsets(:)%usekden==1).and.any(dtsets(:)%xc_taupos/=dtsets(:)%xc_denpos)) then
    1669           16 :    dprarr(1,:)=dtsets(:)%xc_taupos
    1670            4 :    call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'xc_taupos','DPR',0)
    1671              :  end if
    1672              : 
    1673        29986 :  dprarr(1,:)=dtsets(:)%xc_tb09_c
    1674         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'xc_tb09_c','DPR',0)
    1675              : 
    1676        29986 :  intarr(1,:)=dtsets(:)%x1rdm
    1677         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'x1rdm','INT',0)
    1678              : 
    1679        29986 :  intarr(1,:)=dtsets(:)%xg_nonlop_option
    1680         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'xg_nonlop_option','INT',0)
    1681              : 
    1682              : !xred
    1683        56668 :  prtimg(:,:)=1
    1684        29986 :  do idtset=0,ndtset_alloc
    1685        25462 :    if(idtset/=0)then
    1686        20938 :      size2=dtsets(idtset)%natom
    1687              :    else
    1688         4524 :      size2=mxvals%natom
    1689              :    end if
    1690        25462 :    narrm(idtset)=3*size2
    1691        56200 :    do iimage=1,nimagem(idtset)
    1692        51676 :      if (narrm(idtset)>0) then
    1693              :        dprarr_images(1:narrm(idtset),iimage,idtset)=&
    1694        52428 : &       reshape(results_out(idtset)%xred(:,1:size2,iimage), (/ narrm(idtset) /) )
    1695              :      end if
    1696              :    end do
    1697              :  end do
    1698              :  call prttagm_images(dprarr_images,iout,jdtset_,-2,marr,narrm,ncid,ndtset_alloc,'xred','DPR',&
    1699         4524 : & mxvals%nimage,nimagem,ndtset,prtimg,strimg,forceprint=2)
    1700              : 
    1701              : !xredsph_extra
    1702        29986 :  do idtset=0,ndtset_alloc
    1703        25462 :    if(idtset/=0)then
    1704        20938 :      size2=dtsets(idtset)%natsph_extra
    1705              :    else
    1706              :      size2=0
    1707              :    end if
    1708        25462 :    narrm(idtset)=3*size2
    1709        29986 :    if (narrm(idtset)>0) then
    1710            8 :      dprarr(1:narrm(idtset),idtset)= reshape(dtsets(idtset)%xredsph_extra(:,1:size2), (/ narrm(idtset) /) )
    1711              :    end if
    1712              :  end do
    1713         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,3,narrm,ncid,ndtset_alloc,'xredsph_extra','DPR',1)
    1714              : 
    1715              : 
    1716              : !###########################################################
    1717              : !### 03. Print all the input variables (Y)
    1718              : !##
    1719              : 
    1720              : !###########################################################
    1721              : !### 03. Print all the input variables (Z)
    1722              : !##
    1723              : 
    1724        29986 :  dprarr(1,:)=dtsets(:)%zcut
    1725         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'zcut','ENE',0)
    1726              : 
    1727              : !ziontypat   ! After all, should always echo this value
    1728        29986 :  if(sum(dtsets(:)%ntypalch)>0)then
    1729           32 :    narr=ntypat                    ! default size for all datasets
    1730          144 :    do idtset=0,ndtset_alloc       ! specific size for each dataset
    1731          112 :      narrm(idtset)=dtsets(idtset)%ntypat
    1732          112 :      if(idtset==0)narrm(idtset)=mxvals%ntypat
    1733          144 :      if (narrm(idtset)>0) then
    1734          276 :        dprarr(1:narrm(idtset),idtset)=dtsets(idtset)%ziontypat(1:narrm(idtset))
    1735              :      end if
    1736              :    end do
    1737              :    call prttagm(dprarr,intarr,iout,jdtset_,1,marr,narr,&
    1738           32 :      narrm,ncid,ndtset_alloc,'ziontypat','DPR',multivals%ntypat,forceprint=2)
    1739              :  end if
    1740              : 
    1741        29986 :  do idtset=0,ndtset_alloc
    1742        62256 :    dprarr(1:npsp,idtset)=dtsets(idtset)%znucl(1:npsp)
    1743              :  end do
    1744         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,4,marr,npsp,narrm,ncid,ndtset_alloc,'znucl','DPR',0,forceprint=2)
    1745              : 
    1746        29986 :  intarr(1,:)=dtsets(:)%zora
    1747         4524 :  call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'zora','INT',0)
    1748              : 
    1749              : !###########################################################
    1750              : !## Deallocation for generic arrays, and for n-z variables
    1751              : 
    1752         4524 :  ABI_FREE(dprarr)
    1753         4524 :  ABI_FREE(intarr)
    1754         4524 :  ABI_FREE(narrm)
    1755         4524 :  ABI_FREE(nimagem)
    1756         4524 :  ABI_FREE(dprarr_images)
    1757         4524 :  ABI_FREE(prtimg)
    1758         4524 :  ABI_FREE(xangst_)
    1759         4524 :  ABI_FREE(xcart_)
    1760              : 
    1761              : contains
    1762              : !!***
    1763              : 
    1764              : !!****f* ABINIT/prtocc
    1765              : !!
    1766              : !! NAME
    1767              : !! prtocc
    1768              : !!
    1769              : !! FUNCTION
    1770              : !! Print the content of occ.
    1771              : !! Due to the need to distinguish between different k-points and
    1772              : !! different spin polarisations, prttagm.f cannot be used.
    1773              : !! So, need a dedicated routine.
    1774              : !!
    1775              : !! INPUTS
    1776              : !!  dtsets(0:ndtset_alloc)=<type datafiles_type>contains all input variables
    1777              : !!  iout=unit number for echoed output
    1778              : !!  jdtset_(0:ndtset_alloc)=list of dataset indices.
    1779              : !!  ndtset_alloc=govern second dimension of intarr and dprarr
    1780              : !!  prtvol_glob= if 0, minimal output volume, if 1, no restriction.
    1781              : !!  results_out(0:ndtset_alloc)=<type results_out_type>contains the results
    1782              : !!   needed for outvars, including occ, an evolving variable
    1783              : !!
    1784              : !! OUTPUT
    1785              : !!  (only writing)
    1786              : !!
    1787              : !! SOURCE
    1788              : 
    1789         4524 : subroutine prtocc(dtsets,iout,jdtset_,mxvals,ndtset_alloc,nimagem,prtvol_glob,results_out,strimg)
    1790              : 
    1791              : !Arguments ------------------------------------
    1792              : !scalars
    1793              :  integer,intent(in) :: iout,ndtset_alloc,prtvol_glob
    1794              : !arrays
    1795              :  integer,intent(in) :: jdtset_(0:ndtset_alloc)
    1796              :  integer,intent(in) :: nimagem(0:ndtset_alloc)
    1797              :  type(ab_dimensions),intent(in) :: mxvals
    1798              :  type(dataset_type),intent(in) :: dtsets(0:ndtset_alloc)
    1799              :  type(results_out_type),intent(in) :: results_out(0:ndtset_alloc)
    1800              :  character(len=8),intent(in) :: strimg(mxvals%nimage)
    1801              : 
    1802              : !Local variables-------------------------------
    1803              :  character(len=*), parameter :: f_occ    ="(1x,a16,1x,(t22,6f10.6))"
    1804              :  character(len=*), parameter :: f_occa   ="(1x,a16,a,1x,(t22,6f10.6))"
    1805              :  character(len=*), parameter :: token='occ'
    1806              : !scalars
    1807              :  integer,parameter :: nkpt_max=50
    1808              :  integer :: generic,iban,idtset,ikpsp,ikpt,isppol,jdtset,multi,multi_nband
    1809              :  integer :: multi_nimage
    1810              :  integer :: multi_nkpt,multi_nsppol,multi_occopt,nban,nkpt,nkpt_eff
    1811              :  integer :: multi_tsmear
    1812              :  integer :: print,tnkpt
    1813         4524 :  logical, allocatable :: test_multiimages(:)
    1814              :  character(len=4) :: append
    1815              :  character(len=16) :: keywd
    1816              :  character(len=500) :: message
    1817              : ! *************************************************************************
    1818              : 
    1819         4524 :  if(ndtset_alloc<1)then
    1820            0 :    write(message, '(a,i0,a)' )' ndtset_alloc=',ndtset_alloc,', while it should be >= 1.'
    1821            0 :    ABI_BUG(message)
    1822              :  end if
    1823              : 
    1824         4524 :  if(ndtset_alloc>9999)then
    1825            0 :    write(message, '(a,i0,a)' )' ndtset_alloc=',ndtset_alloc,', while it must be lower than 100.'
    1826            0 :    ABI_BUG(message)
    1827              :  end if
    1828              : 
    1829              : !It is important to take iscf into account, since when it is -2, occupation numbers must be ignored
    1830              : 
    1831         4524 :  multi_occopt=0
    1832         4524 :  if(ndtset_alloc>1)then
    1833        22542 :    do idtset=1,ndtset_alloc
    1834        41680 :      if(dtsets(1)%occopt/=dtsets(idtset)%occopt .and. dtsets(idtset)%iscf/=-2 )multi_occopt=1
    1835              :    end do
    1836              :  end if
    1837              : 
    1838         4524 :  multi_tsmear=0
    1839              :  if(ndtset_alloc>1)then
    1840              :    do idtset=1,ndtset_alloc
    1841              :      if(dtsets(1)%tsmear/=dtsets(idtset)%tsmear .and. dtsets(idtset)%iscf/=-2 )multi_tsmear=1
    1842              :    end do
    1843              :  end if
    1844              : 
    1845         4524 :  multi_nkpt=0
    1846         4524 :  if(ndtset_alloc>1)then
    1847        22542 :    do idtset=1,ndtset_alloc
    1848        39380 :      if(dtsets(1)%nkpt/=dtsets(idtset)%nkpt .and. dtsets(idtset)%iscf/=-2 )multi_nkpt=1
    1849              :    end do
    1850              :  end if
    1851         4524 :  if(multi_nkpt==0)nkpt=dtsets(1)%nkpt
    1852              : 
    1853         4524 :  multi_nsppol=0
    1854         4524 :  if(ndtset_alloc>1)then
    1855        22542 :    do idtset=1,ndtset_alloc
    1856        41728 :      if(dtsets(1)%nsppol/=dtsets(idtset)%nsppol .and. dtsets(idtset)%iscf/=-2 )multi_nsppol=1
    1857              :    end do
    1858              :  end if
    1859              : 
    1860         4524 :  if(multi_nsppol==0 .and. multi_nkpt==0)then
    1861         3536 :    multi_nband=0
    1862         3536 :    if(ndtset_alloc>1)then
    1863        16618 :      do idtset=1,ndtset_alloc
    1864        16618 :        if(dtsets(idtset)%iscf/=-2)then
    1865       101452 :          do ikpsp=1,dtsets(1)%nkpt*dtsets(1)%nsppol
    1866       101452 :            if(dtsets(1)%nband(ikpsp)/=dtsets(idtset)%nband(ikpsp))multi_nband=1
    1867              :          end do
    1868              :        end if
    1869              :      end do
    1870              :    end if
    1871              :  else
    1872              :    multi_nband=1
    1873              :  end if
    1874              : 
    1875         4524 :  multi_nimage=0
    1876         4524 :  if(ndtset_alloc>1)then
    1877        22542 :    do idtset=1,ndtset_alloc
    1878        42000 :      if(dtsets(1)%nimage/=dtsets(idtset)%nimage .and. dtsets(idtset)%iscf/=-2 )multi_nimage=1
    1879              :    end do
    1880              :  end if
    1881              : 
    1882              : !DEBUG
    1883              : ! write(std_out,*)' prtocc : 2, multi_nimage= ',multi_nimage
    1884              : !ENDDEBUG
    1885              : 
    1886              : !Test whether for this variable, the content of different images differ.
    1887              : !test_multiimages(idtset)=.false. if, for that dataset, the content for different
    1888              : !images is identical.
    1889        13572 :  ABI_MALLOC(test_multiimages,(0:ndtset_alloc))
    1890        29986 :  test_multiimages=.false.
    1891        25462 :  do idtset=1,ndtset_alloc
    1892        25462 :    if(nimagem(idtset)>1)then
    1893         1860 :      nban=sum(dtsets(idtset)%nband(1:dtsets(idtset)%nsppol*dtsets(idtset)%nkpt))
    1894         2848 :      do iban=1,nban
    1895        15260 :        if(sum(abs( results_out(idtset)%occ(iban,2:nimagem(idtset))- results_out(idtset)%occ(iban,1)))>tol12)then
    1896          112 :          test_multiimages(idtset)=.true.
    1897              :        end if
    1898              :      end do
    1899              :    end if
    1900              :  end do
    1901         4524 :  if(nimagem(0)==0)test_multiimages(0)=.true.
    1902              : 
    1903              : !DEBUG
    1904              : ! write(std_out,*)' prtocc : 3, test_multiimages= ',test_multiimages
    1905              : ! write(std_out,*)' prtocc : multi_occopt, multi_nband, multi_nimage=',multi_occopt, multi_nband, multi_nimage
    1906              : ! write(std_out,*)' prtocc : test_multiimages(1:ndtset_alloc)=',test_multiimages(1:ndtset_alloc)
    1907              : ! write(std_out,*)' prtocc : any(test_multiimages(1:ndtset_alloc))=',any(test_multiimages(1:ndtset_alloc))
    1908              : !ENDDEBUG
    1909              : 
    1910              : !There is a possibility of a single generic occupation-number set (common to all datasets) if
    1911              : !multi_occopt==0 and multi_nband==0  and (multi_nimage==0  or the content of the different images is always the same)
    1912              : !This might occur even if occupation numbers differ for different images.
    1913         4524 :  multi=1
    1914        25434 :  if(multi_occopt==0 .and. multi_nband==0 .and. (multi_nimage==0 .or. .not. any(test_multiimages(1:ndtset_alloc)))) then
    1915        56194 :    nban=sum(dtsets(1)%nband(1:dtsets(1)%nsppol*dtsets(1)%nkpt))
    1916         3136 :    multi=0
    1917         3136 :    if(ndtset_alloc>1)then
    1918        12392 :      do idtset=1,ndtset_alloc
    1919        12392 :        if(dtsets(idtset)%iscf/=-2)then
    1920              : !        nban counts all bands and kpoints and spins: see above
    1921        19856 :          do iimage=1,nimagem(idtset)
    1922        19856 :            if(iimage==1 .or. test_multiimages(idtset))then
    1923       746880 :              do iban=1,nban
    1924              : !              Use of tol8, because the format for multi=1 is f16.6, so will not
    1925              : !              discriminate between relative values, or absolute values that
    1926              : !              agree within more than 6 digits
    1927       747400 :                if( abs(results_out(1)%occ(iban,iimage)-results_out(idtset)%occ(iban,iimage)) > tol8) multi=1
    1928              :              end do
    1929              :            end if
    1930              :          end do
    1931              :        end if
    1932              :      end do
    1933              :    end if
    1934              :  end if
    1935              : 
    1936              : ! write(std_out,*)' prtocc : 4, multi= ',multi
    1937              : 
    1938              : !At this stage, if multi==1, the occ must be printed
    1939              : !if multi==0, then it might be that we have the default values.
    1940              : !Since the default is all zeros, it only happens when iscf=-2
    1941              : !Also initialize the number of a idtset that can be used as generic
    1942              : !(this might not be the case for idtset=1 !)
    1943              : 
    1944         4524 :  generic=0
    1945         4524 :  print=0
    1946        25462 :  do idtset=1,ndtset_alloc
    1947        25462 :    if(dtsets(idtset)%iscf/=-2)then
    1948        19190 :      print=1
    1949        19190 :      generic=idtset
    1950              :    end if
    1951              :  end do
    1952              : 
    1953              : ! write(std_out,*)' prtocc : 5, print= ',print
    1954              : 
    1955              : !Now, print occ in the generic occupation-number set case (occ is independent of the dtset).
    1956         4524 :  if(print==1 .and. multi==0)then
    1957              : !  Might restrict the number of k points to be printed
    1958         2910 :    tnkpt=0
    1959         2910 :    nkpt_eff=dtsets(1)%nkpt
    1960         2910 :    if(prtvol_glob==0 .and. nkpt_eff>nkpt_max)then
    1961         2910 :      nkpt_eff=nkpt_max
    1962         2910 :      tnkpt=1
    1963              :    end if
    1964              : 
    1965              : ! write(std_out,*)' prtocc : 6, do-loop over iimage '
    1966              : 
    1967         6200 :    do iimage=1,nimagem(generic)
    1968         6200 :      if(iimage==1 .or. test_multiimages(generic) )then
    1969         2944 :        keywd=token//trim(strimg(iimage))
    1970              : !      The quantity of data to be output vary with occopt
    1971         2944 :        if(dtsets(generic)%occopt>=2)then
    1972         1008 :          iban=1
    1973         2318 :          do isppol=1,dtsets(generic)%nsppol
    1974        20438 :            do ikpt=1,nkpt_eff
    1975        19128 :              ikpsp=ikpt+dtsets(generic)%nkpt*(isppol-1)
    1976        19128 :              nban=dtsets(generic)%nband(ikpsp)
    1977        19128 :              if(ikpsp==1)then
    1978              :                write(iout, '(1x,a16,1x,(t22,6f10.6))' )&
    1979        17732 : &               trim(keywd),results_out(generic)%occ(iban:iban+nban-1,iimage)
    1980              :              else
    1981       177330 :                write(iout, '((t22,6f10.6))' )results_out(generic)%occ(iban:iban+nban-1,iimage)
    1982              :              end if
    1983        20438 :              iban=iban+nban
    1984              :            end do
    1985         2318 :            if(tnkpt==1) write(iout,'(23x,a)' ) 'prtocc : prtvol=0, do not print more k-points.'
    1986              :          end do
    1987              :        else
    1988              : !        The number of bands is identical for all k points and spin
    1989         1936 :          nban=dtsets(generic)%nband(1)
    1990        25590 :          write(iout, '(1x,a16,1x,(t22,6f10.6))' )trim(keywd),results_out(generic)%occ(1:nban,iimage)
    1991              : !        if occopt==1, the occ might differ with the spin
    1992         1936 :          if(dtsets(generic)%nsppol/=1)then
    1993              :            write(iout,'((t22,6f10.6))')results_out(generic)%occ(nban*dtsets(generic)%nkpt+1:&
    1994         1308 : &           nban*dtsets(generic)%nkpt+nban,iimage)
    1995              :          end if
    1996              :        end if
    1997              :      end if
    1998              :    end do
    1999              :  end if
    2000              : 
    2001              : ! write(std_out,*)' prtocc : 7, finished do-loop over iimage '
    2002              : 
    2003              : !Now, print occ in the other cases (occ depends on the dataset)
    2004         4524 :  if(print==1 .and. multi==1)then
    2005        11054 :    do idtset=1,ndtset_alloc
    2006              : !    Might restrict the number of k points to be printed
    2007         9492 :      tnkpt=0
    2008         9492 :      nkpt_eff=dtsets(idtset)%nkpt
    2009         9492 :      if(prtvol_glob==0 .and. nkpt_eff>nkpt_max)then
    2010         9492 :        nkpt_eff=nkpt_max
    2011         9492 :        tnkpt=1
    2012              :      end if
    2013        11054 :      if(dtsets(idtset)%iscf/=-2)then
    2014         8816 :        jdtset=jdtset_(idtset)
    2015         8816 :        call appdig(jdtset,'',append)
    2016        17648 :        do iimage=1,nimagem(idtset)
    2017        17648 :          if(iimage==1 .or. test_multiimages(idtset) )then
    2018         8832 :            keywd=trim(token)//trim(strimg(iimage))
    2019              : !          The quantity of data to be output vary with occopt
    2020         8832 :            if(dtsets(idtset)%occopt>=2)then
    2021         3514 :              iban=1
    2022         8586 :              do isppol=1,dtsets(idtset)%nsppol
    2023        37012 :                do ikpt=1,nkpt_eff
    2024        31940 :                  ikpsp=ikpt+dtsets(idtset)%nkpt*(isppol-1)
    2025        31940 :                  nban=dtsets(idtset)%nband(ikpsp)
    2026        31940 :                  if(ikpsp==1)then
    2027              :                    write(iout, '(1x,a16,a,1x,(t22,6f10.6))' )&
    2028        53054 : &                   trim(keywd),append,results_out(idtset)%occ(iban:iban+nban-1,iimage)
    2029              :                  else
    2030       317920 :                    write(iout, '((t22,6f10.6))' )results_out(idtset)%occ(iban:iban+nban-1,iimage)
    2031              :                  end if
    2032        37012 :                  iban=iban+nban
    2033              :                end do
    2034         8586 :                if(tnkpt==1) write(iout,'(23x,a)' ) 'prtocc : prtvol=0, do not print more k-points.'
    2035              :              end do
    2036              :            else
    2037              : !            The number of bands is identical for all k points and spin
    2038         5318 :              nban=dtsets(idtset)%nband(1)
    2039              :              write(iout, '(1x,a16,a,1x,(t22,6f10.6))' )&
    2040        71990 : &             trim(keywd),append,results_out(idtset)%occ(1:nban,iimage)
    2041              : !            if occopt==1, the occ might differ with the spin
    2042         5318 :              if(dtsets(idtset)%nsppol/=1)then
    2043              :                write(iout, '((t22,6f10.6))' ) &
    2044         3732 : &               results_out(idtset)%occ(nban*dtsets(idtset)%nkpt+1:nban*dtsets(idtset)%nkpt+nban,iimage)
    2045              :              end if
    2046              :            end if
    2047              :          end if
    2048              :        enddo
    2049              :      end if
    2050              : !    Endloop on idtset
    2051              :    end do
    2052              :  end if
    2053              : 
    2054         4524 :  ABI_FREE(test_multiimages)
    2055              : 
    2056         4524 : end subroutine prtocc
    2057              : !!***
    2058              : 
    2059              : end subroutine outvar_o_z
    2060              : !!***
    2061              : 
    2062              : end module m_outvar_o_z
    2063              : !!***
        

Generated by: LCOV version 2.3-1