https://github.com/geodynamics/citcoms
Revision 2b8ed1fa028a0457da2a8c686072407ed5c0d930 authored by Thorsten Becker on 22 August 2012, 21:21:52 UTC, committed by Thorsten Becker on 22 August 2012, 21:21:52 UTC
"a new method of finding the element of a tracer that is too close to an element boundary. Up to now such a tracer was shifted by a constant epsilon theta and phi. If the element boundary is parallel to this theta/phi direction it is not guaranteed to work well (thus the number_of_tries check), and additionally I got the problem that sometimes all elements refuse this tracer. Eh checked in a workaround for this (r15742), deleting orphan tracers in Tracer_setup.c. Because I did not know this, I created my own bugfix moving the tracers an epsilon amount orthogonal to all boundaries that are too close. In order to save computing time I use the already computed vectors for the element boundaries (this assumes that the element boundaries are nearly orthogonal to each other, but unless somebody tries to change CitcomS elements that should work fine). The shift happens now in cartesian coordinates since the boundary-vectors are cartesian and the radius-coordinate of the tracer is normalized prior to this check anyway, so I just need to re-normalize it after the shift. For now I did not touch all the now (hopefully) useless security checks but as far as I can see they do no harm either, so we can remove them later."
1 parent 11854a5
Tip revision: 2b8ed1fa028a0457da2a8c686072407ed5c0d930 authored by Thorsten Becker on 22 August 2012, 21:21:52 UTC
Implemented improved tracer fix by Rene.
Implemented improved tracer fix by Rene.
Tip revision: 2b8ed1f
setup.py
from archimedes import use_merlin
use_merlin()
from merlin import setup, find_packages, require
install_requires = ['pythia[mpi] >= 0.8.1.0, < 0.8.2a']
import os
want_exchanger = os.environ.get('want_exchanger', 'auto')
exchanger = "Exchanger >= 1, < 2a"
if want_exchanger == 'auto':
# Use Exchanger if it's available.
try:
require(exchanger)
except Exception, e:
pass
else:
install_requires.append(exchanger)
elif want_exchanger == 'yes':
# Require Exchanger.
install_requires.append(exchanger)
setup(
name = 'CitcomS',
version = '3.2',
zip_safe = False,
packages = find_packages(),
install_requires = install_requires,
author = 'Louis Moresi, et al.',
author_email = 'cig-mc@geodynamics.org',
description = """A finite element mantle convection code.""",
long_description = """CitcomS is a finite element code designed to solve thermal convection problems relevant to Earth's mantle. Written in C, the code runs on a variety of parallel processing computers, including shared and distributed memory platforms.""",
license = 'GPL',
url = 'http://www.geodynamics.org/cig/software/packages/mc/citcoms/',
)
Computing file changes ...