[petsc-users] Problem with options and PetscFOpen/fopen
Oleksandr Koshkarov
olk548 at mail.usask.ca
Thu Jun 7 15:46:47 CDT 2018
Hello all,
I am trying to read options using petsc capabilities and it is working fine.
However, if I open file to read with fopen/PetscFOpen some of options
stopped being read.
I think It may be a bug or I am doing something very stupid and cannot
see it.
Here is the snippets of what I do:
PetscBool flag;
int path_str_size = 100;
char str[path_str_size];
PetscOptionsGetString(NULL,NULL,"--config",str,path_str_size,&flag);
if (flag)
PetscOptionsInsert(NULL,argc,args,str);
else
try_again("Please specify input file: \"--config config_path\"\n");
// Loading options:
PetscOptionsGetReal(NULL,NULL,"--dt",&(env->dt),&flag);
if (!flag) try_again("Please specify dt: \"--dt value\"\n");
....
PetscOptionsGetInt(NULL,NULL,"--Ns",&(env->Ns),&flag);
if (!flag) try_again("Please specify Ns: \"--Ns value\"\n");
for (int s; s<env->Ns; s++) {
sprintf(str,"--mass%d",s);
PetscOptionsGetReal(NULL,NULL,str,&(env->species[s].mass),&flag);
if (!flag) try_again("Please specify all masses: \"--mass<N> value\"
(N starts from 0)\n");
...
}
PetscOptionsGetString(NULL,NULL,"--grid",str,path_str_size,&flag);
if (!flag) try_again("Please specify grid file \"--grid path\"\n");
// This code alone works fine without a trouble!
// but if I add next three lines, options which are in the loop stopped
being read (i.e., --mass0, --mass1, etc) (I am even getting a warning
from petsc that they are not being used
// while other options (i.e., --dt, --Ns) are alright
FILE *fp;
PetscFOpen(PETSC_COMM_SELF,str,"r",&fp); // if I use fopen or different
variable (not str) - the same effect.
PetscFClose(PETSC_COMM_SELF,fp);
It seems it is possible to avoid this problem if you wrap 3 last lines
in the separate function.
p.s. Am I doing something stupid?
Best regards,
Alex.
More information about the petsc-users
mailing list