Напишите текстовый файл для сохранения векторов и других переменных в программе C

#c #sundials

#c #солнечные часы

Вопрос:

Я использую числовой решатель солнечных часов для решения уравнений DAE. Мне удалось создать рабочий код, но я не уверен, каков наилучший способ эффективного сохранения вектора решения. Ниже приведен фрагмент кода для решения уравнений и сохранения решения в текстовом файле с использованием for цикла.

   FILE* file;
  int i;
  tout = dt; 
  file = fopen("solution.txt", "w");
  /*
  for (iout = 1; iout < NOUT; iout  ) {
      tout = iout * dt;   // dt : Time step
      retval = IDASolve(mem, tout, amp;tret, uu, up, IDA_NORMAL);  // Solve equation
      if (retval < 0) break;

       /* Save the solution vector in a text file*/
       // MGRID : length of vector, uu
      for (i = 0; i < MGRID; i  ) {  
          fprintf(file, "%lft", NV_Ith_S(uu, i));  // access vector uu element using macro NV_Ith_S
      }
      fprintf(file, "n");      
  }
  fclose(file);
 

Есть ли какой-либо другой способ сохранить вектор uu в текстовом файле (или другом эффективном формате) без внутреннего цикла ‘for’?

Комментарии:

1. Откуда MGRID берется?

2. MGRID является целым числом, которое является длиной вектора uu .

3. Я собрал столько же, однако откуда это взялось ?

4. Он определяется как #define MGRID 120

5. Разворачивать это вручную кажется немного чрезмерным. Я не могу придумать очень веской причины для этого. Компилятор, вероятно, может развернуть его для вас с включенной оптимизацией. Однако, чтобы ответить на ваш вопрос, если базовый буфер для векторных данных является непрерывным, то наиболее эффективным способом его хранения является простая запись буфера как есть одним выстрелом на диск. Однако, очевидно, что он не будет в удобочитаемом формате.