KPL/PCK P_constants (PCK) SPICE kernel file mars_rotation_reset_v1.tpc =========================================================================== By: Nat Bachman (NAIF) 2026 October 3 This kernel was created with the assistance of Claude Sonnet 5. Purpose -------------------------------------------------------- This PCK can ensure that Mars and Mars satellite orientation computations performed using NAIF text PCKs are not compromised by residual data from other, earlier loaded, PCKs. The PCK files mars_konopliv_2026_v1.tpc mars_konopliv_2026_n0066_v1.tpc pck00011.tpc pck00011_n0066.tpc define kernel variables that aren't necessarily overwritten when other PCKs are loaded after them, during a program run. Below, we'll call the files listed above the "extended PCKs." Residual kernel variables defined by the extended PCKs may prevent or corrupt computation of orientation of Mars, or of Mars satellites, performed using other PCKs. Orientation models that are vulnerable to the effects of these residual kernel variables are those that contain Mars and Mars satellite orientation data, but that do not redefine all of the kernel variables of the corresponding models in the files listed above. We'll call PCKs containing these models the "vulnerable PCKs." This set of vulnerable PCKs includes older NAIF generic text PCKs, up to and including pck00010.tpc Archived and operational PCKs may be vulnerable as well. Loading this kernel after loading any of the extended PCKs, and before loading vulnerable PCKs, eliminates this problem. Residual kernel variables also can be removed by unloading the PCKs that defined the variables. However, this is not always practical, and it has the side effect of clearing from the kernel pool any variables defined via the programmatic interface. Applicability -------------------------------------------------------- This PCK addresses interoperability problems arising from use of the extended PCKs listed above. This PCK may be applicable when user applications load PCKs not produced by NAIF, but which define the same kernel variables as the extended PCKs, possibly using different data. Updates -------------------------------------------------------- It is possible that future Mars system PCKs will define additional kernel variables that need to be reset by this kernel. It's also possible that the list of extended PCKs produced by NAIF will grow, without any change to the kernel variables requiring a reset. In this case, NAIF will update the comments of this file to accurately specify the set of extended PCKs. If the future NAIF generic text PCKs (no release date is currently planned) pck00012.tpc pck00012_n0066.tpc use the Mars system rotation models of the Mars Konopliv 2026 PCKs, those PCKs would be added to the list of extended PCKs. The comments of this file would be updated to refer to them, but the data assignments would not change. NAIF will release a new version of this file if any changes are made to its data or documentation. The file name's version number will be incremented. NAIF requests that users who modify this file also rename it using a name pattern that doesn't conflict with that used by NAIF. Usage -------------------------------------------------------- This kernel may be loaded by meta-kernels, or loaded directly. To be effective, if loaded via a meta-kernel, it must be listed in the meta-kernel's KERNELS_TO_LOAD assignments ahead of any vulnerable PCKs containing Mars system rotation data. If loaded directly, it must be loaded ahead of any vulnerable PCKs. This kernel must not be loaded after loading the extended PCKs if Mars or Mars satellite orientation data from those kernels is to be used subsequently, since this kernel modifies the kernel variables containing those data. Example 1: a meta-kernel that loads this kernel prior to loading a "vulnerable" PCK. In the text below, we've omitted from the "begindata" and "begintext" directives the backslash characters that would be used in an actual meta-kernel. KPL/MK We load the "reset" PCK in this meta-kernel to protect the Mars system rotation models of pck00010.tpc from any residual kernel variables defined by a PCK that may have been loaded earlier. begindata KERNELS_TO_LOAD = ( 'naif0012.tls' 'mars_rotation_reset_v1.tpc' 'pck00010.tpc' ) begintext Example 2: a C-style pseudo-code fragment that loads a Mars Konopliv 2026 PCK, then "cleans up" by loading this kernel, then loads an older PCK. furnsh_c( "mars_konopliv_2026_n0066_v1.tpc" ); Do some work... /* Clean up residual kernel variables without unloading the currently loaded PCK, then load another PCK. */ furnsh_c( "mars_rotation_reset_v1.tpc" ); furnsh_c( "pck00010.tpc" ); Do some work... /* End of function */ Data -------------------------------------------------------- \begindata BODY4_MAX_PHASE_DEGREE = 1 BODY4_NUT_PREC_ANGLES = ( 0.0 0.0 ) BODY499_NUT_PREC_RA = 0.0 BODY499_NUT_PREC_DEC = 0.0 BODY499_NUT_PREC_PM = 0.0 \begintext =========================================================================== End of file mars_rotation_reset_v1.tpc ===========================================================================