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 map_radial_comp_xyz_C[] = "$Header: /cvsroot/Lorene/C++/Source/Map/map_radial_comp_xyz.C,v 1.2 2005/09/15 15:51:25 j_novak Exp $" ;
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051 #include <assert.h>
00052
00053
00054 #include "tensor.h"
00055 #include "cmp.h"
00056
00057
00058
00059
00060
00061 void Map_radial::comp_x_from_spherical(const Cmp& v_r, const Cmp& v_theta,
00062 const Cmp& v_phi, Cmp& v_x) const {
00063 Scalar resu(v_x) ;
00064 comp_x_from_spherical(Scalar(v_r), Scalar(v_theta), Scalar(v_phi),
00065 resu ) ;
00066 v_x = resu ;
00067 }
00068
00069 void Map_radial::comp_x_from_spherical(const Scalar& v_r, const Scalar& v_theta,
00070 const Scalar& v_phi, Scalar& v_x) const {
00071
00072
00073
00074
00075 assert(v_r.get_etat() != ETATNONDEF) ;
00076 assert(v_theta.get_etat() != ETATNONDEF) ;
00077 assert(v_phi.get_etat() != ETATNONDEF) ;
00078
00079 assert(v_r.get_mp() == *this) ;
00080 assert(v_theta.get_mp() == *this) ;
00081 assert(v_phi.get_mp() == *this) ;
00082
00083 int dzp ;
00084 if ( v_r.dz_nonzero() ) {
00085 dzp = v_r.get_dzpuis() ;
00086 }
00087 else{
00088 if ( v_theta.dz_nonzero() ) {
00089 dzp = v_theta.get_dzpuis() ;
00090 }
00091 else{
00092 dzp = v_phi.get_dzpuis() ;
00093 }
00094 }
00095
00096 assert( v_r.check_dzpuis(dzp) ) ;
00097 assert( v_theta.check_dzpuis(dzp) ) ;
00098 assert( v_phi.check_dzpuis(dzp) ) ;
00099
00100
00101
00102 const Valeur& w_r = v_r.get_spectral_va() ;
00103 const Valeur& w_t = v_theta.get_spectral_va() ;
00104 const Valeur& w_p = v_phi.get_spectral_va() ;
00105
00106 Valeur tmp = w_r.mult_st() + w_t.mult_ct() ;
00107
00108 v_x = tmp.mult_cp() - w_p.mult_sp() ;
00109
00110 v_x.set_dzpuis(dzp) ;
00111
00112 }
00113
00114
00115
00116
00117
00118
00119 void Map_radial::comp_y_from_spherical(const Cmp& v_r, const Cmp& v_theta,
00120 const Cmp& v_phi, Cmp& v_y) const {
00121
00122 Scalar resu(v_y) ;
00123 comp_y_from_spherical(Scalar(v_r), Scalar(v_theta), Scalar(v_phi),
00124 resu ) ;
00125 v_y = resu ;
00126 }
00127
00128 void Map_radial::comp_y_from_spherical(const Scalar& v_r, const Scalar& v_theta,
00129 const Scalar& v_phi, Scalar& v_y) const {
00130
00131
00132
00133
00134 assert(v_r.get_etat() != ETATNONDEF) ;
00135 assert(v_theta.get_etat() != ETATNONDEF) ;
00136 assert(v_phi.get_etat() != ETATNONDEF) ;
00137
00138 assert(v_r.get_mp() == *this) ;
00139 assert(v_theta.get_mp() == *this) ;
00140 assert(v_phi.get_mp() == *this) ;
00141
00142 int dzp ;
00143 if ( v_r.dz_nonzero() ) {
00144 dzp = v_r.get_dzpuis() ;
00145 }
00146 else{
00147 if ( v_theta.dz_nonzero() ) {
00148 dzp = v_theta.get_dzpuis() ;
00149 }
00150 else{
00151 dzp = v_phi.get_dzpuis() ;
00152 }
00153 }
00154
00155 assert( v_r.check_dzpuis(dzp) ) ;
00156 assert( v_theta.check_dzpuis(dzp) ) ;
00157 assert( v_phi.check_dzpuis(dzp) ) ;
00158
00159
00160
00161 const Valeur& w_r = v_r.get_spectral_va() ;
00162 const Valeur& w_t = v_theta.get_spectral_va() ;
00163 const Valeur& w_p = v_phi.get_spectral_va() ;
00164
00165 Valeur tmp = w_r.mult_st() + w_t.mult_ct() ;
00166
00167 v_y = tmp.mult_sp() + w_p.mult_cp() ;
00168
00169 v_y.set_dzpuis(dzp) ;
00170
00171 }
00172
00173
00174
00175
00176
00177 void Map_radial::comp_z_from_spherical(const Cmp& v_r, const Cmp& v_theta,
00178 Cmp& v_z) const {
00179 Scalar resu = v_z ;
00180 comp_z_from_spherical(Scalar(v_r), Scalar(v_theta), resu) ;
00181 v_z = resu ;
00182
00183 }
00184
00185 void Map_radial::comp_z_from_spherical(const Scalar& v_r, const Scalar& v_theta,
00186 Scalar& v_z) const {
00187
00188
00189
00190
00191 assert(v_r.get_etat() != ETATNONDEF) ;
00192 assert(v_theta.get_etat() != ETATNONDEF) ;
00193
00194 assert(v_r.get_mp() == *this) ;
00195 assert(v_theta.get_mp() == *this) ;
00196
00197 int dzp ;
00198 if ( v_r.dz_nonzero() ) {
00199 dzp = v_r.get_dzpuis() ;
00200 }
00201 else{
00202 dzp = v_theta.get_dzpuis() ;
00203 }
00204
00205 assert( v_r.check_dzpuis(dzp) ) ;
00206 assert( v_theta.check_dzpuis(dzp) ) ;
00207
00208
00209
00210 const Valeur& w_r = v_r.get_spectral_va() ;
00211 const Valeur& w_t = v_theta.get_spectral_va() ;
00212
00213 v_z = w_r.mult_ct() - w_t.mult_st() ;
00214
00215 v_z.set_dzpuis(dzp) ;
00216
00217 }
00218
00219