head	1.51;
access;
symbols
	charm6_1:1.51
	charm_6_0_1:1.51
	charm6_0_1:1.51
	charm6_0:1.51
	ChaNGa_1-0:1.50
	charm5_9:1.28
	charm_5-4-2:1.11
	charm_5-4-1:1.11;
locks; strict;
comment	@# @;


1.51
date	2007.10.03.06.44.20;	author gzheng;	state Exp;
branches;
next	1.50;
commitid	2fb247033a384567;

1.50
date	2005.12.15.17.21.49;	author abecker;	state Exp;
branches;
next	1.49;

1.49
date	2005.12.04.21.06.33;	author gzheng;	state Exp;
branches;
next	1.48;

1.48
date	2005.12.03.17.54.30;	author idooley2;	state Exp;
branches;
next	1.47;

1.47
date	2005.11.30.18.32.10;	author nilesh;	state Exp;
branches;
next	1.46;

1.46
date	2005.11.29.20.56.55;	author nilesh;	state Exp;
branches;
next	1.45;

1.45
date	2005.11.13.16.34.23;	author idooley2;	state Exp;
branches;
next	1.44;

1.44
date	2005.11.12.19.08.49;	author idooley2;	state Exp;
branches;
next	1.43;

1.43
date	2005.10.14.02.02.16;	author wilmarth;	state Exp;
branches;
next	1.42;

1.42
date	2005.09.15.20.51.33;	author wilmarth;	state Exp;
branches;
next	1.41;

1.41
date	2005.08.11.21.04.45;	author nilesh;	state Exp;
branches;
next	1.40;

1.40
date	2005.08.10.23.49.47;	author nilesh;	state Exp;
branches;
next	1.39;

1.39
date	2005.08.05.23.11.46;	author wilmarth;	state Exp;
branches;
next	1.38;

1.38
date	2005.07.23.20.13.20;	author schak;	state Exp;
branches;
next	1.37;

1.37
date	2005.07.22.22.13.51;	author wilmarth;	state Exp;
branches;
next	1.36;

1.36
date	2005.07.22.16.21.06;	author wilmarth;	state Exp;
branches;
next	1.35;

1.35
date	2005.07.21.20.47.59;	author idooley2;	state Exp;
branches;
next	1.34;

1.34
date	2005.07.21.18.18.26;	author wilmarth;	state Exp;
branches;
next	1.33;

1.33
date	2005.07.15.01.16.15;	author idooley2;	state Exp;
branches;
next	1.32;

1.32
date	2005.07.14.16.08.06;	author idooley2;	state Exp;
branches;
next	1.31;

1.31
date	2005.07.12.16.58.11;	author nilesh;	state Exp;
branches;
next	1.30;

1.30
date	2005.07.11.15.40.51;	author idooley2;	state Exp;
branches;
next	1.29;

1.29
date	2005.07.09.16.26.38;	author idooley2;	state Exp;
branches;
next	1.28;

1.28
date	2005.05.02.21.40.16;	author wilmarth;	state Exp;
branches;
next	1.27;

1.27
date	2005.04.14.00.31.25;	author wilmarth;	state Exp;
branches;
next	1.26;

1.26
date	2005.04.09.22.26.05;	author idooley2;	state Exp;
branches;
next	1.25;

1.25
date	2004.08.20.19.31.00;	author schak;	state Exp;
branches;
next	1.24;

1.24
date	2004.03.23.21.30.29;	author schak;	state Exp;
branches;
next	1.23;

1.23
date	2003.09.27.05.30.38;	author gzheng;	state Exp;
branches;
next	1.22;

1.22
date	2003.07.18.03.19.40;	author olawlor;	state Exp;
branches;
next	1.21;

1.21
date	2003.05.31.20.54.58;	author gzheng;	state Exp;
branches;
next	1.20;

1.20
date	2003.05.25.07.50.35;	author gzheng;	state Exp;
branches;
next	1.19;

1.19
date	2003.01.20.20.34.41;	author olawlor;	state Exp;
branches;
next	1.18;

1.18
date	2002.12.23.21.21.34;	author olawlor;	state Exp;
branches;
next	1.17;

1.17
date	2002.12.20.20.38.39;	author olawlor;	state Exp;
branches;
next	1.16;

1.16
date	2002.10.17.23.00.08;	author olawlor;	state Exp;
branches;
next	1.15;

1.15
date	2002.07.26.14.22.04;	author olawlor;	state Exp;
branches;
next	1.14;

1.14
date	2002.07.25.20.57.53;	author olawlor;	state Exp;
branches;
next	1.13;

1.13
date	2001.12.06.23.32.41;	author olawlor;	state Exp;
branches;
next	1.12;

1.12
date	2001.11.05.19.19.45;	author olawlor;	state Exp;
branches;
next	1.11;

1.11
date	2000.11.06.03.37.21;	author olawlor;	state Exp;
branches;
next	1.10;

1.10
date	2000.08.27.08.41.11;	author milind;	state Exp;
branches;
next	1.9;

1.9
date	2000.08.14.22.16.40;	author milind;	state Exp;
branches;
next	1.8;

