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 et_rot_extr_curv_C[] = "$Header: /cvsroot/Lorene/C++/Source/Etoile/et_rot_extr_curv.C,v 1.1.1.1 2001/11/20 15:19:28 e_gourgoulhon Exp $" ;
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051 #include "etoile.h"
00052
00053 void Etoile_rot::extrinsic_curvature(){
00054
00055
00056
00057
00058
00059
00060 if ( (mp.get_mg())->get_np(0) == 1) {
00061
00062 tkij.set_etat_zero() ;
00063
00064
00065
00066
00067
00068 Cmp dnpdr = nphi().dsdr() ;
00069 Cmp dnpdt = nphi().srdsdt() ;
00070
00071
00072 assert( dynamic_cast<const Map_radial*>(&mp) != 0x0 ) ;
00073
00074 if (dnpdr.get_etat() == ETATQCQ) {
00075 dnpdr.va = (dnpdr.va).mult_st() ;
00076 }
00077
00078 if (dnpdt.get_etat() == ETATQCQ) {
00079 dnpdt.va = (dnpdt.va).mult_ct() ;
00080 }
00081
00082 Cmp tmp = dnpdr + dnpdt ;
00083
00084 tmp.mult_rsint() ;
00085
00086 if (tmp.get_etat() != ETATZERO) {
00087 tkij.set_etat_qcq() ;
00088 tkij.set(0,1) = - 0.5 * tmp / nnn() ;
00089 }
00090
00091
00092
00093
00094 dnpdr = nphi().dsdr() ;
00095 dnpdt = nphi().srdsdt() ;
00096
00097 if (dnpdr.get_etat() == ETATQCQ) {
00098 dnpdr.va = (dnpdr.va).mult_ct() ;
00099 }
00100
00101 if (dnpdt.get_etat() == ETATQCQ) {
00102 dnpdt.va = (dnpdt.va).mult_st() ;
00103 }
00104
00105 tmp = dnpdr - dnpdt ;
00106
00107 tmp.mult_rsint() ;
00108
00109 if (tmp.get_etat() != ETATZERO) {
00110 if (tkij.get_etat() != ETATQCQ) {
00111 tkij.set_etat_qcq() ;
00112 }
00113 tkij.set(1,2) = - 0.5 * tmp / nnn() ;
00114 }
00115
00116
00117
00118 if (tkij.get_etat() == ETATQCQ) {
00119 tkij.set(0,0) = 0 ;
00120 tkij.set(0,2) = 0 ;
00121 tkij.set(1,1) = 0 ;
00122 tkij.set(2,2) = 0 ;
00123 }
00124
00125
00126
00127 }
00128 else {
00129
00130
00131
00132
00133
00134
00135
00136
00137 Tenseur dn = shift.gradient() ;
00138
00139
00140 Tenseur divn = contract(dn, 0, 1) ;
00141
00142 if (divn.get_etat() == ETATQCQ) {
00143
00144
00145
00146 tkij.set_etat_qcq() ;
00147 for (int i=0; i<3; i++) {
00148 for (int j=i; j<3; j++) {
00149 tkij.set(i, j) = dn(i, j) + dn(j, i) ;
00150 }
00151 tkij.set(i, i) -= double(2) /double(3) * divn() ;
00152 }
00153
00154 tkij = - 0.5 * tkij / nnn ;
00155
00156 }
00157 else{
00158 assert( divn.get_etat() == ETATZERO ) ;
00159 tkij.set_etat_zero() ;
00160 }
00161 }
00162
00163
00164
00165
00166 if (tkij.get_etat() == ETATZERO) {
00167 ak_car = 0 ;
00168 }
00169 else {
00170 ak_car.set_etat_qcq() ;
00171
00172 ak_car.set() = 0 ;
00173
00174 for (int i=0; i<3; i++) {
00175 for (int j=0; j<3; j++) {
00176
00177 ak_car.set() += tkij(i, j) * tkij(i, j) ;
00178
00179 }
00180 }
00181
00182 ak_car = b_car * ak_car ;
00183 }
00184
00185 }
00186