/* Finite elements for multidimensional dyadic spline spaces. */ /* Last edited on 2009-08-23 19:49:26 by stolfi */ #ifndef mdg_tent_H #define mdg_tent_H #include #include #include #include #include #include #include /* STANDARD DYADIC TENT FAMILIES The standard tent families defined in {psp_tent.h} can be used in each level of a multidimensional dyadic grid, too. While the family {fam[i]} and the pulse parameters {p[i].pix,p[i].pos} can be chosen independently for each {i}, the grid size {p[i].gsz} is determined by the level {r} of the grid, i.e. {gsz[i] = mdg_grid_size(d,r,i)} PACKED REPRESENTATION FOR STANDARD DYADIC TENTS A specific tent within a given dyadic tent family {fam[0..d-1]} can be specified completely by two integers: its mother tent index {tix}, and the cell index {ck} of its anchor cell. Note that {tix} determines the mother index {p[i].pix}, and {ck} determines the grid sizes {p[i].gsz} as well as the shifts {p[i].pos}, for each factor pulse {p[i]}. */ typedef struct mdg_tent_t /* Identifies a tent within a tent family. */ { mdg_tent_mother_index_t tix; /* Packed mother pulse indices. */ mdg_cell_index_t ck; /* Index of anchor cell. */ } mdg_tent_t; /* Identifies (within some standard tent family fixed by context) the tent whose mother tent index is {tix} and whose anchor cell has cell index {ck}. */ mdg_tent_t mdg_tent_pack ( mdg_dim_t d, psp_pulse_family_t fam[], psp_pulse_t p[] ); /* Returns the packed description of the tent formed by pulses {p[0..d-1]} from families {fam[0..d-1]}, respectively. */ void mdg_tent_unpack ( mdg_dim_t d, psp_pulse_family_t fam[], mdg_tent_t *t, psp_pulse_t p[] ); /* Unpacks a packed tent description {t} into its factor pulses {p[0..d-1]}, assuming they belong to families {fam[0..d-1]}. */ /* ENUMERATING TENTS */ vec_typedef(mdg_tent_vec_t,mdg_tent_vec,mdg_tent_t); /* A list of {mdg_tent}s. */ mdg_tent_vec_t mdg_tents_from_cells ( mdg_dim_t d, mdg_tent_mother_index_t tix, mdg_cell_index_vec_t ck ); /* Returns a list of {mdg_tent_t} {t} obtained by combining tent index {tix} with all cell indices {ck[0..]} */ /* PRINTOUT: */ void mdg_tent_packed_print ( FILE *wr, mdg_dim_t d, psp_pulse_family_t fam[], mdg_tent_t *t ); /* Like {mdg_tent_print} but extracts the tent's info from the packed tent {t}. */ #endif