Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Scientific Software
CrysFML
Commits
64a26563
Commit
64a26563
authored
Feb 14, 2022
by
juan rodriguez-carvajal
Browse files
Merge branch 'master' into testing-fpm
parents
a8a205f3
c33300ff
Pipeline
#12483
passed with stages
in 6 minutes and 35 seconds
Changes
402
Pipelines
1
Expand all
Hide whitespace changes
Inline
Side-by-side
.gitlab-ci.yml
View file @
64a26563
...
...
@@ -52,27 +52,6 @@ make:linux_ifort:
-
sci
-
ubuntu
make:linux_gfortran_F2008:
stage
:
make
script
:
-
docker build --force-rm -t ci_crysfml_xenial_gfortran_f2008 -f ${CI_PROJECT_DIR}/BuildServer/Docker/Dockerfile_xenial_gfortran_setup_F2008 .
-
docker build --force-rm --no-cache -t ci_crysfml_xenial_gfortran_build_f2008 -f ${CI_PROJECT_DIR}/BuildServer/Docker/Dockerfile_xenial_gfortran_build_F2008 --build-arg CI_COMMIT_SHORT_SHA=${CI_COMMIT_SHORT_SHA} --build-arg CI_COMMIT_REF_NAME=${CI_COMMIT_REF_NAME} .
-
docker run -i -v${PWD}:/artifacts/ ci_crysfml_xenial_gfortran_build_f2008
tags
:
-
docker
-
sci
-
ubuntu
make:linux_ifort_F2008:
stage
:
make
script
:
-
docker build --force-rm -t ci_crysfml_xenial_ifort -f ${CI_PROJECT_DIR}/BuildServer/Docker/Dockerfile_xenial_ifort_setup .
-
docker build --force-rm --no-cache -t ci_crysfml_xenial_ifort_build_f2008 -f ${CI_PROJECT_DIR}/BuildServer/Docker/Dockerfile_xenial_ifort_build_F2008 --build-arg CI_COMMIT_SHORT_SHA=${CI_COMMIT_SHORT_SHA} --build-arg CI_COMMIT_REF_NAME=${CI_COMMIT_REF_NAME} .
-
docker run -i -v${PWD}:/artifacts/ -v/users/ci/projects/fullprof/intel:/opt/intel ci_crysfml_xenial_ifort_build_f2008
tags
:
-
docker
-
sci
-
ubuntu
#===============
...
...
@@ -96,21 +75,6 @@ make:macos_ifort:
-
sci
-
osx-10.13
make:macos_gfortran_F2008:
stage
:
make
script
:
-
BuildServer/Unix/build_F2008.sh /usr/local/Cellar/gcc/9.3.0_1/bin/gfortran
tags
:
-
sci
-
osx-10.13
make:macos_ifort_F2008:
stage
:
make
script
:
-
BuildServer/Unix/build_F2008.sh ifort
tags
:
-
sci
-
osx-10.13
#===============
...
...
@@ -140,26 +104,6 @@ make:windows_ifort:
-
sci
-
windows-10
make:windows_gfortran_F2008:
stage
:
make
script
:
-
set PATH=%PATH:C:\Program Files\Git\bin;=%
-
set PATH=%PATH:c:\Projects\fullprof\mingw\bin;=%
-
set PATH=c:\Projects\fullprof\MinGW64\bin;%PATH%
-
call "BuildServer\\Windows\\build_F2008.bat" gfortran
tags
:
-
sci
-
windows-10
make:windows_ifort_F2008:
stage
:
make
script
:
-
call "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Auxiliary\\Build\\vcvars64.bat"
-
set LIB="C:\\Program Files (x86)\\IntelSWTools\\compilers_and_libraries_2020.2.254\\windows\\compiler\\lib\\intel64_win";%LIB%
-
call "BuildServer\\Windows\\build_F2008.bat" ifort
tags
:
-
sci
-
windows-10
#=======================
#== MAKE RELEASE SECTION
...
...
@@ -197,20 +141,7 @@ make_release:linux_gfortran:
-
sci
-
ubuntu
make_release:linux_F2008:
stage
:
make_release
script
:
-
docker build --force-rm -t ci_crysfml_xenial_ifort -f ${CI_PROJECT_DIR}/BuildServer/Docker/Dockerfile_xenial_ifort_setup .
-
docker build --force-rm --no-cache -t ci_crysfml_xenial_release_build_f2008 -f ${CI_PROJECT_DIR}/BuildServer/Docker/Dockerfile_xenial_release_build_F2008 --build-arg CI_COMMIT_SHORT_SHA=${CI_COMMIT_SHORT_SHA} --build-arg CI_COMMIT_REF_NAME=${CI_COMMIT_REF_NAME} .
-
docker run -i -v${PWD}:/artifacts/ -v/users/ci/projects/fullprof/intel:/opt/intel ci_crysfml_xenial_release_build_f2008
artifacts
:
name
:
"
CrysFML08
Linux"
paths
:
-
${CI_PROJECT_DIR}/ifort/LibC08
tags
:
-
docker
-
sci
-
ubuntu
#===============
make_release:macos:
...
...
@@ -230,17 +161,6 @@ make_release:macos:
-
sci
-
osx-10.13
make_release:macos_F2008:
stage
:
make_release
script
:
-
BuildServer/Unix/build_release_F2008.sh
artifacts
:
name
:
"
CrysFML08
macOS"
paths
:
-
${CI_PROJECT_DIR}/ifort/LibC08
tags
:
-
sci
-
osx-10.13
#===============
...
...
@@ -264,16 +184,3 @@ make_release:windows:
-
sci
-
windows-10
make_release:windows_F2008:
stage
:
make_release
script
:
-
call "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Auxiliary\\Build\\vcvars64.bat"
-
set LIB="C:\\Program Files (x86)\\IntelSWTools\\compilers_and_libraries_2020.2.254\\windows\\compiler\\lib\\intel64_win";%LIB%
-
call "BuildServer\\Windows\\build_release_F2008.bat"
artifacts
:
name
:
"
CrysFML08
Windows"
paths
:
-
"
%CI_PROJECT_DIR%
\\
ifort
\\
LibC08"
tags
:
-
sci
-
windows-10
\ No newline at end of file
Src08/CFML_Atoms.f90
deleted
100644 → 0
View file @
a8a205f3
!!-------------------------------------------------------
!!---- Crystallographic Fortran Modules Library (CrysFML)
!!-------------------------------------------------------
!!---- The CrysFML project is distributed under LGPL. In agreement with the
!!---- Intergovernmental Convention of the ILL, this software cannot be used
!!---- in military applications.
!!----
!!---- Copyright (C) 1999-2019 Institut Laue-Langevin (ILL), Grenoble, FRANCE
!!---- Universidad de La Laguna (ULL), Tenerife, SPAIN
!!---- Laboratoire Leon Brillouin(LLB), Saclay, FRANCE
!!----
!!---- Authors: Juan Rodriguez-Carvajal (ILL)
!!---- Javier Gonzalez-Platas (ULL)
!!----
!!---- Contributors: Laurent Chapon (ILL)
!!---- Marc Janoschek (Los Alamos National Laboratory, USA)
!!---- Oksana Zaharko (Paul Scherrer Institute, Switzerland)
!!---- Tierry Roisnel (CDIFX,Rennes France)
!!---- Eric Pellegrini (ILL)
!!---- Ross Angel (University of Pavia)
!!----
!!---- This library is free software; you can redistribute it and/or
!!---- modify it under the terms of the GNU Lesser General Public
!!---- License as published by the Free Software Foundation; either
!!---- version 3.0 of the License, or (at your option) any later version.
!!----
!!---- This library is distributed in the hope that it will be useful,
!!---- but WITHOUT ANY WARRANTY; without even the implied warranty of
!!---- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
!!---- Lesser General Public License for more details.
!!----
!!---- You should have received a copy of the GNU Lesser General Public
!!---- License along with this library; if not, see <http://www.gnu.org/licenses/>.
!!----
!!---- MODULE: CFML_Atoms
!!---- INFO: Subroutines related to Atoms definitions
!!----
!!---- HISTORY
!!---- Update: 06/03/2011
!!----
!!
Module
CFML_Atoms
!---- Use Modules ----!
Use
CFML_GlobalDeps
Use
CFML_Maths
,
only
:
modulo_lat
,
equal_vector
Use
CFML_Metrics
,
only
:
Cell_G_Type
Use
CFML_Strings
,
only
:
u_case
,
l_case
Use
CFML_gSpaceGroups
,
only
:
spg_type
,
apply_op
,
SuperSpaceGroup_Type
!---- Variables ----!
implicit
none
private
!---- List of public procedures ----!
public
::
Allocate_Atom_List
,
Extend_Atom_List
,
Init_Atom_Type
,
Read_Bin_Atom_List
,
&
Write_Bin_atom_List
,
Write_Atom_List
,
Allocate_Atoms_Cell
public
::
Equiv_Atm
,
Wrt_Lab
,
Check_Symmetry_Constraints
!---- Parameters ----!
integer
,
public
,
parameter
::
MAX_MOD
=
8
! ??????
real
(
kind
=
cp
),
parameter
::
R_ATOM
=
1.1_cp
! Average atomic radius
!---- Types ----!
!!----
!!---- TYPE :: ATM_TYPE
!!----
!!---- Simple Atom type containing the minimum set of model parameters
!!---- to describe the atom within a periodic crystal structure. The
!!---- simplest atom is characterized by its labels (Lab,ChemSymb,SfacSymb, ThType),
!!---- position X, isotropic displacement parameter U_iso, occupancy factor Occ,
!!---- magnetic moment, anisotropic displacement parameters U, charge, atomic number,
!!---- maximum module of magnetic moment and additional information.
!!----
Type
,
Public
::
Atm_Type
character
(
len
=
20
)
::
Lab
=
" "
! Label (identifier) of the atom
character
(
len
=
2
)
::
ChemSymb
=
" "
! Chemical symbol
character
(
len
=
4
)
::
SfacSymb
=
" "
! Scattering Factor Symbol
integer
::
Z
=
0
! Atomic number
integer
::
Mult
=
0
! Multiplicity of the Wyckoff position
integer
::
Charge
=
0
! Charge, ionic state
real
(
kind
=
cp
),
dimension
(
3
)
::
X
=
0.0_cp
! Fractional Coordinates
real
(
kind
=
cp
)
::
U_iso
=
0.0_cp
! Biso, Uiso or Ueq (if ThType ="iso" normally U_iso = Biso)
real
(
kind
=
cp
)
::
Occ
=
1.0_cp
! Occupancy factor
character
(
len
=
4
)
::
UType
=
"B_IJ"
! Options: U_ij, B_ij, beta (U & beta are for anisotropic thermal factors)
character
(
len
=
3
)
::
ThType
=
"iso"
! Options: iso, ani
real
(
kind
=
cp
),
dimension
(
6
)
::
U
=
0.0_cp
! Anisotropic thermal factors
logical
::
Magnetic
=
.false.
! Flag indication if the atom is magnetic or not.
real
(
kind
=
cp
)
::
Mom
=
0.0_cp
! Maximum Module of Magnetic moment
real
(
kind
=
cp
),
dimension
(
3
)
::
Moment
=
0.0_cp
! Magnetic moment
integer
,
dimension
(
3
)
::
Ind_ff
=
0
! Pointer of form factors (1:Xray or species, 2:b, 3:Magff) to the number of the species in calculations
character
(
len
=
40
)
::
AtmInfo
=
" "
! Information string for different purposes
character
(
len
=
5
)
::
wyck
=
" "
! Wyckoff position label if known
real
(
kind
=
cp
),
dimension
(
5
)
::
VarF
=
0.0_cp
! Free variables used for different purposes (1,2,3 reserved for occupations, not refinable)
logical
::
active
=
.true.
! Control for different purposes
End
Type
Atm_Type
!!----
!!---- TYPE :: ATM_STD_TYPE
!!----
!!---- Simple Atom type + Standard deviation values
!!----
Type
,
Public
,
Extends
(
Atm_Type
)
::
Atm_Std_Type
real
(
kind
=
cp
),
dimension
(
3
)
::
X_Std
=
0.0_cp
! standard deviations
real
(
kind
=
cp
)
::
Occ_Std
=
0.0_cp
real
(
kind
=
cp
)
::
U_iso_Std
=
0.0_cp
real
(
kind
=
cp
),
dimension
(
6
)
::
U_Std
=
0.0_cp
real
(
kind
=
cp
),
dimension
(
3
)
::
Moment_std
=
0.0_cp
End
Type
Atm_Std_Type
!!----
!!---- TYPE :: MATM_STD_TYPE
!!----
!!---- This type Modulated Atom type extends Atm_Std_Type by adding modulation
!!---- Cosine(c) and Sine amplitudes(s) to each model parameter characterizing
!!---- normal atoms. Up to max_mod harmonic numbers (Q_coeffs) are allowed
!!---- Still to implement special modulation functions (crenel-type)
!!---- Probably extending MAtm_Std_Type or its descendents
!!----
Type
,
Public
,
Extends
(
Atm_Std_Type
)
::
MAtm_Std_Type
integer
::
n_oc
=
0
! Number of occupation amplitudes
integer
::
n_bc
=
0
! Number of B_iso amplitudes
integer
::
n_mc
=
0
! Number of moment amplitudes
integer
::
n_dc
=
0
! Number of static displacement amplitudes
integer
::
n_uc
=
0
! Number of thermal displacement amplitudes
integer
,
dimension
(
max_mod
)
::
poc_q
=
0
! Pointer to Q_coeffs of occupatiom amplitudes
integer
,
dimension
(
max_mod
)
::
pbc_q
=
0
! Pointer to Q_coeffs of B_iso amplitudes
integer
,
dimension
(
max_mod
)
::
pmc_q
=
0
! Pointer to Q_coeffs of moment amplitudes
integer
,
dimension
(
max_mod
)
::
pdc_q
=
0
! Pointer to Q_coeffs of displacement amplitudes
integer
,
dimension
(
max_mod
)
::
puc_q
=
0
! Pointer to Q_coeffs of thermal displacement amplitudes
real
(
kind
=
cp
),
dimension
(
2
,
max_mod
)
::
Ocs
=
0.0_cp
! Ocos,Osin up to 8 (Oc, Os)
real
(
kind
=
cp
),
dimension
(
2
,
max_mod
)
::
Ocs_std
=
0.0_cp
!
real
(
kind
=
cp
),
dimension
(
2
,
max_mod
)
::
Bcs
=
0.0_cp
! Bcos,Bsin up to 8 (Bc, Bs) B_Iso modulation amplitudes
real
(
kind
=
cp
),
dimension
(
2
,
max_mod
)
::
Bcs_std
=
0.0_cp
!
real
(
kind
=
cp
),
dimension
(
6
,
max_mod
)
::
Mcs
=
0.0_cp
! Mcos,Msin up to 8 (Mcx Mcy Mcz , Msx Msy Msz)
real
(
kind
=
cp
),
dimension
(
6
,
max_mod
)
::
Mcs_std
=
0.0_cp
!
real
(
kind
=
cp
),
dimension
(
6
,
max_mod
)
::
Dcs
=
0.0_cp
! Dcos,Dsin up to 8 (Dcx Dcy Dcz , Dsx Dsy Dsz)
real
(
kind
=
cp
),
dimension
(
6
,
max_mod
)
::
Dcs_std
=
0.0_cp
!
real
(
kind
=
cp
),
dimension
(
12
,
max_mod
)
::
Ucs
=
0.0_cp
! Ucos,Usin up to 8 (Uc11 Uc22 Uc33, Uc12, Uc13, Uc23 , Us11 Us22 Us33, Us12, Us13, Us23)
real
(
kind
=
cp
),
dimension
(
12
,
max_mod
)
::
Ucs_std
=
0.0_cp
!
! The items below are not yet used and they are not in CIFs
real
(
kind
=
cp
),
dimension
(:),
allocatable
::
Xs
! Position in superspace
real
(
kind
=
cp
),
dimension
(:),
allocatable
::
Moms
! Moment in superspace
real
(
kind
=
cp
),
dimension
(:,:),
allocatable
::
Us
! Thermal factors in superspace
End
Type
MAtm_Std_Type
!!----
!!---- TYPE :: ATM_REF_TYPE
!!----
!!---- Refinement Atom type: This type extends Atm_Std_Type with the numbers
!!---- of each model paramenter within the list of LSQ free parameters, as well
!!---- as the corresponding multipliers for constraints.
!!----
Type
,
Public
,
Extends
(
Atm_Std_Type
)
::
Atm_Ref_Type
integer
,
dimension
(
3
)
::
L_X
=
0
! Code number of free parameters
integer
::
L_Occ
=
0
integer
::
L_U_iso
=
0
integer
,
dimension
(
3
)
::
L_moment
=
0
integer
,
dimension
(
6
)
::
L_U
=
0
real
(
kind
=
cp
),
dimension
(
3
)
::
M_X
=
0.0_cp
! Multipliers
real
(
kind
=
cp
)
::
M_Occ
=
0.0_cp
real
(
kind
=
cp
)
::
M_U_iso
=
0.0_cp
real
(
kind
=
cp
),
dimension
(
3
)
::
M_moment
=
0.0_cp
real
(
kind
=
cp
),
dimension
(
6
)
::
M_U
=
0.0_cp
End
Type
Atm_Ref_Type
!!----
!!---- TYPE :: MATM_REF_TYPE
!!----
!!---- Refinement Atom type: This type extends MAtm_Std_Type with the numbers
!!---- of each model paramenter within the list of LSQ free parameters, as well
!!---- as the corresponding multipliers for constraints.
!!----
Type
,
Public
,
Extends
(
MAtm_Std_Type
)
::
MAtm_Ref_Type
integer
,
dimension
(
3
)
::
L_X
=
0
! Code Numbers of parameter
integer
::
L_Occ
=
0
integer
::
L_U_iso
=
0
integer
,
dimension
(
6
)
::
L_U
=
0
real
(
kind
=
cp
),
dimension
(
3
)
::
M_X
=
0.0_cp
! Multipliers of refinement
real
(
kind
=
cp
)
::
M_Occ
=
0.0_cp
real
(
kind
=
cp
)
::
M_U_iso
=
0.0_cp
real
(
kind
=
cp
),
dimension
(
6
)
::
M_U
=
0.0_cp
integer
,
dimension
(
2
,
max_mod
)
::
L_Ocs
=
0
! Code Numbers of parameter
integer
,
dimension
(
2
,
max_mod
)
::
L_Bcs
=
0
!
integer
,
dimension
(
6
,
max_mod
)
::
L_Mcs
=
0
!
integer
,
dimension
(
6
,
max_mod
)
::
L_Dcs
=
0
!
integer
,
dimension
(
12
,
max_mod
)
::
L_Ucs
=
0
!
real
(
kind
=
cp
),
dimension
(
2
,
max_mod
)
::
M_Ocs
=
0.0_cp
! Multipliers
real
(
kind
=
cp
),
dimension
(
2
,
max_mod
)
::
M_Bcs
=
0.0_cp
! Multipliers
real
(
kind
=
cp
),
dimension
(
6
,
max_mod
)
::
M_Mcs
=
0.0_cp
!
real
(
kind
=
cp
),
dimension
(
6
,
max_mod
)
::
M_Dcs
=
0.0_cp
!
real
(
kind
=
cp
),
dimension
(
12
,
max_mod
)
::
M_Ucs
=
0.0_cp
!
End
Type
MAtm_Ref_Type
!!----
!!---- TYPE ::ATM_CELL_TYPE
!!--..
!!---- This type is mostly used for distance-angle and Bond-valence calculations.
!!---- It holds the position and coordination of all the atoms in the conventional
!!---- unit cell as well as their distances to neighbours atoms.
!!----
!!---- 13/06/2019
!!
Type
,
Public
::
Atm_Cell_Type
integer
::
nat
! Total number of atoms
character
(
len
=
20
),
dimension
(:),
allocatable
::
Lab
! Labels for atoms (dimension Nat)
real
(
kind
=
cp
),
dimension
(:,:),
allocatable
::
xyz
! Fractional coordinates (3,nat)
real
(
kind
=
cp
),
dimension
(:),
allocatable
::
charge
real
(
kind
=
cp
),
dimension
(:),
allocatable
::
moment
real
(
kind
=
cp
),
dimension
(:,:),
allocatable
::
var_free
! Free variables (10,nat)
integer
,
dimension
(:),
allocatable
::
neighb
! Number of neighbours (nat)
integer
,
dimension
(:,:),
allocatable
::
neighb_atom
! Ptr.->neighbour (# in list)(nat,idp)
real
(
kind
=
cp
),
dimension
(:,:),
allocatable
::
distance
! Corresponding distances (nat,idp)
real
(
kind
=
cp
),
dimension
(:,:,:),
allocatable
::
trans
! Lattice translations (3,nat,idp)
integer
::
ndist
! Number of distinct distances
real
(
kind
=
cp
),
dimension
(:),
allocatable
::
ddist
! List of distinct distances(nat*idp)
character
(
len
=
20
),
dimension
(:),
allocatable
::
ddlab
! Labels of atoms at ddist (nat*idp)
End
Type
Atm_Cell_Type
!!---- Type, Public :: Atom_Equiv_Type
!!----
!!---- Updated: January 2014
!!
Type
,
Public
::
Atom_Equiv_Type
integer
::
mult
=
0
character
(
len
=
2
)
::
ChemSymb
=
" "
character
(
len
=
20
),
allocatable
,
dimension
(:)
::
Lab
real
(
kind
=
cp
),
allocatable
,
dimension
(:,:)
::
x
End
Type
Atom_Equiv_Type
!!---- Type, Public :: Atom_Equiv_List_Type
!!----
!!---- Updated: January 2014
!!
Type
,
Public
::
Atom_Equiv_List_Type
integer
::
nauas
=
0
type
(
Atom_Equiv_Type
),
allocatable
,
dimension
(:)
::
atm
End
Type
Atom_Equiv_List_Type
!!----
!!---- TYPE :: ALIST_TYPE
!!--..
!!
Type
,
Public
::
AtList_Type
integer
::
natoms
=
0
! Number of atoms in the list
character
(
len
=
9
)
::
mcomp
=
"Crystal"
! For magnetic moments and modulation functions Mcs and Dcs It may be also "Cartesian" or "Spherical"
logical
::
symm_checked
=
.false.
logical
,
dimension
(:),
allocatable
::
Active
! Flag for active or not
class
(
Atm_Type
),
dimension
(:),
allocatable
::
Atom
! Atoms
End
type
AtList_Type
!---- Overload Zone ----!
Interface
Extend_Atom_List
Module
Procedure
Extend_List
!Creating a new AtList_Type with all atoms in unit cell
Module
Procedure
Set_Atom_Equiv_List
!Creating a an Atom_Equiv_List_Type from AtList_Type in asymmetric unit
End
Interface
Extend_Atom_List
!---- Interface Zone ----!
Interface
Pure
Module
Function
Equiv_Atm
(
Nam1
,
Nam2
,
NameAt
)
Result
(
Equiv_Atom
)
!---- Arguments ----!
character
(
len
=*
),
intent
(
in
)
::
nam1
,
nam2
character
(
len
=*
),
intent
(
in
)
::
NameAt
logical
::
equiv_atom
End
Function
Equiv_Atm
Pure
Module
Function
Wrt_Lab
(
Nam1
,
Nam2
)
Result
(
Bilabel
)
!---- Arguments ----!
character
(
len
=*
),
intent
(
in
)
::
nam1
,
nam2
character
(
len
=
8
)
::
bilabel
End
Function
Wrt_Lab
Module
Subroutine
Init_Atom_Type
(
Atm
,
d
)
!---- Arguments ----!
class
(
Atm_Type
),
intent
(
in
out
)
::
Atm
integer
,
intent
(
in
)
::
d
! Number of k-vectors
End
Subroutine
Init_Atom_Type
Module
Subroutine
Allocate_Atoms_Cell
(
Nasu
,
Mul
,
Dmax
,
Ac
)
!---- Arguments ----!
integer
,
intent
(
in
)
::
nasu
integer
,
intent
(
in
)
::
mul
real
(
kind
=
cp
),
intent
(
in
)
::
dmax
type
(
Atm_cell_type
),
intent
(
in
out
)
::
Ac
End
Subroutine
Allocate_Atoms_Cell
Module
Subroutine
Allocate_Atom_List
(
N
,
A
,
Type_Atm
,
d
)
!---- Arguments ----!
integer
,
intent
(
in
)
::
n
! Atoms in the List
type
(
Atlist_type
),
intent
(
in
out
)
::
A
! Objet to be allocated
character
(
len
=*
),
intent
(
in
)
::
Type_Atm
!Atomic type: Atm, Atm_Std, MAtm_Std, Atm_Ref, MAtm_Ref
integer
,
intent
(
in
)
::
d
! Number of k-vectors
End
Subroutine
Allocate_Atom_List
Module
Subroutine
Check_Symmetry_Constraints
(
SpG
,
Atm
)
class
(
SpG_Type
),
intent
(
in
)
::
SpG
type
(
AtList_Type
),
intent
(
in
out
)
::
Atm
End
Subroutine
Check_Symmetry_Constraints
Module
Subroutine
Read_Bin_Atom_List
(
filename
,
A
,
Type_Atm
)
!---- Arguments ----!
character
(
len
=*
),
intent
(
in
)
::
filename
type
(
atlist_type
),
intent
(
in
out
)
::
A
character
(
len
=*
),
intent
(
in
)
::
Type_Atm
End
Subroutine
Read_Bin_Atom_List
Module
Subroutine
Write_Bin_Atom_List
(
filename
,
A
)
!---- Arguments ----!
character
(
len
=*
),
intent
(
in
)
::
filename
type
(
atlist_type
),
intent
(
in
)
::
A
End
Subroutine
Write_Bin_Atom_List
Module
Subroutine
Write_Atom_List
(
A
,
Iunit
,
SpG
)
!---- Arguments ----!
type
(
atlist_type
),
intent
(
in
)
::
A
! Atom list object
integer
,
optional
,
intent
(
in
)
::
IUnit
! Logical unit
type
(
SuperSpaceGroup_type
),
optional
,
intent
(
in
)
::
SpG
End
Subroutine
Write_Atom_List
Module
Subroutine
Extend_List
(
A
,
B
,
Spg
,
Type_Atm
,
Conven
)
!---- Arguments ----!
type
(
atlist_type
),
intent
(
in
)
::
A
! Atom list (asymmetric unit)
type
(
atlist_type
),
intent
(
in
out
)
::
B
! Atom list into the unit cell
type
(
SpG_Type
),
intent
(
in
)
::
SpG
! SpaceGroup
character
(
len
=*
),
intent
(
in
)
::
Type_Atm
! !Atomic type: Atm, Atm_Std, MAtm_Std, Atm_Ref, MAtm_Ref
logical
,
optional
,
intent
(
in
)
::
Conven
! If present and .true. using the whole conventional unit cell
End
Subroutine
Extend_List
Module
Subroutine
Set_Atom_Equiv_List
(
SpG
,
cell
,
A
,
Ate
,
lun
)
type
(
SpG_Type
),
intent
(
in
)
::
SpG
type
(
Cell_G_Type
),
intent
(
in
)
::
Cell
type
(
Atlist_Type
),
intent
(
in
)
::
A
type
(
Atom_Equiv_List_Type
),
intent
(
out
)::
Ate
integer
,
optional
,
intent
(
in
)
::
lun
End
Subroutine
Set_Atom_Equiv_List
End
Interface
End
Module
CFML_Atoms
Src08/CFML_Atoms/Atm_Allocating_Atoms.f90
deleted
100644 → 0
View file @
a8a205f3
!!----
!!----
!!----
SubModule
(
CFML_Atoms
)
Init_Allocating_Atoms
implicit
none
Contains
!!----
!!---- INIT_ATOM_TYPE
!!---- Initialize Atom_Type
!!----
!!---- 12/06/2019
!!
Module
Subroutine
Init_Atom_Type
(
Atm
,
d
)
!---- Arguments ----!
class
(
Atm_Type
),
intent
(
in
out
)
::
Atm
integer
,
intent
(
in
)
::
d
! Number of k-vectors
Atm
%
Lab
=
" "
Atm
%
ChemSymb
=
" "
Atm
%
Z
=
0
Atm
%
Mult
=
0
Atm
%
Charge
=
0
Atm
%
X
=
0.0_cp
Atm
%
Occ
=
1.0_cp
!> Thermal model
Atm
%
UType
=
"B"
Atm
%
ThType
=
"iso"
Atm
%
U_iso
=
0.0_cp
Atm
%
U
=
0.0_cp
!> Magnetic
Atm
%
Magnetic
=
.false.
Atm
%
Moment
=
0.0_cp
!> SFac
Atm
%
SfacSymb
=
" "
Atm
%
Ind_ff
=
0
!> Info
Atm
%
AtmInfo
=
" "
Atm
%
wyck
=
" "
!> Free variables
Atm
%
VarF
=
0.0
Atm
%
active
=
.true.
select
type
(
Atm
)
type
is
(
atm_std_type
)
Atm
%
X_Std
=
0.0_cp
Atm
%
Occ_Std
=
0.0_cp
Atm
%
U_iso_Std
=
0.0_cp
Atm
%
U_Std
=
0.0_cp
Atm
%
Moment_Std
=
0.0_cp
type
is
(
matm_std_type
)
Atm
%
X_Std
=
0.0_cp
Atm
%
Occ_Std
=
0.0_cp
Atm
%
U_iso_Std
=
0.0_cp
Atm
%
U_Std
=
0.0_cp
Atm
%
Moment_Std
=
0.0_cp
Atm
%
n_oc
=
0
Atm
%
n_bc
=
0
Atm
%
n_mc
=
0
Atm
%
n_dc
=
0
Atm
%
n_uc
=
0
Atm
%
poc_q
=
0
Atm
%
pbc_q
=
0
Atm
%
pmc_q
=
0
Atm
%
pdc_q
=
0
Atm
%
puc_q
=
0
Atm
%
Ocs
=
0.0_cp
Atm
%
Ocs_std
=
0.0_cp
Atm
%
Bcs
=
0.0_cp
Atm
%
Bcs_std
=
0.0_cp
Atm
%
Mcs
=
0.0_cp
Atm
%
Mcs_std
=
0.0_cp
Atm
%
Dcs
=
0.0_cp
Atm
%
Dcs_std
=
0.0_cp
Atm
%
Ucs
=
0.0_cp
Atm
%
Ucs_std
=
0.0_cp
if
(
allocated
(
Atm
%
Xs
))
deallocate
(
Atm
%
Xs
)
if
(
allocated
(
Atm
%
Us
))
deallocate
(
Atm
%
Us
)
if
(
allocated
(
Atm
%
Moms
))
deallocate
(
Atm
%
Moms
)
allocate
(
Atm
%
Xs
(
3
+
d
),
Atm
%
Us
(
3
+
d
,
3
+
d
),
Atm
%
Moms
(
3
+
d
))
Atm
%
Xs
=
0.0
;
Atm
%
Us
=
0.0
;
Atm
%
Moms
=
0.0
type
is
(
atm_ref_type
)
Atm
%
X_Std
=
0.0_cp
Atm
%
Occ_Std
=
0.0_cp
Atm
%
U_iso_Std
=
0.0_cp
Atm
%
U_Std
=
0.0_cp
Atm
%
Moment_Std
=
0.0_cp
Atm
%
L_X
=
0
Atm
%
L_Occ
=
0
Atm
%
L_U_iso
=
0
Atm
%
L_U
=
0
Atm
%
L_moment
=
0
Atm
%
M_X
=
0.0_cp
Atm
%
M_Occ
=
0.0_cp
Atm
%
M_U_iso
=
0.0_cp