User Tools

Site Tools


hydrocode_makefile

Since VH-1 does the setup of the problem in the main code, I wanted to have a way to have several different problems set up at the same time inside one source folder. My solution is as follows, let me know if you have a better way to do this. — Alex B.

  1. set up a problem name in the beginning of the makefile and create the corresponding vhone_<problemname>.f90
  2. run make link to create a symlink of this file to vhone.f90 before compiling.
  3. compile as usual with make. This will create the file vh1-starter-<problemname> in the main directory.
  4. type make run to let it cd into the appropriate directory and run the newly compiled file, thus eliminating the need to cd between the two directories all the time.

Here is the modified makefile I use for the starter version, it can easily be adapted to the serial version, although one might find that files other than vhone.f90 differ from problem to problem:

makefile
#name of the problem
PROBLEM = insertnameofproblemhere
 
# Specify search path for subroutines that perform 1D ppmlr hydrodynamics
VPATH = ../PPMLR 
#
# System-dependent parameters 
#
# F90           FORTRAN 90 Compiler
# LDR           Program to load the objects into an executable, typically the same as F90
# LDFLAGS       Flags to pass to the compiler during linking
# LIBS          A list of libraries to link with the executable, normally only netCDF
#
#  the following is set for gfortran compiler  http://gcc.gnu.org/wiki/GFortran
#
F90 = gfortran 
FFLAGS = -c 
LDR=	gfortran              
LDRFLAGS=              
LIBS=  
#
#
# List of objects to build multidimensional VH-1 hydro code:
 
VHOBJS = vh1mods.o vhone.o \
         ppmlr.o forces.o flatten.o evolve.o remap.o \
         states.o boundary.o volume.o riemann.o parabola.o
 
 
# Lines from here on down should not need to be changed.  They are the
# actual rules which make uses to build the executable
#
.SUFFIXES: .f90 .o
 
.f90.o:
	$(F90) $(FFLAGS) $< 
 
vhzero:	$(VHOBJS)
 
	$(LDR) $(LDRFLAGS) -o vh1-starter $(VHOBJS) $(LIBS); mv vh1-starter ../../vh1-starter-$(PROBLEM)
#
#
clean:
	rm -f *.o *.l
 
clobber:	clean
	rm -f ../../vh1-starter-$(PROBLEM)
	rm -f *.mod
 
link:
	ln -sf vhone_$(PROBLEM).f90 vhone.f90
 
run:
	cd ../../; ./vh1-starter-$(PROBLEM)
 
# Dependencies for the object files
vhone.o:    vhone.f90    global.mod sweeps.mod sweepsize.mod 
 
evolve.o:   evolve.f90   global.mod sweeps.mod sweepsize.mod
flatten.o:  flatten.f90  global.mod sweeps.mod sweepsize.mod
forces.o:   forces.f90   global.mod sweeps.mod sweepsize.mod
ppmlr.o:    ppmlr.f90    global.mod sweeps.mod sweepsize.mod
remap.o:    remap.f90    global.mod sweeps.mod sweepsize.mod
states.o:   states.f90   global.mod sweeps.mod sweepsize.mod
boundary.o: boundary.f90 global.mod sweeps.mod sweepsize.mod
volume.o:   volume.f90   global.mod sweeps.mod sweepsize.mod
parabola.o: parabola.f90 sweepsize.mod
riemann.o:  riemann.f90  sweepsize.mod
hydrocode_makefile.txt · Last modified: 2014/06/02 22:10 by bartl