1 #include "../../c/main/issm.h"
7 #include <android/log.h>
8 #include <android/log.h>
18 jint
Initialize(JNIEnv *env, jclass clazz, jstring jsolution_type, jstring jabsfile, jstring jrelfile)
24 const char* issmname =
"issm.exe";
25 char *solution_type = NULL;
31 __android_log_print(ANDROID_LOG_INFO,
"Native",
"Initializing FemModel");
34 solution_type = (
char*)env->GetStringUTFChars(jsolution_type,0);
35 absfile = (
char*)env->GetStringUTFChars(jabsfile,0);
36 relfile = (
char*)env->GetStringUTFChars(jrelfile,0);
40 argv=(
char**)malloc(argc*
sizeof(
char*));
41 argv[0]=(
char*)issmname;
42 argv[1]=solution_type;
53 env->ReleaseStringUTFChars(jsolution_type, solution_type);
54 env->ReleaseStringUTFChars(jabsfile, absfile);
55 env->ReleaseStringUTFChars(jrelfile, relfile);
58 __android_log_print(ANDROID_LOG_INFO,
"Native",
"Number of elements");
62 __android_log_print(ANDROID_LOG_INFO,
"Native",
"Retrieving vertices");
66 __android_log_print(ANDROID_LOG_INFO,
"Native",
"Done Initializing FemModel");
72 void Solve(JNIEnv *env, jclass clazz , jdouble
alpha, jobject buf){
82 __android_log_print(ANDROID_LOG_INFO,
"Native",
"Solving ");
85 jdouble *dBuf = (jdouble *)env->GetDirectBufferAddress(buf);
88 __android_log_print(ANDROID_LOG_INFO,
"Native",
"alpha %g ",
alpha);
90 __android_log_print(ANDROID_LOG_INFO,
"Native",
"ok-1");
93 __android_log_print(ANDROID_LOG_INFO,
"Native",
"ok0");
97 __android_log_print(ANDROID_LOG_INFO,
"Native",
"ok1");
101 __android_log_print(ANDROID_LOG_INFO,
"Native",
"ok2");
104 __android_log_print(ANDROID_LOG_INFO,
"Native",
"Retrieving results ");
109 for(i=0;i<patch->numrows;i++){
110 if ((patch->values[i*patch->numcols+0])==
VelEnum){
120 eid=(int)patch->values[i*patch->numcols+3]-1;
121 v1=(
int)patch->values[i*patch->numcols+5];
122 x1=
xyz[3*(v1-1)+0]; y1=
xyz[3*(v1-1)+1]; z1=
xyz[3*(v1-1)+2];
124 v2=(int)patch->values[i*patch->numcols+6];
125 x2=
xyz[3*(v2-1)+0]; y2=
xyz[3*(v2-1)+1]; z2=
xyz[3*(v2-1)+2];
127 v3=(int)patch->values[i*patch->numcols+7];
128 x3=
xyz[3*(v3-1)+0]; y3=
xyz[3*(v3-1)+1]; z3=
xyz[3*(v3-1)+2];
130 vel1=patch->values[i*patch->numcols+8];
131 vel2=patch->values[i*patch->numcols+9];
132 vel3=patch->values[i*patch->numcols+10];
152 dBuf[12*eid+10]=vel2;
153 dBuf[12*eid+11]=vel3;
172 {
"createISSMModel" ,
"(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I" , (
void *)
Initialize},
173 {
"solveISSMModel",
"(DLjava/nio/DoubleBuffer;)V", (
void *)
Solve}
182 if (vm->GetEnv(
reinterpret_cast<void**
>(&env), JNI_VERSION_1_6) != JNI_OK) {
187 jclass clazz = env->FindClass(
"gov/nasa/jpl/issm/IssmJni");
191 env->DeleteLocalRef(clazz);
192 return JNI_VERSION_1_6;