示例#1
0
PetscErrorCode PetscViewerMathematicaSetupConnection_Private(PetscViewer v)
{
    PetscViewer_Mathematica *vmath = (PetscViewer_Mathematica*) v->data;
#if defined(MATHEMATICA_3_0)
    int                     argc = 6;
    char                    *argv[6];
#else
    int                     argc = 5;
    char                    *argv[5];
#endif
    char                    hostname[256];
    long                    lerr;
    PetscErrorCode          ierr;

    PetscFunctionBegin;
    /* Link name */
    argv[0] = "-linkname";
    if (!vmath->linkname) argv[1] = "math -mathlink";
    else                  argv[1] = vmath->linkname;

    /* Link host */
    argv[2] = "-linkhost";
    if (!vmath->linkhost) {
        ierr    = PetscGetHostName(hostname, 255);
        CHKERRQ(ierr);
        argv[3] = hostname;
    } else argv[3] = vmath->linkhost;

    /* Link mode */
#if defined(MATHEMATICA_3_0)
    argv[4] = "-linkmode";
    switch (vmath->linkmode) {
    case MATHEMATICA_LINK_CREATE:
        argv[5] = "Create";
        break;
    case MATHEMATICA_LINK_CONNECT:
        argv[5] = "Connect";
        break;
    case MATHEMATICA_LINK_LAUNCH:
        argv[5] = "Launch";
        break;
    }
#else
    switch (vmath->linkmode) {
    case MATHEMATICA_LINK_CREATE:
        argv[4] = "-linkcreate";
        break;
    case MATHEMATICA_LINK_CONNECT:
        argv[4] = "-linkconnect";
        break;
    case MATHEMATICA_LINK_LAUNCH:
        argv[4] = "-linklaunch";
        break;
    }
#endif
    vmath->link = MLOpenInEnv(mathematicaEnv, argc, argv, &lerr);
#endif
    PetscFunctionReturn(0);
}
示例#2
0
static int setupConnection(MLENV *env, MLINK *link, const char *linkhost, LinkMode linkmode)
{
  int  argc = 5;
  char *argv[5];
  char hostname[256];
  long lerr;
  int  ierr;

  PetscFunctionBegin;
  /* Link name */
  argv[0] = "-linkname";
  argv[1] = "8001";

  /* Link host */
  argv[2] = "-linkhost";
  if (!linkhost) {
    ierr    = PetscGetHostName(hostname, 255);CHKERRQ(ierr);
    argv[3] = hostname;
  } else argv[3] = (char*) linkhost;

  /* Link mode */
  switch (linkmode) {
  case MATHEMATICA_LINK_CREATE:
    argv[4] = "-linkcreate";
    break;
  case MATHEMATICA_LINK_CONNECT:
    argv[4] = "-linkconnect";
    break;
  case MATHEMATICA_LINK_LAUNCH:
    argv[4] = "-linklaunch";
    break;
  }

  *env = MLInitialize(0);
  for (lerr = 0; lerr < argc; lerr++) printf("argv[%ld] = %s\n", lerr, argv[lerr]);
  *link = MLOpenInEnv(*env, argc, argv, &lerr);
  printf("lerr = %ld\n", lerr);
  PetscFunctionReturn(0);
}