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 4522 : subroutine outvar_o_z(choice,dtsets,iout,&
105 4522 : & jdtset_,marr,multivals,mxvals,ncid,ndtset,ndtset_alloc,npsp,prtvol_glob,&
106 4522 : & 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 4522 : integer,allocatable :: narrm(:)
133 4522 : integer,allocatable :: nimagem(:),prtimg(:,:)
134 4522 : integer,allocatable :: intarr(:,:)
135 : real(dp) :: rprimd(3,3)
136 4522 : real(dp),allocatable :: dprarr(:,:),dprarr_images(:,:,:)
137 4522 : real(dp),allocatable :: xangst(:,:),xcart(:,:),xred(:,:)
138 4522 : real(dp),allocatable :: xangst_(:,:,:,:),xcart_(:,:,:,:)
139 : ! *************************************************************************
140 :
141 : !###########################################################
142 : !### 01. Initial allocations and initialisations.
143 :
144 18088 : ABI_MALLOC(dprarr,(marr,0:ndtset_alloc))
145 22610 : ABI_MALLOC(dprarr_images,(marr,mxvals%nimage,0:ndtset_alloc))
146 18088 : ABI_MALLOC(intarr,(marr,0:ndtset_alloc))
147 13566 : ABI_MALLOC(narrm,(0:ndtset_alloc))
148 9044 : ABI_MALLOC(nimagem,(0:ndtset_alloc))
149 18088 : ABI_MALLOC(prtimg,(mxvals%nimage,0:ndtset_alloc))
150 :
151 29974 : do idtset=0,ndtset_alloc
152 29974 : nimagem(idtset)=dtsets(idtset)%nimage
153 : end do
154 :
155 4522 : firstchar_gpu=' '
156 25452 : if (maxval(dtsets(1:ndtset_alloc)%gpu_option)/=ABI_GPU_DISABLED) firstchar_gpu='-'
157 :
158 4522 : natom=dtsets(1)%natom
159 4522 : nimage=dtsets(1)%nimage
160 4522 : nnos=dtsets(1)%nnos
161 4522 : nsym=-1;nsym=dtsets(1)%nsym
162 4522 : ntypalch=dtsets(1)%ntypalch
163 4522 : ntypat=dtsets(1)%ntypat
164 :
165 : !###########################################################
166 : !### 02. Specific treatment for occopt, xangst, xcart, xred
167 :
168 : !Must compute xangst and xcart
169 22610 : ABI_MALLOC(xangst_,(3,mxvals%natom,mxvals%nimage,0:ndtset_alloc))
170 18088 : ABI_MALLOC(xcart_,(3,mxvals%natom,mxvals%nimage,0:ndtset_alloc))
171 1261644 : xangst_(:,:,:,:)=0.0_dp ; xcart_(:,:,:,:)=0.0_dp
172 :
173 25452 : do idtset=1,ndtset_alloc
174 20930 : natom=dtsets(idtset)%natom
175 62790 : ABI_MALLOC(xred,(3,natom))
176 41860 : ABI_MALLOC(xangst,(3,natom))
177 41860 : ABI_MALLOC(xcart,(3,natom))
178 42612 : do iimage=1,dtsets(idtset)%nimage
179 394642 : xred(:,1:natom)=results_out(idtset)%xred(:,1:natom,iimage)
180 21682 : call mkrdim(results_out(idtset)%acell(:,iimage),results_out(idtset)%rprim(:,:,iimage),rprimd)
181 : ! Compute xcart from xred and rprimd
182 21682 : call xred2xcart(natom,rprimd,xcart,xred)
183 : ! Compute xangst from xcart
184 394642 : xangst(:,:)=xcart(:,:)*Bohr_Ang
185 : ! Save the data
186 394642 : xangst_(1:3,1:natom,iimage,idtset)=xangst(:,:)
187 415572 : xcart_(1:3,1:natom,iimage,idtset)=xcart(:,:)
188 : end do
189 20930 : 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 20930 : ABI_FREE(xred)
194 20930 : ABI_FREE(xangst)
195 25452 : 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 4522 : ndtset_alloc_tmp=ndtset_alloc
207 4522 : if(ncid<0)ndtset_alloc_tmp=1
208 4522 : call prtocc(dtsets,iout,jdtset_,mxvals,ndtset_alloc_tmp,nimagem,prtvol_glob,results_out,strimg)
209 :
210 29974 : intarr(1,:)=dtsets(:)%occopt
211 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'occopt','INT',0)
212 :
213 29974 : dprarr(1,:)=dtsets(:)%omegasimax
214 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'omegasimax','ENE',0)
215 :
216 29974 : dprarr(1,:)=dtsets(:)%omegasrdmax
217 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'omegasrdmax','ENE',0)
218 :
219 29974 : intarr(1,:)=dtsets(:)%optcell
220 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'optcell','INT',0)
221 :
222 29974 : intarr(1,:)=dtsets(:)%optdcmagpawu
223 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'optdcmagpawu','INT',0)
224 :
225 29974 : intarr(1,:)=dtsets(:)%optdriver
226 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'optdriver','INT',0)
227 :
228 29974 : intarr(1,:)=dtsets(:)%optforces
229 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'optforces','INT',0)
230 :
231 29974 : intarr(1,:)=dtsets(:)%optnlxccc
232 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'optnlxccc','INT',0)
233 :
234 29974 : intarr(1,:)=dtsets(:)%optstress
235 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'optstress','INT',0)
236 :
237 29974 : dprarr(1,:)=dtsets(:)%oracle_factor
238 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'oracle_factor','DPR',0)
239 :
240 29974 : dprarr(1,:)=dtsets(:)%oracle_min_occ
241 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'oracle_min_occ','DPR',0)
242 :
243 29974 : intarr(1,:)=dtsets(:)%orbmag
244 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'orbmag','INT',0)
245 :
246 29974 : intarr(1,:)=dtsets(:)%ortalg
247 4522 : 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 29974 : intarr(1,:)=dtsets(:)%paral_atom
254 4522 : 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 29974 : intarr(1,:)=dtsets(:)%paral_kgb
258 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'paral_kgb','INT',0)
259 :
260 29974 : intarr(1,:)=dtsets(:)%paral_rf
261 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'paral_rf','INT',0)
262 :
263 29974 : intarr(1,:)=dtsets(:)%paral_slice
264 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'paral_slice','INT',0)
265 :
266 29974 : intarr(1,:)=dtsets(:)%paw_add_core
267 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'paw_add_core','INT',0)
268 :
269 29974 : intarr(1,:)=dtsets(:)%pawcpxocc
270 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawcpxocc','INT',0)
271 :
272 29974 : intarr(1,:)=dtsets(:)%pawcross
273 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawcross','INT',0)
274 :
275 29974 : dprarr(1,:)=dtsets(:)%pawecutdg
276 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'pawecutdg','ENE',0)
277 :
278 29974 : intarr(1,:)=dtsets(:)%pawfatbnd
279 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawfatbnd','INT',0)
280 :
281 29974 : intarr(1,:)=dtsets(:)%pawlcutd
282 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawlcutd','INT',0)
283 :
284 29974 : intarr(1,:)=dtsets(:)%pawlmix
285 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawlmix','INT',0)
286 :
287 29974 : intarr(1,:)=dtsets(:)%pawmixdg
288 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawmixdg','INT',0)
289 :
290 29974 : intarr(1,:)=dtsets(:)%pawnhatxc
291 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawnhatxc','INT',0)
292 :
293 29974 : intarr(1,:)=dtsets(:)%pawnphi
294 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawnphi','INT',0)
295 :
296 29974 : intarr(1,:)=dtsets(:)%pawntheta
297 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawntheta','INT',0)
298 :
299 29974 : intarr(1,:)=dtsets(:)%pawnzlm
300 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawnzlm','INT',0)
301 :
302 29974 : intarr(1,:)=dtsets(:)%pawoptmix
303 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawoptmix','INT',0)
304 :
305 29974 : intarr(1,:)=dtsets(:)%pawoptosc
306 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawoptosc','INT',0)
307 :
308 29974 : dprarr(1,:)=dtsets(:)%pawovlp
309 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawovlp','DPR',0)
310 :
311 29974 : intarr(1,:)=dtsets(:)%pawprtdos
312 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawprtdos','INT',0)
313 :
314 29974 : intarr(1,:)=dtsets(:)%pawprtvol
315 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawprtvol','INT',0)
316 :
317 29974 : intarr(1,:)=dtsets(:)%pawprtwf
318 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawprtwf','INT',0)
319 :
320 29974 : intarr(1,:)=dtsets(:)%pawprt_b
321 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawprt_b','INT',0)
322 :
323 29974 : intarr(1,:)=dtsets(:)%pawprt_k
324 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawprt_k','INT',0)
325 :
326 29974 : intarr(1,:)=dtsets(:)%pawspnorb
327 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawspnorb','INT',0)
328 :
329 29974 : intarr(1,:)=dtsets(:)%pawstgylm
330 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawstgylm','INT',0)
331 :
332 29974 : intarr(1,:)=dtsets(:)%pawsushat
333 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawsushat','INT',0)
334 :
335 29974 : intarr(1,:)=dtsets(:)%pawujat
336 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawujat','INT',0)
337 :
338 29974 : dprarr(1,:)=dtsets(:)%pawujrad
339 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawujrad','LEN',0)
340 :
341 29974 : dprarr(1,:)=dtsets(:)%pawujv
342 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawujv','ENE',0)
343 :
344 29974 : intarr(1,:)=dtsets(:)%pawusecp
345 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawusecp','INT',0)
346 :
347 29974 : intarr(1,:)=dtsets(:)%pawxcdev
348 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pawxcdev','INT',0)
349 :
350 29974 : intarr(1,:)=dtsets(:)%ph_intmeth
351 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'ph_intmeth','INT',0)
352 :
353 29974 : intarr(1,:)=dtsets(:)%ph_ndivsm
354 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'ph_ndivsm','INT',0)
355 :
356 29974 : do idtset=0,ndtset_alloc
357 106330 : intarr(1:3,idtset)=dtsets(idtset)%ph_ngqpt
358 : end do
359 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,3,narrm,ncid,ndtset_alloc,'ph_ngqpt','INT',0)
360 :
361 29974 : intarr(1,:)=dtsets(:)%ph_nqpath
362 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'ph_nqpath','INT',0)
363 :
364 29974 : intarr(1,:)=dtsets(:)%ph_nqshift
365 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'ph_nqshift','INT',0)
366 :
367 29974 : dprarr(1,:)=dtsets(:)%ph_smear
368 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'ph_smear','ENE',0)
369 :
370 29974 : dprarr(1,:)=dtsets(:)%ph_wstep
371 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'ph_wstep','ENE',0)
372 :
373 : !pimass
374 4522 : icount=0
375 29974 : do idtset=0, ndtset_alloc
376 62122 : do ii = 1, ntypat
377 32148 : dprarr(ii,idtset) = dtsets(idtset)%pimass(ii)
378 57600 : 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 4522 : 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 29974 : intarr(1,:)=dtsets(:)%pimd_constraint
386 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pimd_constraint','INT',0)
387 :
388 29974 : intarr(1,:)=dtsets(:)%pitransform
389 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pitransform','INT',0)
390 :
391 29974 : intarr(1,:)=dtsets(:)%plowan_bandi
392 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'plowan_bandi','INT',0)
393 :
394 29974 : intarr(1,:)=dtsets(:)%plowan_bandf
395 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'plowan_bandf','INT',0)
396 :
397 29974 : intarr(1,:)=dtsets(:)%plowan_compute
398 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'plowan_compute','INT',0)
399 :
400 29974 : intarr(1,:)=dtsets(:)%plowan_natom
401 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'plowan_natom','INT',0)
402 :
403 29974 : intarr(1,:)=dtsets(:)%plowan_nt
404 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'plowan_nt','INT',0)
405 :
406 29974 : intarr(1,:)=dtsets(:)%plowan_realspace
407 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'plowan_realspace','INT',0)
408 :
409 :
410 : !plowan_it
411 4522 : narr=100
412 29974 : do idtset=0,ndtset_alloc ! specific size for each dataset
413 25452 : narrm(idtset)=3*dtsets(idtset)%plowan_nt
414 : !if(idtset==0)narrm(idtset)=100
415 29974 : 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 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,narr,narrm,ncid,ndtset_alloc,'plowan_it','INT',1)
420 :
421 :
422 : !plowan_iatom
423 4522 : narr=mxvals%natom
424 29974 : do idtset=0,ndtset_alloc ! specific size for each dataset
425 25452 : narrm(idtset)=dtsets(idtset)%plowan_natom
426 : !if(idtset==0)narrm(idtset)=mxvals%natom
427 29974 : 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 4522 : 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 29974 : do idtset=0,ndtset_alloc ! specific size for each dataset
436 25452 : narrm(idtset)=dtsets(idtset)%plowan_natom
437 : !if(idtset==0)narrm(idtset)=mxvals%natom
438 29974 : 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 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,narr,narrm,ncid,ndtset_alloc,'plowan_nbl','INT',1)
443 :
444 : !plowan_lcalc
445 4522 : narr=12*mxvals%natom
446 29974 : do idtset=0,ndtset_alloc ! specific size for each dataset
447 25452 : narrm(idtset)=sum(dtsets(idtset)%plowan_nbl(1:dtsets(idtset)%plowan_natom))
448 : !if(idtset==0)narrm(idtset)=12*mxvals%natom
449 29974 : 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 4522 : 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 29974 : do idtset=0,ndtset_alloc ! specific size for each dataset
458 25452 : narrm(idtset)=sum(dtsets(idtset)%plowan_nbl(1:dtsets(idtset)%plowan_natom))
459 : !if(idtset==0)narrm(idtset)=12*mxvals%natom
460 29974 : 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 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,narr,narrm,ncid,ndtset_alloc,'plowan_projcalc','INT',1)
465 :
466 29974 : dprarr(1,:)=dtsets(:)%polcen(1)
467 29974 : dprarr(2,:)=dtsets(:)%polcen(2)
468 29974 : dprarr(3,:)=dtsets(:)%polcen(3)
469 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,3,narrm,ncid,ndtset_alloc,'polcen','DPR',0)
470 :
471 29974 : intarr(1,:)=dtsets(:)%posdoppler
472 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'posdoppler','INT',0)
473 :
474 29974 : intarr(1,:)=dtsets(:)%positron
475 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'positron','INT',0)
476 :
477 29974 : intarr(1,:)=dtsets(:)%posnstep
478 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'posnstep','INT',0)
479 :
480 29974 : dprarr(1,:)=dtsets(:)%posocc
481 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'posocc','DPR',0)
482 :
483 29974 : dprarr(1,:)=dtsets(:)%postoldfe
484 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'postoldfe','ENE',0)
485 :
486 29974 : dprarr(1,:)=dtsets(:)%postoldff
487 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'postoldff','DPR',0)
488 :
489 29974 : dprarr(1,:)=dtsets(:)%ppmfrq
490 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'ppmfrq','ENE',0)
491 :
492 29974 : intarr(1,:)=dtsets(:)%ppmodel
493 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'ppmodel','INT',0)
494 :
495 29974 : intarr(1,:)=dtsets(:)%precon_in_memory
496 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'precon_in_memory','INT',0)
497 :
498 29974 : intarr(1,:)=dtsets(:)%precon_ls_maxite
499 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'precon_ls_maxite','INT',0)
500 :
501 29974 : dprarr(1,:)=dtsets(:)%precon_ls_rtol
502 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'precon_ls_rtol','DPR',0)
503 :
504 29974 : dprarr(1,:)=dtsets(:)%precon_tsmear
505 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'precon_tsmear','ENE',0)
506 :
507 29974 : intarr(1,:)=dtsets(:)%precon_verbose
508 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'precon_verbose','INT',0)
509 :
510 29974 : intarr(1,:)=dtsets(:)%prepalw
511 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prepalw','INT',0)
512 :
513 29974 : intarr(1,:)=dtsets(:)%prepanl
514 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prepanl','INT',0)
515 :
516 29974 : intarr(1,:)=dtsets(:)%prepgkk
517 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prepgkk','INT',0)
518 :
519 : !prtatlist
520 4522 : if(multivals%natom==0)then
521 27228 : do idtset=0,ndtset_alloc
522 92264 : intarr(1:natom,idtset)=dtsets(idtset)%prtatlist(1:natom)
523 : end do
524 36104 : intarr(1:mxvals%natom,0)=(/ (ii,ii=1,mxvals%natom) /)
525 4410 : 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 29974 : intarr(1,:)=dtsets(:)%prtbbb
531 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtbbb','INT',0)
532 :
533 29974 : intarr(1,:)=dtsets(:)%prtbltztrp
534 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtbltztrp','INT',0)
535 :
536 29974 : intarr(1,:)=dtsets(:)%prtchkprdm
537 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtchkprdm','INT',0)
538 :
539 29974 : intarr(1,:)=dtsets(:)%prtcif
540 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtcif','INT',0)
541 :
542 29974 : intarr(1,:)=dtsets(:)%prtcurrent
543 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtcurrent','INT',0)
544 :
545 29974 : intarr(1,:)=dtsets(:)%prtden
546 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtden','INT',0)
547 :
548 29974 : intarr(1,:)=dtsets(:)%prtdensph
549 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtdensph','INT',0)
550 :
551 29974 : intarr(1,:)=dtsets(:)%prtdos
552 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtdos','INT',0)
553 :
554 29974 : intarr(1,:)=dtsets(:)%prtdosm
555 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtdosm','INT',0)
556 :
557 29974 : intarr(1,:)=dtsets(:)%prtebands
558 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtebands','INT',0)
559 :
560 29974 : intarr(1,:)=dtsets(:)%prtefmas
561 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtefmas','INT',0)
562 :
563 29974 : intarr(1,:)=dtsets(:)%prteig
564 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prteig','INT',0)
565 :
566 29974 : intarr(1,:)=dtsets(:)%prtelf
567 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtelf','INT',0)
568 :
569 29974 : intarr(1,:)=dtsets(:)%prteliash
570 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prteliash','INT',0)
571 :
572 29974 : intarr(1,:)=dtsets(:)%prtevk
573 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtevk','INT',0)
574 :
575 29974 : intarr(1,:)=dtsets(:)%prtfull1wf
576 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtfull1wf','INT',0)
577 :
578 29974 : intarr(1,:)=dtsets(:)%prtfsurf
579 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtfsurf','INT',0)
580 :
581 29974 : intarr(1,:)=dtsets(:)%prtgden
582 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtgden','INT',0)
583 :
584 29974 : intarr(1,:)=dtsets(:)%prtgeo
585 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtgeo','INT',0)
586 :
587 29974 : intarr(1,:)=dtsets(:)%prtgkk
588 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtgkk','INT',0)
589 :
590 29974 : intarr(1,:)=dtsets(:)%prtgsr
591 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtgsr','INT',0)
592 :
593 29974 : intarr(1,:)=dtsets(:)%prtkden
594 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtkden','INT',0)
595 :
596 29974 : intarr(1,:)=dtsets(:)%prtlden
597 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtlden','INT',0)
598 :
599 29974 : intarr(1,:)=dtsets(:)%prt1mag
600 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prt1mag','INT',0)
601 :
602 29974 : intarr(1,:)=dtsets(:)%prtnabla
603 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtnabla','INT',0)
604 :
605 29974 : intarr(1,:)=dtsets(:)%prtnest
606 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtnest','INT',0)
607 :
608 29974 : intarr(1,:)=dtsets(:)%prtocc
609 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtocc','INT',0)
610 :
611 29974 : intarr(1,:)=dtsets(:)%prtphbands
612 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtphbands','INT',0)
613 :
614 29974 : intarr(1,:)=dtsets(:)%prtphdos
615 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtphdos','INT',0)
616 :
617 29974 : intarr(1,:)=dtsets(:)%prtphsurf
618 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtphsurf','INT',0)
619 :
620 29974 : intarr(1,:)=dtsets(:)%prtposcar
621 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtposcar','INT',0)
622 :
623 29974 : intarr(1,:)=dtsets(:)%prtprocar
624 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtprocar','INT',0)
625 :
626 29974 : intarr(1,:)=dtsets(:)%prtpot
627 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtpot','INT',0)
628 :
629 29974 : intarr(1,:)=dtsets(:)%prtpsps
630 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtpsps','INT',0)
631 :
632 29974 : intarr(1,:)=dtsets(:)%prtspcur
633 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtspcur','INT',0)
634 :
635 29974 : intarr(1,:)=dtsets(:)%prtstm
636 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtstm','INT',0)
637 :
638 29974 : intarr(1,:)=dtsets(:)%prtsuscep
639 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtsuscep','INT',0)
640 :
641 29974 : intarr(1,:)=dtsets(:)%prtvclmb
642 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtvclmb','INT',0)
643 :
644 29974 : intarr(1,:)=dtsets(:)%prtvha
645 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtvha','INT',0)
646 :
647 29974 : intarr(1,:)=dtsets(:)%prtvhxc
648 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtvhxc','INT',0)
649 :
650 29974 : intarr(1,:)=dtsets(:)%prtkbff
651 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtkbff','INT',0)
652 :
653 29974 : intarr(1,:)=dtsets(:)%prtvol
654 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtvol','INT',0)
655 :
656 29974 : intarr(1,:)=dtsets(:)%prtvolimg
657 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtvolimg','INT',0)
658 :
659 29974 : intarr(1,:)=dtsets(:)%prtvpsp
660 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtvpsp','INT',0)
661 :
662 29974 : intarr(1,:)=dtsets(:)%prtvxc
663 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtvxc','INT',0)
664 :
665 29974 : intarr(1,:)=dtsets(:)%prtwant
666 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtwant','INT',0)
667 :
668 29974 : intarr(1,:)=dtsets(:)%prtwf
669 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtwf','INT',0)
670 :
671 29974 : intarr(1,:)=dtsets(:)%prtwf_full
672 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtwf_full','INT',0)
673 :
674 29974 : intarr(1,:)=dtsets(:)%prtxml
675 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prtxml','INT',0)
676 :
677 : !prt1dm
678 29974 : intarr(1,:)=dtsets(:)%prt1dm
679 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prt1dm','INT',0)
680 :
681 : !ptcharge
682 29974 : do idtset=0, ndtset_alloc
683 62122 : do ii = 1, ntypat
684 57600 : dprarr(ii,idtset) = dtsets(idtset)%ptcharge(ii)
685 : end do ! end loop over ntypat
686 : end do ! end loop over datasets
687 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,ntypat,narrm,ncid,ndtset_alloc,'ptcharge','DPR',0)
688 :
689 29974 : intarr(1,:)=dtsets(:)%prt_lorbmag
690 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'prt_lorbmag','INT',0)
691 :
692 29974 : intarr(1,:)=dtsets(:)%ptgroupma
693 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'ptgroupma','INT',0)
694 :
695 29974 : intarr(1,:)=dtsets(:)%pulayhiststore
696 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'pulayhiststore','INT',0)
697 :
698 29974 : dprarr(1,:)=dtsets(:)%pvelmax(1)
699 29974 : dprarr(2,:)=dtsets(:)%pvelmax(2)
700 29974 : dprarr(3,:)=dtsets(:)%pvelmax(3)
701 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,3,narrm,ncid,ndtset_alloc,'pvelmax','DPR',0)
702 :
703 29974 : dprarr(1,:)=dtsets(:)%pw_unbal_thresh
704 4522 : 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 4522 : narr=nnos ! default size for all datasets
712 29974 : do idtset=0,ndtset_alloc ! specific size for each dataset
713 25452 : narrm(idtset)=dtsets(idtset)%nnos
714 25452 : if(idtset==0)narrm(idtset)=mxvals%nnos
715 29974 : 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 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,narr,narrm,ncid,ndtset_alloc,'qmass','DPR',multivals%nnos)
720 :
721 29974 : intarr(1,:)=dtsets(:)%qprtrb(1)
722 29974 : intarr(2,:)=dtsets(:)%qprtrb(2)
723 29974 : intarr(3,:)=dtsets(:)%qprtrb(3)
724 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,3,narrm,ncid,ndtset_alloc,'qprtrb','INT',0)
725 :
726 29974 : dprarr(1,:)=dtsets(:)%qptn(1)
727 29974 : dprarr(2,:)=dtsets(:)%qptn(2)
728 29974 : dprarr(3,:)=dtsets(:)%qptn(3)
729 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,3,narrm,ncid,ndtset_alloc,'qpt','DPR',0)
730 :
731 29974 : dprarr(1,:)=dtsets(:)%qgbt(1)
732 29974 : dprarr(2,:)=dtsets(:)%qgbt(2)
733 29974 : dprarr(3,:)=dtsets(:)%qgbt(3)
734 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,3,narrm,ncid,ndtset_alloc,'qgbt','DPR',0)
735 :
736 29974 : dprarr(1,:)=dtsets(:)%qgbt_cart(1)
737 29974 : dprarr(2,:)=dtsets(:)%qgbt_cart(2)
738 29974 : dprarr(3,:)=dtsets(:)%qgbt_cart(3)
739 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,3,narrm,ncid,ndtset_alloc,'qgbt_cart','DPR',0)
740 :
741 : !qptdm
742 4522 : narr=3*dtsets(1)%nqptdm ! default size for all datasets
743 29974 : do idtset=0,ndtset_alloc ! specific size for each dataset
744 29974 : if(idtset/=0)then
745 20930 : narrm(idtset)=3*dtsets(idtset)%nqptdm
746 20930 : 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 4522 : narrm(idtset)=3*mxvals%nqptdm
750 4522 : 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 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,narr,narrm,ncid,ndtset_alloc,'qptdm','DPR',multivals%nqptdm)
755 :
756 29974 : do idtset=0, ndtset_alloc
757 62122 : do ii = 1, ntypat
758 57600 : dprarr(ii,idtset) = dtsets(idtset)%quadmom(ii)
759 : end do ! end loop over ntypat
760 : end do ! end loop over datasets
761 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,ntypat,narrm,ncid,ndtset_alloc,'quadmom','DPR',0)
762 :
763 29974 : intarr(1,:)=dtsets(:)%quadquad
764 4522 : 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 29974 : intarr(1,:)=dtsets(:)%random_atpos
773 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'random_atpos','INT',0)
774 :
775 29974 : intarr(1,:)=dtsets(:)%ratopt
776 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'ratopt','INT',0)
777 :
778 29974 : dprarr(1,:)=dtsets(:)%ratsm
779 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'ratsm','LEN',0)
780 :
781 29974 : do idtset=0, ndtset_alloc
782 62122 : do ii = 1, ntypat
783 57600 : dprarr(ii,idtset) = dtsets(idtset)%ratsph(ii)
784 : end do ! end loop over ntypat
785 : end do ! end loop over datasets
786 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,ntypat,narrm,ncid,ndtset_alloc,'ratsph','LEN',0)
787 :
788 19905250 : dprarr = zero
789 29974 : dprarr(1,:) = dtsets(:)%ratsph_extra
790 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'ratsph_extra','LEN',0)
791 :
792 29974 : intarr(1,:)=dtsets(:)%rcpaw_frocc
793 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'rcpaw_frocc','INT',0)
794 :
795 29974 : intarr(1,:)=dtsets(:)%rcpaw_updatetnc
796 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'rcpaw_updatetnc','INT',0)
797 :
798 29974 : intarr(1,:)=dtsets(:)%rcpaw_elin
799 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'rcpaw_elin','INT',0)
800 :
801 29974 : intarr(1,:)=dtsets(:)%rcpaw_prtpaw
802 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'rcpaw_prtpaw','INT',0)
803 :
804 29974 : intarr(1,:)=dtsets(:)%rcpaw_tpaw
805 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'rcpaw_tpaw','INT',0)
806 :
807 29974 : intarr(1,:)=dtsets(:)%rcpaw_vhtnzc
808 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'rcpaw_vhtnzc','INT',0)
809 :
810 29974 : dprarr(1,:)=dtsets(:)%rcpaw_tolnc
811 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'rcpaw_tolnc','DPR',0)
812 :
813 29974 : do idtset=0, ndtset_alloc
814 80878 : do ii = 1, 2
815 76356 : intarr(ii,idtset) = dtsets(idtset)%rcpaw_updatepaw(ii)
816 : end do ! end loop over ntypat
817 : end do ! end loop over datasets
818 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,2,narrm,ncid,ndtset_alloc,'rcpaw_updatepaw','INT',0)
819 :
820 29974 : do idtset=0, ndtset_alloc
821 62122 : do ii = 1, ntypat
822 57600 : intarr(ii,idtset) = dtsets(idtset)%rcpaw_rctypat(ii)
823 : end do ! end loop over ntypat
824 : end do ! end loop over datasets
825 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,ntypat,narrm,ncid,ndtset_alloc,'rcpaw_rctypat','INT',0)
826 :
827 29974 : do idtset=0, ndtset_alloc
828 62122 : do ii = 1, ntypat
829 57600 : dprarr(ii,idtset) = dtsets(idtset)%rcpaw_sc(ii)
830 : end do ! end loop over ntypat
831 : end do ! end loop over datasets
832 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,ntypat,narrm,ncid,ndtset_alloc,'rcpaw_sc','DPR',0)
833 :
834 29974 : dprarr(1,:)=dtsets(:)%rcut
835 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'rcut','LEN',0)
836 :
837 : !Variables used for recursion method
838 29974 : dprarr(1,:)=dtsets(:)%recefermi
839 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'recefermi','ENE',0)
840 :
841 29974 : intarr(1,0:ndtset_alloc)=dtsets(0:ndtset_alloc)%recgratio
842 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'recgratio','INT',0)
843 :
844 29974 : intarr(1,:)=dtsets(:)%recnpath
845 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'recnpath','INT',0)
846 :
847 29974 : intarr(1,:)=dtsets(:)%recnrec
848 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'recnrec','INT',0)
849 :
850 29974 : intarr(1,:)=dtsets(:)%recptrott
851 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'recptrott','INT',0)
852 :
853 29974 : dprarr(1,:)=dtsets(:)%recrcut
854 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'recrcut','LEN',0)
855 :
856 29974 : intarr(1,:)=dtsets(:)%rectesteg
857 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'rectesteg','INT',0)
858 :
859 29974 : dprarr(1,:)=dtsets(:)%rectolden
860 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'rectolden','DPR',0)
861 :
862 29974 : dprarr(1,:)=dtsets(:)%red_dfield(1) !!HONG
863 29974 : dprarr(2,:)=dtsets(:)%red_dfield(2)
864 29974 : dprarr(3,:)=dtsets(:)%red_dfield(3)
865 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,3,narrm,ncid,ndtset_alloc,'red_dfield','DPR',0)
866 :
867 29974 : dprarr(1,:)=dtsets(:)%red_efield(1) !!HONG
868 29974 : dprarr(2,:)=dtsets(:)%red_efield(2)
869 29974 : dprarr(3,:)=dtsets(:)%red_efield(3)
870 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,3,narrm,ncid,ndtset_alloc,'red_efield','DPR',0)
871 :
872 29974 : dprarr(1,:)=dtsets(:)%red_efieldbar(1) !!HONG
873 29974 : dprarr(2,:)=dtsets(:)%red_efieldbar(2)
874 29974 : dprarr(3,:)=dtsets(:)%red_efieldbar(3)
875 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,3,narrm,ncid,ndtset_alloc,'red_efieldbar','DPR',0)
876 :
877 29974 : intarr(1,:)=dtsets(:)%restartxf
878 4522 : 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 4522 : test_write=0
884 25452 : do idtset=1,ndtset_alloc
885 25452 : if(dtsets(idtset)%rfatpol(1)/=1 .or. dtsets(idtset)%rfatpol(2)/=dtsets(idtset)%natom)test_write=1
886 : enddo
887 4522 : 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 29974 : intarr(1,:)=dtsets(:)%rfddk
894 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'rfddk','INT',0)
895 :
896 29974 : intarr(1,:)=dtsets(:)%rfdir(1)
897 29974 : intarr(2,:)=dtsets(:)%rfdir(2)
898 29974 : intarr(3,:)=dtsets(:)%rfdir(3)
899 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,3,narrm,ncid,ndtset_alloc,'rfdir','INT',0)
900 :
901 29974 : intarr(1,:)=dtsets(:)%rfelfd
902 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'rfelfd','INT',0)
903 :
904 29974 : dprarr(1,:)=dtsets(:)%rfeta
905 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'rfeta','ENE',0)
906 :
907 29974 : intarr(1,:)=dtsets(:)%rfmagn
908 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'rfmagn','INT',0)
909 :
910 29974 : intarr(1,:)=dtsets(:)%rfmeth
911 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'rfmeth','INT',0)
912 :
913 29974 : dprarr(1,:)=dtsets(:)%rfomega
914 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'rfomega','ENE',0)
915 :
916 29974 : intarr(1,:)=dtsets(:)%rfphon
917 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'rfphon','INT',0)
918 :
919 29974 : intarr(1,:)=dtsets(:)%rfstrs
920 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'rfstrs','INT',0)
921 :
922 29974 : intarr(1,:)=dtsets(:)%rfstrs_ref
923 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'rfstrs_ref','INT',0)
924 :
925 29974 : intarr(1,:)=dtsets(:)%rf2_dkdk
926 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'rf2_dkdk','INT',0)
927 :
928 29974 : intarr(1,:)=dtsets(:)%rf2_dkde
929 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'rf2_dkde','INT',0)
930 :
931 29974 : intarr(1,:)=dtsets(:)%rf2_pert1_dir(1)
932 29974 : intarr(2,:)=dtsets(:)%rf2_pert1_dir(2)
933 29974 : intarr(3,:)=dtsets(:)%rf2_pert1_dir(3)
934 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,3,narrm,ncid,ndtset_alloc,'rf2_pert1_dir','INT',0)
935 :
936 29974 : intarr(1,:)=dtsets(:)%rf2_pert2_dir(1)
937 29974 : intarr(2,:)=dtsets(:)%rf2_pert2_dir(2)
938 29974 : intarr(3,:)=dtsets(:)%rf2_pert2_dir(3)
939 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,3,narrm,ncid,ndtset_alloc,'rf2_pert2_dir','INT',0)
940 :
941 29974 : dprarr(1,:)=dtsets(:)%rhoqpmix
942 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'rhoqpmix','DPR',0)
943 :
944 29974 : dprarr(1,:)=dtsets(:)%rifcsph
945 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'rifcsph','DPR',0)
946 :
947 29974 : intarr(1,:)=dtsets(:)%rmm_diis
948 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'rmm_diis','INT',0)
949 29974 : intarr(1,:)=dtsets(:)%rmm_diis_savemem
950 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'rmm_diis_savemem','INT',0)
951 :
952 : !rprim
953 56646 : prtimg(:,:)=1
954 29974 : do idtset=0,ndtset_alloc
955 25452 : narrm(idtset)=9
956 56178 : do iimage=1,nimagem(idtset)
957 25452 : if (narrm(idtset)>0) then
958 : dprarr_images(1:narrm(idtset),iimage,idtset)=&
959 52408 : & 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 4522 : & 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 25452 : if(sum((dtsets(1:ndtset_alloc)%kptopt)**2)/=0)then
973 4179164 : multi_kptopt=0
974 4179164 : dprarr(:,0)=0.0_dp
975 3152 : narr=3*dtsets(1)%nshiftk ! default size for all datasets
976 15512 : do idtset=1,ndtset_alloc ! specific size for each dataset
977 12360 : narrm(idtset)=3*dtsets(idtset)%nshiftk
978 12360 : if (narrm(idtset)>0) then
979 : dprarr(1:narrm(idtset),idtset)=&
980 24720 : & reshape(dtsets(idtset)%shiftk(1:3,1:dtsets(idtset)%nshiftk),(/ narrm(idtset) /) )
981 : end if
982 15512 : if(dtsets(idtset)%kptopt<=0)then
983 892 : narrm(idtset)=0
984 892 : multi_kptopt=1
985 : end if
986 : end do
987 3152 : 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 29974 : intarr(1,:)=dtsets(:)%sigma_bsum_range(1)
992 29974 : intarr(2,:)=dtsets(:)%sigma_bsum_range(2)
993 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,2,narrm,ncid,ndtset_alloc,'sigma_bsum_range','INT',0)
994 :
995 29974 : dprarr(1,:)=dtsets(:)%sigma_erange(1)
996 29974 : dprarr(2,:)=dtsets(:)%sigma_erange(2)
997 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,2,narrm,ncid,ndtset_alloc,'sigma_erange','ENE',0)
998 :
999 29974 : intarr(1,:)=dtsets(:)%transport_ngkpt(1)
1000 29974 : intarr(2,:)=dtsets(:)%transport_ngkpt(2)
1001 29974 : intarr(3,:)=dtsets(:)%transport_ngkpt(3)
1002 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,3,narrm,ncid,ndtset_alloc,'transport_ngkpt','INT',0)
1003 :
1004 29974 : intarr(1,:)=dtsets(:)%sigma_ngkpt(1)
1005 29974 : intarr(2,:)=dtsets(:)%sigma_ngkpt(2)
1006 29974 : intarr(3,:)=dtsets(:)%sigma_ngkpt(3)
1007 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,3,narrm,ncid,ndtset_alloc,'sigma_ngkpt','INT',0)
1008 :
1009 29974 : intarr(1,:)=dtsets(:)%signperm
1010 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'signperm','INT',0)
1011 :
1012 29974 : dprarr(1,:)=dtsets(:)%slabwsrad
1013 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'slabwsrad','DPR',0)
1014 :
1015 29974 : dprarr(1,:)=dtsets(:)%slabzbeg
1016 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'slabzbeg','DPR',0)
1017 :
1018 29974 : dprarr(1,:)=dtsets(:)%slabzend
1019 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'slabzend','DPR',0)
1020 :
1021 29974 : intarr(1,:)=dtsets(:)%slk_rankpp
1022 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'slk_rankpp','INT',0)
1023 :
1024 29974 : intarr(1,:)=dtsets(:)%smdelta
1025 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'smdelta','INT',0)
1026 :
1027 29974 : do idtset=0,ndtset_alloc
1028 62234 : intarr(1:npsp,idtset)=dtsets(idtset)%so_psp(1:npsp)
1029 : end do
1030 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,npsp,narrm,ncid,ndtset_alloc,'so_psp','INT',0)
1031 :
1032 29974 : dprarr(1,:)=dtsets(:)%spbroad
1033 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'spbroad','ENE',0)
1034 :
1035 29974 : intarr(1,:)=dtsets(:)%spgroup
1036 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'spgroup','INT',0)
1037 :
1038 : !spinat
1039 4403866 : dprarr(:,0)=0.0_dp
1040 4522 : narr=3*natom ! default size for all datasets
1041 25452 : do idtset=1,ndtset_alloc ! specific size for each dataset
1042 20930 : narrm(idtset)=3*dtsets(idtset)%natom
1043 20930 : if (narrm(idtset)>0) then
1044 41860 : dprarr(1:narrm(idtset),idtset)=reshape(dtsets(idtset)%spinat_in(1:3,1:dtsets(idtset)%natom), (/narrm(idtset)/))
1045 : end if
1046 390028 : if(sum(abs( dtsets(idtset)%spinat_in(1:3,1:dtsets(idtset)%natom))) < tol12 ) narrm(idtset)=0
1047 : end do
1048 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,narr,narrm,ncid,ndtset_alloc,'spinat','DPR',multivals%natom)
1049 :
1050 : !spinat_cart
1051 4522 : nontrivial_spinaxis=.false.
1052 25448 : do idtset=1,ndtset_alloc
1053 62782 : if (any(abs(dtsets(idtset)%spinaxis(1:2)) > tol8) .or. &
1054 4518 : abs(dtsets(idtset)%spinaxis(3) - 1.0_dp) > tol8) then
1055 : nontrivial_spinaxis=.true.
1056 : exit
1057 : end if
1058 : end do
1059 4522 : 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 29974 : dprarr(1,:)=dtsets(:)%spinaxis(1)
1074 29974 : dprarr(2,:)=dtsets(:)%spinaxis(2)
1075 29974 : dprarr(3,:)=dtsets(:)%spinaxis(3)
1076 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,3,narrm,ncid,ndtset_alloc,'spinaxis','DPR',0)
1077 :
1078 29974 : dprarr(1,:)=dtsets(:)%spinmagntarget
1079 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'spinmagntarget','DPR',0)
1080 :
1081 29974 : intarr(1,:)=dtsets(:)%spmeth
1082 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'spmeth','INT',0)
1083 :
1084 29974 : dprarr(1,:)=dtsets(:)%spnorbscl
1085 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'spnorbscl','DPR',0)
1086 :
1087 29974 : dprarr(1,:)=dtsets(:)%stmbias
1088 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'stmbias','DPR',0)
1089 :
1090 29974 : dprarr(1,:)=dtsets(:)%strfact
1091 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'strfact','DPR',0)
1092 :
1093 29974 : intarr(1,:)=dtsets(:)%string_algo
1094 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'string_algo','INT',0)
1095 :
1096 31654 : do ii=1,6
1097 184366 : dprarr(ii,:)=dtsets(:)%strtarget(ii)
1098 : end do
1099 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,6,narrm,ncid,ndtset_alloc,'strtarget','DPR',0)
1100 :
1101 : !strten
1102 4522 : 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 4403866 : intarr(:,0)=1
1130 4522 : narr=nsym ! default size for all datasets
1131 25452 : do idtset=1,ndtset_alloc ! specific size for each dataset
1132 20930 : narrm(idtset)=dtsets(idtset)%nsym
1133 25452 : if (narrm(idtset)>0) then
1134 547574 : intarr(1:narrm(idtset),idtset)=dtsets(idtset)%symafm(1:narrm(idtset))
1135 : end if
1136 : end do
1137 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,narr,narrm,ncid,ndtset_alloc,'symafm','INT', multivals%nsym)
1138 :
1139 29974 : intarr(1,:)=dtsets(:)%symchi
1140 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'symchi','INT',0)
1141 :
1142 29974 : intarr(1,:)=dtsets(:)%symdynmat
1143 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'symdynmat','INT',0)
1144 :
1145 29974 : intarr(1,:)=dtsets(:)%symmorphi
1146 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'symmorphi','INT',0)
1147 :
1148 : !symrel
1149 45220 : intarr(1:9,0)=(/ 1,0,0, 0,1,0, 0,0,1 /)
1150 4522 : narr=9*nsym ! default size for all datasets
1151 25452 : do idtset=1,ndtset_alloc ! specific size for each dataset
1152 20930 : narrm(idtset)=9*dtsets(idtset)%nsym
1153 25452 : if (narrm(idtset)>0) then
1154 : intarr(1:narrm(idtset),idtset)=&
1155 41860 : & reshape(dtsets(idtset)%symrel(1:3,1:3,1:dtsets(idtset)%nsym), [narrm(idtset)] )
1156 : end if
1157 : end do
1158 4522 : call prttagm(dprarr,intarr,iout,jdtset_,3,marr,narr,narrm,ncid,ndtset_alloc,'symrel','INT', multivals%nsym)
1159 :
1160 29974 : intarr(1,:)=dtsets(:)%symsigma
1161 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'symsigma','INT',0)
1162 :
1163 29974 : dprarr(1,:)=dtsets(:)%symsigma_de
1164 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'symsigma_de','ENE',0)
1165 :
1166 29974 : intarr(1,:)=dtsets(:)%symv1scf
1167 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'symv1scf','INT',0)
1168 :
1169 29974 : intarr(1,:)=dtsets(:)%scr_wrange(1)
1170 29974 : intarr(2,:)=dtsets(:)%scr_wrange(2)
1171 4522 : 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 29974 : dprarr(1,:)=dtsets(:)%td_maxene
1178 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'td_maxene','DPR',0)
1179 :
1180 29974 : intarr(1,0:ndtset_alloc)=dtsets(0:ndtset_alloc)%td_mexcit
1181 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'td_mexcit','INT',0)
1182 :
1183 29974 : intarr(1,0:ndtset_alloc)=dtsets(0:ndtset_alloc)%tfkinfunc
1184 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'tfkinfunc','INT',0)
1185 :
1186 29974 : dprarr(1,:)=dtsets(:)%tfw_toldfe
1187 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'tfw_toldfe','ENE',0)
1188 :
1189 29974 : intarr(1,:)=dtsets(:)%timdisp
1190 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'timdisp','INT',0)
1191 :
1192 29974 : intarr(1,:)=dtsets(:)%tim1rev
1193 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'tim1rev','INT',0)
1194 :
1195 :
1196 : !timopt
1197 4522 : timopt_default=1; if(xmpi_paral==1) timopt_default=0
1198 :
1199 4522 : 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 29974 : intarr(1,:)=dtsets(:)%tl_nprccg
1207 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'tl_nprccg','INT',0)
1208 29974 : dprarr(1,:)=dtsets(:)%tl_radius
1209 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'tl_radius','DPR',0)
1210 :
1211 : !tnons
1212 4403866 : dprarr(:,0)=0.0_dp
1213 4522 : narr=3*nsym ! default size for all datasets
1214 25452 : do idtset=1,ndtset_alloc ! specific size for each dataset
1215 20930 : narrm(idtset)=3*dtsets(idtset)%nsym
1216 25452 : if (narrm(idtset)>0) then
1217 41860 : dprarr(1:narrm(idtset),idtset)=reshape(dtsets(idtset)%tnons(1:3,1:dtsets(idtset)%nsym), [narrm(idtset)])
1218 : end if
1219 : end do
1220 4522 : call prttagm(dprarr,intarr,iout,jdtset_,-3,marr,narr,narrm,ncid,ndtset_alloc,'tnons','DPR',multivals%nsym)
1221 :
1222 29974 : dprarr(1,:)=dtsets(:)%tolcum
1223 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'tolcum','DPR',0)
1224 :
1225 29974 : dprarr(1,:)=dtsets(:)%toldfe
1226 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'toldfe','ENE',0)
1227 :
1228 29974 : dprarr(1,:)=dtsets(:)%tolmxde
1229 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'tolmxde','ENE',0)
1230 :
1231 29974 : dprarr(1,:)=dtsets(:)%toldff
1232 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'toldff','DPR',0)
1233 :
1234 29974 : dprarr(1,:)=dtsets(:)%toldmag
1235 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'toldmag','DPR',0)
1236 :
1237 29974 : dprarr(1,:)=dtsets(:)%tolimg
1238 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'tolimg','ENE',0)
1239 :
1240 29974 : dprarr(1,:)=dtsets(:)%tolmxf
1241 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'tolmxf','DPR',0)
1242 :
1243 29974 : dprarr(1,:)=dtsets(:)%tolrde
1244 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'tolrde','DPR',0)
1245 :
1246 29974 : dprarr(1,:)=dtsets(:)%tolrff
1247 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'tolrff','DPR',0)
1248 :
1249 29974 : dprarr(1,:)=dtsets(:)%tolsym
1250 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'tolsym','DPR',0)
1251 :
1252 29974 : dprarr(1,:)=dtsets(:)%tolvrs
1253 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'tolvrs','DPR',0)
1254 :
1255 29974 : dprarr(1,:)=dtsets(:)%tolwfr
1256 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'tolwfr','DPR',0)
1257 :
1258 29770 : 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 29974 : dprarr(1,:)=dtsets(:)%tphysel
1264 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'tphysel','ENE',0)
1265 :
1266 89922 : dprarr(1,:) = dtsets(:)%tmesh(1); dprarr(2,:) = dtsets(:)%tmesh(2); dprarr(3,:) = dtsets(:)%tmesh(3)
1267 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,3,narrm,ncid,ndtset_alloc,'tmesh','DPR',0)
1268 :
1269 29974 : dprarr(1,:)=dtsets(:)%tsmear
1270 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'tsmear','ENE',0)
1271 :
1272 : !typat
1273 4522 : narr=natom ! default size for all datasets
1274 29974 : do idtset=0,ndtset_alloc ! specific size for each dataset
1275 25452 : narrm(idtset)=dtsets(idtset)%natom
1276 25452 : if(idtset==0)narrm(idtset)=mxvals%natom
1277 29974 : if (narrm(idtset)>0) then
1278 131806 : intarr(1:narrm(idtset),idtset)=dtsets(idtset)%typat(1:narrm(idtset))
1279 : end if
1280 : end do
1281 4522 : 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 29974 : intarr(1,:)=dtsets(:)%ucrpa
1287 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'ucrpa','INT',0)
1288 :
1289 29974 : intarr(1,:)=dtsets(:)%ucrpa_bands(1)
1290 29974 : intarr(2,:)=dtsets(:)%ucrpa_bands(2)
1291 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,2,narrm,ncid,ndtset_alloc,'ucrpa_bands','INT',0)
1292 :
1293 29974 : dprarr(1,:)=dtsets(:)%ucrpa_window(1)
1294 29974 : dprarr(2,:)=dtsets(:)%ucrpa_window(2)
1295 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,2,narrm,ncid,ndtset_alloc,'ucrpa_window','ENE',0)
1296 :
1297 : !upawu
1298 56646 : prtimg(:,:)=1
1299 29974 : do idtset=0,ndtset_alloc
1300 25452 : narrm(idtset)=dtsets(idtset)%ntypat
1301 25452 : if (idtset==0) narrm(idtset)=mxvals%ntypat
1302 56178 : do iimage=1,nimagem(idtset)
1303 51656 : if (narrm(idtset)>0) then
1304 59664 : 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 4522 : & ncid,ndtset_alloc,'upawu','ENE',mxvals%nimage,nimagem,ndtset,prtimg,strimg)
1310 :
1311 29974 : intarr(1,:)=dtsets(:)%usedmatpu
1312 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'usedmatpu','INT',0)
1313 :
1314 29974 : intarr(1,:)=dtsets(:)%usedmft
1315 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'usedmft','INT',0)
1316 :
1317 29974 : intarr(1,:)=dtsets(:)%useexexch
1318 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'useexexch','INT',0)
1319 :
1320 29974 : intarr(1,:)=dtsets(:)%usefock
1321 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'usefock','INT',0)
1322 :
1323 29974 : intarr(1,:)=dtsets(:)%usepotzero
1324 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'usepotzero','INT',0)
1325 :
1326 29974 : intarr(1,:)=dtsets(:)%usekden
1327 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'usekden','INT',0)
1328 :
1329 29974 : intarr(1,:)=dtsets(:)%use_gemm_nonlop
1330 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'use_gemm_nonlop','INT',0)
1331 :
1332 29974 : intarr(1,:)=dtsets(:)%useextfpmd
1333 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'useextfpmd','INT',0)
1334 :
1335 29974 : intarr(1,:)=dtsets(:)%use_yaml
1336 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'use_yaml','INT',0)
1337 :
1338 29974 : intarr(1,:)=dtsets(:)%use_nonscf_gkk
1339 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'use_nonscf_gkk','INT',0)
1340 :
1341 29974 : intarr(1,:)=dtsets(:)%use_gbt
1342 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'use_gbt','INT',0)
1343 :
1344 29974 : intarr(1,:)=dtsets(:)%usepawu
1345 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'usepawu','INT',0)
1346 :
1347 29974 : intarr(1,:)=dtsets(:)%usepead
1348 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'usepead','INT',0)
1349 :
1350 29974 : intarr(1,:)=dtsets(:)%useria
1351 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'useria','INT',0)
1352 :
1353 29974 : intarr(1,:)=dtsets(:)%userib
1354 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'userib','INT',0)
1355 :
1356 29974 : intarr(1,:)=dtsets(:)%useric
1357 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'useric','INT',0)
1358 :
1359 29974 : intarr(1,:)=dtsets(:)%userid
1360 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'userid','INT',0)
1361 :
1362 29974 : intarr(1,:)=dtsets(:)%userie
1363 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'userie','INT',0)
1364 :
1365 29974 : dprarr(1,:)=dtsets(:)%userra
1366 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'userra','DPR',0)
1367 :
1368 29974 : dprarr(1,:)=dtsets(:)%userrb
1369 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'userrb','DPR',0)
1370 :
1371 29974 : dprarr(1,:)=dtsets(:)%userrc
1372 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'userrc','DPR',0)
1373 :
1374 29974 : dprarr(1,:)=dtsets(:)%userrd
1375 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'userrd','DPR',0)
1376 :
1377 29974 : dprarr(1,:)=dtsets(:)%userre
1378 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'userre','DPR',0)
1379 :
1380 29974 : intarr(1,:)=dtsets(:)%usewvl
1381 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'usewvl','INT',0)
1382 :
1383 29974 : intarr(1,0:ndtset_alloc)=dtsets(0:ndtset_alloc)%usexcnhat_orig
1384 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'usexcnhat','INT',0)
1385 :
1386 29974 : intarr(1,0:ndtset_alloc)=dtsets(0:ndtset_alloc)%useylm
1387 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'useylm','INT',0,firstchar=firstchar_gpu)
1388 :
1389 29974 : intarr(1,:)=dtsets(:)%use_slk
1390 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'use_slk','INT',0, firstchar="-")
1391 :
1392 29974 : intarr(1,:)=dtsets(:)%use_oldchi
1393 4522 : 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 25452 : 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 29974 : dprarr(1,:)=dtsets(:)%vdw_tol
1417 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'vdw_tol','DPR',0)
1418 29974 : dprarr(1,:)=dtsets(:)%vdw_tol_3bt
1419 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'vdw_tol_3bt','DPR',0)
1420 :
1421 25452 : 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 29974 : intarr(1,:)=dtsets(:)%vdw_xc
1432 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'vdw_xc','INT',0)
1433 :
1434 25452 : 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 56646 : prtimg(:,:)=1
1443 29974 : do idtset=0,ndtset_alloc
1444 25452 : if(idtset/=0)then
1445 20930 : size1=dtsets(idtset)%natom
1446 : else
1447 4522 : size1=mxvals%natom
1448 : end if
1449 25452 : narrm(idtset)=3*size1
1450 56178 : do iimage=1,nimagem(idtset)
1451 51656 : if (narrm(idtset)>0) then
1452 : dprarr_images(1:narrm(idtset),iimage,idtset)=&
1453 52408 : & 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 4522 : & 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 56646 : prtimg(:,:)=1
1463 : if (.true.) then
1464 : ! if(mxvals%nimage==1)then
1465 29974 : do idtset=0,ndtset_alloc
1466 29974 : dprarr(1:9,idtset)= reshape(results_out(idtset)%vel_cell(:,:,1),(/9/))
1467 : end do
1468 4522 : 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 29974 : dprarr(1,:)=dtsets(:)%vis
1487 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'vis','DPR',0)
1488 :
1489 29974 : dprarr(1,:)=dtsets(:)%vloc_rcut
1490 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'vloc_rcut','LEN',0)
1491 :
1492 29974 : dprarr(1,:)=dtsets(:)%vprtrb(1)
1493 29974 : dprarr(2,:)=dtsets(:)%vprtrb(2)
1494 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,2,narrm,ncid,ndtset_alloc,'vprtrb','ENE',0)
1495 :
1496 29974 : intarr(1,:)=dtsets(:)%vpq_avg_g
1497 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'vpq_avg_g','INT',0)
1498 :
1499 29974 : intarr(1,:)=dtsets(:)%vpq_translate
1500 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'vpq_translate','INT',0)
1501 :
1502 29974 : intarr(1,:)=dtsets(:)%vpq_interp
1503 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'vpq_interp','INT',0)
1504 :
1505 29974 : intarr(1,:)=dtsets(:)%vpq_nstates
1506 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'vpq_nstates','INT',0)
1507 :
1508 29974 : intarr(1,:)=dtsets(:)%vpq_nstep
1509 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'vpq_nstep','INT',0)
1510 :
1511 29974 : intarr(1,:)=dtsets(:)%vpq_nstep_ort
1512 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'vpq_nstep_ort','INT',0)
1513 :
1514 29974 : intarr(1,:)=dtsets(:)%vpq_select
1515 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'vpq_select','INT',0)
1516 :
1517 29974 : intarr(1,:)=dtsets(:)%vpq_mesh_fact
1518 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'vpq_mesh_fact','INT',0)
1519 :
1520 29974 : dprarr(1,:)=dtsets(:)%vpq_mix_fact
1521 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'vpq_mix_fact','DPR',0)
1522 :
1523 29974 : dprarr(1,:)=dtsets(:)%vpq_tolgrs
1524 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'vpq_tolgrs','DPR',0)
1525 :
1526 29974 : intarr(1,:)=dtsets(:)%vpq_trvec(1)
1527 29974 : intarr(2,:)=dtsets(:)%vpq_trvec(2)
1528 29974 : intarr(3,:)=dtsets(:)%vpq_trvec(3)
1529 4522 : call prttagm(dprarr,intarr,iout,jdtset_,3,marr,3,narrm,ncid,ndtset_alloc,'vpq_trvec','INT',0)
1530 :
1531 29974 : dprarr(1,:)=dtsets(:)%vpq_gpr_energy(1)
1532 29974 : dprarr(2,:)=dtsets(:)%vpq_gpr_energy(2)
1533 4522 : call prttagm(dprarr,intarr,iout,jdtset_,3,marr,2,narrm,ncid,ndtset_alloc,'vpq_gpr_energy','DPR',0)
1534 :
1535 29974 : dprarr(1,:)=dtsets(:)%vpq_gpr_length(1)
1536 29974 : dprarr(2,:)=dtsets(:)%vpq_gpr_length(2)
1537 29974 : dprarr(3,:)=dtsets(:)%vpq_gpr_length(3)
1538 4522 : call prttagm(dprarr,intarr,iout,jdtset_,3,marr,3,narrm,ncid,ndtset_alloc,'vpq_gpr_length','DPR',0)
1539 :
1540 29974 : dprarr(1,:)=dtsets(:)%vcutgeo(1)
1541 29974 : dprarr(2,:)=dtsets(:)%vcutgeo(2)
1542 29974 : dprarr(3,:)=dtsets(:)%vcutgeo(3)
1543 4522 : 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 29974 : intarr(1,:)=dtsets(:)%wfinit
1549 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'wfinit','INT',0)
1550 :
1551 29974 : dprarr(1,:)=dtsets(:)%wfmix
1552 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'wfmix','DPR',0)
1553 :
1554 29974 : intarr(1,0:ndtset_alloc)=dtsets(0:ndtset_alloc)%wfk_task
1555 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'wfk_task','INT',0)
1556 :
1557 29974 : intarr(1,0:ndtset_alloc)=dtsets(0:ndtset_alloc)%wfoptalg
1558 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'wfoptalg','INT',0,firstchar=firstchar_gpu)
1559 :
1560 : !wtatcon
1561 4522 : narr=3*natom*dtsets(1)%nconeq ! default size for all datasets
1562 29974 : do idtset=0,ndtset_alloc ! specific size for each dataset
1563 29974 : if(idtset/=0)then
1564 20930 : narrm(idtset)=3*dtsets(idtset)%natom*dtsets(idtset)%nconeq
1565 20930 : 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 4522 : narrm(idtset)=3*mxvals%natom*mxvals%nconeq
1570 4522 : 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 4522 : multivals%natom+multivals%nconeq)
1578 :
1579 : !wtk
1580 4522 : if (allocated(dtsets(0)%wtk)) then
1581 4028808 : tnkpt=0
1582 4028808 : dprarr(:,0)=1
1583 4434 : narr=dtsets(1)%nkpt ! default size for all datasets
1584 4434 : if(prtvol_glob==0 .and. narr>nkpt_max)then
1585 190 : narr=nkpt_max
1586 190 : tnkpt=1
1587 : end if
1588 25106 : do idtset=1,ndtset_alloc ! specific size for each dataset
1589 20672 : narrm(idtset)=dtsets(idtset)%nkpt
1590 371694 : if (narrm(idtset)>0) dprarr(1:narrm(idtset),idtset)=dtsets(idtset)%wtk(1:narrm(idtset))+tol12
1591 :
1592 25106 : 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 4434 : call prttagm(dprarr,intarr,iout,jdtset_,4,marr,narr,narrm,ncid,ndtset_alloc,'wtk','DPR',multivals%nkpt)
1598 4434 : 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 29974 : 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 25452 : 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 56646 : prtimg(:,:)=1
1629 29974 : do idtset=0,ndtset_alloc
1630 25452 : if(idtset/=0)then
1631 20930 : size1=dtsets(idtset)%natom
1632 : else
1633 4522 : size1=mxvals%natom
1634 : end if
1635 25452 : narrm(idtset)=3*size1
1636 56178 : do iimage=1,nimagem(idtset)
1637 51656 : if (narrm(idtset)>0) then
1638 52408 : 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 4522 : & mxvals%nimage,nimagem,ndtset,prtimg,strimg)
1645 :
1646 : !xcart
1647 56646 : prtimg(:,:)=1
1648 29974 : do idtset=0,ndtset_alloc
1649 25452 : if(idtset/=0)then
1650 20930 : size1=dtsets(idtset)%natom
1651 : else
1652 4522 : size1=mxvals%natom
1653 : end if
1654 25452 : narrm(idtset)=3*size1
1655 56178 : do iimage=1,nimagem(idtset)
1656 51656 : if (narrm(idtset)>0) then
1657 52408 : 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 4522 : & mxvals%nimage,nimagem,ndtset,prtimg,strimg)
1664 :
1665 29974 : dprarr(1,:)=dtsets(:)%xc_denpos
1666 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'xc_denpos','DPR',0)
1667 :
1668 59712 : 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 29974 : dprarr(1,:)=dtsets(:)%xc_tb09_c
1674 4522 : call prttagm(dprarr,intarr,iout,jdtset_,1,marr,1,narrm,ncid,ndtset_alloc,'xc_tb09_c','DPR',0)
1675 :
1676 29974 : intarr(1,:)=dtsets(:)%x1rdm
1677 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'x1rdm','INT',0)
1678 :
1679 29974 : intarr(1,:)=dtsets(:)%xg_nonlop_option
1680 4522 : call prttagm(dprarr,intarr,iout,jdtset_,2,marr,1,narrm,ncid,ndtset_alloc,'xg_nonlop_option','INT',0)
1681 :
1682 : !xred
1683 56646 : prtimg(:,:)=1
1684 29974 : do idtset=0,ndtset_alloc
1685 25452 : if(idtset/=0)then
1686 20930 : size2=dtsets(idtset)%natom
1687 : else
1688 4522 : size2=mxvals%natom
1689 : end if
1690 25452 : narrm(idtset)=3*size2
1691 56178 : do iimage=1,nimagem(idtset)
1692 51656 : if (narrm(idtset)>0) then
1693 : dprarr_images(1:narrm(idtset),iimage,idtset)=&
1694 52408 : & 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 4522 : & mxvals%nimage,nimagem,ndtset,prtimg,strimg,forceprint=2)
1700 :
1701 : !xredsph_extra
1702 29974 : do idtset=0,ndtset_alloc
1703 25452 : if(idtset/=0)then
1704 20930 : size2=dtsets(idtset)%natsph_extra
1705 : else
1706 : size2=0
1707 : end if
1708 25452 : narrm(idtset)=3*size2
1709 29974 : 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 4522 : 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 29974 : dprarr(1,:)=dtsets(:)%zcut
1725 4522 : 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 29974 : 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 29974 : do idtset=0,ndtset_alloc
1742 62234 : dprarr(1:npsp,idtset)=dtsets(idtset)%znucl(1:npsp)
1743 : end do
1744 4522 : call prttagm(dprarr,intarr,iout,jdtset_,4,marr,npsp,narrm,ncid,ndtset_alloc,'znucl','DPR',0,forceprint=2)
1745 :
1746 29974 : intarr(1,:)=dtsets(:)%zora
1747 4522 : 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 4522 : ABI_FREE(dprarr)
1753 4522 : ABI_FREE(intarr)
1754 4522 : ABI_FREE(narrm)
1755 4522 : ABI_FREE(nimagem)
1756 4522 : ABI_FREE(dprarr_images)
1757 4522 : ABI_FREE(prtimg)
1758 4522 : ABI_FREE(xangst_)
1759 4522 : 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 4522 : 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 4522 : logical, allocatable :: test_multiimages(:)
1814 : character(len=4) :: append
1815 : character(len=16) :: keywd
1816 : character(len=500) :: message
1817 : ! *************************************************************************
1818 :
1819 4522 : 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 4522 : 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 4522 : multi_occopt=0
1832 4522 : if(ndtset_alloc>1)then
1833 22532 : do idtset=1,ndtset_alloc
1834 41662 : if(dtsets(1)%occopt/=dtsets(idtset)%occopt .and. dtsets(idtset)%iscf/=-2 )multi_occopt=1
1835 : end do
1836 : end if
1837 :
1838 4522 : 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 4522 : multi_nkpt=0
1846 4522 : if(ndtset_alloc>1)then
1847 22532 : do idtset=1,ndtset_alloc
1848 39362 : if(dtsets(1)%nkpt/=dtsets(idtset)%nkpt .and. dtsets(idtset)%iscf/=-2 )multi_nkpt=1
1849 : end do
1850 : end if
1851 4522 : if(multi_nkpt==0)nkpt=dtsets(1)%nkpt
1852 :
1853 4522 : multi_nsppol=0
1854 4522 : if(ndtset_alloc>1)then
1855 22532 : do idtset=1,ndtset_alloc
1856 41710 : if(dtsets(1)%nsppol/=dtsets(idtset)%nsppol .and. dtsets(idtset)%iscf/=-2 )multi_nsppol=1
1857 : end do
1858 : end if
1859 :
1860 4522 : if(multi_nsppol==0 .and. multi_nkpt==0)then
1861 3534 : multi_nband=0
1862 3534 : if(ndtset_alloc>1)then
1863 16608 : do idtset=1,ndtset_alloc
1864 16608 : if(dtsets(idtset)%iscf/=-2)then
1865 101220 : do ikpsp=1,dtsets(1)%nkpt*dtsets(1)%nsppol
1866 101220 : 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 4522 : multi_nimage=0
1876 4522 : if(ndtset_alloc>1)then
1877 22532 : do idtset=1,ndtset_alloc
1878 41982 : 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 13566 : ABI_MALLOC(test_multiimages,(0:ndtset_alloc))
1890 29974 : test_multiimages=.false.
1891 25452 : do idtset=1,ndtset_alloc
1892 25452 : 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 4522 : 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 4522 : multi=1
1914 25424 : if(multi_occopt==0 .and. multi_nband==0 .and. (multi_nimage==0 .or. .not. any(test_multiimages(1:ndtset_alloc)))) then
1915 56136 : nban=sum(dtsets(1)%nband(1:dtsets(1)%nsppol*dtsets(1)%nkpt))
1916 3134 : multi=0
1917 3134 : if(ndtset_alloc>1)then
1918 12382 : do idtset=1,ndtset_alloc
1919 12382 : if(dtsets(idtset)%iscf/=-2)then
1920 : ! nban counts all bands and kpoints and spins: see above
1921 19840 : do iimage=1,nimagem(idtset)
1922 19840 : if(iimage==1 .or. test_multiimages(idtset))then
1923 745080 : 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 745600 : 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 4522 : generic=0
1945 4522 : print=0
1946 25452 : do idtset=1,ndtset_alloc
1947 25452 : if(dtsets(idtset)%iscf/=-2)then
1948 19182 : print=1
1949 19182 : 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 4522 : if(print==1 .and. multi==0)then
1957 : ! Might restrict the number of k points to be printed
1958 2908 : tnkpt=0
1959 2908 : nkpt_eff=dtsets(1)%nkpt
1960 2908 : if(prtvol_glob==0 .and. nkpt_eff>nkpt_max)then
1961 2908 : nkpt_eff=nkpt_max
1962 2908 : tnkpt=1
1963 : end if
1964 :
1965 : ! write(std_out,*)' prtocc : 6, do-loop over iimage '
1966 :
1967 6196 : do iimage=1,nimagem(generic)
1968 6196 : if(iimage==1 .or. test_multiimages(generic) )then
1969 2942 : keywd=token//trim(strimg(iimage))
1970 : ! The quantity of data to be output vary with occopt
1971 2942 : 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 1934 : nban=dtsets(generic)%nband(1)
1990 25572 : 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 1934 : 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 4522 : 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 4522 : ABI_FREE(test_multiimages)
2055 :
2056 4522 : end subroutine prtocc
2057 : !!***
2058 :
2059 : end subroutine outvar_o_z
2060 : !!***
2061 :
2062 : end module m_outvar_o_z
2063 : !!***
|