mirror of
https://github.com/TREX-CoE/trexio.git
synced 2024-08-24 22:21:43 +02:00
Fixed
This commit is contained in:
parent
e6a211127c
commit
455168efc6
@ -1,4 +1,3 @@
|
||||
/* [[file:trexio_text.org::*File prefixes][File prefixes:4]] */
|
||||
/* This file was generated from the trexio.org org-mode file.
|
||||
To generate it, open trexio.org in Emacs and execute
|
||||
M-x org-babel-tangle
|
||||
@ -7,9 +6,7 @@
|
||||
|
||||
|
||||
#include "trexio_text.h"
|
||||
/* File prefixes:4 ends here */
|
||||
|
||||
/* [[file:trexio_text.org::*Init/deinit functions][Init/deinit functions:2]] */
|
||||
trexio_exit_code trexio_text_init(trexio_t* file) {
|
||||
if (file == NULL) return TREXIO_INVALID_ARG_1;
|
||||
|
||||
@ -52,9 +49,7 @@ trexio_exit_code trexio_text_init(trexio_t* file) {
|
||||
|
||||
return TREXIO_SUCCESS;
|
||||
}
|
||||
/* Init/deinit functions:2 ends here */
|
||||
|
||||
/* [[file:trexio_text.org::*Init/deinit functions][Init/deinit functions:4]] */
|
||||
trexio_exit_code trexio_text_lock(trexio_t* file) {
|
||||
if (file == NULL) return TREXIO_INVALID_ARG_1;
|
||||
|
||||
@ -73,9 +68,7 @@ trexio_exit_code trexio_text_lock(trexio_t* file) {
|
||||
|
||||
return TREXIO_SUCCESS;
|
||||
}
|
||||
/* Init/deinit functions:4 ends here */
|
||||
|
||||
/* [[file:trexio_text.org::*Init/deinit functions][Init/deinit functions:6]] */
|
||||
trexio_exit_code trexio_text_finalize(trexio_t* file) {
|
||||
if (file == NULL) return TREXIO_INVALID_ARG_1;
|
||||
|
||||
@ -88,9 +81,7 @@ trexio_exit_code trexio_text_finalize(trexio_t* file) {
|
||||
|
||||
return TREXIO_SUCCESS;
|
||||
}
|
||||
/* Init/deinit functions:6 ends here */
|
||||
|
||||
/* [[file:trexio_text.org::*Init/deinit functions][Init/deinit functions:8]] */
|
||||
trexio_exit_code trexio_text_unlock(trexio_t* file) {
|
||||
if (file == NULL) return TREXIO_INVALID_ARG_1;
|
||||
|
||||
@ -109,9 +100,7 @@ trexio_exit_code trexio_text_unlock(trexio_t* file) {
|
||||
close(f->lock_file);
|
||||
return TREXIO_SUCCESS;
|
||||
}
|
||||
/* Init/deinit functions:8 ends here */
|
||||
|
||||
/* [[file:trexio_text.org::*Read the struct][Read the struct:2]] */
|
||||
#define DEBUG printf("%s : line %d\n", __FILE__, __LINE__);
|
||||
|
||||
nucleus_t* trexio_text_read_nucleus(trexio_text_t* file) {
|
||||
@ -182,9 +171,9 @@ DEBUG
|
||||
}
|
||||
|
||||
uint64_t size_charge = 1;
|
||||
for (uint i=0; i<nucleus->rank_charge; i++){
|
||||
for (unsigned int i=0; i<nucleus->rank_charge; i++){
|
||||
|
||||
uint j=-1;
|
||||
unsigned int j=-1;
|
||||
rc = fscanf(f, "%s %u", buffer, &j);
|
||||
if ((rc != 2) || (strcmp(buffer, "dims_charge") != 0) || (j!=i)) {
|
||||
FREE(buffer);
|
||||
@ -227,9 +216,9 @@ DEBUG
|
||||
}
|
||||
|
||||
uint64_t size_coord = 1;
|
||||
for (uint i=0; i<nucleus->rank_coord; i++){
|
||||
for (unsigned int i=0; i<nucleus->rank_coord; i++){
|
||||
|
||||
uint j=-1;
|
||||
unsigned int j=-1;
|
||||
rc = fscanf(f, "%s %u", buffer, &j);
|
||||
if ((rc != 2) || (strcmp(buffer, "dims_coord") != 0) || (j!=i)) {
|
||||
FREE(buffer);
|
||||
@ -367,9 +356,7 @@ DEBUG
|
||||
file->nucleus = nucleus;
|
||||
return nucleus;
|
||||
}
|
||||
/* Read the struct:2 ends here */
|
||||
|
||||
/* [[file:trexio_text.org::*Flush the struct][Flush the struct:2]] */
|
||||
trexio_exit_code trexio_text_flush_nucleus(const trexio_text_t* file) {
|
||||
if (file == NULL) return TREXIO_INVALID_ARG_1;
|
||||
|
||||
@ -389,7 +376,7 @@ trexio_exit_code trexio_text_flush_nucleus(const trexio_text_t* file) {
|
||||
fprintf(f, "rank_charge %d\n", nucleus->rank_charge);
|
||||
|
||||
uint64_t size_charge = 1;
|
||||
for (uint i=0; i<nucleus->rank_charge; i++){
|
||||
for (unsigned int i=0; i<nucleus->rank_charge; i++){
|
||||
fprintf(f, "dims_charge %d %ld\n", i, nucleus->dims_charge[i]);
|
||||
size_charge *= nucleus->dims_charge[i];
|
||||
}
|
||||
@ -397,7 +384,7 @@ trexio_exit_code trexio_text_flush_nucleus(const trexio_text_t* file) {
|
||||
fprintf(f, "rank_coord %d\n", nucleus->rank_coord);
|
||||
|
||||
uint64_t size_coord = 1;
|
||||
for (uint i=0; i<nucleus->rank_coord; i++){
|
||||
for (unsigned int i=0; i<nucleus->rank_coord; i++){
|
||||
fprintf(f, "dims_coord %d %ld\n", i, nucleus->dims_coord[i]);
|
||||
size_coord *= nucleus->dims_coord[i];
|
||||
}
|
||||
@ -417,9 +404,7 @@ trexio_exit_code trexio_text_flush_nucleus(const trexio_text_t* file) {
|
||||
file->nucleus->to_flush = 0;
|
||||
return TREXIO_SUCCESS;
|
||||
}
|
||||
/* Flush the struct:2 ends here */
|
||||
|
||||
/* [[file:trexio_text.org::*Free memory][Free memory:2]] */
|
||||
trexio_exit_code trexio_text_free_nucleus(trexio_text_t* file) {
|
||||
if (file == NULL) return TREXIO_INVALID_ARG_1;
|
||||
|
||||
@ -449,9 +434,7 @@ trexio_exit_code trexio_text_free_nucleus(trexio_text_t* file) {
|
||||
FREE (nucleus);
|
||||
return TREXIO_SUCCESS;
|
||||
}
|
||||
/* Free memory:2 ends here */
|
||||
|
||||
/* [[file:trexio_text.org::*Read/Write the num attribute][Read/Write the num attribute:2]] */
|
||||
trexio_exit_code trexio_text_read_nucleus_num(const trexio_t* file, uint64_t* num) {
|
||||
|
||||
if (file == NULL) return TREXIO_INVALID_ARG_1;
|
||||
@ -480,9 +463,7 @@ trexio_exit_code trexio_text_write_nucleus_num(const trexio_t* file, const uint6
|
||||
|
||||
return TREXIO_SUCCESS;
|
||||
}
|
||||
/* Read/Write the num attribute:2 ends here */
|
||||
|
||||
/* [[file:trexio_text.org::*Read/Write the coord attribute][Read/Write the coord attribute:2]] */
|
||||
trexio_exit_code trexio_text_read_nucleus_coord(const trexio_t* file, double* coord, const uint32_t rank, const uint64_t* dims) {
|
||||
|
||||
if (file == NULL) return TREXIO_INVALID_ARG_1;
|
||||
@ -494,7 +475,7 @@ trexio_exit_code trexio_text_read_nucleus_coord(const trexio_t* file, double* co
|
||||
if (rank != nucleus->rank_coord) return TREXIO_INVALID_ARG_3;
|
||||
|
||||
uint64_t dim_size = 1;
|
||||
for (uint i=0; i<rank; i++){
|
||||
for (unsigned int i=0; i<rank; i++){
|
||||
if (dims[i] != nucleus->dims_coord[i]) return TREXIO_INVALID_ARG_4;
|
||||
dim_size *= dims[i];
|
||||
}
|
||||
@ -523,7 +504,7 @@ trexio_exit_code trexio_text_write_nucleus_coord(const trexio_t* file, const dou
|
||||
nucleus->rank_coord = rank;
|
||||
|
||||
uint64_t dim_size = 1;
|
||||
for (uint i=0; i<nucleus->rank_coord; i++){
|
||||
for (unsigned int i=0; i<nucleus->rank_coord; i++){
|
||||
nucleus->dims_coord[i] = dims[i];
|
||||
dim_size *= dims[i];
|
||||
}
|
||||
@ -537,9 +518,7 @@ trexio_exit_code trexio_text_write_nucleus_coord(const trexio_t* file, const dou
|
||||
nucleus->to_flush = 1;
|
||||
return TREXIO_SUCCESS;
|
||||
}
|
||||
/* Read/Write the coord attribute:2 ends here */
|
||||
|
||||
/* [[file:trexio_text.org::*Read/Write the charge attribute][Read/Write the charge attribute:2]] */
|
||||
trexio_exit_code trexio_text_read_nucleus_charge(const trexio_t* file, double* charge, const uint32_t rank, const uint64_t* dims) {
|
||||
|
||||
if (file == NULL) return TREXIO_INVALID_ARG_1;
|
||||
@ -551,7 +530,7 @@ trexio_exit_code trexio_text_read_nucleus_charge(const trexio_t* file, double* c
|
||||
if (rank != nucleus->rank_charge) return TREXIO_INVALID_ARG_3;
|
||||
|
||||
uint64_t dim_size = 1;
|
||||
for (uint i=0; i<rank; i++){
|
||||
for (unsigned int i=0; i<rank; i++){
|
||||
if (dims[i] != nucleus->dims_charge[i]) return TREXIO_INVALID_ARG_4;
|
||||
dim_size *= dims[i];
|
||||
}
|
||||
@ -580,7 +559,7 @@ trexio_exit_code trexio_text_write_nucleus_charge(const trexio_t* file, const do
|
||||
nucleus->rank_charge = rank;
|
||||
|
||||
uint64_t dim_size = 1;
|
||||
for (uint i=0; i<nucleus->rank_charge; i++){
|
||||
for (unsigned int i=0; i<nucleus->rank_charge; i++){
|
||||
nucleus->dims_charge[i] = dims[i];
|
||||
dim_size *= dims[i];
|
||||
}
|
||||
@ -594,9 +573,7 @@ trexio_exit_code trexio_text_write_nucleus_charge(const trexio_t* file, const do
|
||||
nucleus->to_flush = 1;
|
||||
return TREXIO_SUCCESS;
|
||||
}
|
||||
/* Read/Write the charge attribute:2 ends here */
|
||||
|
||||
/* [[file:trexio_text.org::*Read the complete struct][Read the complete struct:2]] */
|
||||
rdm_t* trexio_text_read_rdm(trexio_text_t* file) {
|
||||
if (file == NULL) return NULL;
|
||||
|
||||
@ -676,9 +653,7 @@ rdm_t* trexio_text_read_rdm(trexio_text_t* file) {
|
||||
file->rdm = rdm ;
|
||||
return rdm;
|
||||
}
|
||||
/* Read the complete struct:2 ends here */
|
||||
|
||||
/* [[file:trexio_text.org::*Flush the complete struct][Flush the complete struct:2]] */
|
||||
trexio_exit_code trexio_text_flush_rdm(const trexio_text_t* file) {
|
||||
if (file == NULL) return TREXIO_INVALID_ARG_1;
|
||||
|
||||
@ -709,9 +684,7 @@ trexio_exit_code trexio_text_flush_rdm(const trexio_text_t* file) {
|
||||
file->rdm->to_flush = 0;
|
||||
return TREXIO_SUCCESS;
|
||||
}
|
||||
/* Flush the complete struct:2 ends here */
|
||||
|
||||
/* [[file:trexio_text.org::*Free memory][Free memory:2]] */
|
||||
trexio_exit_code trexio_text_free_rdm(trexio_text_t* file) {
|
||||
if (file == NULL) return TREXIO_INVALID_ARG_1;
|
||||
|
||||
@ -741,9 +714,7 @@ trexio_exit_code trexio_text_free_rdm(trexio_text_t* file) {
|
||||
file->rdm = NULL;
|
||||
return TREXIO_SUCCESS;
|
||||
}
|
||||
/* Free memory:2 ends here */
|
||||
|
||||
/* [[file:trexio_text.org::*Read/Write the one_e attribute][Read/Write the one_e attribute:2]] */
|
||||
trexio_exit_code trexio_text_read_rdm_one_e(const trexio_t* file, double* one_e, const uint64_t dim_one_e) {
|
||||
|
||||
if (file == NULL) return TREXIO_INVALID_ARG_1;
|
||||
@ -778,9 +749,7 @@ trexio_exit_code trexio_text_write_rdm_one_e(const trexio_t* file, const double*
|
||||
rdm->to_flush = 1;
|
||||
return TREXIO_SUCCESS;
|
||||
}
|
||||
/* Read/Write the one_e attribute:2 ends here */
|
||||
|
||||
/* [[file:trexio_text.org::*Read/Write the two_e attribute][Read/Write the two_e attribute:2]] */
|
||||
trexio_exit_code trexio_text_buffered_read_rdm_two_e(const trexio_t* file, const uint64_t offset, const uint64_t size, int64_t* index, double* value) {
|
||||
|
||||
if (file == NULL) return TREXIO_INVALID_ARG_1;
|
||||
@ -845,4 +814,3 @@ trexio_exit_code trexio_text_buffered_write_rdm_two_e(const trexio_t* file, cons
|
||||
|
||||
return TREXIO_SUCCESS;
|
||||
}
|
||||
/* Read/Write the two_e attribute:2 ends here */
|
||||
|
@ -1,4 +1,3 @@
|
||||
/* [[file:trexio_text.org::*File prefixes][File prefixes:3]] */
|
||||
/* This file was generated from the trexio.org org-mode file.
|
||||
To generate it, open trexio.org in Emacs and execute
|
||||
M-x org-babel-tangle
|
||||
@ -21,11 +20,7 @@
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/stat.h>
|
||||
/* File prefixes:3 ends here */
|
||||
|
||||
/* Structs for blocks */
|
||||
|
||||
/* [[file:trexio_text.org::*Structs for blocks][Structs for blocks:1]] */
|
||||
typedef struct nucleus_s {
|
||||
FILE* file;
|
||||
double* coord;
|
||||
@ -52,12 +47,7 @@ typedef struct rdm_s {
|
||||
char* two_e_file_name;
|
||||
int to_flush;
|
||||
} rdm_t;
|
||||
/* Structs for blocks:1 ends here */
|
||||
|
||||
/* Structs for the text back end */
|
||||
|
||||
|
||||
/* [[file:trexio_text.org::*Structs for the text back end][Structs for the text back end:1]] */
|
||||
typedef struct trexio_text_s {
|
||||
trexio_t parent ;
|
||||
int lock_file;
|
||||
@ -66,128 +56,40 @@ typedef struct trexio_text_s {
|
||||
electron_t* electron;
|
||||
rdm_t* rdm;
|
||||
} trexio_text_t;
|
||||
/* Structs for the text back end:1 ends here */
|
||||
|
||||
/* Init/deinit functions */
|
||||
|
||||
|
||||
/* [[file:trexio_text.org::*Init/deinit functions][Init/deinit functions:1]] */
|
||||
trexio_exit_code trexio_text_init(trexio_t* file);
|
||||
/* Init/deinit functions:1 ends here */
|
||||
|
||||
/* [[file:trexio_text.org::*Init/deinit functions][Init/deinit functions:3]] */
|
||||
trexio_exit_code trexio_text_lock(trexio_t* file);
|
||||
/* Init/deinit functions:3 ends here */
|
||||
|
||||
/* [[file:trexio_text.org::*Init/deinit functions][Init/deinit functions:5]] */
|
||||
trexio_exit_code trexio_text_finalize(trexio_t* file);
|
||||
/* Init/deinit functions:5 ends here */
|
||||
|
||||
/* [[file:trexio_text.org::*Init/deinit functions][Init/deinit functions:7]] */
|
||||
trexio_exit_code trexio_text_unlock(trexio_t* file);
|
||||
/* Init/deinit functions:7 ends here */
|
||||
|
||||
/* Read the struct */
|
||||
|
||||
|
||||
/* [[file:trexio_text.org::*Read the struct][Read the struct:1]] */
|
||||
nucleus_t* trexio_text_read_nucleus(trexio_text_t* file);
|
||||
/* Read the struct:1 ends here */
|
||||
|
||||
/* Flush the struct */
|
||||
|
||||
|
||||
/* [[file:trexio_text.org::*Flush the struct][Flush the struct:1]] */
|
||||
trexio_exit_code trexio_text_flush_nucleus(const trexio_text_t* file);
|
||||
/* Flush the struct:1 ends here */
|
||||
|
||||
/* Free memory */
|
||||
|
||||
/* Memory is allocated when reading. The following function frees memory. */
|
||||
|
||||
|
||||
/* [[file:trexio_text.org::*Free memory][Free memory:1]] */
|
||||
trexio_exit_code trexio_text_free_nucleus(trexio_text_t* file);
|
||||
/* Free memory:1 ends here */
|
||||
|
||||
/* Read/Write the num attribute */
|
||||
|
||||
|
||||
/* [[file:trexio_text.org::*Read/Write the num attribute][Read/Write the num attribute:1]] */
|
||||
trexio_exit_code trexio_text_read_nucleus_num(const trexio_t* file, uint64_t* num);
|
||||
trexio_exit_code trexio_text_write_nucleus_num(const trexio_t* file, const uint64_t num);
|
||||
/* Read/Write the num attribute:1 ends here */
|
||||
|
||||
/* Read/Write the coord attribute */
|
||||
|
||||
/* The ~coord~ array is assumed allocated with the appropriate size. */
|
||||
|
||||
|
||||
/* [[file:trexio_text.org::*Read/Write the coord attribute][Read/Write the coord attribute:1]] */
|
||||
trexio_exit_code trexio_text_read_nucleus_coord(const trexio_t* file, double* coord, const uint32_t rank, const uint64_t* dims);
|
||||
trexio_exit_code trexio_text_write_nucleus_coord(const trexio_t* file, const double* coord, const uint32_t rank, const uint64_t* dims);
|
||||
/* Read/Write the coord attribute:1 ends here */
|
||||
|
||||
/* Read/Write the charge attribute */
|
||||
|
||||
/* The ~charge~ array is assumed allocated with the appropriate size. */
|
||||
|
||||
|
||||
/* [[file:trexio_text.org::*Read/Write the charge attribute][Read/Write the charge attribute:1]] */
|
||||
trexio_exit_code trexio_text_read_nucleus_charge(const trexio_t* file, double* charge, const uint32_t rank, const uint64_t* dims);
|
||||
trexio_exit_code trexio_text_write_nucleus_charge(const trexio_t* file, const double* charge, const uint32_t rank, const uint64_t* dims);
|
||||
/* Read/Write the charge attribute:1 ends here */
|
||||
|
||||
/* Read the complete struct */
|
||||
|
||||
|
||||
/* [[file:trexio_text.org::*Read the complete struct][Read the complete struct:1]] */
|
||||
rdm_t* trexio_text_read_rdm(trexio_text_t* file);
|
||||
/* Read the complete struct:1 ends here */
|
||||
|
||||
/* Flush the complete struct */
|
||||
|
||||
|
||||
/* [[file:trexio_text.org::*Flush the complete struct][Flush the complete struct:1]] */
|
||||
trexio_exit_code trexio_text_flush_rdm(const trexio_text_t* file);
|
||||
/* Flush the complete struct:1 ends here */
|
||||
|
||||
/* Free memory */
|
||||
|
||||
/* Memory is allocated when reading. The followig function frees memory. */
|
||||
|
||||
|
||||
/* [[file:trexio_text.org::*Free memory][Free memory:1]] */
|
||||
trexio_exit_code trexio_text_free_rdm(trexio_text_t* file);
|
||||
/* Free memory:1 ends here */
|
||||
|
||||
/* Read/Write the one_e attribute */
|
||||
|
||||
/* The ~one_e~ array is assumed allocated with the appropriate size. */
|
||||
|
||||
|
||||
/* [[file:trexio_text.org::*Read/Write the one_e attribute][Read/Write the one_e attribute:1]] */
|
||||
trexio_exit_code trexio_text_read_rdm_one_e(const trexio_t* file, double* one_e, const uint64_t dim_one_e);
|
||||
trexio_exit_code trexio_text_write_rdm_one_e(const trexio_t* file, const double* one_e, const uint64_t dim_one_e);
|
||||
/* Read/Write the one_e attribute:1 ends here */
|
||||
|
||||
/* Read/Write the two_e attribute */
|
||||
|
||||
/* ~two_e~ is a sparse data structure, which can be too large to fit */
|
||||
/* in memory. So we provide functions to read and write it by */
|
||||
/* chunks. */
|
||||
/* In the text back end, the easiest way to do it is to create a */
|
||||
/* file for each sparse float structure. */
|
||||
|
||||
|
||||
/* [[file:trexio_text.org::*Read/Write the two_e attribute][Read/Write the two_e attribute:1]] */
|
||||
trexio_exit_code trexio_text_buffered_read_rdm_two_e(const trexio_t* file, const uint64_t offset, const uint64_t size, int64_t* index, double* value);
|
||||
trexio_exit_code trexio_text_buffered_write_rdm_two_e(const trexio_t* file, const uint64_t offset, const uint64_t size, const int64_t* index, const double* value);
|
||||
/* Read/Write the two_e attribute:1 ends here */
|
||||
|
||||
/* File suffixes :noxport: */
|
||||
|
||||
|
||||
/* [[file:trexio_text.org::*File suffixes][File suffixes:1]] */
|
||||
#endif
|
||||
/* File suffixes:1 ends here */
|
||||
|
@ -100,13 +100,6 @@ typedef struct rdm_s {
|
||||
int to_flush;
|
||||
} rdm_t;
|
||||
#+end_src
|
||||
|
||||
|
||||
*** TO DO
|
||||
- to_flush = 1 in write
|
||||
- to_flush = 0 when flushed
|
||||
- name
|
||||
|
||||
*** Structs for the text back end
|
||||
|
||||
#+begin_src c :tangle trexio_text.h
|
||||
@ -321,11 +314,11 @@ DEBUG
|
||||
}
|
||||
|
||||
uint64_t size_charge = 1;
|
||||
for (uint i=0; i<nucleus->rank_charge; i++){
|
||||
for (unsigned int i=0; i<nucleus->rank_charge; i++){
|
||||
|
||||
uint j=-1;
|
||||
unsigned int j=-1;
|
||||
rc = fscanf(f, "%s %u", buffer, &j);
|
||||
if ((rc != 1) || (strcmp(buffer, "dims_charge") != 0) || (j!=i)) {
|
||||
if ((rc != 2) || (strcmp(buffer, "dims_charge") != 0) || (j!=i)) {
|
||||
FREE(buffer);
|
||||
FREE(file_name);
|
||||
FREE(nucleus);
|
||||
@ -366,11 +359,11 @@ DEBUG
|
||||
}
|
||||
|
||||
uint64_t size_coord = 1;
|
||||
for (uint i=0; i<nucleus->rank_coord; i++){
|
||||
for (unsigned int i=0; i<nucleus->rank_coord; i++){
|
||||
|
||||
uint j=-1;
|
||||
unsigned int j=-1;
|
||||
rc = fscanf(f, "%s %u", buffer, &j);
|
||||
if ((rc != 1) || (strcmp(buffer, "dims_coord") != 0) || (j!=i)) {
|
||||
if ((rc != 2) || (strcmp(buffer, "dims_coord") != 0) || (j!=i)) {
|
||||
FREE(buffer);
|
||||
FREE(file_name);
|
||||
FREE(nucleus);
|
||||
@ -534,7 +527,7 @@ trexio_exit_code trexio_text_flush_nucleus(const trexio_text_t* file) {
|
||||
fprintf(f, "rank_charge %d\n", nucleus->rank_charge);
|
||||
|
||||
uint64_t size_charge = 1;
|
||||
for (uint i=0; i<nucleus->rank_charge; i++){
|
||||
for (unsigned int i=0; i<nucleus->rank_charge; i++){
|
||||
fprintf(f, "dims_charge %d %ld\n", i, nucleus->dims_charge[i]);
|
||||
size_charge *= nucleus->dims_charge[i];
|
||||
}
|
||||
@ -542,7 +535,7 @@ trexio_exit_code trexio_text_flush_nucleus(const trexio_text_t* file) {
|
||||
fprintf(f, "rank_coord %d\n", nucleus->rank_coord);
|
||||
|
||||
uint64_t size_coord = 1;
|
||||
for (uint i=0; i<nucleus->rank_coord; i++){
|
||||
for (unsigned int i=0; i<nucleus->rank_coord; i++){
|
||||
fprintf(f, "dims_coord %d %ld\n", i, nucleus->dims_coord[i]);
|
||||
size_coord *= nucleus->dims_coord[i];
|
||||
}
|
||||
@ -573,33 +566,33 @@ trexio_exit_code trexio_text_free_nucleus(trexio_text_t* file);
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :tangle trexio_text.c
|
||||
trexio_exit_code trexio_text_free_rdm(trexio_text_t* file) {
|
||||
trexio_exit_code trexio_text_free_nucleus(trexio_text_t* file) {
|
||||
if (file == NULL) return TREXIO_INVALID_ARG_1;
|
||||
|
||||
trexio_exit_code rc;
|
||||
|
||||
if (file->parent.mode != 'r') {
|
||||
rc = trexio_text_flush_rdm(file);
|
||||
rc = trexio_text_flush_nucleus(file);
|
||||
if (rc != TREXIO_SUCCESS) return TREXIO_FAILURE;
|
||||
}
|
||||
|
||||
rdm_t* rdm = file->rdm;
|
||||
if (rdm == NULL) return TREXIO_SUCCESS;
|
||||
nucleus_t* nucleus = file->nucleus;
|
||||
if (nucleus == NULL) return TREXIO_SUCCESS;
|
||||
|
||||
if (rdm->file != NULL) {
|
||||
fclose(rdm->file);
|
||||
rdm->file = NULL;
|
||||
if (nucleus->file != NULL) {
|
||||
fclose(nucleus->file);
|
||||
nucleus->file = NULL;
|
||||
}
|
||||
|
||||
if (nucleus->coord != NULL) {
|
||||
FREE (nucleus->coord);
|
||||
}
|
||||
|
||||
if (nucleus->charge != NULL) {
|
||||
FREE (nucleus->charge);
|
||||
}
|
||||
|
||||
if (rdm->one_e != NULL) {
|
||||
FREE (rdm->one_e);
|
||||
}
|
||||
|
||||
if (rdm->two_e_file_name != NULL) {
|
||||
FREE (rdm->two_e_file_name);
|
||||
}
|
||||
|
||||
free (rdm);
|
||||
file->rdm = NULL;
|
||||
FREE (nucleus);
|
||||
return TREXIO_SUCCESS;
|
||||
}
|
||||
#+end_src
|
||||
@ -663,7 +656,7 @@ trexio_exit_code trexio_text_read_nucleus_coord(const trexio_t* file, double* co
|
||||
if (rank != nucleus->rank_coord) return TREXIO_INVALID_ARG_3;
|
||||
|
||||
uint64_t dim_size = 1;
|
||||
for (uint i=0; i<rank; i++){
|
||||
for (unsigned int i=0; i<rank; i++){
|
||||
if (dims[i] != nucleus->dims_coord[i]) return TREXIO_INVALID_ARG_4;
|
||||
dim_size *= dims[i];
|
||||
}
|
||||
@ -692,7 +685,7 @@ trexio_exit_code trexio_text_write_nucleus_coord(const trexio_t* file, const dou
|
||||
nucleus->rank_coord = rank;
|
||||
|
||||
uint64_t dim_size = 1;
|
||||
for (uint i=0; i<nucleus->rank_coord; i++){
|
||||
for (unsigned int i=0; i<nucleus->rank_coord; i++){
|
||||
nucleus->dims_coord[i] = dims[i];
|
||||
dim_size *= dims[i];
|
||||
}
|
||||
@ -728,7 +721,7 @@ trexio_exit_code trexio_text_read_nucleus_charge(const trexio_t* file, double* c
|
||||
if (rank != nucleus->rank_charge) return TREXIO_INVALID_ARG_3;
|
||||
|
||||
uint64_t dim_size = 1;
|
||||
for (uint i=0; i<rank; i++){
|
||||
for (unsigned int i=0; i<rank; i++){
|
||||
if (dims[i] != nucleus->dims_charge[i]) return TREXIO_INVALID_ARG_4;
|
||||
dim_size *= dims[i];
|
||||
}
|
||||
@ -757,7 +750,7 @@ trexio_exit_code trexio_text_write_nucleus_charge(const trexio_t* file, const do
|
||||
nucleus->rank_charge = rank;
|
||||
|
||||
uint64_t dim_size = 1;
|
||||
for (uint i=0; i<nucleus->rank_charge; i++){
|
||||
for (unsigned int i=0; i<nucleus->rank_charge; i++){
|
||||
nucleus->dims_charge[i] = dims[i];
|
||||
dim_size *= dims[i];
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user