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
00029
00030 char valeur_smooth_C[] = "$Header: /cvsroot/Lorene/C++/Source/Valeur/valeur_smooth.C,v 1.2 2002/10/16 14:37:16 j_novak Exp $" ;
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061 #include <stdlib.h>
00062 #include <math.h>
00063
00064
00065 #include "valeur.h"
00066
00067
00068
00069 void Valeur::smooth(int nzet, Valeur& uuva) const {
00070
00071 int nucl = nzet - 1 ;
00072 int nr = mg->get_nr(nucl) ;
00073 int nt = mg->get_nt(nucl) ;
00074 int np = mg->get_np(nucl) ;
00075
00076
00077
00078 assert(etat == ETATQCQ) ;
00079 assert(nzet > 0) ;
00080 assert(nr == mg->get_nr(nzet)) ;
00081 assert(nt == mg->get_nt(nzet)) ;
00082 assert(np == mg->get_np(nzet)) ;
00083
00084 Valeur pot(mg) ;
00085 (*this).coef() ;
00086 pot = *((*this).c_cf) ;
00087
00088 Tbl& ccf_nucl = *((pot.c_cf)->t[nucl]) ;
00089 Tbl& ccf_shell = *((pot.c_cf)->t[nzet]) ;
00090
00091
00092
00093
00094
00095 Tbl nucl_kj(np, nt) ;
00096 nucl_kj.set_etat_qcq() ;
00097
00098 for (int k=0 ; k<np ; k++) {
00099 for (int j=0 ; j<nt ; j++) {
00100
00101 double tmp = 0. ;
00102 for (int i=0 ; i<nr ; i++) {
00103
00104 tmp += ccf_nucl(k, j, i) ;
00105
00106 }
00107 nucl_kj.set(k, j) = tmp ;
00108 }
00109 }
00110
00111
00112
00113
00114
00115
00116 Tbl shell_kj(np, nt) ;
00117 shell_kj.set_etat_qcq() ;
00118
00119 for (int k=0 ; k<np ; k++) {
00120 for (int j=0 ; j<nt ; j++) {
00121
00122 double tmp2 = 0. ;
00123 for (int i=0 ; i<nr-1 ; i++) {
00124
00125 tmp2 += pow(-1., i) * ccf_shell(k, j, i) ;
00126
00127 }
00128 shell_kj.set(k, j) = tmp2 ;
00129 }
00130 }
00131
00132
00133
00134
00135
00136 uuva.set_etat_cf_qcq() ;
00137 uuva.c_cf->set_etat_qcq() ;
00138 uuva.c_cf->t[nzet]->set_etat_qcq() ;
00139
00140 Mtbl_cf& uuva_cf = *(uuva.c_cf) ;
00141
00142 for (int k=0 ; k<np ; k++) {
00143 for (int j=0 ; j<nt ; j++) {
00144
00145 uuva_cf.set(nzet, k, j, nr-1) = nucl_kj(k, j) - shell_kj(k, j) ;
00146
00147 }
00148 }
00149
00150 uuva.coef_i() ;
00151
00152 }