00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #if !defined( GLIB_H )
00022 #define GLIB_H
00023
00024 #include "glib.h"
00025 #include <utils/utils.h>
00026
00027 double *solve_excess_pore_pressure( double *psi , double *k , double *c , int n , double dz , double dt , double psi_top , double sed_rate );
00028 void get_matrix_coefficients( double *psi , double *k , double *c , double ds , double dz , double dt , double psi_top , int n , double f , double *l , double *d , double *u , double *b );
00029
00030 double *solve_excess_pore_pressure_mg( double *psi , double *k , double *c , int n , double dz , double dt , double sed_rate );
00031 double *restrict_1d( double *u_2h , double *u_h , int n_h );
00032 double *inter_1d( double *u_h , double *u_2h , int n_2h );
00033 double *relax_1d( double *u , double *k , double *f , int n , double dz , double dt );
00034 double *residual_1d( double *res , double *u , double *k , double *f , int n , double dz , double dt );
00035 double *solve_1d( double *u , double *k , double *f , double dz , double dt );
00036 double *add_inter_1d( double *u_h , double *u_2h , int n_2h );
00037 double *mgm_1d( double *u_h , double *k_h , double *f_h , int n_h , double dz , double dt );
00038 double *fmg_1d( double *u_h , double *k_h , double *f_h , int n_h , double dz , double dt );
00039
00040 double **solve_excess_pore_pressure_mg_2d( double **psi , double **kx , double **kz , double **c , int n , double dx , double dz , double dt , double *sed_rate );
00041 double **restrict_2d( double **u_2h , double **u_h , int n_h );
00042 double **inter_2d( double **u_h , double **u_2h , int n_2h );
00043 double **relax_2d( double **u , double **kx , double **kz , double **f , int n , double dx , double dz , double dt );
00044 double **residual_2d( double **res , double **u , double **kx , double **kz , double **f , int n , double dx , double dz , double dt );
00045 double **solve_2d( double **u , double **kx , double **kz , double **f , double dx , double dz , double dt );
00046 double **add_inter_2d( double **u_h , double **u_2h , int n_2h );
00047 double **mgm_2d( double **u_h , double **kx_h , double **kz_h , double **f_h , int n_h , double dx , double dz , double dt );
00048 double **fmg_2d( double **u_h , double **kx_h , double **kz_h , double **f_h , int n_h , double dx , double dz , double dt );
00049
00050 double ***solve_excess_pore_pressure_mg_3d( double ***psi , double ***kx , double ***kz , double ***c , int n , double dx , double dz , double dt , double **sed_rate );
00051 double ***restrict_3d( double ***u_2h , double ***u_h , int n_h );
00052 double ***inter_3d( double ***u_h , double ***u_2h , int n_2h );
00053 double ***relax_3d( double ***u , double ***kx , double ***kz , double ***f , int n , double dx , double dz , double dt );
00054 double ***residual_3d( double ***res , double ***u , double ***kx , double ***kz , double ***f , int n , double dx , double dz , double dt );
00055 double ***solve_3d( double ***u , double ***kx , double ***kz , double ***f , double dx , double dz , double dt );
00056 double ***add_inter_3d( double ***u_h , double ***u_2h , int n_2h );
00057 double ***mgm_3d( double ***u_h , double ***kx_h , double ***kz_h , double ***f_h , int n_h , double dx , double dz , double dt );
00058 double ***fmg_3d( double ***u_h , double ***kx_h , double ***kz_h , double ***f_h , int n_h , double dx , double dz , double dt );
00059
00060 double *allocate_1d( int );
00061 double **allocate_2d( int );
00062 double ***allocate_3d( int );
00063 void free_2d( double** );
00064 void free_3d( double*** );
00065
00066 #endif
00067