1.8
date	2000.08.07.16.55.56;	author milind;	state Exp;
branches;
next	1.7;

1.7
date	2000.08.04.09.28.02;	author milind;	state Exp;
branches;
next	1.6;

1.6
date	2000.07.25.16.04.05;	author wilmarth;	state Exp;
branches;
next	1.5;

1.5
date	2000.07.24.20.18.17;	author milind;	state Exp;
branches;
next	1.4;

1.4
date	2000.07.17.14.36.10;	author milind;	state Exp;
branches;
next	1.3;

1.3
date	2000.07.10.18.23.51;	author milind;	state Exp;
branches;
next	1.2;

1.2
date	2000.06.20.05.28.51;	author milind;	state Exp;
branches;
next	1.1;

1.1
date	2000.06.14.20.03.44;	author milind;	state Exp;
branches;
next	;


desc
@@


1.51
log
@fixed mpi.h confliction with ampi and mpi build.
@
text
@CDIR=../../../..
CHARMC=$(CDIR)/bin/charmc $(OPTS)
AMPICC=$(CDIR)/bin/mpiCC $(OPTS)


HEADERS=fem.h femf.h fem_mesh.h fem_impl.h parallel_part.h map.h  fem_mesh_modify.h FEMMeshModify.decl.h fem_adapt_new.h fem_adapt_algs.h fem_interpolate.h fem_lock.h fem_util.h fem_lock_node.h fem_adapt_lock.h fem_adapt_if.h
HEADDEP=$(HEADERS) fem_impl.h 
OBJS=fem.o fem_mesh.o symmetries.o \
	partition.o map.o fem_compat.o call_init.o \
	parallel_part.o fem_mesh_modify.o fem_mesh_adjacency.o \
	fem_adapt_new.o fem_adapt_algs.o fem_interpolate.o \
	fem_lock.o fem_util.o fem_lock_node.o fem_adapt_lock.o \
	fem_adapt_if.o
COMPAT=compat_init.o compat_finit.o compat_driver.o compat_fdriver.o 
LIB=libmodulefem

LIBDIR=$(CDIR)/lib
DEST=$(LIBDIR)/$(LIB).a
COMPATLIB=$(LIBDIR)/libfem-compat.a

FEMMAIN=$(LIBDIR)/libfemmain.o

.SUFFIXES:
.SUFFIXES: .c .o .C

.c.o:
	$(CHARMC) -c $<

all: $(DEST) $(COMPATLIB) $(FEMMAIN)

$(DEST): $(OBJS) $(COMPAT) headers
	$(CHARMC) $(OBJS) -o $@@
	cp $(LIB).dep $(LIBDIR)/$(LIB).dep

$(COMPATLIB): $(COMPAT)
	$(CHARMC) $(COMPAT) -o $@@

headers: $(HEADERS)
	cp $(HEADERS) $(CDIR)/include/
	cp vector2d.h $(CDIR)/include/
	touch headers

compat_init.o: compat_init.c

compat_finit.o: compat_finit.c

compat_driver.o: compat_driver.c

compat_fdriver.o: compat_fdriver.c

fem.o: fem.C $(HEADDEP)
	$(CHARMC) -c fem.C

partition.o: partition.C $(HEADDEP)
	$(CHARMC) -c partition.C

fem.decl.h: fem.ci 
	$(CHARMC) fem.ci

parallel_part.o: parallel_part.C fem.decl.h $(HEADDEP)
	$(CHARMC) -c parallel_part.C

map.o: map.C $(HEADDEP)
	$(CHARMC) -c map.C

symmetries.o: symmetries.C $(HEADDEP)
	$(CHARMC) -c symmetries.C

datatype.o: datatype.C $(HEADDEP)
	$(CHARMC) -c datatype.C

fem_compat.o: fem_compat.C $(HEADDEP)
	$(CHARMC) -c fem_compat.C

fem_mesh.o: fem_mesh.C $(HEADDEP)
	$(AMPICC) -c fem_mesh.C

#fem_adapt.o: fem_adapt.C $(HEADDEP)
#	$(CHARMC) -c fem_adapt.C

fem_adapt_new.o: fem_adapt_new.C $(HEADDEP)
	$(AMPICC) -c fem_adapt_new.C

fem_adapt_algs.o: fem_adapt_algs.C $(HEADDEP)
	$(AMPICC) -c fem_adapt_algs.C

fem_interpolate.o: fem_interpolate.C $(HEADDEP)
	$(AMPICC) -c fem_interpolate.C

fem_lock.o: fem_lock.C $(HEADDEP)
	$(AMPICC) -c fem_lock.C

fem_util.o: fem_util.C $(HEADDEP)
	$(AMPICC) -c fem_util.C

fem_lock_node.o: fem_lock_node.C $(HEADDEP)
	$(AMPICC) -c fem_lock_node.C

fem_adapt_lock.o: fem_adapt_lock.C $(HEADDEP)
	$(AMPICC) -c fem_adapt_lock.C

fem_adapt_if.o: fem_adapt_if.C $(HEADDEP)
	$(AMPICC) -c fem_adapt_if.C

fem_comm.o: fem_comm.C $(HEADDEP)
	$(CHARMC) -c fem_comm.C

