diff --git a/src/Makefile b/src/Makefile index 22aaa6b..2068b93 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,14 +1,15 @@ -FC=ifort +FC=gfortran #Ifort flags -FFLAGS=-mcmodel=large -g -O0 -stand f08 -fpe0 -traceback -check bounds,uninit -warn all -implicitnone -no-wrap-margin -heap-arrays +#FFLAGS=-mcmodel=large -g -O0 -stand f08 -fpe0 -traceback -check bounds,uninit -warn all -implicitnone -no-wrap-margin -heap-arrays + #FFLAGS=-mcmodel=large -Ofast -no-wrap-margin -heap-arrays #gfortran flags -#FFLAGS=-mcmodel=large -O3 -g +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 +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 @@ -23,7 +24,7 @@ cacmb: $(OBJECTS) .PHONY: clean clean: - $(RM) cacmb *.o *.mod + $(RM) cacmb *.o *.mod *genmod* testfuncs: testfuncs.o functions.o subroutines.o $(FC) testfuncs.o functions.o subroutines.o box.o elements.o -o $@ diff --git a/src/io.f90 b/src/io.f90 index 3c9e096..b1bd053 100644 --- a/src/io.f90 +++ b/src/io.f90 @@ -600,7 +600,7 @@ module io stop 3 end if select case(trim(adjustl(mode))) - case('--convert','--metric') + case('--calc', '--convert','--metric') infilenum = infilenum+1 infiles(infilenum) = temp_infile case default diff --git a/src/main.f90 b/src/main.f90 index 9f7a484..d73270f 100644 --- a/src/main.f90 +++ b/src/main.f90 @@ -112,7 +112,7 @@ program main !Check to make sure a file was passed to be written out and then write out ! Before building do a check on the file - if (trim(adjustl(mode)) /= "--metric") then + if ((trim(adjustl(mode)) /= "--metric").and.(trim(adjustl(mode)) /= "--calc"))then if ((outfilenum == 0)) then argument = 'none' call get_out_file(argument) diff --git a/src/mode_metric.f90 b/src/mode_metric.f90 index 10838c6..60d2867 100644 --- a/src/mode_metric.f90 +++ b/src/mode_metric.f90 @@ -93,10 +93,10 @@ module mode_metric call get_command_argument(2,metric_type,arglen) if (arglen == 0) stop "Incomplete mode metric command, check documentation" select case(trim(adjustl(metric_type))) - case("microrotation") + case("microrotation", "def_grad") continue case default - print *, "Mode metric does not accept metric ", metric_type, ". Please select from: microrotation" + print *, "Mode metric does not accept metric ", metric_type, ". Please select from: microrotation, def_grad" stop 3 end select @@ -155,6 +155,7 @@ module mode_metric do i = 1,3 do j = 1, 3 met(k, ip) = def_grad(i,j) + k = k + 1 end do end do case('microrotation') @@ -228,7 +229,7 @@ module mode_metric if(atom_num > 0) then do i = 1, atom_num - write(11,*) type_atom(i), r_atom(:,i), met(:,tag_atom(i)) + write(11,*) 0, type_atom(i), r_atom(:,i), met(:,tag_atom(i)) end do end if @@ -236,7 +237,7 @@ module mode_metric do i = 1, ele_num do inod = 1, ng_node(lat_ele(i)) do ibasis = 1, basisnum(lat_ele(i)) - write(11,*) basis_type(ibasis,lat_ele(i)), r_node(:,ibasis,inod,i), & + write(11,*) 1, basis_type(ibasis,lat_ele(i)), r_node(:,ibasis,inod,i), & met(:, atom_num+(tag_ele(i)-1)*max_ng_node*max_basisnum + (inod-1)*max_basisnum + ibasis) end do end do