Revision 0461d2e117ce88704a56dd8bcbf6bf7787991b15 authored by Eh Tan on 08 November 2007, 23:28:46 UTC, committed by Eh Tan on 08 November 2007, 23:28:46 UTC
svn+ssh://svn@geodynamics.org/cig/mc/3D/CitcomS/trunk ........ r8194 | tan2 | 2007-10-30 14:49:58 -0700 (Tue, 30 Oct 2007) | 1 line Compute d(rho)/dr/rho from rho(r) ........ r8195 | tan2 | 2007-10-30 14:50:52 -0700 (Tue, 30 Oct 2007) | 1 line Fixed a bug in dimensionalizing density. Provided the formula of geoid calculation in the comments. Rearranged the order of functions. ........ r8196 | tan2 | 2007-10-30 14:53:50 -0700 (Tue, 30 Oct 2007) | 1 line A post-processing program to project geoid coefficents onto a regular (longitude, latitude) mesh ........ r8197 | tan2 | 2007-10-30 14:54:14 -0700 (Tue, 30 Oct 2007) | 1 line Added the C program project_geoid to the makefile ........ r8199 | tan2 | 2007-10-30 15:29:44 -0700 (Tue, 30 Oct 2007) | 1 line Minor modification ........ r8201 | tan2 | 2007-11-01 16:33:30 -0700 (Thu, 01 Nov 2007) | 1 line Print dv/v=dp/p=1.0 for the 1st Uzawa iteraion ........ r8202 | tan2 | 2007-11-01 16:33:50 -0700 (Thu, 01 Nov 2007) | 1 line Fixed an error in comment ........ r8204 | tan2 | 2007-11-05 17:03:35 -0800 (Mon, 05 Nov 2007) | 1 line Scaled topo with variable gravity. Fixed an error in comment. Rearranged computation. ........ r8205 | tan2 | 2007-11-05 17:03:55 -0800 (Mon, 05 Nov 2007) | 1 line Removed functions related sph. harm in lib/Regional_obsolete.c ........ r8206 | tan2 | 2007-11-05 17:04:20 -0800 (Mon, 05 Nov 2007) | 1 line Shrank the size of sph. harm arrays ........ r8207 | tan2 | 2007-11-05 17:04:43 -0800 (Mon, 05 Nov 2007) | 1 line Init'd some variables about vtk_io, which might be accessed with uninit'd values in output_finalize() ........ r8212 | tan2 | 2007-11-06 15:17:54 -0800 (Tue, 06 Nov 2007) | 1 line Fixed a few memory errors ........ r8213 | tan2 | 2007-11-06 15:18:12 -0800 (Tue, 06 Nov 2007) | 1 line Increase vlowstep to match the default value in pyre ........ r8214 | tan2 | 2007-11-06 15:18:35 -0800 (Tue, 06 Nov 2007) | 1 line Removed unused multigrid parameters ........ r8215 | tan2 | 2007-11-06 15:18:54 -0800 (Tue, 06 Nov 2007) | 1 line Added cgrad solver convergence parameters, increased buoyancy_ratio and lower the # of steps ........ r8226 | tan2 | 2007-11-07 11:51:56 -0800 (Wed, 07 Nov 2007) | 1 line Print a warning when matrix eqn solver not converging ........ r8227 | tan2 | 2007-11-07 11:52:17 -0800 (Wed, 07 Nov 2007) | 1 line Removed comp_el from default output, since it is not required for restart anymore. ........ r8228 | tan2 | 2007-11-07 11:52:39 -0800 (Wed, 07 Nov 2007) | 1 line Decreased the # of processors. This is the only way I can reproduce single-cell convection as in the manual. ........ r8235 | tan2 | 2007-11-08 11:18:26 -0800 (Thu, 08 Nov 2007) | 1 line Dereased the timestep size to reduce artifacts in advection ........ r8236 | tan2 | 2007-11-08 11:18:52 -0800 (Thu, 08 Nov 2007) | 1 line Update NEWS ........ r8237 | tan2 | 2007-11-08 11:19:12 -0800 (Thu, 08 Nov 2007) | 1 line Update the version number ........ r8241 | tan2 | 2007-11-08 13:17:14 -0800 (Thu, 08 Nov 2007) | 1 line Updated file ChangeLog to r8240 ........ r8242 | tan2 | 2007-11-08 13:36:55 -0800 (Thu, 08 Nov 2007) | 1 line Removed binary checkpoint files from makefile, as the file size is too big for distribution. ........ r8243 | tan2 | 2007-11-08 13:38:09 -0800 (Thu, 08 Nov 2007) | 1 line Updated file ChangeLog to r8242 ........ r8244 | tan2 | 2007-11-08 14:31:21 -0800 (Thu, 08 Nov 2007) | 1 line Replaced a system call by std C library remove() and disabled another system call (backup input file). Partially fixed issue130. All remaining system calls are in lib/Output_gzdir.c. ........ r8245 | tan2 | 2007-11-08 14:41:31 -0800 (Thu, 08 Nov 2007) | 1 line Updated file ChangeLog to r8244 ........
1 parent a828fa9
MultiLayout.py
#!/usr/bin/env python
#
# Layout for MultiCoupled Application
#
#
from Layout import Layout
class MultiLayout(Layout):
def __init__(self, name, facility):
Layout.__init__(self, name, facility)
# containing communicator
self.ccomm = None
# embedded comminicator1
self.ecomm1 = None
# embedded comminicator2
self.ecomm2 = None
# list of communicators created to pass imformation
# between different solvers
self.ccommPlus1 = []
self.ccommPlus2 = []
self.ecommPlus1 = []
self.ecommPlus2 = []
self.comm = None
self.rank = 0
self.nodes = 0
return
def verify(self, application):
# check that we have at least 3 processor
if self.nodes < 3:
import journal
firewall = journal.firewall("MultiLayout")
firewall.log("'%s' requires at least 3 processors" \
% application.name)
containing_group = self.inventory.containing_group
embedded_group1 = self.inventory.embedded_group1
embedded_group2 = self.inventory.embedded_group2
# check for duplicated elements in the group
self.check_duplicated(containing_group)
self.check_duplicated(embedded_group1)
self.check_duplicated(embedded_group2)
# check that the three groups are disjoint
self.check_disjoint(containing_group, embedded_group1)
self.check_disjoint(containing_group, embedded_group2)
self.check_disjoint(embedded_group1, embedded_group2)
return
def createCommunicators(self):
# Create communicators for solvers and couplerd
world = self.comm
myrank = self.rank
containing_group = self.inventory.containing_group
embedded_group1 = self.inventory.embedded_group1
embedded_group2 = self.inventory.embedded_group2
# Communicator for solvers
self.ccomm = world.include(containing_group)
self.ecomm1 = world.include(embedded_group1)
self.ecomm2 = world.include(embedded_group2)
# Communicator for inter-solver communication
# ecommPlus1 is a list of communicators, with each communicator
# contains a node in embedded_group1 and the whole containing_group
# ecommPlus2 is similar
for node in containing_group:
self.ecommPlus1.append(world.include(embedded_group1 + [node]))
self.ecommPlus2.append(world.include(embedded_group2 + [node]))
# ccommPlus1 is a list of communicators, with each communicator
# contains a node in containing group and the whole embedded_group1
# commPlus2 is similar
for node in embedded_group1:
self.ccommPlus1.append(world.include(containing_group + [node]))
for node in embedded_group2:
self.ccommPlus2.append(world.include(containing_group + [node]))
return
class Inventory(Layout.Inventory):
import pyre.inventory
# The containing solver will run on these nodes
containing_group = pyre.inventory.slice("containing_group",
default=range(12))
# The embedded solver1 will run on these nodes
embedded_group1 = pyre.inventory.slice("embedded_group1",
default=[12])
# The embedded solver2 will run on these nodes
embedded_group2 = pyre.inventory.slice("embedded_group2",
default=[13])
# version
__id__ = "$Id$"
# End of file
Computing file changes ...