Changeset 20027
- Timestamp:
- 01/29/16 18:48:16 (9 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/SealevelriseAnalysis.cpp
r20022 r20027 75 75 /*compute legendre coefficient matrix:*/ 76 76 legendre_coefficients=p_polynomial_value(M,nl-1,x); 77 parameters->AddObject(new DoubleMatParam(SealevelriseLegendreCoefficientsEnum,legendre_coefficients, nl,M));77 parameters->AddObject(new DoubleMatParam(SealevelriseLegendreCoefficientsEnum,legendre_coefficients,M,nl)); 78 78 79 79 /*free ressources:*/ -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r20023 r20027 3560 3560 if(legendre_precompute){ 3561 3561 DoubleMatParam* parameter = static_cast<DoubleMatParam*>(this->parameters->FindParamObject(SealevelriseLegendreCoefficientsEnum)); _assert_(parameter); 3562 parameter->GetParameterValueByPointer(&legendre_coefficients, NULL,&M);3562 parameter->GetParameterValueByPointer(&legendre_coefficients,&M,NULL); 3563 3563 } 3564 3564 … … 3648 3648 if(legendre_precompute){ 3649 3649 int index=reCast<int,IssmDouble>((M-1)*(1-alpha/PI)); 3650 for(int n=0;n<nl;n++) G_elastic += deltalove[n]*legendre_coefficients[ M*n + index];3650 for(int n=0;n<nl;n++) G_elastic += deltalove[n]*legendre_coefficients[index*nl+n]; 3651 3651 } 3652 3652 else{ … … 3810 3810 if(legendre_precompute){ 3811 3811 DoubleMatParam* parameter = static_cast<DoubleMatParam*>(this->parameters->FindParamObject(SealevelriseLegendreCoefficientsEnum)); _assert_(parameter); 3812 parameter->GetParameterValueByPointer(&legendre_coefficients, NULL,&M);3812 parameter->GetParameterValueByPointer(&legendre_coefficients,&M,NULL); 3813 3813 } 3814 3814 … … 3853 3853 if(legendre_precompute){ 3854 3854 int index=reCast<int,IssmDouble>((M-1)*(1-alpha/PI)); 3855 for(int n=0;n<nl;n++) G_elastic[i] += deltalove[n]*legendre_coefficients[ M*n + index];3855 for(int n=0;n<nl;n++) G_elastic[i] += deltalove[n]*legendre_coefficients[index*nl+n]; 3856 3856 } 3857 3857 else{ -
issm/trunk-jpl/src/c/shared/Numerics/legendre.cpp
r20021 r20027 249 249 v = xNew<IssmDouble>(m*(n+1)); 250 250 251 for ( i = 0; i < m; i++ ) v[i +0*m] = 1.0;251 for ( i = 0; i < m; i++ ) v[i*(n+1)+0] = 1.0; 252 252 if ( n < 1 ) return v; 253 253 254 for ( i = 0; i < m; i++ ) v[i+1*m] = x[i]; 255 256 for ( j = 2; j <= n; j++ ) { 257 for ( i = 0; i < m; i++ ) { 258 v[i+j*m] = ( ( IssmDouble ) ( 2 * j - 1 ) * x[i] * v[i+(j-1)*m] 259 - ( IssmDouble ) ( j - 1 ) * v[i+(j-2)*m] ) 254 for ( i = 0; i < m; i++ ) v[i*(n+1)+1] = x[i]; 255 256 for ( i = 0; i < m; i++ ) { 257 for ( j = 2; j <= n; j++ ) { 258 259 v[j+i*(n+1)] = ( ( IssmDouble ) ( 2 * j - 1 ) * x[i] * v[(j-1)+i*(n+1)] 260 - ( IssmDouble ) ( j - 1 ) * v[(j-2)+i*(n+1)] ) 260 261 / ( IssmDouble ) ( j ); 262 261 263 } 262 264 }
Note:
See TracChangeset
for help on using the changeset viewer.