From 79048ff443472f339a95f070940a6df4b14a9035 Mon Sep 17 00:00:00 2001
From: Samo Penic <samo.penic@gmail.com>
Date: Thu, 07 Jun 2012 21:29:41 +0000
Subject: [PATCH] Ylmi and Ulm seems to be working... needs to be further debugged. Triangle area is missing, thus ulm are always 0.

---
 src/sh.h      |    1 +
 src/co_test.c |    9 +++++++++
 src/sh.c      |   13 ++++++++-----
 3 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/src/co_test.c b/src/co_test.c
index 93d5b41..0885510 100644
--- a/src/co_test.c
+++ b/src/co_test.c
@@ -29,6 +29,15 @@
 fprintf(stderr,"r0=%e\n",r0);
 preparationSh(vesicle,r0);
 calculateYlmi(vesicle);
+calculateUlm(vesicle);
+
+for(i=0;i<vesicle->sphHarmonics->l;i++){
+    for(j=0;j<2*i+1;j++){
+    fprintf(stderr,"ulm(%d,%d)=%e\n",i,j+1,vesicle->sphHarmonics->ulm[i][j]);
+    }
+}
+
+
 
 sph_free(vesicle->sphHarmonics);
 vesicle_free(vesicle);
diff --git a/src/sh.c b/src/sh.c
index 27b67aa..84aafdc 100644
--- a/src/sh.c
+++ b/src/sh.c
@@ -277,6 +277,7 @@
     ts_spharm *sph=vesicle->sphHarmonics;
     ts_coord *coord=(ts_coord *)malloc(sizeof(ts_coord));
     ts_double fi, theta;
+	ts_int m;
     ts_vertex *cvtx;
     for(k=0;k<vesicle->vlist->n;k++){
         cvtx=vesicle->vlist->vtx[k];
@@ -284,13 +285,15 @@
         cart2sph(coord,cvtx->x, cvtx->y, cvtx->z);
         fi=coord->e2;
         theta=coord->e3; 
-        for(i=0; i<sph->l; i++){
+        for(i=1; i<sph->l; i++){
             for(j=0;j<i;j++){
-                sph->Ylmi[i][j][k]=sph->co[i][j]*cos((j-i-1)*fi)*pow(-1,j-i-1)*plgndr(i,abs(j-i-1),cos(theta));
+			m=j+1;
+                sph->Ylmi[i][j][k]=sph->co[i][m]*cos((m-i-1)*fi)*pow(-1,m-i-1)*plgndr(i,abs(m-i-1),cos(theta));
             }
-                sph->Ylmi[i][j+1][k]=sph->co[i][j+1]*plgndr(i,0,cos(theta));
-            for(j=sph->l;j<2*i;j++){
-                sph->Ylmi[i][j][k]=sph->co[i][j]*sin((j-i-1)*fi)*plgndr(i,j-i-1,cos(theta));
+                sph->Ylmi[i][j+1][k]=sph->co[i][m+1]*plgndr(i,0,cos(theta));
+            for(j=i+1;j<2*i;j++){
+			m=j+1;
+                sph->Ylmi[i][j][k]=sph->co[i][m]*sin((m-i-1)*fi)*plgndr(i,m-i-1,cos(theta));
             }
         }
 
diff --git a/src/sh.h b/src/sh.h
index 5ce02c1..67aeb59 100644
--- a/src/sh.h
+++ b/src/sh.h
@@ -12,4 +12,5 @@
 ts_double getR0(ts_vesicle *vesicle);
 ts_bool preparationSh(ts_vesicle *vesicle, ts_double r0);
 ts_bool calculateYlmi(ts_vesicle *vesicle);
+ts_bool calculateUlm(ts_vesicle *vesicle);
 #endif

--
Gitblit v1.9.3