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 char map_log_deriv_C[] = "$Header: /cvsroot/Lorene/C++/Source/Map/map_log_deriv.C,v 1.2 2012/01/17 10:33:43 j_penner Exp $" ;
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044 #include "map.h"
00045 #include "tensor.h"
00046
00047
00048
00049
00050 void Map_log::dsdxi(const Scalar& uu, Scalar& resu) const {
00051
00052 assert (uu.get_etat() != ETATNONDEF) ;
00053 assert (uu.get_mp().get_mg() == mg) ;
00054
00055
00056 if (uu.get_etat() == ETATZERO) {
00057 resu.set_etat_zero() ;
00058 }
00059 else {
00060 assert( uu.get_etat() == ETATQCQ ) ;
00061
00062 const Valeur& uuva = uu.get_spectral_va() ;
00063
00064 uuva.coef() ;
00065
00066 int nz = mg->get_nzone() ;
00067 int nzm1 = nz - 1 ;
00068
00069 if ( uu.get_dzpuis() == 0 ) {
00070 resu = uuva.dsdx() ;
00071
00072 if (mg->get_type_r(nzm1) == UNSURR) {
00073 resu.set_dzpuis(2) ;
00074
00075 }
00076 }
00077 else {
00078 assert(mg->get_type_r(nzm1) == UNSURR) ;
00079
00080 int dzp = uu.get_dzpuis() ;
00081
00082 resu = uuva.dsdx() ;
00083 resu.annule_domain(nzm1) ;
00084
00085
00086 Valeur tmp_ced = - uuva.dsdx() ;
00087 tmp_ced.annule(0, nz-2) ;
00088 tmp_ced.mult_xm1_zec() ;
00089 tmp_ced.set(nzm1) -= dzp * uuva(nzm1) ;
00090
00091
00092 resu.set_spectral_va() += tmp_ced ;
00093
00094 resu.set_dzpuis(dzp+1) ;
00095
00096 }
00097 resu.set_spectral_base( uuva.dsdx().get_base() ) ;
00098 }
00099 }
00100
00101
00102
00103
00104 void Map_log::dsdr(const Scalar& uu, Scalar& resu) const {
00105
00106 assert (uu.get_etat() != ETATNONDEF) ;
00107 assert (uu.get_mp().get_mg() == mg) ;
00108
00109
00110 if (uu.get_etat() == ETATZERO) {
00111 resu.set_etat_zero() ;
00112 }
00113 else {
00114 assert( uu.get_etat() == ETATQCQ ) ;
00115
00116 const Valeur& uuva = uu.get_spectral_va() ;
00117
00118 uuva.coef() ;
00119
00120 int nz = mg->get_nzone() ;
00121 int nzm1 = nz - 1 ;
00122
00123 if ( uu.get_dzpuis() == 0 ) {
00124 resu = uuva.dsdx() * dxdr ;
00125
00126 if (mg->get_type_r(nzm1) == UNSURR) {
00127 resu.set_dzpuis(2) ;
00128
00129 }
00130 }
00131 else {
00132 assert(mg->get_type_r(nzm1) == UNSURR) ;
00133
00134 int dzp = uu.get_dzpuis() ;
00135
00136 resu = uuva.dsdx() * dxdr ;
00137 resu.annule_domain(nzm1) ;
00138
00139
00140 Valeur tmp_ced = - uuva.dsdx() ;
00141 tmp_ced.annule(0, nz-2) ;
00142 tmp_ced.mult_xm1_zec() ;
00143 tmp_ced.set(nzm1) -= dzp * uuva(nzm1) ;
00144
00145
00146 resu.set_spectral_va() += tmp_ced ;
00147
00148 resu.set_dzpuis(dzp+1) ;
00149
00150 }
00151 resu.set_spectral_base( uuva.dsdx().get_base() ) ;
00152 }
00153 }
00154
00155
00156
00157
00158 void Map_log::dsdradial (const Scalar& uu, Scalar& resu) const {
00159
00160 assert (uu.get_etat() != ETATNONDEF) ;
00161 assert (uu.get_mp().get_mg() == mg) ;
00162
00163
00164 if (uu.get_etat() == ETATZERO) {
00165 resu.set_etat_zero() ;
00166 }
00167 else {
00168 assert( uu.get_etat() == ETATQCQ ) ;
00169
00170 const Valeur& uuva = uu.get_spectral_va() ;
00171
00172 uuva.coef() ;
00173
00174 int nz = mg->get_nzone() ;
00175 int nzm1 = nz - 1 ;
00176
00177 if ( uu.get_dzpuis() == 0 ) {
00178 resu = uuva.dsdx() * dxdlnr ;
00179
00180 if (mg->get_type_r(nzm1) == UNSURR) {
00181 resu.set_dzpuis(2) ;
00182
00183 }
00184 }
00185 else {
00186 assert(mg->get_type_r(nzm1) == UNSURR) ;
00187
00188 int dzp = uu.get_dzpuis() ;
00189
00190 resu = uuva.dsdx() * dxdlnr ;
00191 resu.annule_domain(nzm1) ;
00192
00193
00194 Valeur tmp_ced = - uuva.dsdx() ;
00195 tmp_ced.annule(0, nz-2) ;
00196 tmp_ced.mult_xm1_zec() ;
00197 tmp_ced.set(nzm1) -= dzp * uuva(nzm1) ;
00198
00199
00200 resu.set_spectral_va() += tmp_ced ;
00201
00202 resu.set_dzpuis(dzp+1) ;
00203
00204 }
00205 resu.set_spectral_base( uuva.dsdx().get_base() ) ;
00206 }
00207 }