$(FEMMAIN): femmain.C $(HEADDEP)
	$(CHARMC) -c femmain.C -o $(FEMMAIN)

call_init.o: call_init.c
	$(CHARMC) -c call_init.c

FEMMeshModify.decl.h: fem_mesh_modify.ci
	$(CHARMC) fem_mesh_modify.ci

fem_mesh_modify.o: FEMMeshModify.decl.h fem_mesh_modify.C fem_mesh_modify.h $(HEADDEP)
	$(AMPICC) -c fem_mesh_modify.C

fem_mesh_adjacency.o: fem_mesh_adjacency.C $(HEADDEP)
	$(CHARMC) -c fem_mesh_adjacency.C

clean:
	rm -rf *.a *.def.h *.decl.h *.o SunWS_cache $(DEST) $(COMPATLIB) headers
@


1.50
log
@Separated fortran interface into header and implementation. Now it should link
properly without breaking the fortran interface.
@
text
@d3 1
d76 1
a76 1
	$(CHARMC) -c fem_mesh.C
d82 1
a82 1
	$(CHARMC) -c fem_adapt_new.C
d85 1
a85 1
	$(CHARMC) -c fem_adapt_algs.C
d88 1
a88 1
	$(CHARMC) -c fem_interpolate.C
d91 1
a91 1
	$(CHARMC) -c fem_lock.C
d94 1
a94 1
	$(CHARMC) -c fem_util.C
d97 1
a97 1
	$(CHARMC) -c fem_lock_node.C
d100 1
a100 1
	$(CHARMC) -c fem_adapt_lock.C
d103 1
a103 1
	$(CHARMC) -c fem_adapt_if.C
d118 1
a118 1
	$(CHARMC) -c fem_mesh_modify.C
@


1.49
log
@fixed a formating problem which confuses lemieux make.
@
text
@d11 2
a12 1
	fem_lock.o fem_util.o fem_lock_node.o fem_adapt_lock.o
d101 3
@


1.48
log
@Removed collide files which have a dependency on the collision library, which may not be built if just building FEM. It would work if building LIBS though.
@
text
@a11 1
	
@


1.47
log
@converted vector to ckvec for portability across all machine layers
@
text
@d12 1
d23 1
a23 1
.SUFFIXES: .c .o
@


1.46
log
@using vector, so need to link it to stdc++, some compilers do not include this by default
@
text
@d30 1
a30 1
	$(CHARMC) $(OBJS) -o $@@ -lstdc++
@


1.45
log
@Reverting to old makefile.
@
text
@d30 1
a30 1
	$(CHARMC) $(OBJS) -o $@@
@


1.44
log
@Made automatic rules in makefile. This cut its size in half. Modified API for collision interface. The algorithm is now described in
the comments in the .C file. The makefile now builds the collision detection code as well.
@
text
@a3 14
HEADERS= fem.h femf.h fem_mesh.h fem_impl.h parallel_part.h map.h \
		 fem_mesh_modify.h  fem_adapt_new.h fem_collide.h         \
		 fem_adapt_algs.h fem_interpolate.h fem_lock.h fem_util.h \
		 fem_lock_node.h fem_adapt_lock.h fem_adapt_if.h     

GENHEADERS= FEMMeshModify.decl.h fem.decl.h FEMMeshModify.def.h

HEADDEP= $(GENHEADERS) $(HEADERS)

OBJS=fem.o fem_mesh.o symmetries.o partition.o map.o fem_compat.o \
	 call_init.o parallel_part.o fem_mesh_modify.o                \
	 fem_mesh_adjacency.o fem_adapt_new.o fem_adapt_algs.o        \
	 fem_interpolate.o fem_lock.o fem_util.o fem_lock_node.o      \
	 fem_adapt_lock.o fem_collide.o                               
d5 7
a18 1
#Should this be here?:
d21 4
a24 9
#Automatic rules:
.SUFFIXES: .c .o .C .decl.h .ci .def.h
.ci.decl.h: $< $(HEADERS)
	$(CHARMC) $<
.ci.def.h: $< $(HEADERS)
	$(CHARMC) $<
.c.o: $< $(HEADDEP)
	$(CHARMC) -c $<
.C.o: $< $(HEADDEP)
d29 1
a29 11

#Manual rules since some dependencies are a little screwy. These should be fixed
fem_mesh_modify.o: $(HEADDEP)
	$(CHARMC) -c fem_mesh_modify.C
FEMMeshModify.decl.h: $(HEADERS)
	$(CHARMC) fem_mesh_modify.ci
FEMMeshModify.def.h: $(HEADERS)
	$(CHARMC) fem_mesh_modify.ci

# Build libmodulefem
$(DEST): $(OBJS) $(COMPAT) headers $(HEADDEP)
a32 1
# Build libfem-compat
a35 1
# Copy header files to include directory
d41 77
a117 1
# clean up
@


