/*------------------------------------------------------------------------- This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. -------------------------------------------------------------------------*/ #include #include #include #include "fortran_macros.h" #include "cgnslib.h" #include "cgns_header.h" #include #include "ADF.h" #ifdef MEM_DEBUG #include "cg_malloc.h" #endif /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *\ * Convert between Fortran and C strings * \* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ static void string_2_C_string(char *string, int string_length, char *c_string, int max_len, int *ierr) { int i, iend; if (string == NULL || c_string == NULL) { cgi_error ("NULL string pointer"); *ierr = CG_ERROR; return; } /** Skip and trailing blanks **/ for (iend = string_length-1; iend >= 0; iend--) { if (string[iend] != ' ') break; } if (iend >= max_len) iend = max_len - 1; /** Copy the non-trailing blank portion of the string **/ for (i = 0; i <= iend; i++) c_string[i] = string[i]; /** NULL terminate the C string **/ c_string[i] = '\0'; *ierr = CG_OK; } static void string_2_F_string(char *c_string, char *string, int string_length, int *ierr) { int i, len; if (c_string == NULL || string == NULL) { cgi_error ("NULL string pointer"); *ierr = CG_ERROR; return; } len = strlen(c_string); if (len > string_length) len = string_length; for (i = 0; i < len; i++) string[i] = c_string[i]; while (i < string_length) string[i++] = ' '; *ierr = CG_OK; } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *\ * LIBRARY FUNCTIONS * \* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ void FMNAME(cg_is_cgns_f, CG_IS_CGNS_F) (STR_PSTR(filename), int *ier STR_PLEN(filename)) { int length; char *c_name; length = (int) STR_LEN(filename); c_name = CGNS_NEW(char, length+1); string_2_C_string(STR_PTR(filename), STR_LEN(filename), c_name, length, ier); if (*ier == 0) *ier = cg_is_cgns(c_name); CGNS_FREE(c_name); } void FMNAME(cg_open_f, CG_OPEN_F) (STR_PSTR(filename), int *mode, int *fn, int *ier STR_PLEN(filename)) { int length; char *c_name; length = (int) STR_LEN(filename); c_name = CGNS_NEW(char, length+1); string_2_C_string(STR_PTR(filename), STR_LEN(filename), c_name, length, ier); if (*ier) { free (c_name); return; } #if DEBUG_FTOC printf("filename='%s'\n",c_name); #endif *ier = cg_open(c_name, *mode, fn); free(c_name); } void FMNAME(cg_version_f, CG_VERSION_F) (int *fn, float *FileVersion, int *ier) { *ier = cg_version(*fn, FileVersion); } void FMNAME(cg_close_f, CG_CLOSE_F) (int *fn, int *ier) { *ier = cg_close(*fn); } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *\ * Read and write CGNSBase_t Nodes * \* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ void FMNAME(cg_nbases_f, CG_NBASES_F) (int *fn, int *nbases, int *ier) { *ier = cg_nbases(*fn, nbases); } void FMNAME(cg_base_read_f, CG_BASE_READ_F) (int *fn, int *B, STR_PSTR(basename), int *cell_dim, int *phys_dim, int *ier STR_PLEN(basename)) { char c_name[ADF_NAME_LENGTH+1]; *ier = cg_base_read(*fn, *B, c_name, cell_dim, phys_dim); if (!*ier) string_2_F_string(c_name, STR_PTR(basename), STR_LEN(basename), ier); } void FMNAME(cg_base_id_f, CG_BASE_ID_F) (int *fn, int *B, double *base_id, int *ier) { *ier = cg_base_id(*fn, *B, base_id); } void FMNAME(cg_base_write_f, CG_BASE_WRITE_F) (int *fn, STR_PSTR(basename), int *cell_dim, int *phys_dim, int *B, int *ier STR_PLEN(basename)) { char c_name[ADF_NAME_LENGTH+1]; string_2_C_string(STR_PTR(basename), STR_LEN(basename), c_name, ADF_NAME_LENGTH, ier); if (*ier) return; #if DEBUG_FTOC printf("\nbasename='%s'\n", c_name); printf("cell_dim=%d\n",*cell_dim); printf("phys_dim=%d\n",*phys_dim); #endif *ier = cg_base_write(*fn, c_name, *cell_dim, *phys_dim, B); } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *\ * Read and write Zone_t Nodes * \* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ void FMNAME(cg_nzones_f, CG_NZONES_F) (int *fn, int *B, int *nzones, int *ier) { *ier = cg_nzones(*fn, *B, nzones); } void FMNAME(cg_zone_type_f, CG_ZONE_TYPE_F) (int *fn, int *B, int *Z, ZoneType_t *type, int *ier) { *ier = cg_zone_type(*fn, *B, *Z, type); } void FMNAME(cg_zone_read_f, CG_ZONE_READ_F) (int *fn, int *B, int *Z, STR_PSTR(zonename), int *size, int *ier STR_PLEN(zonename)) { char c_name[ADF_NAME_LENGTH+1]; *ier = cg_zone_read(*fn, *B, *Z, c_name, size); if (!*ier) string_2_F_string(c_name, STR_PTR(zonename), STR_LEN(zonename), ier); } void FMNAME(cg_zone_id_f, CG_ZONE_ID_F) (int *fn, int *B, int *Z, double *zone_id, int *ier) { *ier = cg_zone_id(*fn, *B, *Z, zone_id); } void FMNAME(cg_zone_write_f, CG_ZONE_WRITE_F) (int *fn, int *B, STR_PSTR(zonename), int *size, ZoneType_t *type, int *Z, int *ier STR_PLEN(zonename)) { char c_name[ADF_NAME_LENGTH+1]; string_2_C_string(STR_PTR(zonename), STR_LEN(zonename), c_name, ADF_NAME_LENGTH, ier); if (*ier) return; #if DEBUG_FTOC printf("\n zonename='%s'\n", c_name); #endif *ier = cg_zone_write(*fn, *B, c_name, size, *type, Z); } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *\ * Read and write Family_t Nodes * \* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ void FMNAME(cg_nfamilies_f, CG_NFAMILIES_F) (int *fn, int *B, int *nfamilies, int *ier) { *ier = cg_nfamilies(*fn, *B, nfamilies); } void FMNAME(cg_family_read_f, CG_FAMILY_READ_F) (int *fn, int *B, int *F, STR_PSTR(family_name), int *nboco, int *ngeos, int *ier STR_PLEN(family_name)) { char c_name[ADF_NAME_LENGTH+1]; *ier = cg_family_read(*fn, *B, *F, c_name, nboco, ngeos); if (!*ier) string_2_F_string(c_name, STR_PTR(family_name), STR_LEN(family_name), ier); } void FMNAME(cg_family_write_f, CG_FAMILY_WRITE_F) (int *fn, int *B, STR_PSTR(family_name), int *F, int *ier STR_PLEN(family_name)) { char c_name[ADF_NAME_LENGTH+1]; string_2_C_string(STR_PTR(family_name), STR_LEN(family_name), c_name, ADF_NAME_LENGTH, ier); if (!*ier) *ier = cg_family_write(*fn, *B, c_name, F); } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *\ * Read and write FamBC_t Nodes * \* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ void FMNAME(cg_fambc_read_f, CG_FAMBC_READ_F) (int *fn, int *B, int *F, int *BC, STR_PSTR(fambc_name), BCType_t *bocotype, int *ier STR_PLEN(fambc_name)) { char c_name[ADF_NAME_LENGTH+1]; *ier = cg_fambc_read(*fn, *B, *F, *BC, c_name, bocotype); if (!*ier) string_2_F_string(c_name, STR_PTR(fambc_name), STR_LEN(fambc_name), ier); } void FMNAME(cg_fambc_write_f, CG_FAMBC_WRITE_F) (int *fn, int *B, int *F, STR_PSTR(fambc_name), BCType_t *bocotype, int *BC, int *ier STR_PLEN(fambc_name)) { char c_name[ADF_NAME_LENGTH+1]; string_2_C_string(STR_PTR(fambc_name), STR_LEN(fambc_name), c_name, ADF_NAME_LENGTH, ier); if (!*ier) *ier = cg_fambc_write(*fn, *B, *F, c_name, *bocotype, BC); } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *\ * Read and write GeometryReference_t Nodes * \* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ void FMNAME(cg_geo_read_f, CG_GEO_READ_F) (int *fn, int *B, int *F, int *G, STR_PSTR(geo_name), STR_PSTR(geo_file), STR_PSTR(CAD_name), int *npart, int *ier STR_PLEN(geo_name) STR_PLEN(geo_file) STR_PLEN(CAD_name)) { char c_geo_name[ADF_NAME_LENGTH+1]; char c_CAD_name[ADF_NAME_LENGTH+1]; char *c_geo_file; *ier = cg_geo_read(*fn, *B, *F, *G, c_geo_name, &c_geo_file, c_CAD_name, npart); if (*ier) return; string_2_F_string(c_geo_name, STR_PTR(geo_name), STR_LEN(geo_name), ier); if (*ier) return; string_2_F_string(c_CAD_name, STR_PTR(CAD_name), STR_LEN(CAD_name), ier); if (*ier) return; string_2_F_string(c_geo_file, STR_PTR(geo_file), STR_LEN(geo_file), ier); free(c_geo_file); } void FMNAME(cg_geo_write_f, CG_GEO_WRITE_F) (int *fn, int *B, int *F, STR_PSTR(geo_name), STR_PSTR(geo_file), STR_PSTR(CAD_name), int *G, int *ier STR_PLEN(geo_name) STR_PLEN(geo_file) STR_PLEN(CAD_name)) { char c_geo_name[ADF_NAME_LENGTH+1]; char c_CAD_name[ADF_NAME_LENGTH+1]; char *c_geo_file; int length; /* convert Fortran-text-string to a C-string */ string_2_C_string(STR_PTR(geo_name), STR_LEN(geo_name), c_geo_name, ADF_NAME_LENGTH, ier); if (*ier) return; string_2_C_string(STR_PTR(CAD_name), STR_LEN(CAD_name), c_CAD_name, ADF_NAME_LENGTH, ier); if (*ier) return; length = STR_LEN(geo_file); c_geo_file = CGNS_NEW(char, length+1); string_2_C_string(STR_PTR(geo_file), STR_LEN(geo_file), c_geo_file, length, ier); if (!*ier) *ier = cg_geo_write(*fn, *B, *F, c_geo_name, c_geo_file, c_CAD_name, G); free(c_geo_file); } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *\ * Read and write GeometryEntity_t Nodes * \* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ void FMNAME(cg_part_read_f, CG_PART_READ_F) (int *fn, int *B, int *F, int *G, int *P, STR_PSTR(part_name), int *ier STR_PLEN(part_name)) { char c_part_name[ADF_NAME_LENGTH+1]; *ier = cg_part_read(*fn, *B, *F, *G, *P, c_part_name); if (!*ier) string_2_F_string(c_part_name, STR_PTR(part_name), STR_LEN(part_name), ier); } void FMNAME(cg_part_write_f, CG_PART_WRITE_F) (int *fn, int *B, int *F, int *G, STR_PSTR(part_name), int *P, int *ier STR_PLEN(part_name)) { char c_part_name[ADF_NAME_LENGTH+1]; /* convert Fortran-text-string to a C-string */ string_2_C_string(STR_PTR(part_name), STR_LEN(part_name), c_part_name, ADF_NAME_LENGTH, ier); if (!*ier) *ier = cg_part_write(*fn, *B, *F, *G, c_part_name, P); } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *\ * Read and write DiscreteData_t Nodes * \* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ void FMNAME(cg_ndiscrete_f, CG_NDISCRETE_F) (int *fn, int *B, int *Z, int *ndiscrete, int *ier) { *ier = cg_ndiscrete(*fn, *B, *Z, ndiscrete); } void FMNAME(cg_discrete_read_f, CG_DISCRETE_READ_F) (int *fn, int *B, int *Z, int *D, STR_PSTR(discrete_name), int *ier STR_PLEN(discrete_name)) { char c_name[ADF_NAME_LENGTH+1]; *ier = cg_discrete_read(*fn, *B, *Z, *D, c_name); if (!*ier) string_2_F_string(c_name, STR_PTR(discrete_name), STR_LEN(discrete_name), ier); } void FMNAME(cg_discrete_write_f, CG_DISCRETE_WRITE_F) (int *fn, int *B, int *Z, STR_PSTR(discrete_name), int *D, int *ier STR_PLEN(discrete_name)) { char c_name[ADF_NAME_LENGTH+1]; string_2_C_string(STR_PTR(discrete_name), STR_LEN(discrete_name), c_name, ADF_NAME_LENGTH, ier); if (*ier) return; #if DEBUG_FTOC printf(" discrete_name='%s'\n", c_name); #endif *ier = cg_discrete_write(*fn, *B, *Z, c_name, D); } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *\ * Read and write GridCoordinates_t/DataArray_t Nodes * \* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ void FMNAME(cg_ncoords_f, CG_NCOORDS_F) (int *fn, int *B, int *Z, int *ncoords, int *ier) { *ier = cg_ncoords(*fn, *B, *Z, ncoords); } void FMNAME(cg_coord_info_f, CG_COORD_INFO_F) (int *fn, int *B, int *Z, int *C, DataType_t *type, STR_PSTR(coordname), int *ier STR_PLEN(coordname)) { char c_name[ADF_NAME_LENGTH+1]; *ier = cg_coord_info(*fn, *B, *Z, *C, type, c_name); if (!*ier) string_2_F_string(c_name, STR_PTR(coordname), STR_LEN(coordname), ier); } void FMNAME(cg_coord_read_f, CG_COORD_READ_F) (int *fn, int *B, int *Z, STR_PSTR(coordname), DataType_t *type, int *rmin, int *rmax, void *coord, int *ier STR_PLEN(coordname)) { char c_name[ADF_NAME_LENGTH+1]; string_2_C_string(STR_PTR(coordname), STR_LEN(coordname), c_name, ADF_NAME_LENGTH, ier); if (*ier) return; #if DEBUG_FTOC printf("coordname='%s'\n", c_name); #endif *ier = cg_coord_read(*fn, *B, *Z, c_name, *type, rmin, rmax, coord); } void FMNAME(cg_coord_id_f, CG_COORD_ID_F) (int *fn, int *B, int *Z, int *C, double *coord_id, int *ier) { *ier = cg_coord_id(*fn, *B, *Z, *C, coord_id); } void FMNAME(cg_coord_write_f, CG_COORD_WRITE_F) (int *fn, int *B, int *Z, DataType_t *type, STR_PSTR(coordname), void *coord, int *C, int *ier STR_PLEN(coordname)) { char c_name[ADF_NAME_LENGTH+1]; string_2_C_string(STR_PTR(coordname), STR_LEN(coordname), c_name, ADF_NAME_LENGTH, ier); if (*ier) return; #if DEBUG_FTOC printf(" coordname='%s'\n", c_name); #endif *ier = cg_coord_write(*fn, *B, *Z, *type, c_name, coord, C); } /* begin KMW */ void FMNAME(cg_coord_partial_write_f, CG_COORD_PARTIAL_WRITE_F) (int *fn, int *B, int *Z, DataType_t *type, STR_PSTR(coordname), int *rmin, int *rmax, void *coord, int *C, int *ier STR_PLEN(coordname)) { char c_name[ADF_NAME_LENGTH+1]; string_2_C_string(STR_PTR(coordname), STR_LEN(coordname), c_name, ADF_NAME_LENGTH, ier); if (*ier) return; #if DEBUG_FTOC printf(" coordname='%s'\n", c_name); #endif *ier = cg_coord_partial_write(*fn, *B, *Z, *type, c_name, rmin, rmax, coord, C); } /* end KMW */ /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *\ * Read and write Elements_t Nodes * \* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ void FMNAME(cg_nsections_f, CG_NSECTIONS_F) (int *fn, int *B, int *Z, int *nsections, int *ier) { *ier = cg_nsections(*fn, *B, *Z, nsections); } void FMNAME(cg_section_read_f, CG_SECTION_READ_F) (int *fn, int *B, int *Z, int *E, STR_PSTR(section_name), ElementType_t *type, int *start, int *end, int *nbndry, int *parent_flag, int *ier STR_PLEN(section_name)) { char c_name[ADF_NAME_LENGTH+1]; *ier = cg_section_read(*fn, *B, *Z, *E, c_name, type, start, end, nbndry, parent_flag); if (!*ier) string_2_F_string(c_name, STR_PTR(section_name), STR_LEN(section_name), ier); } void FMNAME(cg_elements_read_f, CG_ELEMENTS_READ_F) (int *fn, int *B, int *Z, int *E, int *elements, int *parent_data, int *ier) { *ier = cg_elements_read(*fn, *B, *Z, *E, elements, parent_data); } void FMNAME(cg_elementdatasize_f, CG_ELEMENTDATASIZE_F) (int *fn, int *B, int *Z, int *E, int *ElementDataSize, int *ier) { *ier = cg_ElementDataSize(*fn, *B, *Z, *E, ElementDataSize); } void FMNAME(cg_section_write_f, CG_SECTION_WRITE_F) (int *fn, int *B, int *Z, STR_PSTR(section_name), ElementType_t *type, int *start, int *end, int *nbndry, int *elements, int *S, int *ier STR_PLEN(section_name)) { char c_name[ADF_NAME_LENGTH+1]; /* convert Fortran-text-string to a C-string */ string_2_C_string(STR_PTR(section_name), STR_LEN(section_name), c_name, ADF_NAME_LENGTH, ier); if (!*ier) *ier = cg_section_write(*fn, *B, *Z, c_name, *type, *start, *end, *nbndry, elements, S); } void FMNAME(cg_parent_data_write_f, CG_PARENT_DATA_WRITE_F) (int *fn, int *B, int *Z, int *S, int *parent_data, int *ier) { *ier = cg_parent_data_write(*fn, *B, *Z, *S, parent_data); } void FMNAME(cg_section_partial_write_f, CG_SECTION_PARTIAL_WRITE_F) (int *fn, int *B, int *Z, STR_PSTR(section_name), ElementType_t *type, int *start, int *end, int *nbndry, int *elements, int *S, int *ier STR_PLEN(section_name)) { char c_name[ADF_NAME_LENGTH+1]; /* convert Fortran-text-string to a C-string */ string_2_C_string(STR_PTR(section_name), STR_LEN(section_name), c_name, ADF_NAME_LENGTH, ier); if (!*ier) *ier = cg_section_partial_write(*fn, *B, *Z, c_name, *type, *start, *end, *nbndry, elements, S); } void FMNAME(cg_parent_data_partial_write_f, CG_PARENT_DATA_PARTIAL_WRITE_F) (int *fn, int *B, int *Z, int *S, int *rmin, int *rmax, int *parent_data, int *ier) { *ier = cg_parent_data_partial_write(*fn, *B, *Z, *S, *rmin, *rmax, parent_data); } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *\ * Read and write FlowSolution_t Nodes * \* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ void FMNAME(cg_nsols_f, CG_NSOLS_F) (int *fn, int *B, int *Z, int *nsols, int *ier) { *ier = cg_nsols(*fn, *B, *Z, nsols); } void FMNAME(cg_sol_info_f, CG_SOL_INFO_F) (int *fn, int *B, int *Z, int *S, STR_PSTR(solname), GridLocation_t *location, int *ier STR_PLEN(solname)) { char c_name[ADF_NAME_LENGTH+1]; *ier = cg_sol_info(*fn, *B, *Z, *S, c_name, location); if (!*ier) string_2_F_string(c_name, STR_PTR(solname), STR_LEN(solname), ier); } void FMNAME(cg_sol_id_f, CG_SOL_ID_F) (int *fn, int *B, int *Z, int *S, double *sol_id, int *ier) { *ier = cg_sol_id(*fn, *B, *Z, *S, sol_id); } void FMNAME(cg_sol_write_f, CG_SOL_WRITE_F)(int *fn, int *B, int *Z, STR_PSTR(solname), GridLocation_t *location, int *S, int *ier STR_PLEN(solname)) { char c_name[ADF_NAME_LENGTH+1]; string_2_C_string(STR_PTR(solname), STR_LEN(solname), c_name, ADF_NAME_LENGTH, ier); if (*ier) return; #if DEBUG_FTOC printf("\n solname='%s'\n", c_name); #endif *ier = cg_sol_write(*fn, *B, *Z, c_name, *location, S); } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *\ * Read and write solution DataArray_t Nodes * \* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ void FMNAME(cg_nfields_f, CG_NFIELDS_F) (int *fn, int *B, int *Z, int *S, int *nfields, int *ier) { *ier = cg_nfields(*fn, *B, *Z, *S, nfields); } void FMNAME(cg_field_info_f, CG_FIELD_INFO_F) (int *fn, int *B, int *Z, int *S, int *F, DataType_t *type, STR_PSTR(fieldname), int *ier STR_PLEN(fieldname)) { char c_name[ADF_NAME_LENGTH+1]; *ier = cg_field_info(*fn, *B, *Z, *S, *F, type, c_name); if (!*ier) string_2_F_string(c_name, STR_PTR(fieldname), STR_LEN(fieldname), ier); } void FMNAME(cg_field_read_f, CG_FIELD_READ_F) (int *fn, int *B, int *Z, int *S, STR_PSTR(fieldname), DataType_t *type, int *rmin, int *rmax, void *field_ptr, int *ier STR_PLEN(fieldname)) { char c_name[ADF_NAME_LENGTH+1]; string_2_C_string(STR_PTR(fieldname), STR_LEN(fieldname), c_name, ADF_NAME_LENGTH, ier); if (*ier) return; #if DEBUG_FTOC printf("fieldname='%s'\n", c_name); #endif *ier = cg_field_read(*fn, *B, *Z, *S, c_name, *type, rmin, rmax, field_ptr); } void FMNAME(cg_field_id_f, CG_FIELD_ID_F) (int *fn, int *B, int *Z, int *S, int *F, double *field_id, int *ier) { *ier = cg_field_id(*fn, *B, *Z, *S, *F, field_id); } void FMNAME(cg_field_write_f, CG_FIELD_WRITE_F) (int *fn, int *B, int *Z, int *S, DataType_t *type, STR_PSTR(fieldname), void *field_ptr, int *F, int *ier STR_PLEN(fieldname)) { char c_name[ADF_NAME_LENGTH+1]; string_2_C_string(STR_PTR(fieldname), STR_LEN(fieldname), c_name, ADF_NAME_LENGTH, ier); if (*ier) return; #if DEBUG_FTOC printf(" fieldname='%s'\n", c_name); #endif *ier = cg_field_write(*fn, *B, *Z, *S, *type, c_name, field_ptr, F); } /* begin KMW */ void FMNAME(cg_field_partial_write_f, CG_FIELD_PARTIAL_WRITE_F) (int *fn, int *B, int *Z, int *S, DataType_t *type, STR_PSTR(fieldname), int *rmin, int *rmax, void *field_ptr, int *F, int *ier STR_PLEN(fieldname)) { char c_name[ADF_NAME_LENGTH+1]; string_2_C_string(STR_PTR(fieldname), STR_LEN(fieldname), c_name, ADF_NAME_LENGTH, ier); if (*ier) return; #if DEBUG_FTOC printf(" fieldname='%s'\n", c_name); #endif *ier = cg_field_partial_write(*fn, *B, *Z, *S, *type, c_name, rmin, rmax, field_ptr, F); } /* end KMW */ /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *\ * Read and write OversetHoles_t Nodes * \* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ void FMNAME(cg_nholes_f, CG_NHOLES_F) (int *fn, int *B, int *Z, int *nholes, int *ier) { *ier = cg_nholes(*fn, *B, *Z, nholes); } void FMNAME(cg_hole_info_f, CG_HOLE_INFO_F) (int *fn, int *B, int *Z, int *I, STR_PSTR(holename), GridLocation_t *location, PointSetType_t *ptset_type, int *nptsets, int *npnts, int *ier STR_PLEN(holename)) { char c_name[ADF_NAME_LENGTH+1]; *ier = cg_hole_info(*fn, *B, *Z, *I, c_name, location, ptset_type, nptsets, npnts); if (!*ier) string_2_F_string(c_name, STR_PTR(holename), STR_LEN(holename), ier); } void FMNAME(cg_hole_read_f, CG_HOLE_READ_F) (int *fn, int *B, int *Z, int *I, int *pnts, int *ier) { *ier = cg_hole_read(*fn, *B, *Z, *I, pnts); } void FMNAME(cg_hole_id_f, CG_HOLE_ID_F) (int *fn, int *B, int *Z, int *I, double *hole_id, int *ier) { *ier = cg_hole_id(*fn, *B, *Z, *I, hole_id); } void FMNAME(cg_hole_write_f, CG_HOLE_WRITE_F) (int *fn, int *B, int *Z, STR_PSTR(holename), GridLocation_t *location, PointSetType_t *ptset_type, int *nptsets, int *npnts, int *pnts, int *I, int *ier STR_PLEN(holename)) { char c_name[ADF_NAME_LENGTH+1]; string_2_C_string(STR_PTR(holename), STR_LEN(holename), c_name, ADF_NAME_LENGTH, ier); if (*ier) return; #if DEBUG_FTOC printf("holename='%s'\n", c_name); #endif *ier = cg_hole_write(*fn, *B, *Z, c_name, *location, *ptset_type, *nptsets, *npnts, pnts, I); } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *\ * Read and write GridConnectivity_t Nodes * \* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ void FMNAME(cg_nconns_f, CG_NCONNS_F) (int *fn, int *B, int *Z, int *nconns, int *ier) { *ier = cg_nconns(*fn, *B, *Z, nconns); } void FMNAME(cg_conn_info_f, CG_CONN_INFO_F) (int *fn, int *B, int *Z, int *I, STR_PSTR(connectname), GridLocation_t *location, GridConnectivityType_t *type, PointSetType_t *ptset_type, int *npnts, STR_PSTR(donorname), ZoneType_t *donor_zonetype, PointSetType_t *donor_ptset_type, DataType_t *donor_datatype, int *ndata_donor, int *ier STR_PLEN(connectname) STR_PLEN(donorname)) { char cc_name[ADF_NAME_LENGTH+1], dc_name[ADF_NAME_LENGTH+1]; *ier = cg_conn_info(*fn, *B, *Z, *I, cc_name, location, type, ptset_type, npnts, dc_name, donor_zonetype, donor_ptset_type, donor_datatype, ndata_donor); if (!*ier) { string_2_F_string(cc_name, STR_PTR(connectname), STR_LEN(connectname), ier); if (*ier) return; string_2_F_string(dc_name, STR_PTR(donorname), STR_LEN(donorname), ier); } } void FMNAME(cg_conn_read_f, CG_CONN_READ_F) (int *fn, int *B, int *Z, int *I, int *pnts, DataType_t *donor_datatype, void *donor_data, int *ier) { *ier = cg_conn_read(*fn, *B, *Z, *I, pnts, *donor_datatype, donor_data); } void FMNAME(cg_conn_read_short_f, CG_CONN_READ_SHORT_F) (int *fn, int *B, int *Z, int *I, int *pnts, int *ier) { *ier = cg_conn_read_short(*fn, *B, *Z, *I, pnts); } void FMNAME(cg_conn_id_f, CG_CONN_ID_F) (int *fn, int *B, int *Z, int *I, double *conn_id, int *ier) { *ier = cg_conn_id(*fn, *B, *Z, *I, conn_id); } void FMNAME(cg_conn_write_f, CG_CONN_WRITE_F) (int *fn, int *B, int *Z, STR_PSTR(connectname), GridLocation_t *location, GridConnectivityType_t *type, PointSetType_t *ptset_type, int *npnts, int *pnts, STR_PSTR(donorname), ZoneType_t *donor_zonetype, PointSetType_t *donor_ptset_type, DataType_t *donor_datatype, int *ndata_donor, void *donor_data, int *I, int *ier STR_PLEN(connectname) STR_PLEN(donorname)) { char cc_name[ADF_NAME_LENGTH+1], dc_name[ADF_NAME_LENGTH+1]; string_2_C_string(STR_PTR(connectname), STR_LEN(connectname), cc_name, ADF_NAME_LENGTH, ier); if (*ier) return; string_2_C_string(STR_PTR(donorname), STR_LEN(donorname), dc_name, ADF_NAME_LENGTH, ier); if (*ier) return; #if DEBUG_FTOC printf("connectname='%s'\n", cc_name); printf("donorname='%s'\n", dc_name); #endif *ier = cg_conn_write(*fn, *B, *Z, cc_name, *location, *type, *ptset_type, *npnts, pnts, dc_name, *donor_zonetype, *donor_ptset_type, *donor_datatype, *ndata_donor, donor_data, I); } void FMNAME(cg_conn_write_short_f, CG_CONN_WRITE_SHORT_F) (int *fn, int *B, int *Z, STR_PSTR(connectname), GridLocation_t *location, GridConnectivityType_t *type, PointSetType_t *ptset_type, int *npnts, int *pnts, STR_PSTR(donorname), int *I, int *ier STR_PLEN(connectname) STR_PLEN(donorname)) { char cc_name[ADF_NAME_LENGTH+1], dc_name[ADF_NAME_LENGTH+1]; string_2_C_string(STR_PTR(connectname), STR_LEN(connectname), cc_name, ADF_NAME_LENGTH, ier); if (*ier) return; string_2_C_string(STR_PTR(donorname), STR_LEN(donorname), dc_name, ADF_NAME_LENGTH, ier); if (*ier) return; #if DEBUG_FTOC printf("connectname='%s'\n", cc_name); printf("donorname='%s'\n", dc_name); #endif *ier = cg_conn_write_short(*fn, *B, *Z, cc_name, *location, *type, *ptset_type, *npnts, pnts, dc_name, I); } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *\ * Read and write GridConnectivity1to1_t Nodes in a zone * \* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ void FMNAME(cg_n1to1_f, CG_N1TO1_F) (int *fn, int *B, int *Z, int *n1to1, int *ier) { *ier = cg_n1to1(*fn, *B, *Z, n1to1); } void FMNAME(cg_1to1_read_f, CG_1TO1_READ_F) (int *fn, int *B, int *Z, int *I, STR_PSTR(connectname), STR_PSTR(donorname), int *range, int *donor_range, int *transform, int *ier STR_PLEN(connectname) STR_PLEN(donorname)) { char cc_name[ADF_NAME_LENGTH+1], dc_name[ADF_NAME_LENGTH+1]; *ier = cg_1to1_read(*fn, *B, *Z, *I, cc_name, dc_name, range, donor_range, transform); if (!*ier) { string_2_F_string(cc_name, STR_PTR(connectname), STR_LEN(connectname), ier); if (*ier) return; string_2_F_string(dc_name, STR_PTR(donorname), STR_LEN(donorname), ier); } } void FMNAME(cg_1to1_id_f, CG_1TO1_ID_F) (int *fn, int *B, int *Z, int *I, double *one21_id, int *ier) { *ier = cg_1to1_id(*fn, *B, *Z, *I, one21_id); } void FMNAME(cg_1to1_write_f, CG_1TO1_WRITE_F) (int *fn, int *B, int *Z, STR_PSTR(connectname), STR_PSTR(donorname), int *range, int *donor_range, int *transform, int *I, int *ier STR_PLEN(connectname) STR_PLEN(donorname)) { char cc_name[ADF_NAME_LENGTH+1], dc_name[ADF_NAME_LENGTH+1]; string_2_C_string(STR_PTR(connectname), STR_LEN(connectname), cc_name, ADF_NAME_LENGTH, ier); if (*ier) return; string_2_C_string(STR_PTR(donorname), STR_LEN(donorname), dc_name, ADF_NAME_LENGTH, ier); if (*ier) return; #if DEBUG_FTOC printf("connectname='%s'\n", cc_name); printf("donorname='%s'\n", dc_name); #endif *ier = cg_1to1_write(*fn, *B, *Z, cc_name, dc_name, range, donor_range, transform, I); } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *\ * Read all GridConnectivity1to1_t Nodes of a base * \* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ void FMNAME(cg_n1to1_global_f, CG_N1TO1_GLOBAL_F) (int *fn, int *B, int *n1to1_global, int *ier) { *ier = cg_n1to1_global(*fn, *B, n1to1_global); } void FMNAME(cg_1to1_read_global_f, CG_1TO1_READ_GLOBAL_F) (int *fn, int *B, STR_PSTR(connectname), STR_PSTR(zonename), STR_PSTR(donorname), int *range, int *donor_range, int *transform, int *ier STR_PLEN(connectname) STR_PLEN(zonename) STR_PLEN(donorname)) { int n, i, step, len, ierr; int cell_dim, phys_dim; /* number of dimension for model */ int Ndim; /* indexDimension */ int Nglobal; /* number of 1to1 interface in base */ char **c_connectname, **c_zonename, **c_donorname; char basename[ADF_NAME_LENGTH+1]; int **c_range, **c_donor_range; int **c_transform; /* initialize error code */ *ier=0; /* get number of dimension for model: Ndim */ if (cg_base_read(*fn, *B, basename, &cell_dim, &phys_dim)) { *ier=1; return; } /* For structured grid: */ Ndim = cell_dim; /* get number of 1to1 interface in base: Nglobal */ if (cg_n1to1_global(*fn, *B, &Nglobal)) { *ier=1; return; } if (Nglobal<1) { cgi_error("Number of interface must equal 1 or more"); *ier=1; return; } /* allocate memory for C-arrays (ptr-to-ptr) */ if ((c_connectname = (char **)malloc(Nglobal*sizeof(char *)))==NULL || (c_zonename = (char **)malloc(Nglobal*sizeof(char *)))==NULL || (c_donorname = (char **)malloc(Nglobal*sizeof(char *)))==NULL || (c_range = (int **) malloc(Nglobal*sizeof(int *)))==NULL || (c_donor_range = (int **) malloc(Nglobal*sizeof(int *)))==NULL || (c_transform = (int **) malloc(Nglobal*sizeof(int *)))==NULL) { cgi_error("Error allocating memory..."); *ier = 1; return; } len = ADF_NAME_LENGTH+1; for (n=0; n