parent
24b1647754
commit
90bdc160cb
@ -1,53 +1,49 @@
|
|||||||
FC=gfortran
|
.SUFFIXES: .c .f .f90 .F90 .o
|
||||||
|
.DEFAULT_GOAL := all
|
||||||
|
|
||||||
#Ifort flags
|
FC=mpif90
|
||||||
#FFLAGS=-mcmodel=large -g -O0 -stand f08 -fpe0 -traceback -check bounds,uninit -warn all -implicitnone -no-wrap-margin -heap-arrays
|
FFLAGS=-Wall -mcmodel=large -O0 -g -fbacktrace -fcheck=all -ffpe-trap=invalid,zero,overflow,underflow,denormal
|
||||||
|
|
||||||
#FFLAGS=-mcmodel=large -Ofast -no-wrap-margin -heap-arrays
|
OBJDIR=obj
|
||||||
|
SRCS := $(wildcard *.f90)
|
||||||
|
OBJECTS := $(addprefix $(OBJDIR)/,$(SRCS:%.f90=%.o))
|
||||||
|
|
||||||
#gfortran flags
|
|
||||||
FFLAGS=-mcmodel=large -O3 -g
|
|
||||||
#FFLAGS=-mcmodel=large -O0 -g -fbacktrace -fcheck=all
|
|
||||||
|
|
||||||
MODES=mode_create.o mode_merge.o mode_convert.o mode_metric.o mode_calc.o
|
|
||||||
OPTIONS=opt_disl.o opt_group.o opt_orient.o opt_delete.o opt_deform.o opt_redef_box.o opt_slip_plane.o
|
|
||||||
OBJECTS=main.o elements.o io.o subroutines.o functions.o atoms.o call_mode.o box.o neighbors.o $(MODES) $(OPTIONS) call_option.o sorts.o
|
|
||||||
|
|
||||||
.SUFFIXES:
|
#----------------- DEPENDENCIES -----------------#
|
||||||
.SUFFIXES: .c .f .f90 .F90 .o
|
# GENERATED USING https://github.com/ZedThree/fort_depend.py **requires python3**
|
||||||
|
# > pip install fortdepend
|
||||||
|
# > fortdepend -o Makefile.dep -i mpi -b obj/
|
||||||
|
include Makefile.dep
|
||||||
|
|
||||||
|
#----------------- DEFAULTS -----------------#
|
||||||
|
all: cacmb
|
||||||
|
|
||||||
cacmb: $(OBJECTS)
|
.PHONY: deps
|
||||||
$(FC) $(FFLAGS) $(OBJECTS) parameters.o -o $@
|
cacmb: $(OBJECTS) $(OBJDIR)/main.o
|
||||||
|
$(FC) $(FFLAGS) $(OBJECTS) -o $@
|
||||||
|
|
||||||
|
$(OBJDIR)/%.o: %.f90
|
||||||
|
@mkdir -p $(@D)
|
||||||
|
$(FC) $(FFLAGS) -c -o $@ $< -J$(OBJDIR)
|
||||||
|
|
||||||
.f90.o:
|
.f90.o:
|
||||||
$(FC) $(FFLAGS) -c $<
|
$(FC) $(FFLAGS) -c $<
|
||||||
|
|
||||||
|
|
||||||
|
deps:
|
||||||
|
@fortdepend -o Makefile.dep -i mpi -b obj -w
|
||||||
|
|
||||||
|
#----------------- CLEAN UP -----------------#
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
$(RM) cacmb *.o *.mod *genmod*
|
$(RM) *.mod *.o
|
||||||
|
$(RM) $(OBJDIR)/*.mod $(OBJDIR)/*.o CAC
|
||||||
testfuncs: testfuncs.o functions.o subroutines.o
|
@$(RM) -rf obj/
|
||||||
$(FC) testfuncs.o functions.o subroutines.o box.o elements.o -o $@
|
|
||||||
|
.PHONY: clean-all
|
||||||
.PHONY: cleantest
|
clean-all: clean
|
||||||
cleantest:
|
|
||||||
$(RM) testfuncs testfuncs.o
|
# DEBUGGING VARIABLE PRINT
|
||||||
|
print-% : ; @echo $* = $($*)
|
||||||
.PHONY: test
|
|
||||||
test: testfuncs
|
|
||||||
./testfuncs
|
|
||||||
|
|
||||||
.PHONY: install
|
|
||||||
install: cacmb
|
|
||||||
cp ./cacmb /usr/local/bin
|
|
||||||
|
|
||||||
$(OBJECTS) : parameters.o
|
|
||||||
atoms.o subroutines.o testfuncs.o box.o : functions.o
|
|
||||||
main.o io.o $(MODES) $(OPTIONS) : elements.o
|
|
||||||
call_mode.o : $(MODES)
|
|
||||||
call_option.o : $(OPTIONS)
|
|
||||||
elements.o : sorts.o
|
|
||||||
$(MODES) $(OPTIONS) subroutines.o io.o : atoms.o box.o
|
|
||||||
$(MODES) main.o : io.o
|
|
||||||
testfuncs.o elements.o mode_create.o $(OPTIONS) $(MODES): subroutines.o
|
|
||||||
opt_delete.o mode_metric.o : neighbors.o
|
|
||||||
|
@ -0,0 +1,175 @@
|
|||||||
|
# This file is generated automatically. DO NOT EDIT!
|
||||||
|
|
||||||
|
obj/main : \
|
||||||
|
obj/atoms.o \
|
||||||
|
obj/box.o \
|
||||||
|
obj/caller.o \
|
||||||
|
obj/elements.o \
|
||||||
|
obj/functions.o \
|
||||||
|
obj/io.o \
|
||||||
|
obj/main.o \
|
||||||
|
obj/mode_calc.o \
|
||||||
|
obj/mode_check.o \
|
||||||
|
obj/mode_convert.o \
|
||||||
|
obj/mode_create.o \
|
||||||
|
obj/mode_merge.o \
|
||||||
|
obj/mode_metric.o \
|
||||||
|
obj/neighbors.o \
|
||||||
|
obj/opt_deform.o \
|
||||||
|
obj/opt_delete.o \
|
||||||
|
obj/opt_disl.o \
|
||||||
|
obj/opt_group.o \
|
||||||
|
obj/opt_orient.o \
|
||||||
|
obj/opt_redef_box.o \
|
||||||
|
obj/opt_slip_plane.o \
|
||||||
|
obj/parameters.o \
|
||||||
|
obj/sorts.o \
|
||||||
|
obj/subroutines.o
|
||||||
|
|
||||||
|
obj/atoms.o : \
|
||||||
|
obj/functions.o \
|
||||||
|
obj/parameters.o
|
||||||
|
|
||||||
|
obj/box.o : \
|
||||||
|
obj/functions.o \
|
||||||
|
obj/parameters.o
|
||||||
|
|
||||||
|
obj/caller.o : \
|
||||||
|
obj/box.o \
|
||||||
|
obj/mode_calc.o \
|
||||||
|
obj/mode_check.o \
|
||||||
|
obj/mode_convert.o \
|
||||||
|
obj/mode_create.o \
|
||||||
|
obj/mode_merge.o \
|
||||||
|
obj/mode_metric.o \
|
||||||
|
obj/opt_deform.o \
|
||||||
|
obj/opt_delete.o \
|
||||||
|
obj/opt_disl.o \
|
||||||
|
obj/opt_group.o \
|
||||||
|
obj/opt_orient.o \
|
||||||
|
obj/opt_redef_box.o \
|
||||||
|
obj/opt_slip_plane.o \
|
||||||
|
obj/parameters.o
|
||||||
|
|
||||||
|
obj/elements.o : \
|
||||||
|
obj/box.o \
|
||||||
|
obj/functions.o \
|
||||||
|
obj/parameters.o \
|
||||||
|
obj/sorts.o \
|
||||||
|
obj/subroutines.o
|
||||||
|
|
||||||
|
obj/functions.o : \
|
||||||
|
obj/parameters.o
|
||||||
|
|
||||||
|
obj/io.o : \
|
||||||
|
obj/atoms.o \
|
||||||
|
obj/box.o \
|
||||||
|
obj/elements.o \
|
||||||
|
obj/parameters.o
|
||||||
|
|
||||||
|
obj/main.o : \
|
||||||
|
obj/caller.o \
|
||||||
|
obj/elements.o \
|
||||||
|
obj/io.o \
|
||||||
|
obj/parameters.o
|
||||||
|
|
||||||
|
obj/mode_calc.o : \
|
||||||
|
obj/box.o \
|
||||||
|
obj/elements.o \
|
||||||
|
obj/io.o \
|
||||||
|
obj/parameters.o \
|
||||||
|
obj/subroutines.o
|
||||||
|
|
||||||
|
obj/mode_check.o : \
|
||||||
|
obj/atoms.o \
|
||||||
|
obj/box.o \
|
||||||
|
obj/elements.o \
|
||||||
|
obj/functions.o \
|
||||||
|
obj/io.o \
|
||||||
|
obj/neighbors.o \
|
||||||
|
obj/parameters.o \
|
||||||
|
obj/subroutines.o
|
||||||
|
|
||||||
|
obj/mode_convert.o : \
|
||||||
|
obj/box.o \
|
||||||
|
obj/elements.o \
|
||||||
|
obj/io.o \
|
||||||
|
obj/parameters.o
|
||||||
|
|
||||||
|
obj/mode_create.o : \
|
||||||
|
obj/atoms.o \
|
||||||
|
obj/box.o \
|
||||||
|
obj/elements.o \
|
||||||
|
obj/io.o \
|
||||||
|
obj/parameters.o \
|
||||||
|
obj/subroutines.o
|
||||||
|
|
||||||
|
obj/mode_merge.o : \
|
||||||
|
obj/atoms.o \
|
||||||
|
obj/elements.o \
|
||||||
|
obj/io.o \
|
||||||
|
obj/parameters.o \
|
||||||
|
obj/subroutines.o
|
||||||
|
|
||||||
|
obj/mode_metric.o : \
|
||||||
|
obj/elements.o \
|
||||||
|
obj/io.o \
|
||||||
|
obj/neighbors.o \
|
||||||
|
obj/parameters.o
|
||||||
|
|
||||||
|
obj/neighbors.o : \
|
||||||
|
obj/elements.o \
|
||||||
|
obj/functions.o \
|
||||||
|
obj/parameters.o \
|
||||||
|
obj/subroutines.o
|
||||||
|
|
||||||
|
obj/opt_deform.o : \
|
||||||
|
obj/box.o \
|
||||||
|
obj/elements.o \
|
||||||
|
obj/parameters.o \
|
||||||
|
obj/subroutines.o
|
||||||
|
|
||||||
|
obj/opt_delete.o : \
|
||||||
|
obj/elements.o \
|
||||||
|
obj/neighbors.o \
|
||||||
|
obj/parameters.o \
|
||||||
|
obj/subroutines.o
|
||||||
|
|
||||||
|
obj/opt_disl.o : \
|
||||||
|
obj/box.o \
|
||||||
|
obj/elements.o \
|
||||||
|
obj/parameters.o \
|
||||||
|
obj/subroutines.o
|
||||||
|
|
||||||
|
obj/opt_group.o : \
|
||||||
|
obj/box.o \
|
||||||
|
obj/elements.o \
|
||||||
|
obj/parameters.o \
|
||||||
|
obj/subroutines.o
|
||||||
|
|
||||||
|
obj/opt_orient.o : \
|
||||||
|
obj/box.o \
|
||||||
|
obj/elements.o \
|
||||||
|
obj/parameters.o \
|
||||||
|
obj/subroutines.o
|
||||||
|
|
||||||
|
obj/opt_redef_box.o : \
|
||||||
|
obj/box.o \
|
||||||
|
obj/elements.o \
|
||||||
|
obj/subroutines.o
|
||||||
|
|
||||||
|
obj/opt_slip_plane.o : \
|
||||||
|
obj/elements.o \
|
||||||
|
obj/functions.o \
|
||||||
|
obj/parameters.o \
|
||||||
|
obj/subroutines.o
|
||||||
|
|
||||||
|
obj/parameters.o :
|
||||||
|
|
||||||
|
obj/sorts.o : \
|
||||||
|
obj/parameters.o
|
||||||
|
|
||||||
|
obj/subroutines.o : \
|
||||||
|
obj/box.o \
|
||||||
|
obj/functions.o \
|
||||||
|
obj/parameters.o
|
@ -1,34 +0,0 @@
|
|||||||
subroutine call_mode(arg_pos)
|
|
||||||
!This code is used to parse the command line argument for the mode information and calls the required
|
|
||||||
!mode module.
|
|
||||||
|
|
||||||
use mode_create
|
|
||||||
use mode_convert
|
|
||||||
use mode_merge
|
|
||||||
use mode_metric
|
|
||||||
use mode_calc
|
|
||||||
use parameters
|
|
||||||
|
|
||||||
implicit none
|
|
||||||
|
|
||||||
integer, intent(out) :: arg_pos
|
|
||||||
|
|
||||||
select case(mode)
|
|
||||||
case('--create')
|
|
||||||
call create(arg_pos)
|
|
||||||
case('--convert')
|
|
||||||
call convert(arg_pos)
|
|
||||||
case('--merge')
|
|
||||||
call merge(arg_pos)
|
|
||||||
case('--metric')
|
|
||||||
call metric(arg_pos)
|
|
||||||
case('--calc')
|
|
||||||
call calc(arg_pos)
|
|
||||||
case default
|
|
||||||
print *, "Mode ", trim(adjustl(mode)), " currently not accepted. Please check documentation for ", &
|
|
||||||
"accepted modes and rerun."
|
|
||||||
|
|
||||||
stop 3
|
|
||||||
|
|
||||||
end select
|
|
||||||
end subroutine call_mode
|
|
@ -1,53 +0,0 @@
|
|||||||
subroutine call_option(option, arg_pos)
|
|
||||||
use parameters
|
|
||||||
use opt_disl
|
|
||||||
use opt_group
|
|
||||||
use opt_orient
|
|
||||||
use opt_deform
|
|
||||||
use opt_delete
|
|
||||||
use opt_redef_box
|
|
||||||
use opt_slip_plane
|
|
||||||
use box
|
|
||||||
implicit none
|
|
||||||
|
|
||||||
integer, intent(inout) :: arg_pos
|
|
||||||
character(len=100), intent(in) :: option
|
|
||||||
|
|
||||||
select case(trim(adjustl(option)))
|
|
||||||
case('-disl','-dislgen', '-disloop','-vacancydisloop')
|
|
||||||
call dislocation(option, arg_pos)
|
|
||||||
case('-group')
|
|
||||||
call group(arg_pos)
|
|
||||||
case('-ow')
|
|
||||||
arg_pos = arg_pos + 1
|
|
||||||
case('-wrap')
|
|
||||||
arg_pos = arg_pos + 1
|
|
||||||
case('-orient')
|
|
||||||
call orient(arg_pos)
|
|
||||||
case('-unorient')
|
|
||||||
call unorient
|
|
||||||
arg_pos = arg_pos + 1
|
|
||||||
case('-boundary')
|
|
||||||
arg_pos=arg_pos+1
|
|
||||||
call get_command_argument(arg_pos, box_bc)
|
|
||||||
arg_pos=arg_pos+1
|
|
||||||
bound_called = .true.
|
|
||||||
case('-sbox_ori')
|
|
||||||
call sbox_ori(arg_pos)
|
|
||||||
case('-deform')
|
|
||||||
call deform(arg_pos)
|
|
||||||
case('-delete')
|
|
||||||
call run_delete(arg_pos)
|
|
||||||
case('-set_cac')
|
|
||||||
arg_pos=arg_pos +3
|
|
||||||
case('-set_types')
|
|
||||||
arg_pos = arg_pos + 2 + atom_types
|
|
||||||
case('-redef_box')
|
|
||||||
call redef_box(arg_pos)
|
|
||||||
case('-slip_plane')
|
|
||||||
call run_slip_plane(arg_pos)
|
|
||||||
case default
|
|
||||||
print *, 'Option ', trim(adjustl(option)), ' is not currently accepted.'
|
|
||||||
stop 3
|
|
||||||
end select
|
|
||||||
end subroutine call_option
|
|
@ -0,0 +1,91 @@
|
|||||||
|
module caller
|
||||||
|
!this module just calls modes and options
|
||||||
|
|
||||||
|
use mode_create
|
||||||
|
use mode_convert
|
||||||
|
use mode_merge
|
||||||
|
use mode_metric
|
||||||
|
use mode_calc
|
||||||
|
use parameters
|
||||||
|
use opt_disl
|
||||||
|
use opt_group
|
||||||
|
use opt_orient
|
||||||
|
use opt_deform
|
||||||
|
use opt_delete
|
||||||
|
use opt_redef_box
|
||||||
|
use opt_slip_plane
|
||||||
|
use box
|
||||||
|
|
||||||
|
|
||||||
|
implicit none
|
||||||
|
public
|
||||||
|
contains
|
||||||
|
subroutine call_mode(arg_pos)
|
||||||
|
!This code is used to parse the command line argument for the mode information and calls the required
|
||||||
|
!mode module.
|
||||||
|
|
||||||
|
integer, intent(out) :: arg_pos
|
||||||
|
|
||||||
|
select case(mode)
|
||||||
|
case('--create')
|
||||||
|
call create(arg_pos)
|
||||||
|
case('--convert')
|
||||||
|
call convert(arg_pos)
|
||||||
|
case('--merge')
|
||||||
|
call merge(arg_pos)
|
||||||
|
case('--metric')
|
||||||
|
call metric(arg_pos)
|
||||||
|
case('--calc')
|
||||||
|
call calc(arg_pos)
|
||||||
|
case default
|
||||||
|
print *, "Mode ", trim(adjustl(mode)), " currently not accepted. Please check documentation for ", &
|
||||||
|
"accepted modes and rerun."
|
||||||
|
|
||||||
|
stop 3
|
||||||
|
end select
|
||||||
|
end subroutine call_mode
|
||||||
|
|
||||||
|
subroutine call_option(option, arg_pos)
|
||||||
|
integer, intent(inout) :: arg_pos
|
||||||
|
character(len=100), intent(in) :: option
|
||||||
|
|
||||||
|
select case(trim(adjustl(option)))
|
||||||
|
case('-disl','-dislgen', '-disloop','-vacancydisloop')
|
||||||
|
call dislocation(option, arg_pos)
|
||||||
|
case('-group')
|
||||||
|
call group(arg_pos)
|
||||||
|
case('-ow')
|
||||||
|
arg_pos = arg_pos + 1
|
||||||
|
case('-wrap')
|
||||||
|
arg_pos = arg_pos + 1
|
||||||
|
case('-orient')
|
||||||
|
call orient_opt(arg_pos)
|
||||||
|
case('-unorient')
|
||||||
|
call unorient
|
||||||
|
arg_pos = arg_pos + 1
|
||||||
|
case('-boundary')
|
||||||
|
arg_pos=arg_pos+1
|
||||||
|
call get_command_argument(arg_pos, box_bc)
|
||||||
|
arg_pos=arg_pos+1
|
||||||
|
bound_called = .true.
|
||||||
|
case('-sbox_ori')
|
||||||
|
call sbox_ori(arg_pos)
|
||||||
|
case('-deform')
|
||||||
|
call deform(arg_pos)
|
||||||
|
case('-delete')
|
||||||
|
call run_delete(arg_pos)
|
||||||
|
case('-set_cac')
|
||||||
|
arg_pos=arg_pos +3
|
||||||
|
case('-set_types')
|
||||||
|
arg_pos = arg_pos + 3 + atom_types
|
||||||
|
case('-redef_box')
|
||||||
|
call redef_box(arg_pos)
|
||||||
|
case('-slip_plane')
|
||||||
|
call run_slip_plane(arg_pos)
|
||||||
|
case default
|
||||||
|
print *, 'Option ', trim(adjustl(option)), ' is not currently accepted.'
|
||||||
|
stop 3
|
||||||
|
end select
|
||||||
|
end subroutine call_option
|
||||||
|
|
||||||
|
end module caller
|
Loading…
Reference in new issue