1.43
log
@Interface completed.
@
text
@d4 14
a18 7
HEADERS=fem.h femf.h fem_mesh.h fem_impl.h parallel_part.h map.h  fem_mesh_modify.h FEMMeshModify.decl.h fem_adapt_new.h fem_adapt_algs.h fem_interpolate.h fem_lock.h fem_util.h fem_lock_node.h fem_adapt_lock.h fem_adapt_if.h
HEADDEP=$(HEADERS) fem_impl.h 
OBJS=fem.o fem_mesh.o symmetries.o \
	partition.o map.o fem_compat.o call_init.o \
	parallel_part.o fem_mesh_modify.o fem_mesh_adjacency.o \
	fem_adapt_new.o fem_adapt_algs.o fem_interpolate.o \
	fem_lock.o fem_util.o fem_lock_node.o fem_adapt_lock.o
d26 1
d29 9
a37 4
.SUFFIXES:
.SUFFIXES: .c .o

.c.o:
d42 11
a52 1
$(DEST): $(OBJS) $(COMPAT) headers
d56 1
d60 1
d66 1
a66 77
compat_init.o: compat_init.c

compat_finit.o: compat_finit.c

compat_driver.o: compat_driver.c

compat_fdriver.o: compat_fdriver.c

fem.o: fem.C $(HEADDEP)
	$(CHARMC) -c fem.C

partition.o: partition.C $(HEADDEP)
	$(CHARMC) -c partition.C

fem.decl.h: fem.ci 
	$(CHARMC) fem.ci

parallel_part.o: parallel_part.C fem.decl.h $(HEADDEP)
	$(CHARMC) -c parallel_part.C

map.o: map.C $(HEADDEP)
	$(CHARMC) -c map.C

symmetries.o: symmetries.C $(HEADDEP)
	$(CHARMC) -c symmetries.C

datatype.o: datatype.C $(HEADDEP)
	$(CHARMC) -c datatype.C

fem_compat.o: fem_compat.C $(HEADDEP)
	$(CHARMC) -c fem_compat.C

fem_mesh.o: fem_mesh.C $(HEADDEP)
	$(CHARMC) -c fem_mesh.C

#fem_adapt.o: fem_adapt.C $(HEADDEP)
#	$(CHARMC) -c fem_adapt.C

fem_adapt_new.o: fem_adapt_new.C $(HEADDEP)
	$(CHARMC) -c fem_adapt_new.C

fem_adapt_algs.o: fem_adapt_algs.C $(HEADDEP)
	$(CHARMC) -c fem_adapt_algs.C

fem_interpolate.o: fem_interpolate.C $(HEADDEP)
	$(CHARMC) -c fem_interpolate.C

fem_lock.o: fem_lock.C $(HEADDEP)
	$(CHARMC) -c fem_lock.C

fem_util.o: fem_util.C $(HEADDEP)
	$(CHARMC) -c fem_util.C

fem_lock_node.o: fem_lock_node.C $(HEADDEP)
	$(CHARMC) -c fem_lock_node.C

fem_adapt_lock.o: fem_adapt_lock.C $(HEADDEP)
	$(CHARMC) -c fem_adapt_lock.C

fem_comm.o: fem_comm.C $(HEADDEP)
	$(CHARMC) -c fem_comm.C

$(FEMMAIN): femmain.C $(HEADDEP)
	$(CHARMC) -c femmain.C -o $(FEMMAIN)

call_init.o: call_init.c
	$(CHARMC) -c call_init.c

FEMMeshModify.decl.h: fem_mesh_modify.ci
	$(CHARMC) fem_mesh_modify.ci

fem_mesh_modify.o: FEMMeshModify.decl.h fem_mesh_modify.C fem_mesh_modify.h $(HEADDEP)
	$(CHARMC) -c fem_mesh_modify.C

fem_mesh_adjacency.o: fem_mesh_adjacency.C $(HEADDEP)
	$(CHARMC) -c fem_mesh_adjacency.C

@


1.42
log
@Latest refine algortihm.
@
text
@d5 1
a5 1
HEADERS=fem.h femf.h fem_mesh.h fem_impl.h parallel_part.h map.h  fem_mesh_modify.h FEMMeshModify.decl.h fem_adapt_new.h fem_adapt_algs.h fem_interpolate.h fem_lock.h fem_util.h fem_lock_node.h fem_adapt_lock.h
@


1.41
log
@modifications to use node locking
@
text
@d38 1
@


1.40
log
@made separate files for fem_lock & fem_mutil, it had become too unwieldy for one file
@
text
@d5 1
a5 1
HEADERS=fem.h femf.h fem_mesh.h fem_impl.h parallel_part.h map.h  fem_mesh_modify.h FEMMeshModify.decl.h fem_adapt_new.h fem_adapt_algs.h fem_interpolate.h fem_lock.h fem_util.h
d11 1
a11 1
	fem_lock.o fem_util.o
d93 6
@


1.39
log
@Adding a start on the adaptivity algorithms.
@
text
@d5 1
a5 1
HEADERS=fem.h femf.h fem_mesh.h fem_impl.h parallel_part.h map.h  fem_mesh_modify.h FEMMeshModify.decl.h fem_adapt_new.h fem_adapt_algs.h fem_interpolate.h 
d10 2
a11 1
	fem_adapt_new.o fem_adapt_algs.o fem_interpolate.o
d87 6
@


