LCOV - code coverage report
Current view: top level - src/78_effpot - m_multibinit_main.F90 (source / functions) Coverage Total Hit
Test: coverage.info Lines: 87.7 % 65 57
Test Date: 2026-09-20 15:27:41 Functions: 100.0 % 2 2

            Line data    Source code
       1              :   !!****m* ABINIT/m_multibinit_main2
       2              :   !! NAME
       3              :   !! m_multibinit_main2
       4              :   !!
       5              :   !! FUNCTION
       6              :   !! multibinit_main2 is the main function of multibinit. It runs after
       7              :   !! the filenames from files file is read. It then does everything else.
       8              :   !!
       9              :   !! Datatypes:
      10              :   !!
      11              :   !!
      12              :   !! Subroutines:
      13              :   !! multibinit_main2
      14              :   !!
      15              :   !!
      16              :   !! COPYRIGHT
      17              :   !! Copyright (C) 2001-2026 ABINIT group (hexu)
      18              :   !! This file is distributed under the terms of the
      19              :   !! GNU General Public License, see ~abinit/COPYING
      20              :   !! or http://www.gnu.org/copyleft/gpl.txt .
      21              :   !! For the initials of contributors, see ~abinit/doc/developers/contributors.txt .
      22              :   !!
      23              :   !! SOURCE
      24              : 
      25              : #if defined HAVE_CONFIG_H
      26              : #include "config.h"
      27              : #endif
      28              : 
      29              : #include "abi_common.h"
      30              : module m_multibinit_main2
      31              :   use defs_basis
      32              :   use defs_abitypes
      33              :   use m_xmpi
      34              :   use m_xomp
      35              :   use m_abicore
      36              :   use m_errors
      37              :   use m_build_info,         only: abinit_version, build_target
      38              :   use m_multibinit_manager, only: mb_manager_t
      39              : 
      40              :   implicit none
      41              : 
      42              :   !!***
      43              : contains
      44              : 
      45              :   !!****f* m_multibinit_main2/multibinit_main2
      46              :   !!
      47              :   !! NAME
      48              :   !! multibinit_main2
      49              :   !!
      50              :   !! FUNCTION
      51              :   !! The main function
      52              :   !!
      53              :   !! INPUTS
      54              :   !! filnam: file names from files file
      55              :   !!
      56              :   !! OUTPUT
      57              :   !!
      58              :   !! SOURCE
      59            6 :   subroutine multibinit_main2(input_path, filnam, dry_run)
      60              :     character(len=fnlen), intent(inout) :: input_path
      61              :     character(len=fnlen), intent(inout) :: filnam(18)
      62              :     integer, intent(in) :: dry_run
      63           18 :     type(mb_manager_t) :: manager
      64            6 :     call manager%run_all(input_path, filnam, dry_run)
      65            6 :   end subroutine multibinit_main2
      66              :   !!***
      67              : 
      68              : 
      69              : !!****f* m_multibinit_main/herald_multibinit
      70              : !! NAME
      71              : !!  herald_multibinit
      72              : !!
      73              : !! FUNCTION
      74              : !!  Prints out a message to unit iout giving info about current
      75              : !!  code, version of code, platform, and starting date.
      76              : !!  Modified from m_special_msg.F90/herald
      77              : !!
      78              : !! INPUTS
      79              : !!  code_name= code name
      80              : !!  code_version= code version
      81              : !!  iout=unit number for output
      82              : !!
      83              : !! OUTPUT
      84              : !!  (only writing)
      85              : !!
      86              : !! SOURCE
      87              : 
      88           98 : subroutine herald_multibinit(code_name,code_version,iout, lattmode)
      89              : 
      90              : !Arguments ------------------------------------
      91              :  integer,intent(in) :: iout
      92              :  character(len=*),intent(in) :: code_name
      93              :  character(len=*),intent(in) :: code_version
      94              :  logical, intent(in) :: lattmode ! 1 lattice, 0 other
      95              : 
      96              : !Local variables-------------------------------
      97              :  integer :: day,dd,ja,jy,jm,jdn,mm,mm_rel,year,year_rel
      98              :  integer :: values(8)
      99              :  character(len=5) :: strzone
     100              :  character(len=8) :: strdat
     101              :  character(len=10) :: strtime
     102              :  character(len=500) :: msg
     103              :  character(len=3),parameter :: day_names(7)=(/'Mon','Tue','Wed','Thu','Fri','Sat','Sun'/)
     104              :  character(len=3),parameter :: month_names(12)=(/'Jan','Feb','Mar','Apr','May','Jun',&
     105              :                                                  'Jul','Aug','Sep','Oct','Nov','Dec'/)
     106              : 
     107              : ! *************************************************************************
     108              : 
     109              : !RELEASE TIME FROM ABIRULES
     110           98 :  year_rel=2022
     111           98 :  mm_rel=07
     112              : !END OF RELEASE TIME
     113              : 
     114              :  write(iout, '(a,/,a,/,a,/,a)' ) &
     115           98 : '******************************************************************************************', &
     116           98 : '                                Welcome to MULTIBINIT,                         ', &
     117           98 : ' a software platform designed for the construction and use of second-principles models', &
     118          196 : '                   for lattice, spin and electron degrees of freedom.'
     119              : 
     120              : 
     121              : !The technique used hereafter is the only one that we have found to obtain
     122              : !perfect transferability across platforms and OS.
     123           98 :  write(iout, '(/,a,a,a,a,a)' ) '.Version ',trim(code_version),' of ',trim(code_name),' '
     124              : #if defined HAVE_MPI
     125           98 :  write(iout, '(a,a,a,/)' ) '.(MPI version, prepared for a ',build_target,' computer) '
     126              : #else
     127              :  write(iout, '(a,a,a,/)' ) '.(sequential version, prepared for a ',build_target,' computer) '
     128              : #endif
     129              : 
     130              : 
     131              : 
     132              : !GNU GPL license
     133              :  write(iout, '(a,/,a,a,a,/,a,/,a,/,a,/)' ) &
     134           98 :  '.Copyright (C) 1998-2026 ABINIT group . ',&
     135           98 :  ' ',trim(code_name),' comes with ABSOLUTELY NO WARRANTY.',&
     136           98 :  ' It is free software, and you are welcome to redistribute it',&
     137           98 :  ' under certain conditions (GNU General Public License,',&
     138          196 :  ' see ~abinit/COPYING or http://www.gnu.org/copyleft/gpl.txt).'
     139              : 
     140              : 
     141           98 : if(.not. lattmode) then
     142              :  write(iout, '(a,/,a,/,a,/,a,/,a,/)' ) &
     143           12 :  ' ABINIT is a project of the Universite Catholique de Louvain,',&
     144           12 :  ' Corning Inc. and other collaborators, see ~abinit/doc/developers/contributors.txt .',&
     145           12 :  ' Please read https://docs.abinit.org/theory/acknowledgments for suggested',&
     146           12 :  ' acknowledgments of the ABINIT effort.',&
     147           24 :  ' For more information, see https://www.abinit.org .'
     148              : endif
     149              : 
     150              :  write(iout, '(a,/,a,/)' ) &
     151           98 : ' MULTIBINIT is a software project of the University of Liege', &
     152          196 : ' (PHYTHEMA & NANOMAT groups), in collaboration with other partners.'
     153              : 
     154           98 :  if (lattmode) then
     155              :    write(iout, '(a,/,/,a,/,/,a,/, a,/,/, a,/, a,/, a,/,/, a,/,/, a/,/)' ) &
     156           86 : '-----------------------------------------------------------------------------------------', &
     157           86 : '                          MULTIBINIT - LATTICE MODELS                   ', &
     158           86 : ' Project initiated and coordinated by Philippe GHOSEZ and his group at ULiege', &
     159           86 : '   (Philippe.Ghosez@uliege.be).',  &
     160           86 : ' Main contributors: Alexandre MARTIN, Jordan BIEDER, Michael Marcus SCHMITT,', &
     161           86 : '   Louis BASTOGNE, Xu HE, Alireza SASANI, Huazhang ZHANG, Subhadeep BANDYOPADHYAY,', &
     162           86 : '   Philippe GHOSEZ.', &
     163           86 : ' Technical support: Xu HE (X.He@uliege.be)', &
     164          172 : '*****************************************************************************************'
     165              :  else
     166              :    write(iout, '(a,/)' ) &
     167           12 :    '*****************************************************************************************'
     168              :  end if
     169              : 
     170              : 
     171              : 
     172              : !Get year, month and day
     173           98 :  call date_and_time(strdat,strtime,strzone,values)
     174           98 :  year=values(1)
     175           98 :  mm=values(2)
     176           98 :  dd=values(3)
     177              : 
     178              : !Get day of the week
     179           98 :  if (mm.gt.2) then
     180           98 :    jy=year
     181           98 :    jm=mm+1
     182              :  else
     183            0 :    jy=year-1
     184            0 :    jm=mm+13
     185              :  end if
     186           98 :  jdn=int(365.25d0*jy)+int(30.6001d0*jm)+dd+1720995
     187           98 :  ja=int(0.01d0*jy)
     188           98 :  jdn=jdn+2-ja+int(quarter*ja)
     189           98 :  day=mod(jdn,7)+1
     190              : 
     191              : !Print date in nice format (* new format *)
     192              :  write(iout, '(/,a,a,1x,i2,1x,a,1x,i4,a,/,a,i2.2,a,i2.2,a)' ) &
     193           98 :  '.Starting date : ',day_names(day),dd,month_names(mm),year,'.','- ( at ',values(5),'h',values(6),' )'
     194           98 :  write(iout,*)' '
     195              : 
     196              : !Impose a maximal life cycle of 3 years
     197           98 :  if(year>year_rel+3 .or. (year==year_rel+3 .and. mm>mm_rel) ) then
     198              :    write(msg, '(5a,i4,5a)' )&
     199           98 :    '- The starting date is more than 3 years after the initial release',ch10,&
     200           98 :    '- of this version of ABINIT, namely ',month_names(mm_rel),' ',year_rel,'.',ch10,&
     201           98 :    '- This version of ABINIT is not supported anymore.',ch10,&
     202          196 :    '- Action: please, switch to a more recent version of ABINIT.'
     203           98 :    call wrtout(iout,msg,'COLL')
     204              : 
     205              : !  Gives a warning beyond 2 years
     206            0 :  else if(year>year_rel+2 .or. (year==year_rel+2 .and. mm>mm_rel) ) then
     207              :    write(msg, '(5a,i4,6a)' )&
     208            0 :    '- The starting date is more than 2 years after the initial release',ch10,&
     209            0 :    '- of this version of ABINIT, namely ',month_names(mm_rel),' ',year_rel,'.',ch10,&
     210            0 :    '- Note that the use beyond 3 years after the release will not be supported.',ch10,&
     211            0 :    '- Action: please, switch to a more recent version of ABINIT.',ch10
     212            0 :    call wrtout(iout,msg,'COLL')
     213              :  end if
     214              : 
     215           98 : end subroutine herald_multibinit
     216              : !!***
     217              : 
     218              : 
     219              : 
     220              : end module m_multibinit_main2
        

Generated by: LCOV version 2.3-1