00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 char base_val_name_phi_C[] = "$Header: /cvsroot/Lorene/C++/Source/Base_val/base_val_name_phi.C,v 1.2 2012/01/17 14:44:27 j_penner Exp $" ;
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046 #include <string.h>
00047 #include <stdlib.h>
00048
00049
00050 #include "base_val.h"
00051
00052
00053 void basename_p_unknown(int, char*) ;
00054 void basename_p_cossin(int, char*) ;
00055 void basename_p_cossin_p(int, char*) ;
00056 void basename_p_cossin_i(int, char*) ;
00057
00058
00059
00060
00061
00062 void Base_val::name_phi(int l, int k, char* name) const {
00063
00064
00065 static void(*vbasename_p[MAX_BASE_2])(int, char*) ;
00066
00067 static bool first_call = true ;
00068
00069
00070
00071 if ( first_call ) {
00072
00073 first_call = false ;
00074
00075 for (int i=0 ; i<MAX_BASE_2 ; i++) {
00076 vbasename_p[i] = basename_p_unknown ;
00077 }
00078
00079 vbasename_p[P_COSSIN >> TRA_P] = basename_p_cossin ;
00080 vbasename_p[P_COSSIN_P >> TRA_P] = basename_p_cossin_p ;
00081 vbasename_p[P_COSSIN_I >> TRA_P] = basename_p_cossin_i ;
00082
00083 }
00084
00085
00086
00087
00088 assert( (l>=0) && (l<nzone) ) ;
00089
00090 int base_p = ( b[l] & MSQ_P ) >> TRA_P ;
00091
00092 vbasename_p[base_p](k, name) ;
00093
00094 }
00095
00096
00097
00098
00099
00100
00101 void basename_p_unknown(int, char*) {
00102 cout << "Base_val::name_phi : unknwon basis !" << endl ;
00103 abort() ;
00104 }
00105
00106
00107 void basename_p_cossin(int k, char* name) {
00108
00109 assert( k>=0 ) ;
00110
00111 if (k%2 == 0) {
00112 strcpy(name, "cos") ;
00113 }
00114 else {
00115 if (k == 1) {
00116 strcpy(name, "unused") ;
00117 return ;
00118 }
00119 else {
00120 strcpy(name, "sin") ;
00121 }
00122 }
00123
00124 int m = k / 2 ;
00125
00126 char cm[4] ;
00127 assert( m < 1000) ;
00128 sprintf(cm, "%d", m) ;
00129 strcat(name, cm) ;
00130 strcat(name, "p") ;
00131
00132 }
00133
00134
00135
00136 void basename_p_cossin_p(int k, char* name) {
00137
00138 assert( k>=0 ) ;
00139
00140 if (k%2 == 0) {
00141 strcpy(name, "cos") ;
00142 }
00143 else {
00144 if (k == 1) {
00145 strcpy(name, "unused") ;
00146 return ;
00147 }
00148 else {
00149 strcpy(name, "sin") ;
00150 }
00151 }
00152
00153 int m = 2 * (k / 2) ;
00154
00155 char cm[4] ;
00156 assert( m < 1000) ;
00157 sprintf(cm, "%d", m) ;
00158 strcat(name, cm) ;
00159 strcat(name, "p") ;
00160
00161 }
00162
00163
00164 void basename_p_cossin_i(int k, char* name) {
00165
00166 assert( k>=0 ) ;
00167
00168 if (k == 0) {
00169 strcpy(name, "cos1p") ;
00170 return ;
00171 }
00172
00173 if (k%2 == 0) {
00174 strcpy(name, "sin") ;
00175 }
00176 else {
00177 if (k == 1) {
00178 strcpy(name, "unused") ;
00179 return ;
00180 }
00181 else {
00182 strcpy(name, "cos") ;
00183 }
00184 }
00185
00186 int m = 2 * ((k-1) / 2) + 1 ;
00187
00188 char cm[4] ;
00189 assert( m < 1000) ;
00190 sprintf(cm, "%d", m) ;
00191 strcat(name, cm) ;
00192 strcat(name, "p") ;
00193
00194 }
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209