1.38
log
@Removed inline from the definition of some functions
@
text
@d5 1
a5 1
HEADERS=fem.h femf.h fem_mesh.h fem_impl.h parallel_part.h map.h  fem_mesh_modify.h FEMMeshModify.decl.h fem_adapt_new.h fem_interpolate.h 
d10 1
a10 1
	fem_adapt_new.o fem_interpolate.o
d80 3
@


1.37
log
@Added a propagating refinement method for longest edge bisection. Moved FEM_Adapt object inside of femMeshModify.  Lots of integration stuff.
Task: FEM
@
text
@d10 1
a10 1
	fem_adapt_new.o fem_interpolate.o 
d74 3
@


1.36
log
@Adding interpolate header back to Makefile.  Was mysteriously removed.
@
text
@d5 1
a5 1
HEADERS=fem.h femf.h fem_mesh.h fem_adapt_new.h fem_interpolate.h fem_impl.h parallel_part.h map.h  fem_mesh_modify.h FEMMeshModify.decl.h
d7 1
a7 1
OBJS=fem.o fem_mesh.o fem_adapt_new.o symmetries.o \
d9 2
a10 1
	parallel_part.o fem_interpolate.o fem_mesh_modify.o fem_mesh_adjacency.o
@


1.35
log
@Fixed broken makefile
@
text
@d5 1
a5 1
HEADERS=fem.h femf.h fem_mesh.h fem_adapt_new.h fem_impl.h parallel_part.h map.h  fem_mesh_modify.h FEMMeshModify.decl.h
@


1.34
log
@Interpolation code can now be overridden via inheritance as well as by setting particular function pointers.  All node interpolation functions have a default behavior that averages real data and minimizes integer data, for all attributes.  These should work for all 2D and 3D cases, for inserting nodes on edges with a weight, for inserting on a face of 3 or 4 nodes by strict averaging, and for inserting in an arbitrary volume of 8 nodes or less, again by strict averaging.  This code compiles but has not been tested.  The Makefile has been modified to build it.
Task: FEM
@
text
@d4 2
a5 1
HEADERS=fem.h femf.h fem_mesh.h fem_adapt.h fem_impl.h parallel_part.h map.h  fem_interpolate.h fem_mesh_modify.h FEMMeshModify.decl.h
d7 1
a7 1
OBJS=fem.o fem_mesh.o fem_adapt.o symmetries.o \
d73 2
a74 2
fem_adapt.o: fem_adapt.C $(HEADDEP)
	$(CHARMC) -c fem_adapt.C
@


1.33
log
@The last change didn't change all occurences of a dependency.
@
text
@d4 1
a4 1
HEADERS=fem.h femf.h fem_mesh.h fem_adapt.h fem_impl.h parallel_part.h map.h  fem_mesh_modify.h FEMMeshModify.decl.h
d8 1
a8 1
	parallel_part.o fem_mesh_modify.o fem_mesh_adjacency.o
d75 3
@


1.32
log
@Fixing a problem that showed up on autobuild, as well as modifying some other things.
@
text
@d4 1
a4 1
HEADERS=fem.h femf.h fem_mesh.h fem_adapt.h fem_impl.h parallel_part.h map.h  fem_mesh_modify.h femMeshModify.decl.h
d84 1
a84 1
femMeshModify.decl.h: fem_mesh_modify.ci
d87 1
a87 1
fem_mesh_modify.o: femMeshModify.decl.h fem_mesh_modify.C fem_mesh_modify.h $(HEADDEP)
@


1.31
log
@*** empty log message ***
@
text
@d4 1
a4 1
HEADERS=fem.h femf.h fem_mesh.h fem_adapt.h fem_impl.h parallel_part.h map.h  fem_mesh_modify.h
@


1.30
log
@Moving all adjacency functions to fem_mesh_adjacency.C
@
text
@d84 4
a87 1
fem_mesh_modify.o: fem_mesh_modify.C fem_mesh_modify.h $(HEADDEP)
@


1.29
log
@Adding the new mesh modification functionality. The files are currently empty, but they contain the prototypes
and general steps that need to be implemented.
@
text
@d8 1
a8 1
	parallel_part.o fem_mesh_modify.o
d87 3
@


1.28
log
@Fixed fem_adapt includes, moved marking code from fem_mesh to the CPSD interface.
@
text
@d4 1
a4 1
HEADERS=fem.h femf.h fem_mesh.h fem_adapt.h fem_impl.h parallel_part.h map.h
d7 2
a8 1
	partition.o map.o fem_compat.o call_init.o parallel_part.o
d20 1
a20 1
                                                                                
d84 3
@


1.27
log
@FEM_Adapt code added and built in FEM Makefile.  Currently it builds on net-linux. It is not used anywhere.
@
text
@d4 1
a4 1
HEADERS=fem.h femf.h fem_mesh.h fem_adapt.h parallel_part.h map.h
@


1.26
log
@Added map.h
@
text
@d4 1
a4 1
HEADERS=fem.h femf.h fem_mesh.h parallel_part.h map.h
d6 1
a6 1
OBJS=fem.o fem_mesh.o symmetries.o \
d71 3
@


