map_radial_comp_rtp.C

00001 /*
00002  *   Copyright (c) 2000-2001 Philippe Grandclement
00003  *
00004  *   This file is part of LORENE.
00005  *
00006  *   LORENE is free software; you can redistribute it and/or modify
00007  *   it under the terms of the GNU General Public License as published by
00008  *   the Free Software Foundation; either version 2 of the License, or
00009  *   (at your option) any later version.
00010  *
00011  *   LORENE is distributed in the hope that it will be useful,
00012  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014  *   GNU General Public License for more details.
00015  *
00016  *   You should have received a copy of the GNU General Public License
00017  *   along with LORENE; if not, write to the Free Software
00018  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00019  *
00020  */
00021 
00022 
00023 char map_radial_comp_rtp_C[] = "$Header: /cvsroot/Lorene/C++/Source/Map/map_radial_comp_rtp.C,v 1.3 2005/09/15 15:51:25 j_novak Exp $" ;
00024 
00025 /*
00026  * $Id: map_radial_comp_rtp.C,v 1.3 2005/09/15 15:51:25 j_novak Exp $
00027  * $Log: map_radial_comp_rtp.C,v $
00028  * Revision 1.3  2005/09/15 15:51:25  j_novak
00029  * The "rotation" (change of triad) methods take now Scalars as default
00030  * arguments.
00031  *
00032  * Revision 1.2  2003/06/20 14:46:17  f_limousin
00033  * Les assert sur le mapping sont realise a partir du mapping meme et non a partir du pointeur sur ce mapping
00034  *
00035  * Revision 1.1.1.1  2001/11/20 15:19:27  e_gourgoulhon
00036  * LORENE
00037  *
00038  * Revision 1.1  2000/09/19  15:25:50  phil
00039  * Initial revision
00040  *
00041  *
00042  * $Header: /cvsroot/Lorene/C++/Source/Map/map_radial_comp_rtp.C,v 1.3 2005/09/15 15:51:25 j_novak Exp $
00043  *
00044  */
00045 
00046 
00047 // Headers C
00048 #include <assert.h>
00049 
00050 // Headers Lorene
00051 #include "tensor.h"
00052 #include "cmp.h"
00053 
00054 
00055             //------------------------------------//
00056             //      r  component          //
00057             //------------------------------------//
00058 void Map_radial::comp_r_from_cartesian(const Cmp& v_x, const Cmp& v_y, 
00059                        const Cmp& v_z, Cmp& v_r) const {
00060     Scalar resu = v_r ;
00061     comp_r_from_cartesian(Scalar(v_x), Scalar(v_y), Scalar(v_z), resu) ;
00062     v_r = resu ;                       
00063 }
00064 
00065 void Map_radial::comp_r_from_cartesian(const Scalar& v_x, const Scalar& v_y, 
00066                        const Scalar& v_z, Scalar& v_r) const {
00067                        
00068 
00069     // Protections
00070     // -----------
00071     assert(v_x.get_etat() != ETATNONDEF) ; 
00072     assert(v_y.get_etat() != ETATNONDEF) ; 
00073     assert(v_z.get_etat() != ETATNONDEF) ; 
00074 
00075     assert(v_x.get_mp() == *this) ; 
00076     assert(v_y.get_mp() == *this) ; 
00077     assert(v_z.get_mp() == *this) ; 
00078     
00079     int dzp ;
00080     if ( v_x.dz_nonzero() ) {
00081     dzp = v_x.get_dzpuis() ; 
00082     }
00083     else{
00084     if ( v_y.dz_nonzero() ) {
00085         dzp = v_y.get_dzpuis() ; 
00086     }
00087     else{
00088         dzp = v_z.get_dzpuis() ; 
00089     }
00090     }
00091      
00092     assert( v_x.check_dzpuis(dzp) ) ; 
00093     assert( v_y.check_dzpuis(dzp) ) ; 
00094     assert( v_z.check_dzpuis(dzp) ) ; 
00095     
00096     // Computation
00097     // -----------
00098     const Valeur& w_x = v_x.get_spectral_va() ; 
00099     const Valeur& w_y = v_y.get_spectral_va() ; 
00100     const Valeur& w_z = v_z.get_spectral_va() ; 
00101     
00102     Valeur tmp = w_x.mult_cp() + w_y.mult_sp() ;
00103 
00104     v_r = tmp.mult_st() + w_z.mult_ct() ; 
00105     
00106     v_r.set_dzpuis(dzp) ; 
00107       
00108 }
00109             
00110 
00111             //------------------------------------//
00112             //      Theta  component      //
00113             //------------------------------------//
00114 void Map_radial::comp_t_from_cartesian(const Cmp& v_x, const Cmp& v_y, 
00115                        const Cmp& v_z, Cmp& v_t) const {
00116     Scalar resu = v_t ;
00117     comp_t_from_cartesian( Scalar(v_x), Scalar(v_y), Scalar(v_z), resu ) ;
00118     v_t = resu ;
00119 }
00120 
00121 void Map_radial::comp_t_from_cartesian(const Scalar& v_x, const Scalar& v_y, 
00122                        const Scalar& v_z, Scalar& v_t) const {
00123                        
00124 
00125     // Protections
00126     // -----------
00127     assert(v_x.get_etat() != ETATNONDEF) ; 
00128     assert(v_y.get_etat() != ETATNONDEF) ; 
00129     assert(v_z.get_etat() != ETATNONDEF) ; 
00130 
00131     assert(v_x.get_mp() == *this) ; 
00132     assert(v_y.get_mp() == *this) ; 
00133     assert(v_z.get_mp() == *this) ; 
00134     
00135     int dzp ;
00136     if ( v_x.dz_nonzero() ) {
00137     dzp = v_x.get_dzpuis() ; 
00138     }
00139     else{
00140     if ( v_y.dz_nonzero() ) {
00141         dzp = v_y.get_dzpuis() ; 
00142     }
00143     else{
00144         dzp = v_z.get_dzpuis() ; 
00145     }
00146     }
00147      
00148     assert( v_x.check_dzpuis(dzp) ) ; 
00149     assert( v_y.check_dzpuis(dzp) ) ; 
00150     assert( v_z.check_dzpuis(dzp) ) ; 
00151     
00152     // Computation
00153     // -----------
00154     const Valeur& w_x = v_x.get_spectral_va() ; 
00155     const Valeur& w_y = v_y.get_spectral_va() ; 
00156     const Valeur& w_z = v_z.get_spectral_va() ; 
00157     
00158     Valeur tmp = w_x.mult_cp() + w_y.mult_sp() ;
00159 
00160     v_t = tmp.mult_ct() - w_z.mult_st() ; 
00161     
00162     v_t.set_dzpuis(dzp) ; 
00163       
00164 }
00165             
00166             //------------------------------------//
00167             //      Phi  component        //
00168             //------------------------------------//
00169 void Map_radial::comp_p_from_cartesian(const Cmp& v_x, const Cmp& v_y, 
00170                        Cmp& v_p) const {
00171     Scalar resu = v_p ;
00172     comp_p_from_cartesian(Scalar(v_x), Scalar(v_y), resu) ;
00173     v_p = resu ;
00174 }
00175 
00176 void Map_radial::comp_p_from_cartesian(const Scalar& v_x, const Scalar& v_y, 
00177                        Scalar& v_p) const {
00178                        
00179 
00180     // Protections
00181     // -----------
00182     assert(v_x.get_etat() != ETATNONDEF) ; 
00183     assert(v_y.get_etat() != ETATNONDEF) ; 
00184 
00185     assert(v_x.get_mp() == *this) ; 
00186     assert(v_y.get_mp() == *this) ; 
00187     
00188     int dzp ;
00189     if ( v_x.dz_nonzero() ) {
00190     dzp = v_x.get_dzpuis() ; 
00191     }
00192     else{
00193     dzp = v_y.get_dzpuis() ; 
00194     }
00195      
00196     assert( v_x.check_dzpuis(dzp) ) ; 
00197     assert( v_y.check_dzpuis(dzp) ) ; 
00198     
00199     // Computation
00200     // -----------
00201     const Valeur& w_x = v_x.get_spectral_va() ; 
00202     const Valeur& w_y = v_y.get_spectral_va() ; 
00203     
00204     v_p = - w_x.mult_sp() + w_y.mult_cp() ; 
00205     
00206     v_p.set_dzpuis(dzp) ; 
00207       
00208 }
00209             
00210             

Generated on Tue Feb 7 01:35:18 2012 for LORENE by  doxygen 1.4.6