00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 char sxpundsdx_1d_C[] = "$Header: /cvsroot/Lorene/C++/Source/Non_class_members/Operators/sxpundsdx_1d.C,v 1.1 2007/12/11 15:42:23 jl_cornou Exp $" ;
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047 #include <stdlib.h>
00048
00049 #include "headcpp.h"
00050 #include "type_parite.h"
00051
00052 void dsdx_1d(int, double**, int) ;
00053 void sxpun_1d(int, double**, int) ;
00054
00055
00056
00057
00058
00059
00060 void _sxpundsdx_1d_pas_prevu(int nr, double* tb, double *xo) {
00061 cout << "sxpundsdx pas prevu..." << endl ;
00062 cout << "Nombre de points : " << nr << endl ;
00063 cout << "Valeurs : " << tb << " " << xo <<endl ;
00064 abort() ;
00065 exit(-1) ;
00066 }
00067
00068
00069
00070
00071
00072
00073 void _sxpundsdx_1d_r_jaco02(int nr, double* tb, double *xo) {
00074
00075 dsdx_1d(nr, &tb, R_JACO02 >> TRA_R) ;
00076 sxpun_1d(nr, &tb, R_JACO02 >> TRA_R) ;
00077 for (int j=0 ; j<nr ; j++) {
00078 xo[j]=tb[j] ;
00079 }
00080 }
00081
00082
00083
00084
00085
00086
00087 void sxpundsdx_1d(int nr, double** tb, int base_r)
00088 {
00089
00090
00091 static void (*sxpundsdx_1d[MAX_BASE])(int, double*, double *) ;
00092 static int nap = 0 ;
00093
00094
00095 if (nap==0) {
00096 nap = 1 ;
00097 for (int i=0 ; i<MAX_BASE ; i++) {
00098 sxpundsdx_1d[i] = _sxpundsdx_1d_pas_prevu ;
00099 }
00100
00101 sxpundsdx_1d[R_JACO02 >> TRA_R] = _sxpundsdx_1d_r_jaco02 ;
00102 }
00103
00104 double *result = new double[nr] ;
00105
00106 sxpundsdx_1d[base_r](nr, *tb, result) ;
00107
00108 delete [] (*tb) ;
00109 (*tb) = result ;
00110 }