1.25
log
@Added the parallel partitioning code in files parallel_part.C and parallel_part,h.
By default the code in parallel_part.C is not compiled. In the default case
fem.C doesnt call the parallel partitioning code. So the default compilation of fem
shouldnot change.

The parallel partitioning code is activated when FEM is compiled with FEM_PARALLEL_PART.
This activates the code in parallel_part.C and fem.C now calls the parallel partition routine.
In this case FEM needs msa and parmetis. The libmodulefem.dep will be changed to reflect that.
The parallel partition code is not yet in its final shape. The part with multiple ghost layers
needs to be debugged and the rest of the code needs to be optimized and might also need some
refactoring to speed it up.
@
text
@d4 1
a4 1
HEADERS=fem.h femf.h fem_mesh.h parallel_part.h
@


1.24
log
@Expose fem_mesh.C classes for use in the femrefine interface
@
text
@d4 1
a4 1
HEADERS=fem.h femf.h fem_mesh.h
d7 1
a7 1
	partition.o map.o fem_compat.o call_init.o
d50 6
@


1.23
log
@small changes for parallel make
@
text
@d4 2
a5 2
HEADERS=fem.h femf.h
HEADDEP=$(HEADERS) fem_impl.h fem_mesh.h
@


1.22
log
@Major rewrite-- all communication now via MPI.
There are several advantages to this:
  1.) Much cleaner communication routines.
  2.) Ability to run properly within a split MPI communicator,
      rather than in MPI_COMM_WORLD.
  3.) Theoretical possiblity of running directly on native MPI.

I also took this opportunity to add a clean
"mesh" interface for reading, writing, point-to-point
and collective mesh operations, and creation and deletion.
The result is (I think) a quite nice API, which should be
100% backward compatible.
@
text
@d17 6
d36 7
a42 7
$(COMPAT):
	@@for o in $(COMPAT); \
	do \
	        file=`echo $$o | sed -e "s/\.o/.c/g"`; \
	        echo "$(CHARMC) -c $$file..."; \
	        $(CHARMC) -c $$file || exit 1; \
	done
@


1.21
log
@update initcall; make libmodulefem-compat.a shorter to libfem-compat.a
@
text
@d5 1
a5 1
HEADDEP=$(HEADERS) fem_impl.h fem_mesh.h fem.decl.h fem.def.h
d15 3
a17 1
all: $(DEST) $(COMPATLIB)
d62 2
a63 2
fem.decl.h fem.def.h: fem.ci
	$(CHARMC) fem.ci
@


1.20
log
@separate compat_*.o into a new lib.
@
text
@d13 1
a13 1
COMPATLIB=$(LIBDIR)/libmodulefem-compat.a
@


1.19
log
@Heavy refactoring of FEM framework:
 -Unified nodes, elements, and sparse "entities"
 -Unified user data, connectivity, global numbers, sym "attributes"
 -Added "mesh" identifier (to eventually support multiple meshes)
 -Moved communication to IDXL library
These changes provide little benefit right now; but
should allow much more flexibility in the future.
@
text
@d13 1
d15 1
a15 1
all: $(DEST)
d18 1
a18 1
	$(CHARMC) $(OBJS) $(COMPAT) -o $@@
d21 3
d67 1
a67 1
	rm -rf *.a *.def.h *.decl.h *.o SunWS_cache $(DEST) headers
@


1.18
log
@Fix for (stupid) Tru64 make, which is confused by
the terse build/dependencies split.
@
text
@d5 3
a7 4
HEADDEP=$(HEADERS) fem_impl.h fem.decl.h fem.def.h
OBJS=fem.o \
	symmetries.o datatype.o \
	partition.o map.o call_init.o
d9 4
a12 1
DEST=$(CDIR)/lib/libmodulefem.a
d18 1
d46 9
@


1.17
log
@Split DType from main fem_impl header into
its own header.
@
text
@d29 2
a30 2
.C.o:
	$(CHARMC) -c $<
d32 11
a42 5
fem.o: $(HEADDEP)
partition.o: $(HEADDEP)
map.o: $(HEADDEP)
symmetries.o: $(HEADDEP)
datatype.o: $(HEADDEP)
d46 3
@


1.16
log
@Fixes for IBM SP-3.  This machine's (stupid) f90 compiler just
lowercases external names, which causes the f90 "init" and
C "init" to have the same name.

This means:
  -mesh_updated has to be passed in by the user, since we can't
statically know whether to call the C or F90 version; and they
both have the same names anyway.  This means a backward-compatability
breaking change to the arguments of FEM_Update_mesh.
  -"offsetof" can't be written in C (since it's a keyword); so
it has to be renamed "foffsetof".  This also breaks backward
compatability.
@
text
@d6 3
a8 1
OBJS=fem.o partition.o map.o symmetries.o call_init.o
d29 2
a30 2
fem.o: fem.C $(HEADDEP)
	$(CHARMC) -c fem.C
d32 5
a36 8
partition.o: partition.C $(HEADDEP)
	$(CHARMC) -c partition.C

map.o: map.C $(HEADDEP)
	$(CHARMC) -c map.C

symmetries.o: symmetries.C $(HEADDEP)
	$(CHARMC) -c symmetries.C
