LCOV - code coverage report
Current view: top level - src/45_geomoptim - m_ga.F90 (source / functions) Coverage Total Hit
Test: coverage.info Lines: 90.9 % 22 20
Test Date: 2026-11-06 12:58:16 Functions: 60.0 % 5 3
Branches: 42.3 % 52 22

             Branch data     Line data    Source code
       1                 :             : !!****m* ABINIT/m_ga
       2                 :             : !! NAME
       3                 :             : !!  m_ga
       4                 :             : !!
       5                 :             : !! FUNCTION
       6                 :             : !!  This module provides several routines and datatypes for the
       7                 :             : !!  Genetic algorithm stochastic search implementation.
       8                 :             : !!
       9                 :             : !! COPYRIGHT
      10                 :             : !! Copyright (C) 2012-2026 ABINIT group (MT)
      11                 :             : !! This file is distributed under the terms of the
      12                 :             : !! GNU General Public License, see ~abinit/COPYING
      13                 :             : !! or http://www.gnu.org/copyleft/gpl.txt .
      14                 :             : !!
      15                 :             : !! SOURCE
      16                 :             : 
      17                 :             : #if defined HAVE_CONFIG_H
      18                 :             : #include "config.h"
      19                 :             : #endif
      20                 :             : 
      21                 :             : #include "abi_common.h"
      22                 :             : 
      23                 :             : MODULE m_ga
      24                 :             : 
      25                 :             :  use defs_basis
      26                 :             :  use m_errors
      27                 :             :  use m_abicore
      28                 :             :  use m_dtset
      29                 :             : 
      30                 :             :  implicit none
      31                 :             : 
      32                 :             :  private
      33                 :             : 
      34                 :             : !public procedures
      35                 :             :  public :: ga_init
      36                 :             :  public :: ga_destroy
      37                 :             :  public :: ga_nullify
      38                 :             : !!***
      39                 :             : 
      40                 :             : !!****t* m_ga/ga_type
      41                 :             : !! NAME
      42                 :             : !! ga_type
      43                 :             : !!
      44                 :             : !! FUNCTION
      45                 :             : !! Datatype with the variables required to perform GA random search
      46                 :             : !!
      47                 :             : !! NOTES
      48                 :             : !!
      49                 :             : !! SOURCE
      50                 :             : 
      51                 :             :  type,public :: ga_type
      52                 :             : ! Scalars
      53                 :             :   integer  :: ga_start     ! Starting iteration for the Genetic algorithm
      54                 :             :   integer  :: ga_n_rules   ! Number of genetic rules chosen by the user
      55                 :             :   integer  :: ga_fitness   ! Fitness function chosen by the user
      56                 :             :   integer  :: ga_algor     ! Genetic algorithm
      57                 :             :   real(dp) :: ga_opt_percent   ! Percentage of the population that passes from one iteration to the next
      58                 :             : ! Arrays same dimension as defined for the whole data input data structure
      59                 :             :   integer  :: ga_rules(30)         ! Genetic rules chosen by the user
      60                 :             :   integer,allocatable  :: ga_iatfix(:,:)  ! defined fixed atoms and directions
      61                 :             :  end type ga_type
      62                 :             : !!***
      63                 :             : 
      64                 :             : CONTAINS !===========================================================
      65                 :             : !!***
      66                 :             : 
      67                 :             : !!****f* m_ga/ga_init
      68                 :             : !! NAME
      69                 :             : !!  ga_init
      70                 :             : !!
      71                 :             : !! FUNCTION
      72                 :             : !!  Initialize a datastructure of type ga_type.
      73                 :             : !!
      74                 :             : !! INPUTS
      75                 :             : !!  dtset <type(dataset_type)>=all input variables in current dataset
      76                 :             : !!
      77                 :             : !! OUTPUT
      78                 :             : !!
      79                 :             : !! SIDE EFFECTS
      80                 :             : !!  ga_param=datastructure of type ga_type.
      81                 :             : !!            several parameters for Genetic Algorithm random search.
      82                 :             : !!
      83                 :             : !! SOURCE
      84                 :             : 
      85                 :        4010 : subroutine ga_init(dtset,ga_param)
      86                 :             : 
      87                 :             : !Arguments ------------------------------------
      88                 :             : !scalars
      89                 :             :  type(dataset_type),target,intent(in) :: dtset
      90                 :             :  type(ga_type),intent(inout) :: ga_param
      91                 :             : 
      92                 :             : !************************************************************************
      93                 :             : 
      94         [ +  + ]:        4010 :  if(dtset%imgmov==4)then
      95                 :           1 :    ga_param%ga_n_rules           = dtset%ga_n_rules
      96         [ +  + ]:          31 :    ga_param%ga_rules(:)          = dtset%ga_rules
      97                 :           1 :    ga_param%ga_fitness           = dtset%ga_fitness
      98                 :           1 :    ga_param%ga_opt_percent       = dtset%ga_opt_percent
      99                 :           1 :    ga_param%ga_algor             = dtset%ga_algor
     100   [ -  +  +  -  :           3 :    ABI_MALLOC(ga_param%ga_iatfix,(3,dtset%natom))
          +  -  +  -  -  
             +  -  +  -  
                      + ]
     101   [ +  -  +  -  :          34 :    ga_param%ga_iatfix            = dtset%iatfix
          -  +  -  -  -  
          -  -  -  +  +  
                   +  + ]
     102                 :             :  end if
     103                 :             : 
     104                 :        4010 : end subroutine ga_init
     105                 :             : !!***
     106                 :             : 
     107                 :             : !----------------------------------------------------------------------
     108                 :             : 
     109                 :             : !!****f* m_ga/ga_destroy
     110                 :             : !! NAME
     111                 :             : !!  ga_destroy
     112                 :             : !!
     113                 :             : !! FUNCTION
     114                 :             : !!  Destroy the content of a datastructure of type ga_type.
     115                 :             : !!
     116                 :             : !! INPUTS
     117                 :             : !!
     118                 :             : !! OUTPUT
     119                 :             : !!
     120                 :             : !! SIDE EFFECTS
     121                 :             : !!  ga_param=datastructure of type ga_type.
     122                 :             : !!            parameters for Genetic algorithm search.
     123                 :             : !!
     124                 :             : !! SOURCE
     125                 :             : 
     126                 :        4010 : subroutine ga_destroy(ga_param)
     127                 :             : 
     128                 :             : !Arguments ------------------------------------
     129                 :             : !scalars
     130                 :             :  type(ga_type),intent(inout) :: ga_param
     131                 :             : 
     132                 :             : !************************************************************************
     133                 :             : 
     134         [ +  + ]:        4010 :  if(allocated(ga_param%ga_iatfix))then
     135                 :           1 :    ABI_FREE(ga_param%ga_iatfix)
     136                 :             :  endif
     137                 :        4010 :  call ga_nullify(ga_param)
     138                 :             : 
     139                 :        4010 : end subroutine ga_destroy
     140                 :             : !!***
     141                 :             : 
     142                 :             : !----------------------------------------------------------------------
     143                 :             : 
     144                 :             : !!****f* m_ga/ga_nullify
     145                 :             : !! NAME
     146                 :             : !!  ga_nullify
     147                 :             : !!
     148                 :             : !! FUNCTION
     149                 :             : !!  Nullify the content of a datastructure of type ga_type.
     150                 :             : !!
     151                 :             : !! INPUTS
     152                 :             : !!
     153                 :             : !! OUTPUT
     154                 :             : !!
     155                 :             : !! SIDE EFFECTS
     156                 :             : !!  ga_param=datastructure of type ga_type.
     157                 :             : !!            several parameters for Genetic algorithm search.
     158                 :             : !!
     159                 :             : !! SOURCE
     160                 :             : 
     161                 :        4010 : subroutine ga_nullify(ga_param)
     162                 :             : 
     163                 :             : !Arguments ------------------------------------
     164                 :             : !scalars
     165                 :             :  type(ga_type),intent(inout) :: ga_param
     166                 :             : 
     167                 :             : !************************************************************************
     168                 :             : 
     169                 :        4010 :  ga_param%ga_start  = -1
     170                 :        4010 :  ga_param%ga_n_rules   = -1
     171                 :             : ! ga_param%ga_algor     = -1
     172                 :        4010 :  ga_param%ga_opt_percent  = zero
     173   [ +  +  -  - ]:      124310 :  ga_param%ga_rules(:) = -1
     174                 :             : 
     175                 :           0 : end subroutine ga_nullify
     176                 :             : !!***
     177                 :             : 
     178   [ #  #  #  #  :           0 : END MODULE m_ga
          #  #  #  #  #  
                #  #  # ]
     179                 :             : !!***
        

Generated by: LCOV version 2.3-1