From ba0b278aca485541d8b6b0aef57b93e1c719c01c Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Thu, 5 May 2016 13:00:46 +0200 Subject: [PATCH] better name --- code/Makefile | 24 ++++++++-------- code/spectral_interface.f90 | 14 +++++----- code/system_routines.f90 | 56 ++++++++++++++++++++++--------------- 3 files changed, 52 insertions(+), 42 deletions(-) diff --git a/code/Makefile b/code/Makefile index 454d86e51..110d595f3 100644 --- a/code/Makefile +++ b/code/Makefile @@ -7,11 +7,11 @@ SHELL = /bin/sh # OPTIONS = standard (alternative): meaning #------------------------------------------------------------- # F90 = ifort (gfortran): compiler type, choose Intel or GNU -# COMPILERNAME = name of the compiler executable (if not the same as the ype), e.g. using mpich-g90 instead of ifort +# FCOMPILERNAME = name of the compiler executable (if not the same as the ype), e.g. using mpich-g90 instead of ifort # PORTABLE = TRUE (FALSE): decision, if executable is optimized for the machine on which it was built. # OPTIMIZATION = DEFENSIVE (OFF,AGGRESSIVE,ULTRA): Optimization mode: O2, O0, O3 + further options for most files, O3 + further options for all files # OPENMP = TRUE (FALSE): OpenMP multiprocessor support -# PREFIX = arbitrary prefix (before compilername) +# PREFIX = arbitrary prefix (before FCOMPILERNAME) # OPTION = arbitrary option (just before file to compile) # SUFFIX = arbitrary suffix (after file to compile) # STANDARD_CHECK = checking for Fortran 2008, compiler dependend @@ -24,7 +24,7 @@ include ${PETSC_DIR}/lib/petsc/conf/rules INCLUDE_DIRS := $(PETSC_FC_INCLUDES) -DPETSc -I../lib LIBRARIES := $(PETSC_WITH_EXTERNAL_LIB) -COMPILERNAME ?= $(FC) +FCOMPILERNAME ?= $(FC) CCOMPILERNAME ?= $(CC) LINKERNAME ?= $(FLINKER) @@ -369,7 +369,7 @@ DAMASK_spectral.exe: DAMASK_spectral.o DAMASK_spectral.o: DAMASK_spectral.f90 \ $(SPECTRAL_SOLVER_FILES) - $(PREFIX) $(COMPILERNAME) $(COMPILE_MAXOPTI) -c DAMASK_spectral.f90 $(SUFFIX) + $(PREFIX) $(FCOMPILERNAME) $(COMPILE_MAXOPTI) -c DAMASK_spectral.f90 $(SUFFIX) spectral_mech_AL.o: spectral_mech_AL.f90 \ spectral_utilities.o @@ -416,7 +416,7 @@ DAMASK_FEM.exe: DAMASK_FEM_driver.o $(FEM_FILES) $(LIBRARIES) $(SUFFIX) DAMASK_FEM_driver.o: DAMASK_FEM_driver.f90 $(FEM_SOLVER_FILES) - $(PREFIX) $(COMPILERNAME) $(COMPILE_MAXOPTI) -c ../private/FEM/code/DAMASK_FEM_driver.f90 $(SUFFIX) + $(PREFIX) $(FCOMPILERNAME) $(COMPILE_MAXOPTI) -c ../private/FEM/code/DAMASK_FEM_driver.f90 $(SUFFIX) FEM_mech.o: FEM_mech.f90 \ FEM_utilities.o @@ -441,7 +441,7 @@ FEM_utilities.o: FEM_utilities.f90 \ FEZoo.o: $(wildcard FEZoo.f90) \ IO.o - $(IGNORE) $(PREFIX) $(COMPILERNAME) $(COMPILE) -c ../private/FEM/code/FEZoo.f90 $(SUFFIX) + $(IGNORE) $(PREFIX) $(FCOMPILERNAME) $(COMPILE) -c ../private/FEM/code/FEZoo.f90 $(SUFFIX) touch FEZoo.o CPFEM.o: CPFEM.f90 \ @@ -585,7 +585,7 @@ plastic_none.o: plastic_none.f90 \ ifeq "$(F90)" "gfortran" lattice.o: lattice.f90 \ material.o - $(PREFIX) $(COMPILERNAME) $(COMPILE) -ffree-line-length-240 -c lattice.f90 $(SUFFIX) + $(PREFIX) $(FCOMPILERNAME) $(COMPILE) -ffree-line-length-240 -c lattice.f90 $(SUFFIX) # long lines for interaction matrix else lattice.o: lattice.f90 \ @@ -600,7 +600,7 @@ mesh.o: mesh.f90 \ FEsolving.o \ math.o \ FEZoo.o - $(PREFIX) $(COMPILERNAME) $(COMPILE) -c $(MESHNAME) -o mesh.o $(SUFFIX) + $(PREFIX) $(FCOMPILERNAME) $(COMPILE) -c $(MESHNAME) -o mesh.o $(SUFFIX) FEsolving.o: FEsolving.f90 \ debug.o @@ -623,12 +623,12 @@ IO.o: IO.f90 \ DAMASK_interface.o: spectral_interface.f90 \ $(wildcard DAMASK_FEM_interface.f90) \ prec.o - $(PREFIX) $(COMPILERNAME) $(COMPILE) -c $(INTERFACENAME) -o DAMASK_interface.o $(SUFFIX) + $(PREFIX) $(FCOMPILERNAME) $(COMPILE) -c $(INTERFACENAME) -o DAMASK_interface.o $(SUFFIX) ifeq "$(F90)" "gfortran" prec.o: prec.f90 \ system_routines.o - $(PREFIX) $(COMPILERNAME) $(COMPILE) -c prec.f90 -fno-range-check -fall-intrinsics -fno-fast-math $(SUFFIX) + $(PREFIX) $(FCOMPILERNAME) $(COMPILE) -c prec.f90 -fno-range-check -fall-intrinsics -fno-fast-math $(SUFFIX) # fno-range-check: Disable range checking on results of simplification of constant expressions during compilation # --> allows the definition of DAMASK_NaN #-fall-intrinsics: all intrinsic procedures (including the GNU-specific extensions) are accepted. -Wintrinsics-std will be ignored @@ -649,7 +649,7 @@ C_routines.o: C_routines.c %.o : %.f90 - $(PREFIX) $(COMPILERNAME) $(COMPILE) -c $< $(SUFFIX) + $(PREFIX) $(FCOMPILERNAME) $(COMPILE) -c $< $(SUFFIX) %.o : %.c $(CCOMPILERNAME) -c $< @@ -679,6 +679,6 @@ cleanDAMASK: .PHONY: help help: F90="$(F90)" - COMPILERNAME="$(COMPILERNAME)" + FCOMPILERNAME="$(FCOMPILERNAME)" COMPILEROUT="$(COMPILEROUT)" diff --git a/code/spectral_interface.f90 b/code/spectral_interface.f90 index 8362a2feb..f02b3f412 100644 --- a/code/spectral_interface.f90 +++ b/code/spectral_interface.f90 @@ -220,7 +220,7 @@ end subroutine DAMASK_interface_init character(len=1024) function storeWorkingDirectory(workingDirectoryArg,geometryArg) use system_routines, only: & isDirectory, & - getCWD2 + getCWD implicit none character(len=*), intent(in) :: workingDirectoryArg !< working directory argument @@ -237,7 +237,7 @@ character(len=1024) function storeWorkingDirectory(workingDirectoryArg,geometryA if (workingDirectoryArg(1:1) == pathSep) then ! absolute path given as command line argument storeWorkingDirectory = workingDirectoryArg else - error = getCWD2(cwd) ! relative path given as command line argument + error = getCWD(cwd) ! relative path given as command line argument storeWorkingDirectory = trim(cwd)//pathSep//workingDirectoryArg endif if (storeWorkingDirectory(len(trim(storeWorkingDirectory)):len(trim(storeWorkingDirectory)))/= pathSep) & @@ -250,7 +250,7 @@ character(len=1024) function storeWorkingDirectory(workingDirectoryArg,geometryA if (geometryArg(1:1) == pathSep) then ! absolute path given as command line argument storeWorkingDirectory = geometryArg(1:scan(geometryArg,pathSep,back=.true.)) else - error = getCWD2(cwd) ! relative path given as command line argument + error = getCWD(cwd) ! relative path given as command line argument storeWorkingDirectory = trim(cwd)//pathSep//& geometryArg(1:scan(geometryArg,pathSep,back=.true.)) endif @@ -303,7 +303,7 @@ end function getSolverJobName !-------------------------------------------------------------------------------------------------- character(len=1024) function getGeometryFile(geometryParameter) use system_routines, only: & - getCWD2 + getCWD implicit none character(len=1024), intent(in) :: & @@ -321,7 +321,7 @@ character(len=1024) function getGeometryFile(geometryParameter) if (posExt <= posSep) getGeometryFile = trim(getGeometryFile)//('.geom') ! no extension present if (scan(getGeometryFile,pathSep) /= 1) then ! relative path given as command line argument - error = getCWD2(cwd) + error = getCWD(cwd) getGeometryFile = rectifyPath(trim(cwd)//pathSep//getGeometryFile) else getGeometryFile = rectifyPath(getGeometryFile) @@ -337,7 +337,7 @@ end function getGeometryFile !-------------------------------------------------------------------------------------------------- character(len=1024) function getLoadCaseFile(loadCaseParameter) use system_routines, only: & - getCWD2 + getCWD implicit none character(len=1024), intent(in) :: & @@ -355,7 +355,7 @@ character(len=1024) function getLoadCaseFile(loadCaseParameter) if (posExt <= posSep) getLoadCaseFile = trim(getLoadCaseFile)//('.load') ! no extension present if (scan(getLoadCaseFile,pathSep) /= 1) then ! relative path given as command line argument - error = getCWD2(cwd) + error = getCWD(cwd) getLoadCaseFile = rectifyPath(trim(cwd)//pathSep//getLoadCaseFile) else getLoadCaseFile = rectifyPath(getLoadCaseFile) diff --git a/code/system_routines.f90 b/code/system_routines.f90 index 15107db5a..ebcd8e50b 100644 --- a/code/system_routines.f90 +++ b/code/system_routines.f90 @@ -1,3 +1,7 @@ +!-------------------------------------------------------------------------------------------------- +!> @author Martin Diehl, Max-Planck-Institut für Eisenforschung GmbH +!> @brief provides wrappers to C routines +!-------------------------------------------------------------------------------------------------- module system_routines implicit none @@ -5,7 +9,7 @@ module system_routines public :: & isDirectory, & - getCWD2 + getCWD interface @@ -31,35 +35,41 @@ end interface contains - logical function isDirectory(path) - use, intrinsic :: ISO_C_Binding, only: & - C_INT +!-------------------------------------------------------------------------------------------------- +!> @brief figures out if a given path is a directory (and not an ordinary file) +!-------------------------------------------------------------------------------------------------- +logical function isDirectory(path) + use, intrinsic :: ISO_C_Binding, only: & + C_INT - implicit none - character(len=*), intent(in) :: path + implicit none + character(len=*), intent(in) :: path - isDirectory=merge(.True.,.False.,isDirectory_C(trim(path)) /= 0_C_INT) + isDirectory=merge(.True.,.False.,isDirectory_C(trim(path)) /= 0_C_INT) - end function isDirectory +end function isDirectory - logical function getCWD2(str) - use, intrinsic :: ISO_C_Binding, only: & - C_INT, & - C_CHAR, & - C_NULL_CHAR +!-------------------------------------------------------------------------------------------------- +!> @brief gets the current working directory +!-------------------------------------------------------------------------------------------------- +logical function getCWD(str) + use, intrinsic :: ISO_C_Binding, only: & + C_INT, & + C_CHAR, & + C_NULL_CHAR - implicit none - character(len=*), intent(out) :: str - character(len=1024) :: strFixedLength - integer(C_INT) :: stat - - str = repeat(C_NULL_CHAR,1024) - call getCurrentWorkDir_C(strFixedLength,stat) - str = strFixedLength(1:scan(strFixedLength,C_NULL_CHAR,.True.)-1) - getCWD2=merge(.True.,.False.,stat /= 0_C_INT) + implicit none + character(len=*), intent(out) :: str + character(len=1024) :: strFixedLength + integer(C_INT) :: stat - end function getCWD2 + str = repeat(C_NULL_CHAR,1024) + call getCurrentWorkDir_C(strFixedLength,stat) + str = strFixedLength(1:scan(strFixedLength,C_NULL_CHAR,.True.)-1) + getCWD=merge(.True.,.False.,stat /= 0_C_INT) + +end function getCWD end module system_routines