Line data Source code
1 : !--------------------------------------------------------------------------------------------------!
2 : ! CP2K: A general program to perform molecular dynamics simulations !
3 : ! Copyright 2000-2025 CP2K developers group <https://cp2k.org> !
4 : ! !
5 : ! SPDX-License-Identifier: GPL-2.0-or-later !
6 : !--------------------------------------------------------------------------------------------------!
7 :
8 : ! **************************************************************************************************
9 : !> \par History
10 : !> none
11 : !> \author APSI & CJM & JGH
12 : ! **************************************************************************************************
13 : MODULE header
14 : USE cp2k_info, ONLY: r_cwd,&
15 : r_datx,&
16 : r_host_name,&
17 : r_pid,&
18 : r_user_name
19 : USE kinds, ONLY: default_path_length
20 : #include "./base/base_uses.f90"
21 :
22 : IMPLICIT NONE
23 :
24 : PRIVATE
25 : PUBLIC :: cp2k_header, cp2k_footer, vib_header
26 : PUBLIC :: fist_header, se_header, dftb_header, qs_header, tddfpt_header
27 : PUBLIC :: qmmm_header, atom_header, atom_footer, band_header, xtb_header, tblite_header
28 : PUBLIC :: tmc_header, tmc_ana_header
29 : PUBLIC :: sirius_header
30 : PUBLIC :: tddfpt_soc_header
31 :
32 : CONTAINS
33 :
34 : ! **************************************************************************************************
35 : !> \brief ...
36 : !> \param iw ...
37 : !> \param wdir ...
38 : ! **************************************************************************************************
39 9755 : SUBROUTINE cp2k_header(iw, wdir)
40 : INTEGER, INTENT(IN) :: iw
41 : CHARACTER(LEN=default_path_length), OPTIONAL :: wdir
42 :
43 : CHARACTER(LEN=default_path_length) :: cwd
44 : INTEGER :: l
45 :
46 9755 : IF (iw < 0) RETURN
47 4981 : cwd = r_cwd
48 4981 : IF (PRESENT(wdir)) cwd = wdir
49 : WRITE (UNIT=iw, &
50 : FMT="(/,A,T55,A26,/,A,T51,A30,/,A,T51,A30,/,A,T71,I10)") &
51 4981 : " **** **** ****** ** PROGRAM STARTED AT ", ADJUSTR(r_datx), &
52 4981 : " ***** ** *** *** ** PROGRAM STARTED ON ", ADJUSTR(r_host_name(1:30)), &
53 4981 : " ** **** ****** PROGRAM STARTED BY ", ADJUSTR(r_user_name(1:30)), &
54 9962 : " ***** ** ** ** ** PROGRAM PROCESS ID ", r_pid
55 : WRITE (UNIT=iw, FMT="(A,T44,A37)") &
56 4981 : " **** ** ******* ** PROGRAM STARTED IN ", ADJUSTR(cwd(1:37))
57 14902 : DO l = 38, LEN_TRIM(cwd), 37
58 14902 : WRITE (UNIT=iw, FMT="(T44,A)") cwd(l:MIN(LEN_TRIM(cwd), l + 36))
59 : END DO
60 :
61 : END SUBROUTINE cp2k_header
62 :
63 : ! **************************************************************************************************
64 : !> \brief ...
65 : !> \param iw ...
66 : !> \param wdir ...
67 : ! **************************************************************************************************
68 5015 : SUBROUTINE cp2k_footer(iw, wdir)
69 : INTEGER, INTENT(IN) :: iw
70 : CHARACTER(LEN=default_path_length), OPTIONAL :: wdir
71 :
72 : CHARACTER(LEN=default_path_length) :: cwd
73 : INTEGER :: l
74 :
75 5015 : IF (iw < 0) RETURN
76 5014 : cwd = r_cwd
77 5014 : IF (PRESENT(wdir)) cwd = wdir
78 : WRITE (UNIT=iw, &
79 : FMT="(A,T55,A26,/,A,T51,A30,/,A,T51,A30,/,A,T71,I10)") &
80 5014 : " **** **** ****** ** PROGRAM ENDED AT ", ADJUSTR(r_datx), &
81 5014 : " ***** ** *** *** ** PROGRAM RAN ON ", ADJUSTR(r_host_name(1:30)), &
82 5014 : " ** **** ****** PROGRAM RAN BY ", ADJUSTR(r_user_name(1:30)), &
83 10028 : " ***** ** ** ** ** PROGRAM PROCESS ID ", r_pid
84 : WRITE (UNIT=iw, FMT="(A,T44,A37)") &
85 5014 : " **** ** ******* ** PROGRAM STOPPED IN ", ADJUSTR(cwd(1:37))
86 15001 : DO l = 38, LEN_TRIM(cwd), 37
87 15001 : WRITE (UNIT=iw, FMT="(T44,A)") cwd(l:MIN(LEN_TRIM(cwd), l + 36))
88 : END DO
89 : END SUBROUTINE cp2k_footer
90 :
91 : ! **************************************************************************************************
92 : !> \brief ...
93 : !> \param iw ...
94 : ! **************************************************************************************************
95 394 : SUBROUTINE qmmm_header(iw)
96 : INTEGER, INTENT(in) :: iw
97 :
98 394 : IF (iw < 0) RETURN
99 : WRITE (iw, '(/,(T2,A79))') &
100 199 : "*******************************************************************************", &
101 199 : "*******************************************************************************", &
102 199 : "** **", &
103 199 : "** ####### ## ## ## ## ## ## **", &
104 199 : "** ## ## ### ### ### ### ### ### **", &
105 199 : "** ## ## #### #### #### #### #### #### **", &
106 199 : "** ## ## ## ### ## ## ### ## ## ### ## **", &
107 199 : "** ## ## ## ## ## ## ## ## ## **", &
108 199 : "** ## ## ## ## ## ## ## ## T.Laino and F.Mohamed **", &
109 199 : "** ##### ## ## ## ## ## ## ## 2005 - 2015 **", &
110 199 : "** **", &
111 199 : "** Calculation Started.. **", &
112 199 : "*******************************************************************************", &
113 398 : "*******************************************************************************"
114 :
115 : END SUBROUTINE qmmm_header
116 :
117 : ! **************************************************************************************************
118 : !> \brief ...
119 : !> \param iw ...
120 : ! **************************************************************************************************
121 1066 : SUBROUTINE tddfpt_header(iw)
122 : INTEGER, INTENT(in) :: iw
123 :
124 1066 : IF (iw < 0) RETURN
125 : WRITE (iw, '(/,(T2,A79))') &
126 533 : "*******************************************************************************", &
127 533 : "** **", &
128 533 : "** ######## ####### ####### ######## ####### ######## **", &
129 533 : "** ## ## ## ## ## ## ## ## ## **", &
130 533 : "** ## ## ## ## ## ###### ####### ## **", &
131 533 : "** ## ## ## ## ## ## ## ## **", &
132 533 : "** ## ####### ####### ## ## ## **", &
133 533 : "** **", &
134 1066 : "*******************************************************************************"
135 :
136 : END SUBROUTINE tddfpt_header
137 :
138 : ! **************************************************************************************************
139 : !> \brief ...
140 : !> \param iw ...
141 : ! **************************************************************************************************
142 8 : SUBROUTINE tddfpt_soc_header(iw)
143 : INTEGER, INTENT(in) :: iw
144 :
145 8 : IF (iw < 0) RETURN
146 : WRITE (iw, '(/,(T2,A79))') &
147 4 : "*******************************************************************************", &
148 4 : "** **", &
149 4 : "** ####### ####### ####### **", &
150 4 : "** # ## ## ## ## **", &
151 4 : "** ### ###### ## ## ## **", &
152 4 : "** # ## ## ## ## **", &
153 4 : "** ###### ####### ####### **", &
154 4 : "** Based on the xas module from Augustin Bussy **", &
155 8 : "*******************************************************************************"
156 :
157 : END SUBROUTINE tddfpt_soc_header
158 :
159 : ! **************************************************************************************************
160 : !> \brief ...
161 : !> \param iw ...
162 : ! **************************************************************************************************
163 2643 : SUBROUTINE fist_header(iw)
164 : INTEGER, INTENT(in) :: iw
165 :
166 2643 : IF (iw > 0) THEN
167 1435 : WRITE (iw, '( / )')
168 : WRITE (iw, '( 14(20x,a,/) )') &
169 1435 : ' ************* ******** *********** ', &
170 1435 : ' ************* ********************** ', &
171 1435 : ' **** **** **** *********** ', &
172 1435 : ' ******** **** ******* **** ', &
173 1435 : ' ******* **** ******* **** ', &
174 1435 : ' **** **** **** **** ', &
175 1435 : ' **** **** ********** **** ', &
176 1435 : ' **** **** ******** **** ', &
177 1435 : ' FRONTIERS IN SIMULATION TECHNOLOGY ', &
178 1435 : ' ', &
179 1435 : ' C.J. Mundy, S. Balasubramanian, ', &
180 1435 : ' Ken Bagchi, J. Hutter, Ari Seitsonen ', &
181 1435 : ' IFW Kuo, T. Laino, J. VandeVondele ', &
182 1435 : ' Version 1.0 ', &
183 2870 : ' '
184 : END IF
185 :
186 2643 : END SUBROUTINE fist_header
187 :
188 : ! **************************************************************************************************
189 : !> \brief ...
190 : !> \param iw ...
191 : ! **************************************************************************************************
192 222 : SUBROUTINE dftb_header(iw)
193 : INTEGER, INTENT(in) :: iw
194 :
195 222 : IF (iw < 0) RETURN
196 111 : WRITE (iw, '( / )')
197 : WRITE (iw, '( 11(12x,a,/) )') &
198 111 : ' ##### ##### # ###### ####### ####### ###### ', &
199 111 : ' # # # # # # # # # # # ', &
200 111 : ' # # # # # # # # # # ', &
201 111 : ' # # ##### # # # ##### # ###### ', &
202 111 : ' # # # # # # # # # # # ', &
203 111 : ' # # # # # # # # # # # ', &
204 111 : ' #### # ##### # ###### # # ###### ', &
205 111 : ' ', &
206 111 : ' Version 0.2 ', &
207 111 : ' J. Hutter and T. Heine ', &
208 222 : ' '
209 : END SUBROUTINE dftb_header
210 :
211 : ! **************************************************************************************************
212 : !> \brief ...
213 : !> \param iw ...
214 : !> \param gfn_type ...
215 : ! **************************************************************************************************
216 936 : SUBROUTINE xtb_header(iw, gfn_type)
217 : INTEGER, INTENT(in) :: iw, gfn_type
218 :
219 936 : IF (iw < 0) RETURN
220 473 : WRITE (iw, '( / )')
221 : WRITE (iw, '( 7(16x,a,/) )') &
222 473 : ' ##### ##### # ####### ###### ', &
223 473 : ' # # # # # # # # ', &
224 473 : ' # # # # ## ## # # # ', &
225 473 : ' # # ##### # ## ## # ###### ', &
226 473 : ' # # # # # ### # # # ', &
227 473 : ' # # # # # ## ## # # # ', &
228 946 : ' #### # ##### # ## ## # ###### '
229 :
230 808 : SELECT CASE (gfn_type)
231 : CASE (0)
232 335 : WRITE (iw, '( 34x,a )') ' GFN0-xTB '
233 : CASE (1)
234 138 : WRITE (iw, '( 34x,a )') ' GFN1-xTB '
235 : CASE (2)
236 473 : WRITE (iw, '( 34x,a )') ' GFN2-xTB '
237 : CASE DEFAULT
238 : END SELECT
239 :
240 : WRITE (iw, '( 2(16x,a,/) )') &
241 473 : ' Version 1.1 ', &
242 946 : ' J. Hutter and A. Hehn '
243 :
244 : END SUBROUTINE xtb_header
245 :
246 : ! **************************************************************************************************
247 : !> \brief ...
248 : !> \param iw ...
249 : !> \param tb_type ...
250 : ! **************************************************************************************************
251 0 : SUBROUTINE tblite_header(iw, tb_type)
252 : INTEGER, INTENT(in) :: iw, tb_type
253 :
254 0 : IF (iw < 0) RETURN
255 0 : WRITE (iw, '( / )')
256 : WRITE (iw, '( 7(16x,a,/) )') &
257 0 : ' ##### ##### # # # # # ', &
258 0 : ' # # # # # ##### # # # ##### #### ', &
259 0 : ' # # # # # ### # # # # ', &
260 0 : ' # # ##### # # # # # # # ###### ', &
261 0 : ' # # # # # # # # # # # # ', &
262 0 : ' # # # # # # # # # # # # # # ', &
263 0 : ' #### # ##### # # ### ## # # ### '
264 :
265 0 : SELECT CASE (tb_type)
266 : CASE (1)
267 0 : WRITE (iw, '( 34x,a )') ' GFN1-xTB '
268 : CASE (2)
269 0 : WRITE (iw, '( 34x,a )') ' GFN2-xTB '
270 : CASE (3)
271 0 : WRITE (iw, '( 34x,a )') ' IPEA1-xTB '
272 : CASE DEFAULT
273 : END SELECT
274 :
275 : WRITE (iw, '( 2(16x,a,/) )') &
276 0 : ' Version 0.0 ', &
277 0 : ' Johann V. Pototschnig '
278 :
279 : END SUBROUTINE tblite_header
280 :
281 : ! **************************************************************************************************
282 : !> \brief ...
283 : !> \param iw ...
284 : ! **************************************************************************************************
285 998 : SUBROUTINE se_header(iw)
286 : INTEGER, INTENT(in) :: iw
287 :
288 998 : IF (iw < 0) RETURN
289 500 : WRITE (iw, '( / )')
290 : WRITE (iw, '( 12(12x,a,/) )') &
291 500 : ' ##### ##### # # # ###### ###### ##### ', &
292 500 : ' # # # # # ## # # # # # # # ', &
293 500 : ' # # # # # # # # # # # # # ', &
294 500 : ' # # ##### # # # # # # # # # # ', &
295 500 : ' # # # # # # # # # # # # # # ', &
296 500 : ' # # # # # # ## # # # # # # ', &
297 500 : ' #### # ##### # # # ###### ###### ##### ', &
298 500 : ' ', &
299 500 : ' T. Laino and J. Hutter ', &
300 500 : ' ', &
301 1000 : ' 2008 - 2015 '
302 :
303 : END SUBROUTINE se_header
304 :
305 : ! **************************************************************************************************
306 : !> \brief ...
307 : !> \param iw ...
308 : ! **************************************************************************************************
309 5162 : SUBROUTINE qs_header(iw)
310 : INTEGER, INTENT(IN) :: iw
311 :
312 5162 : IF (iw < 0) RETURN
313 : WRITE (UNIT=iw, FMT="(/,(T2,A79))") &
314 2606 : "*******************************************************************************", &
315 2606 : "*******************************************************************************", &
316 2606 : "** **", &
317 2606 : "** ##### ## ## **", &
318 2606 : "** ## ## ## ## ## **", &
319 2606 : "** ## ## ## ###### **", &
320 2606 : "** ## ## ## ## ## ##### ## ## #### ## ##### ##### **", &
321 2606 : "** ## ## ## ## ## ## ## ## ## ## ## ## ## ## **", &
322 2606 : "** ## ## ## ## ## ## ## #### ### ## ###### ###### **", &
323 2606 : "** ## ### ## ## ## ## ## ## ## ## ## ## **", &
324 2606 : "** ####### ##### ## ##### ## ## #### ## ##### ## **", &
325 2606 : "** ## ## **", &
326 2606 : "** **", &
327 2606 : "** ... make the atoms dance **", &
328 2606 : "** **", &
329 2606 : "** Copyright (C) by CP2K developers group (2000-2025) **", &
330 2606 : "** J. Chem. Phys. 152, 194103 (2020) **", &
331 2606 : "** **", &
332 5212 : "*******************************************************************************"
333 : END SUBROUTINE qs_header
334 :
335 : ! **************************************************************************************************
336 : !> \brief ...
337 : !> \param iw ...
338 : ! **************************************************************************************************
339 360 : SUBROUTINE atom_header(iw)
340 : INTEGER, INTENT(IN) :: iw
341 :
342 360 : IF (iw < 0) RETURN
343 180 : WRITE (iw, '( / )')
344 : WRITE (iw, '( 14(25x,a,/) )') &
345 180 : ' **** ****** **** **** ', &
346 180 : ' ** ** ****** ** ** ****** ', &
347 180 : ' ****** ** ** ** ** ** ', &
348 180 : ' ** ** ** **** ** ** ', &
349 180 : ' ', &
350 180 : ' University of Zurich ', &
351 180 : ' 2009 - 2015 ', &
352 180 : ' ', &
353 180 : ' Version 0.0 ', &
354 360 : ' '
355 : END SUBROUTINE atom_header
356 :
357 : ! **************************************************************************************************
358 : !> \brief ...
359 : !> \param iw ...
360 : ! **************************************************************************************************
361 360 : SUBROUTINE atom_footer(iw)
362 : INTEGER, INTENT(IN) :: iw
363 :
364 360 : IF (iw < 0) RETURN
365 180 : WRITE (iw, '( / )')
366 : WRITE (iw, '( 14(25x,a,/) )') &
367 180 : ' NORMAL TERMINATION OF ', &
368 180 : ' ', &
369 180 : ' **** ****** **** **** ', &
370 180 : ' ** ** ****** ** ** ****** ', &
371 180 : ' ****** ** ** ** ** ** ', &
372 360 : ' ** ** ** **** ** ** '
373 :
374 : END SUBROUTINE atom_footer
375 :
376 : ! **************************************************************************************************
377 : !> \brief ...
378 : !> \param iw ...
379 : !> \param ni ...
380 : !> \param nr ...
381 : !> \param np ...
382 : ! **************************************************************************************************
383 34 : SUBROUTINE band_header(iw, ni, nr, np)
384 : INTEGER, INTENT(IN) :: iw, ni, nr, np
385 :
386 34 : IF (iw < 0) RETURN
387 : WRITE (UNIT=iw, FMT="(/,(T2,A79))") &
388 17 : "*******************************************************************************", &
389 17 : "*******************************************************************************", &
390 17 : "** **", &
391 17 : "** ######## ### ## ## ######## Nudged Elastic Band Method **", &
392 17 : "** ## ## ## ## ### ## ## ## String Method **", &
393 34 : "** ## ## ## ## #### ## ## ## **"
394 : WRITE (UNIT=iw, FMT="(T2,A,T73,I5,1X,A)") &
395 17 : "** ######## ## ## ## ## ## ## ## Number of Images :", ni, "**", &
396 17 : "** ## ## ######### ## #### ## ## Number of Replicas:", nr, "**", &
397 34 : "** ## ## ## ## ## ### ## ## Number of Procs/Rep:", np, "**"
398 : WRITE (UNIT=iw, FMT="(T2,A79)") &
399 17 : "** ######## ## ## ## ## ######## **", &
400 17 : "** T. Laino 2009 - 2015 **", &
401 34 : "*******************************************************************************"
402 : WRITE (UNIT=iw, FMT="(T2,A79,/)") &
403 17 : "*******************************************************************************"
404 :
405 : END SUBROUTINE band_header
406 :
407 : ! **************************************************************************************************
408 : !> \brief ...
409 : !> \param iw ...
410 : !> \param nr ...
411 : !> \param np ...
412 : ! **************************************************************************************************
413 54 : SUBROUTINE vib_header(iw, nr, np)
414 : INTEGER, INTENT(IN) :: iw, nr, np
415 :
416 54 : IF (iw < 0) RETURN
417 : WRITE (UNIT=iw, FMT="(/,(T2,A79))") &
418 27 : "*******************************************************************************", &
419 27 : "*******************************************************************************", &
420 27 : "** **", &
421 27 : "** # # # # # # ## **", &
422 27 : "** # # ### # ## ### #### ## # # ### # **", &
423 27 : "** # # # # # ## # # # # # # ## # # # # **", &
424 27 : "** ## # # # # # ## # # # # # # # ## # **", &
425 27 : "** ## # ### # # # ## # ## # # # # ### **", &
426 27 : "** **", &
427 27 : "** ## ## # **", &
428 27 : "** # # # # ### # # # ### ### **", &
429 54 : "** # # ## # # # # # # ## # ## **"
430 : WRITE (UNIT=iw, FMT="(T2,A,T73,I5,1X,A)") &
431 27 : "** #### # # # ## # ### ## # ## N. Replicas:", nr, "**", &
432 54 : "** # # # # # # ### # ### # ### N. Procs/Rep:", np, "**"
433 : WRITE (UNIT=iw, FMT="(T2,A79)") &
434 27 : "** ## **", &
435 27 : "** T. Laino and F. Schiffmann **", &
436 27 : "** 2008 - 2015 **", &
437 54 : "*******************************************************************************"
438 : WRITE (UNIT=iw, FMT="(T2,A79,/)") &
439 27 : "*******************************************************************************"
440 :
441 : END SUBROUTINE vib_header
442 :
443 : ! **************************************************************************************************
444 : !> \brief ...
445 : !> \param iw ...
446 : ! **************************************************************************************************
447 16 : SUBROUTINE sirius_header(iw)
448 : INTEGER, INTENT(IN) :: iw
449 :
450 16 : IF (iw < 0) RETURN
451 : WRITE (UNIT=iw, FMT="(/,(T2,A79))") &
452 8 : "*******************************************************************************", &
453 8 : "*******************************************************************************", &
454 8 : "** **", &
455 8 : "** #### ## ## #### ##### ##### #### ## #### ## ## ## #### **", &
456 8 : "** ## #### ## ## ## ### ##### ## ## ## # ## ## ## ## **", &
457 8 : "** #### ## # ## ## ## ##### ### ##### ## #### ## ## ## ##### **", &
458 8 : "** ## ####### ## ## ## ### ## ## ## # ## ##### ## **", &
459 8 : "** ## ## # ## #### ## ### #### ## ## # ## ##### #### **", &
460 8 : "** **", &
461 8 : "** SIRIUS: Domain specific library for electronic structure calculations **", &
462 8 : "** **", &
463 16 : "*******************************************************************************"
464 : END SUBROUTINE sirius_header
465 :
466 : ! **************************************************************************************************
467 : !> \brief ...
468 : !> \param iw ...
469 : ! **************************************************************************************************
470 14 : SUBROUTINE tmc_header(iw)
471 : INTEGER, INTENT(IN) :: iw
472 :
473 14 : IF (iw < 0) RETURN
474 : WRITE (UNIT=iw, FMT="(/,(T2,A79))") &
475 14 : "*******************************************************************************", &
476 14 : "*******************************************************************************", &
477 14 : "** **", &
478 14 : "** ########### ### ### ###### **", &
479 14 : "** ### #### #### ### **", &
480 14 : "** ### ### # # ### ### **", &
481 14 : "** ### ### # ### ### **", &
482 14 : "** ### ### ### ###### **", &
483 14 : "** TreeMonteCarlo Mandes Schoenherr **", &
484 14 : "** 2009 - 2015 **", &
485 14 : "*******************************************************************************", &
486 28 : "*******************************************************************************"
487 : END SUBROUTINE tmc_header
488 :
489 : ! **************************************************************************************************
490 : !> \brief ...
491 : !> \param iw ...
492 : ! **************************************************************************************************
493 6 : SUBROUTINE tmc_ana_header(iw)
494 : INTEGER, INTENT(IN) :: iw
495 :
496 6 : IF (iw < 0) RETURN
497 : WRITE (UNIT=iw, FMT="(/,(T2,A79))") &
498 6 : "*******************************************************************************", &
499 6 : "*******************************************************************************", &
500 6 : "** **", &
501 6 : "** ########### ### ### ###### ## ### ## ## **", &
502 6 : "** ### #### #### ### #### #### ## #### **", &
503 6 : "** ### ### # # ### ### ## ## ## ## ## ## ## **", &
504 6 : "** ### ### # ### ### ###### ## #### ###### **", &
505 6 : "** ### ### ### ###### ## ## ## ### ## ## **", &
506 6 : "** Trajectory analyzer for TreeMonteCarlo ensembles Mandes Schoenherr **", &
507 6 : "** 2013 - 2015 **", &
508 6 : "*******************************************************************************", &
509 12 : "*******************************************************************************"
510 : END SUBROUTINE tmc_ana_header
511 : END MODULE header
512 :
|