https://github.com/geodynamics/citcoms
Revision 36f5b324acac508e900f74fcb6f9c7ae35fc8cbc authored by Leif Strand on 29 April 2009, 20:47:56 UTC, committed by Leif Strand on 29 April 2009, 20:47:56 UTC
1 parent 5ceef5d
Tip revision: 36f5b324acac508e900f74fcb6f9c7ae35fc8cbc authored by Leif Strand on 29 April 2009, 20:47:56 UTC
Merged r14275:14351 from trunk.
Merged r14275:14351 from trunk.
Tip revision: 36f5b32
Convection.cc
/*
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*
*<LicenseText>
*
* CitcomS by Louis Moresi, Shijie Zhong, Lijie Han, Eh Tan,
* Clint Conrad, Michael Gurnis, and Eun-seo Choi.
* Copyright (C) 1994-2005, California Institute of Technology.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*</LicenseText>
*
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
/* Assumes parameter list is opened and reads the things it needs.
Variables are initialized etc, default values are set */
#include "convection.h"
#include <math.h>
#include <sys/types.h>
#include "element_definitions.h"
#include "global_defs.h"
#include <stdlib.h> /* for "system" command */
#include <strings.h>
#include "advection_diffusion.h"
#include "initial_temperature.h"
#include "size_does_matter.h"
static void read_convection_settings(struct All_variables *E);
static void convection_derived_values(struct All_variables *E);
static void convection_allocate_memory(struct All_variables *E);
static void convection_initial_fields(struct All_variables *E);
static void convection_boundary_conditions(struct All_variables *E);
void set_convection_defaults(struct All_variables *E)
{
E->advection.timestep = 0.0;
E->advection.timesteps = 0;
E->advection.temp_iterations = 2; /* petrov-galerkin iterations: minimum value. */
E->advection.total_timesteps = 1;
E->advection.sub_iterations = 1;
E->advection.last_sub_iterations = 1;
E->advection.gamma = 0.5;
E->advection.dt_reduced = 1.0;
E->monitor.T_maxvaried = 1.05;
E->next_buoyancy_field = PG_timestep;
E->next_buoyancy_field_init = PG_timestep_init;
E->special_process_new_buoyancy = twiddle_thumbs;
E->problem_settings = read_convection_settings;
E->problem_derived_values = convection_derived_values;
E->problem_allocate_vars = convection_allocate_memory;
E->problem_boundary_conds = convection_boundary_conditions;
E->problem_initial_fields = convection_initial_fields;
E->problem_update_node_positions = twiddle_thumbs;
E->problem_update_bcs = twiddle_thumbs;
return;
}
static void read_convection_settings(struct All_variables *E)
{
/* parameters */
advection_diffusion_parameters(E);
return;
}
/* =================================================================
Any setup which relates only to the convection stuff goes in here
================================================================= */
static void convection_derived_values(struct All_variables *E)
{
return;
}
static void convection_allocate_memory(struct All_variables *E)
{
advection_diffusion_allocate_memory(E);
return;
}
/* ============================================ */
static void convection_initial_fields(struct All_variables *E)
{
convection_initial_temperature(E);
return; }
/* =========================================== */
static void convection_boundary_conditions(struct All_variables *E)
{
(E->solver.velocity_boundary_conditions)(E); /* universal */
(E->solver.temperature_boundary_conditions)(E);
return;
}
Computing file changes ...