Changeset 6026
- Timestamp:
- Jan 16, 2006, 11:24:23 PM (21 years ago)
- Location:
- branches/eam_rel9_b1/psLib/src/types
- Files:
-
- 2 edited
-
psMetadata.c (modified) (2 diffs)
-
psMetadata.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_rel9_b1/psLib/src/types/psMetadata.c
r5909 r6026 12 12 * @author Ross Harman, MHPCC 13 13 * 14 * @version $Revision: 1.92.6. 1$ $Name: not supported by cvs2svn $15 * @date $Date: 2006-01- 06 01:01:39$14 * @version $Revision: 1.92.6.2 $ $Name: not supported by cvs2svn $ 15 * @date $Date: 2006-01-17 09:24:23 $ 16 16 * 17 17 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 1404 1404 } 1405 1405 1406 psPolynomial2D *psPolynomial2DfromMD (psMetadata *folder) 1407 { 1408 1409 bool status; 1410 char keyword[80]; 1411 1412 // get polynomial orders 1413 // XXX add status failures tests 1414 int nXorder = psMetadataLookupS32 (&status, folder, "NORDER_X"); 1415 int nYorder = psMetadataLookupS32 (&status, folder, "NORDER_Y"); 1416 1417 psPolynomial2D *poly = psPolynomial2DAlloc (nXorder, nYorder, PS_POLYNOMIAL_ORD); 1418 1419 for (int nx = 0; nx < poly->nX + 1; nx++) { 1420 for (int ny = 0; ny < poly->nY + 1; ny++) { 1421 sprintf (keyword, "VAL_X%02d_Y%02d", nx, ny); 1422 poly->coeff[nx][ny] = psMetadataLookupF64 (&status, folder, keyword); 1423 if (!status) 1424 poly->mask[nx][ny] = 1; 1425 1426 sprintf (keyword, "ERR_X%02d_Y%02d", nx, ny); 1427 poly->coeffErr[nx][ny] = psMetadataLookupF64 (&status, folder, keyword); 1428 } 1429 } 1430 return (poly); 1431 } 1432 1433 // XXX : these may need F64, or %g format for output 1434 bool psPolynomial2DtoMD (psMetadata *md, psPolynomial2D *poly, char *format, ...) 1435 { 1436 1437 int Nbyte; 1438 char tmp; 1439 char *root; 1440 va_list argp; 1441 1442 va_start (argp, format); 1443 Nbyte = vsnprintf (&tmp, 0, format, argp); 1444 va_end (argp); 1445 1446 if (!Nbyte) 1447 return false; 1448 1449 va_start (argp, format); 1450 root = (char *) psAlloc (Nbyte + 1); 1451 memset (root, 0, Nbyte + 1); 1452 vsnprintf (root, Nbyte + 1, format, argp); 1453 va_end (argp); 1454 1455 psMetadata *folder = psMetadataAlloc (); 1456 psMetadataAdd (md, PS_LIST_TAIL, root, PS_DATA_METADATA, "folder for 2D polynomial", folder); 1457 psFree (root); 1458 1459 // specify the polynomial orders 1460 psMetadataAdd (folder, PS_LIST_TAIL, "NORDER_X", PS_DATA_S32, "number of x orders", poly->nX); 1461 psMetadataAdd (folder, PS_LIST_TAIL, "NORDER_Y", PS_DATA_S32, "number of y orders", poly->nY); 1462 1463 // place polynomial entries on folder 1464 for (int nx = 0; nx < poly->nX + 1; nx++) { 1465 for (int ny = 0; ny < poly->nY + 1; ny++) { 1466 if (poly->mask[nx][ny]) 1467 continue; 1468 psMetadataAdd (folder, PS_LIST_TAIL, "VAL_X%02d_Y%02d", PS_DATA_F64, "polynomial coefficient", poly->coeff[nx][ny], nx, ny); 1469 psMetadataAdd (folder, PS_LIST_TAIL, "ERR_X%02d_Y%02d", PS_DATA_F64, "polynomial coefficient error", poly->coeffErr[nx][ny], nx, ny); 1470 } 1471 } 1472 return true; 1473 } 1474 1475 psPolynomial3D *psPolynomial3DfromMD (psMetadata *folder) 1476 { 1477 1478 bool status; 1479 char keyword[80]; 1480 1481 // get polynomial orders 1482 // XXX add status failures tests 1483 int nXorder = psMetadataLookupS32 (&status, folder, "NORDER_X"); 1484 int nYorder = psMetadataLookupS32 (&status, folder, "NORDER_Y"); 1485 int nZorder = psMetadataLookupS32 (&status, folder, "NORDER_Z"); 1486 1487 psPolynomial3D *poly = psPolynomial3DAlloc (nXorder, nYorder, nZorder, PS_POLYNOMIAL_ORD); 1488 1489 for (int nx = 0; nx < poly->nX + 1; nx++) { 1490 for (int ny = 0; ny < poly->nY + 1; ny++) { 1491 for (int nz = 0; nz < poly->nZ + 1; nz++) { 1492 sprintf (keyword, "VAL_X%02d_Y%02d_Z%02d", nx, ny, nz); 1493 poly->coeff[nx][ny][nz] = psMetadataLookupF64 (&status, folder, keyword); 1494 if (!status) 1495 poly->mask[nx][ny][nz] = 1; 1496 1497 sprintf (keyword, "ERR_X%02d_Y%02d_Z%02d", nx, ny, nz); 1498 poly->coeffErr[nx][ny][nz] = psMetadataLookupF64 (&status, folder, keyword); 1499 } 1500 } 1501 } 1502 return (poly); 1503 } 1504 1505 bool psPolynomial3DtoMD (psMetadata *md, psPolynomial3D *poly, char *format, ...) 1506 { 1507 1508 int Nbyte; 1509 char tmp; 1510 char *root; 1511 va_list argp; 1512 1513 va_start (argp, format); 1514 Nbyte = vsnprintf (&tmp, 0, format, argp); 1515 va_end (argp); 1516 1517 if (!Nbyte) 1518 return false; 1519 1520 va_start (argp, format); 1521 root = (char *) psAlloc (Nbyte + 1); 1522 memset (root, 0, Nbyte + 1); 1523 vsnprintf (root, Nbyte + 1, format, argp); 1524 va_end (argp); 1525 1526 psMetadata *folder = psMetadataAlloc (); 1527 psMetadataAdd (md, PS_LIST_TAIL, root, PS_DATA_METADATA, "folder for 3D polynomial", folder); 1528 psFree (root); 1529 1530 // specify the polynomial orders 1531 psMetadataAdd (folder, PS_LIST_TAIL, "NORDER_X", PS_DATA_S32, "number of x orders", poly->nX); 1532 psMetadataAdd (folder, PS_LIST_TAIL, "NORDER_Y", PS_DATA_S32, "number of y orders", poly->nY); 1533 psMetadataAdd (folder, PS_LIST_TAIL, "NORDER_Z", PS_DATA_S32, "number of z orders", poly->nZ); 1534 1535 // place polynomial entries on folder 1536 for (int nx = 0; nx < poly->nX + 1; nx++) { 1537 for (int ny = 0; ny < poly->nY + 1; ny++) { 1538 for (int nz = 0; nz < poly->nZ + 1; nz++) { 1539 if (poly->mask[nx][ny][nz]) 1540 continue; 1541 psMetadataAdd (folder, PS_LIST_TAIL, "VAL_X%02d_Y%02d_Z%02d", PS_DATA_F64, "polynomial coefficient", poly->coeff[nx][ny][nz], nx, ny, nz); 1542 psMetadataAdd (folder, PS_LIST_TAIL, "ERR_X%02d_Y%02d_Z%02d", PS_DATA_F64, "polynomial coeffficient error", poly->coeffErr[nx][ny][nz], nx, ny, nz); 1543 } 1544 } 1545 } 1546 return true; 1547 } 1548 1549 1550 psPolynomial4D *psPolynomial4DfromMD (psMetadata *folder) 1551 { 1552 1553 bool status; 1554 char keyword[80]; 1555 1556 // get polynomial orders 1557 // XXX add status failures tests 1558 int nXorder = psMetadataLookupS32 (&status, folder, "NORDER_X"); 1559 int nYorder = psMetadataLookupS32 (&status, folder, "NORDER_Y"); 1560 int nZorder = psMetadataLookupS32 (&status, folder, "NORDER_Z"); 1561 int nTorder = psMetadataLookupS32 (&status, folder, "NORDER_T"); 1562 1563 psPolynomial4D *poly = psPolynomial4DAlloc (nXorder, nYorder, nZorder, nTorder, PS_POLYNOMIAL_ORD); 1564 1565 for (int nx = 0; nx < poly->nX + 1; nx++) { 1566 for (int ny = 0; ny < poly->nY + 1; ny++) { 1567 for (int nz = 0; nz < poly->nZ + 1; nz++) { 1568 for (int nt = 0; nt < poly->nT + 1; nt++) { 1569 sprintf (keyword, "VAL_X%02d_Y%02d_Z%02d_T%02d", nx, ny, nz, nt); 1570 poly->coeff[nx][ny][nz][nt] = psMetadataLookupF64 (&status, folder, keyword); 1571 if (!status) 1572 poly->mask[nx][ny][nz][nt] = 1; 1573 1574 sprintf (keyword, "ERR_X%02d_Y%02d_Z%02d_T%02d", nx, ny, nz, nt); 1575 poly->coeffErr[nx][ny][nz][nt] = psMetadataLookupF64 (&status, folder, keyword); 1576 } 1577 } 1578 } 1579 } 1580 return (poly); 1581 } 1582 1583 bool psPolynomial4DtoMD (psMetadata *md, psPolynomial4D *poly, char *format, ...) 1584 { 1585 1586 int Nbyte; 1587 char tmp; 1588 char *root; 1589 va_list argp; 1590 1591 va_start (argp, format); 1592 Nbyte = vsnprintf (&tmp, 0, format, argp); 1593 va_end (argp); 1594 1595 if (!Nbyte) 1596 return false; 1597 1598 va_start (argp, format); 1599 root = (char *) psAlloc (Nbyte + 1); 1600 memset (root, 0, Nbyte + 1); 1601 vsnprintf (root, Nbyte + 1, format, argp); 1602 va_end (argp); 1603 1604 psMetadata *folder = psMetadataAlloc (); 1605 psMetadataAdd (md, PS_LIST_TAIL, root, PS_DATA_METADATA, "folder for 4D polynomial", folder); 1606 psFree (root); 1607 1608 // specify the polynomial orders 1609 psMetadataAdd (folder, PS_LIST_TAIL, "NORDER_X", PS_DATA_S32, "number of x orders", poly->nX); 1610 psMetadataAdd (folder, PS_LIST_TAIL, "NORDER_Y", PS_DATA_S32, "number of y orders", poly->nY); 1611 psMetadataAdd (folder, PS_LIST_TAIL, "NORDER_Z", PS_DATA_S32, "number of z orders", poly->nZ); 1612 psMetadataAdd (folder, PS_LIST_TAIL, "NORDER_T", PS_DATA_S32, "number of z orders", poly->nT); 1613 1614 // place polynomial entries on folder 1615 for (int nx = 0; nx < poly->nX + 1; nx++) { 1616 for (int ny = 0; ny < poly->nY + 1; ny++) { 1617 for (int nz = 0; nz < poly->nZ + 1; nz++) { 1618 for (int nt = 0; nt < poly->nT + 1; nt++) { 1619 if (poly->mask[nx][ny][nz][nt]) 1620 continue; 1621 psMetadataAdd (folder, PS_LIST_TAIL, "VAL_X%02d_Y%02d_Z%02d_T%02d", PS_DATA_F64, "polynomial coefficient", poly->coeff[nx][ny][nz][nt], nx, ny, nz, nt); 1622 psMetadataAdd (folder, PS_LIST_TAIL, "ERR_X%02d_Y%02d_Z%02d_T%02d", PS_DATA_F64, "polynomial coeffficient error", poly->coeffErr[nx][ny][nz][nt], nx, ny, nz, nt); 1623 } 1624 } 1625 } 1626 } 1627 return true; 1628 } -
branches/eam_rel9_b1/psLib/src/types/psMetadata.h
r5539 r6026 11 11 * @author Ross Harman, MHPCC 12 12 * 13 * @version $Revision: 1.71 $ $Name: not supported by cvs2svn $14 * @date $Date: 200 5-11-18 01:51:03 $13 * @version $Revision: 1.71.6.1 $ $Name: not supported by cvs2svn $ 14 * @date $Date: 2006-01-17 09:24:23 $ 15 15 * 16 16 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 785 785 ); 786 786 787 788 psPolynomial2D *psPolynomial2DfromMD (psMetadata *folder); 789 bool psPolynomial2DtoMD (psMetadata *md, psPolynomial2D *poly, char *format, ...); 790 791 psPolynomial3D *psPolynomial3DfromMD (psMetadata *folder); 792 bool psPolynomial3DtoMD (psMetadata *md, psPolynomial3D *poly, char *format, ...); 793 794 psPolynomial4D *psPolynomial4DfromMD (psMetadata *folder); 795 bool psPolynomial4DtoMD (psMetadata *md, psPolynomial4D *poly, char *format, ...); 796 797 787 798 /// @} 788 799
Note:
See TracChangeset
for help on using the changeset viewer.