@


1.15
log
@Workaround for Intel C++ 6.0 compiler.
@
text
@d7 1
a7 2
COMPAT=compat_init.o compat_finit.o compat_driver.o compat_fdriver.o \
	compat_mu.o compat_fmu.o
@


1.14
log
@Added symmetry determination based on matching up (permuted)
face lists.  This amounts to calling FEM_Add_Linear_Periodicity
in init, and FEM_Sym_Coordinates in driver.
@
text
@d6 1
a6 1
OBJS=fem.o partition.o map.o symmetries.o
@


1.13
log
@Minor changes to make fem a linkable module.
@
text
@d6 1
a6 1
OBJS=fem.o partition.o map.o
d36 3
@


1.12
log
@Reordered build dependencies so C FEM framework gets
built first, then f90 (which may fail).
@
text
@d4 23
a26 2
OBJS=partition.o map.o
HEADERS=fem.h fem_impl.h fem.decl.h fem.def.h
d28 2
a29 2
all: $(CDIR)/include/fem.h $(CDIR)/include/femf.h \
	libfem.a libfemf.a $(CDIR)/lib/fmain.o
d31 1
a31 12
libfem.a: fem.C $(HEADERS) $(OBJS)
	$(CHARMC) -DFEM_FORTRAN=0 -c fem.C
	$(CHARMC) -cp $(CDIR)/lib -o libfem.a fem.o $(OBJS)

libfemf.a: fem.C $(HEADERS) $(OBJS)
	$(CHARMC) -DFEM_FORTRAN=1 -c fem.C
	$(CHARMC) -cp $(CDIR)/lib -o libfemf.a fem.o $(OBJS)

fmain.o: fmain.f90
	$(CHARMC) -c fmain.f90

partition.o: partition.C $(HEADERS)
d34 1
a34 1
map.o: map.C $(HEADERS)
a39 9
$(CDIR)/include/fem.h: fem.h
	/bin/cp fem.h $(CDIR)/include

$(CDIR)/include/femf.h: femf.h
	/bin/cp femf.h $(CDIR)/include

$(CDIR)/lib/fmain.o: fmain.o
	/bin/cp fmain.o $(CDIR)/lib

d41 1
a41 1
	rm -rf *.a *.def.h *.decl.h *.o SunWS_cache
@


1.11
log
@New FEM implementation-- supports multiple element types,
mesh re-assembly, etc.
@
text
@d7 2
a8 2
all: libfem.a libfemf.a $(CDIR)/include/fem.h \
     $(CDIR)/include/femf.h $(CDIR)/lib/fmain.o
@


1.10
log
@Separated mesh to graph conversion capability into a separate program.
This way, the generated graph can be partitioned repeatedly.
@
text
@d4 2
a5 3
all: libfem.a libfemf.a $(CDIR)/include/fem.h $(CDIR)/include/fem.decl.h \
     $(CDIR)/include/femf.h $(CDIR)/lib/fmain.o map fmap gmap fgmap \
     mesh2graph
d7 4
a10 1
libfem.a: fem.C fem.h femf.h fem.decl.h fem.def.h map.C
d12 1
a12 2
	$(CHARMC) -DMAP_MAIN=0 -DFEM_FORTRAN=0 -c map.C
	$(CHARMC) -cp $(CDIR)/lib -o libfem.a fem.o map.o
d14 1
a14 1
libfemf.a: fem.C fem.h femf.h fem.decl.h fem.def.h map.C
d16 1
a16 22
	$(CHARMC) -DMAP_MAIN=0 -DFEM_FORTRAN=1 -c map.C
	$(CHARMC) -cp $(CDIR)/lib -o libfemf.a fem.o map.o

map: map.C fem.h
	$(CHARMC) -seq -DMAP_MAIN=1 -DFEM_FORTRAN=0 -c map.C
	$(CHARMC) -seq -cp $(CDIR)/bin -o map map.o -lmetis -lm -language c++

fmap: map.C fem.h
	$(CHARMC) -seq -DMAP_MAIN=1 -DFEM_FORTRAN=1 -c map.C
	$(CHARMC) -seq -cp $(CDIR)/bin -o fmap map.o -lmetis -lm -language c++

gmap: map.C fem.h
	$(CHARMC) -seq -DMAP_MAIN=1 -DMAP_GRAPH=1 -DFEM_FORTRAN=0 -c map.C
	$(CHARMC) -seq -cp $(CDIR)/bin -o gmap map.o -lmetis -lm -language c++

fgmap: map.C fem.h
	$(CHARMC) -seq -DMAP_MAIN=1 -DMAP_GRAPH=1 -DFEM_FORTRAN=1 -c map.C
	$(CHARMC) -seq -cp $(CDIR)/bin -o fgmap map.o -lmetis -lm -language c++

mesh2graph: mesh2graph.C
	$(CHARMC) -seq -c mesh2graph.C
	$(CHARMC) -seq -cp $(CDIR)/bin -o mesh2graph mesh2graph.o -language c++
d21 6
a29 3
$(CDIR)/include/fem.decl.h: fem.decl.h
	/bin/cp fem.decl.h $(CDIR)/include

