diff --git a/code/mpie_spectral.f90 b/code/mpie_spectral.f90 new file mode 100644 index 000000000..861a40029 --- /dev/null +++ b/code/mpie_spectral.f90 @@ -0,0 +1,128 @@ +!* $Id: mpie_cpfem_marc.f90 572 2010-05-20 09:14:59Z MPIE\c.kords $ +!******************************************************************** +! Material subroutine for BVP solution using spectral method +! +! written by P. Eisenlohr, +! F. Roters, +! L. Hantcherli, +! W.A. Counts +! D.D. Tjahjanto +! C. Kords +! M. Diehl +! R. Lebensohn +! +! MPI fuer Eisenforschung, Duesseldorf +! +!******************************************************************** +! Usage: +! - start program with mpie_spectral PathToMeshFile/NameOfMesh.mesh +! PathToLoadFile/NameOfLoadFile.load +! - PathToLoadFile will be the working directory +! - make sure the file "material.config" exists in the working +! directory +!******************************************************************** +! +include "prec.f90" ! uses nothing else + + +MODULE mpie_interface + +character(len=64), parameter :: FEsolver = 'Spectral' +character(len=5), parameter :: InputFileExtension = '.mesh' + +CONTAINS + +subroutine mpie_interface_init + write(6,*) + write(6,*) '<<<+- mpie_spectral init new -+>>>' + write(6,*) '$Id: mpie_spectral.f90 572 2010-05-20 09:14:59Z MPIE\c.kords $' + write(6,*) + return +end subroutine + +function getSolverWorkingDirectoryName() + implicit none + character(1024) cwd,outname,getSolverWorkingDirectoryName + character(len=*), parameter :: pathSep = achar(47)//achar(92) ! /, \ + + print *, 'start of func' + + call getarg(2,outname) ! path to loadFile + + if (scan(outname,pathSep) == 1) then ! absolute path given as command line argument + getSolverWorkingDirectoryName = outname(1:scan(outname,pathSep,back=.true.)) + print *, 'abs',scan(outname,pathSep,back=.true.) + else + call getcwd(cwd) + getSolverWorkingDirectoryName = trim(cwd)//'/'//outname(1:scan(outname,pathSep,back=.true.)) + print *, 'rel',scan(outname,pathSep,back=.true.),getSolverWorkingDirectoryName + endif + + return +! getSolverWorkingDirectoryName = rectifyPath(getSolverWorkingdirectory) +end function + +function getSolverJobName() + use prec + implicit none + + character(1024) getSolverJobName, outName + character(len=*), parameter :: pathSep = achar(47)//achar(92) ! /, \ + integer(pInt) extPos + + getSolverJobName='' + call getarg(1,outName) + extPos = len_trim(outName)-4 + getSolverJobName = outName(scan(outName,pathSep,back=.true.)+1:extPos) +! write(6,*) 'getSolverJobName', getSolverJobName +end function + +END MODULE + + include "IO.f90" ! uses prec + include "numerics.f90" ! uses prec, IO + include "math.f90" ! uses prec, numerics + include "debug.f90" ! uses prec, numerics + include "FEsolving.f90" ! uses prec, IO + include "mesh.f90" ! uses prec, math, IO, FEsolving + include "material.f90" ! uses prec, math, IO, mesh + include "lattice.f90" ! uses prec, math, IO, material + include "constitutive_phenopowerlaw.f90" ! uses prec, math, IO, lattice, material, debug + include "constitutive_j2.f90" ! uses prec, math, IO, lattice, material, debug + include "constitutive_dislotwin.f90" ! uses prec, math, IO, lattice, material, debug + include "constitutive_nonlocal.f90" ! uses prec, math, IO, lattice, material, debug + include "constitutive.f90" ! uses prec, IO, math, lattice, mesh, debug + include "crystallite.f90" ! uses prec, math, IO, numerics + include "homogenization_isostrain.f90" ! uses prec, math, IO, + include "homogenization_RGC.f90" ! uses prec, math, IO, numerics, mesh: added <<>> + include "homogenization.f90" ! uses prec, math, IO, numerics + include "CPFEM.f90" ! uses prec, math, IO, numerics, debug, FEsolving, mesh, lattice, constitutive, crystallite + + + +program mpie_spectral + + use prec + use mpie_interface + + implicit none + character(len=1024) path + + call mpie_interface_init() + if (IargC() < 2) then + print *,'buh' + else + path = getSolverWorkingDirectoryName() + print *, path + endif +end program mpie_spectral + +subroutine quit(id) + use prec + + implicit none + + integer(pInt) id + + stop +end subroutine