d40 1
a40 1
	rm -rf libfem.a libfemf.a fmain.o *.def.h *.decl.h *.o SunWS_cache
@


1.9
log
@Added capabilities to handle esoteric meshes to standalone offline programs.
Makefile now produces gmap and fgmap programs, which are used
for this purpose.
They convert the mesh to a graph before partitioning it using Metis.
@
text
@d5 2
a6 1
     $(CDIR)/include/femf.h $(CDIR)/lib/fmain.o map fmap gmap fgmap
d33 4
@


1.8
log
@Made map into a self-contained program, that takes in the sequential mesh
description, and outputs the partitioned meshes readable by the framework.
@
text
@d5 1
a5 1
     $(CDIR)/include/femf.h $(CDIR)/lib/fmain.o map fmap
d24 8
@


1.7
log
@Rewrote Rui Liu's program to convert output of metis to the format
requested by the FEM framework. Made it available as a library function
that can be called from the init_ routine via FEM_Set_Mesh. So, now if
the init_ routine calles FEM_Set_Mesh to specify the initial sequential mesh,
the driver gets the partition information via message argument to run method,
and does not read from files. If this routine is not called from init_
then the chunk has to read this from the files. (This is right now
for backward compatibility only, and will go away. The only method will
be to specify a complete mesh via FEM_Set_Mesh.)
@
text
@d5 1
a5 1
     $(CDIR)/include/femf.h $(CDIR)/lib/fmain.o
d9 1
a9 1
	$(CHARMC) -DFEM_FORTRAN=0 -c map.C
d14 1
a14 1
	$(CHARMC) -DFEM_FORTRAN=1 -c map.C
d16 8
@


1.6
log
@fixed for gmake
@
text
@d7 1
a7 1
libfem.a: fem.C fem.h femf.h fem.decl.h fem.def.h
d9 2
a10 1
	$(CHARMC) -cp $(CDIR)/lib -o libfem.a fem.o
d12 1
a12 1
libfemf.a: fem.C fem.h femf.h fem.decl.h fem.def.h
d14 2
a15 1
	$(CHARMC) -cp $(CDIR)/lib -o libfemf.a fem.o
@


1.5
log
@Added code to output the column-major connectivity matrix in case
FEM_FORTRAN is defined to 1. Modified Makefile to make libfem.a and libfemf.a
from the same source fem.C by specifying different commandline flags to
charmc.
@
text
@d4 2
a5 5
all: fem femf

fem: libfem.a $(CDIR)/include/fem.h $(CDIR)/include/fem.decl.h

femf: libfemf.a $(CDIR)/include/femf.h $(CDIR)/lib/fmain.o
@


1.4
log
@SUPER_INSTALL now takes "-*" arguments prior to the target, that will
be passed to make as "makeflags". This makes it easy to suppress
make's output of commands etc (with the -s flag). As a result of this,
several Makefiles have been massaged.
@
text
@d4 1
a4 2
all: libfem.a $(CDIR)/include/fem.h $(CDIR)/include/fem.decl.h \
     $(CDIR)/include/femf.h $(CDIR)/lib/fmain.o
d6 6
a11 1
libfem.a: fem.o
d14 3
a16 2
fem.o: fem.C fem.h fem.decl.h fem.def.h
	$(CHARMC) -c fem.C
d37 1
a37 1
	rm -rf libfem.a fmain.o *.def.h *.decl.h *.o SunWS_cache
@


1.3
log
@Added fortran wrappers for the fem framework.
@
text
@d8 1
a8 2
	@@echo 'building libfem.a...'
	@@$(CHARMC) -cp $(CDIR)/lib -o libfem.a fem.o
d11 1
a11 2
	@@echo '.... fem.C...'
	@@$(CHARMC) -c fem.C
d14 1
a14 2
	@@echo '.... fmain.f90...'
	@@$(CHARMC) -c fmain.f90
d17 1
a17 2
	@@echo '.... fem interface...'
	@@$(CHARMC) fem.ci
d20 1
a20 1
	@@/bin/cp fem.decl.h $(CDIR)/include
d23 1
a23 1
	@@/bin/cp fem.h $(CDIR)/include
d26 1
a26 1
	@@/bin/cp femf.h $(CDIR)/include
d29 1
a29 1
	@@/bin/cp fmain.o $(CDIR)/lib
@


1.2
log
@Added methods to update fields, and to read the connectivity information
for chunks.
@
text
@d4 2
a5 1
all: libfem.a $(CDIR)/include/fem.h $(CDIR)/include/fem.decl.h
d15 4
d29 6
d36 1
a36 1
	rm -rf libfem.a *.def.h *.decl.h *.o SunWS_cache
@


1.1
log
@Added the threaded FEM Framework.
@
text
@d7 2
a8 1
	$(CHARMC) -cp $(CDIR)/lib -o libfem.a fem.o
d11 2
a12 1
	$(CHARMC) -c fem.C
d15 2
a16 1
	$(CHARMC) fem.ci
d19 1
a19 1
	cp fem.decl.h $(CDIR)/include
d22 1
a22 1
	cp fem.h $(CDIR)/include
d24 2
@

